From fde8e3bedaf5f883f38c3a0ec33d3c6a8748d1c9 Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期五, 21 六月 2024 18:02:44 +0800
Subject: [PATCH] wfs 范围查询

---
 package-lock.json                | 2877 +++
 src/views/mapChart/index.vue     |   10 
 src/assets/js/map/mapView.js     |  167 
 src/assets/js/msg/msgData.js     |   47 
 src/assets/js/map/mapInfo.js     |   26 
 public/CimSDK/ol/ol.css          |  350 
 src/assets/js/map/modelLayer.js  |  199 
 src/utils/modelGeo.js            |   49 
 src/utils/auth.js                |   12 
 src/utils/modelAccount.js        |   41 
 src/api/api.js                   |    8 
 src/assets/js/map/wfsConfig.js   |   94 
 src/components/Chat/chatList.vue |   94 
 src/assets/js/map/mapServer.js   |   56 
 public/config/config.js          |   14 
 public/Markdown.md               |   49 
 public/test.html                 |  106 
 public/index.html                |    3 
 src/store/index.js               |   27 
 src/assets/js/map/mapConfig.js   |    7 
 src/views/chartView/index.vue    |   87 
 src/api/modelBase.js             |   18 
 src/views/header/header.vue      |   50 
 src/views/homePage/index.vue     |   55 
 public/CimSDK/ol/OpenLayers.js   | 30510 +++++++++++++++++++++++++++++++++
 public/CimSDK/ol/ol.js           |    2 
 yarn.lock                        | 18887 +++++++++++---------
 package.json                     |    4 
 src/App.vue                      |    3 
 29 files changed, 45,360 insertions(+), 8,492 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 5d6d715..aa33b55 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1405,6 +1405,11 @@
         }
       }
     },
+    "@sindresorhus/is": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+      "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw=="
+    },
     "@soda/friendly-errors-webpack-plugin": {
       "version": "1.8.1",
       "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz",
@@ -1474,11 +1479,2154 @@
       "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==",
       "dev": true
     },
+    "@szmarczak/http-timer": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+      "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+      "requires": {
+        "defer-to-connect": "^2.0.0"
+      }
+    },
     "@tootallnate/once": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
       "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
       "dev": true
+    },
+    "@turf/along": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/along/-/along-7.0.0.tgz",
+      "integrity": "sha512-OyZcvwYwsLxlqC6ksFMNAkZ1fF/0Xfg38v4jx6D9OsaQcIDgvzXnlkuUnS3w11imfulokijkLEFnvJXFZKAzRw==",
+      "requires": {
+        "@turf/bearing": "^7.0.0",
+        "@turf/destination": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/angle": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/angle/-/angle-7.0.0.tgz",
+      "integrity": "sha512-3+Lp/fyJdtoS+zMu4ZGgV1PhXub7fiowvwId6w5fNtUHWaQ2e0fUgWMAv8opVSC9gRnUtOq2QuJZdIGQAL+fkQ==",
+      "requires": {
+        "@turf/bearing": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/rhumb-bearing": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/area": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.0.0.tgz",
+      "integrity": "sha512-Q/P6OGV8dJJs1BiraKFNBjtsMbz7B52mLCtgKh3syzujSREMx52RlsiOBQp8GujFMMiau+Mt25XKbVwtjHVi8Q==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/bbox": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.0.0.tgz",
+      "integrity": "sha512-IyXG5HAsn6IZLdAtQo7aWYccjU5WsV+uzIzhGaXrh/qTVylSYmRiWgLdiekHZVED9nv9r7D/EJUMOT4zyA6POA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/bbox-clip": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-7.0.0.tgz",
+      "integrity": "sha512-ZSReB14sSQpP5TE6g5SijVFijxMp8pyrM0PgEN1LR9Bm+nj7BmmGzHafV3lyteml2bmlFdQxkbTqcbvlVXS98g==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/bbox-polygon": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.0.0.tgz",
+      "integrity": "sha512-RMBADOr0zOhVhTidKXCAx1TLTzgBvZwQKI6KJ1FgoCPH7GMZZnMXGMvOtdQLdsplS4Zs6+NoVtaK2x0+EXdYJQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/bearing": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-7.0.0.tgz",
+      "integrity": "sha512-r6eBNqqiC8OtW+xIzu0ZyciAUfM85l2LVN2qpTeEyhnaNmnPw7hDsnqwZcbqoBFSLB66MO+BLH40X5OdaoRmmA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/bezier-spline": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-7.0.0.tgz",
+      "integrity": "sha512-1FFVLc+oa5t9S7XWsYImfOVNLWESAJo3ztC4GRlGeAFQBi5z8kSptBaGRLkTn387lZLZ1VQXYRgAfR2mP69/VA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-clockwise": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-7.0.0.tgz",
+      "integrity": "sha512-Tn+ShgMcgIll+TeIAUHW0diPpxCN1PfQ6uZrwUJXzQXfoxlns16NvJByTBWCl+E9UCA+m1QRjHpVOzyf8pSOOQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-concave": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-concave/-/boolean-concave-7.0.0.tgz",
+      "integrity": "sha512-ybKMUriBFzqvjJMOM+YPID2h0a7ye1ur95NkXzV+GRDG16W0KOtTcSXz3LFfHIBEXtG1dqRIxPSV2uwTTKwDTQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-contains": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-7.0.0.tgz",
+      "integrity": "sha512-1NILJdO5OO1YrD7hYPlpahROkzd1DFA7Lcp7SxL+hTtKTp/a2iZx+K6u2qKMLUlPO1p2zhSbMfvjl1T6s/H8XQ==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/boolean-point-on-line": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-crosses": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-7.0.0.tgz",
+      "integrity": "sha512-T8/U3fXvEaaf7NbRf42s7hnOYUarK7K1ztXOan0hESnWVzMRFwzIv9QeSW4mARAPU/oV1oOMhSITfbF/Et6W1A==",
+      "requires": {
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/line-intersect": "^7.0.0",
+        "@turf/polygon-to-line": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-disjoint": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-7.0.0.tgz",
+      "integrity": "sha512-MAHKqMtdktgxFnz9XFrzyN+VTtmNSd+PgRyo/CT9ucsZ18hd3PV9Y3obGw/k0T6AglMivhBadlHiSMnTfed4Qg==",
+      "requires": {
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/line-intersect": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/polygon-to-line": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-equal": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-7.0.0.tgz",
+      "integrity": "sha512-9C7xkxOyqN0/8Ze4TrysKWWYZxWB0s6zSBaADuVhaIsFzfwvC5wbEpwOL8pRop++7YRRlJ92QM8Bq53DU8+7LQ==",
+      "requires": {
+        "@turf/clean-coords": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-intersects": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-intersects/-/boolean-intersects-7.0.0.tgz",
+      "integrity": "sha512-+jNZw/ziZ2xyeDoasuwubVu3arRS71i6tSxvnPQmsWISki6rLJF7OQEkc9LNIllYlADCZUkUTJ1OktznrEUDkA==",
+      "requires": {
+        "@turf/boolean-disjoint": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-overlap": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-7.0.0.tgz",
+      "integrity": "sha512-mnZxjGSs8OuH/+QUuP5FGkut2bLr1FGZ63ThJ97aUuJP+lZQnYnkPdT1hQIdcyhtTQgF1yOM7EH+O//DkoROpA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/line-intersect": "^7.0.0",
+        "@turf/line-overlap": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-parallel": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-7.0.0.tgz",
+      "integrity": "sha512-OTL9XLjzRulLPQ12il3my9fLhemHsoyYe/owxNYz+kYtUyDHQ6lRz6vEaI3W7MKY9fnqwuIdJQpckOL5TH2cPQ==",
+      "requires": {
+        "@turf/clean-coords": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/line-segment": "^7.0.0",
+        "@turf/rhumb-bearing": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-point-in-polygon": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.0.0.tgz",
+      "integrity": "sha512-Z9swETfICqUJ8iVLZimvIOh8r4Wrlu9/X/c/5vIEeVvG4Lu78Ztmgu1KaobZJFC93/ntOAjMBavc9aNgw7TXgQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "point-in-polygon-hao": "^1.1.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-point-on-line": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-7.0.0.tgz",
+      "integrity": "sha512-9/1hj2MxcUU4fZu+MQC6rdMsdvAYNTtfxssLrZ1dGXo+NcAoWFbZSrfk62pSJBflveyKY5kXPYY+xQfLT0NeDQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-touches": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-touches/-/boolean-touches-7.0.0.tgz",
+      "integrity": "sha512-eZE2uvylkQLAePHTGRjnVlr+QKnwU9gPAarz2q4YF7hi2QRDQd8kc+Ai/450C3xL9iPYO6wrbAQ7qpmB1Jsq4g==",
+      "requires": {
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/boolean-point-on-line": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-valid": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-valid/-/boolean-valid-7.0.0.tgz",
+      "integrity": "sha512-TM2UBVFu59u8fAZVHsVnnnCv6486J2uCFmhsVsSCgTgTET1+Lm0TK0XTj5cyPSYR35qR/BjcU1gO3l45bdap9A==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/boolean-crosses": "^7.0.0",
+        "@turf/boolean-disjoint": "^7.0.0",
+        "@turf/boolean-overlap": "^7.0.0",
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/boolean-point-on-line": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/line-intersect": "^7.0.0",
+        "geojson-polygon-self-intersections": "^1.2.1",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/boolean-within": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-7.0.0.tgz",
+      "integrity": "sha512-QmOX34T7z9wzuzUVsXx3KMCMsxLi71/SOcrgkcHhcWsThx+VPPmyIUtTa8XnBt1BBlx7IIrR2pAeORkUi0CdEg==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/boolean-point-on-line": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/buffer": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-7.0.0.tgz",
+      "integrity": "sha512-viw3XjTtYVtkq5DkRDBQjXoi5QeEMhe4JHWXIfHMHs4o5F9B+lZ8+TtXWo18X5aAXknv6ib1z2syoaQdBpb5Xw==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/center": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/jsts": "^2.7.1",
+        "@turf/meta": "^7.0.0",
+        "@turf/projection": "^7.0.0",
+        "d3-geo": "1.7.1"
+      }
+    },
+    "@turf/center": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/center/-/center-7.0.0.tgz",
+      "integrity": "sha512-5RZia9uuWxz2oCyd1vsNkBeraBNdwCsIo4UGRQdyswBeLFVbRwIUa7M7+2z2D7B1YIgovuLIRVfk6FeWUQXDtQ==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/center-mean": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-7.0.0.tgz",
+      "integrity": "sha512-pneYkH6/4a6gDDvhVL2by9OCJ4yTIANoHQ4JpYVjvB1VlQWrVI5qQd80+q3bMKCDWaACEq8UWa/5NmvKlSRT3A==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/center-median": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-7.0.0.tgz",
+      "integrity": "sha512-ppCVjwwNe3Rz86TQp+zt9uFI9ZlFwu2miQtpFVcv2ej9IN2D5PUIRnehWgVeQ+yZ+ocMjMNLMcackUnqeKR4FA==",
+      "requires": {
+        "@turf/center-mean": "^7.0.0",
+        "@turf/centroid": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/center-of-mass": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-7.0.0.tgz",
+      "integrity": "sha512-vnD43bX4jl1ViDjY+nxISeQd8vfPqvLw+0N1MxpweCh5S85DNqUg6J8GXC1kbZlfOBS3mS9p2CW1Rfg4ggiGHw==",
+      "requires": {
+        "@turf/centroid": "^7.0.0",
+        "@turf/convex": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/centroid": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.0.0.tgz",
+      "integrity": "sha512-TMKp5yadglNVRxX3xuk1qQDEy5JFHmlYVBamzXuD8DL8rYdVog2x4gQHrwn7xrUyAlKJ4fUZZPkYBWfW6TDWbw==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/circle": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-7.0.0.tgz",
+      "integrity": "sha512-rRMthTL5+mhiFXQwlk4jUuf0pkqDAhry/El03VNYNyDGOx4N6p0XMmgbIdJmG6ZooinHpHfMU4N8ZQ9Xo6vVPA==",
+      "requires": {
+        "@turf/destination": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/clean-coords": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-7.0.0.tgz",
+      "integrity": "sha512-kaKR4/NnhZpgC+hWY3MfPqV2KwzG4Vr66WH59GbT5B2tvAOJqAYUmq+rgyMsG6xA3fTBL3neDW0bY1DHFVcvHQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/clone": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.0.0.tgz",
+      "integrity": "sha512-bQBx/wbQoGNtZzuHetLt44NMqOCnjSXcvTWm+LJ7YTmwrqZVAjISDhFxgawY/L+G3p+ya5WoxQwZWak80uYg3A==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/clusters": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-7.0.0.tgz",
+      "integrity": "sha512-s96uAedbT+9JX6Cg11TsjyZRZIOYABBplA7vKlFgfEKitscCRFUP+pVgiRXy8wBgyKsXqG28DJr96kXQaJKSeg==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/clusters-dbscan": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-7.0.0.tgz",
+      "integrity": "sha512-q8P7MjD0jGhNOzE+I6Cj8UiVaqkuDV27nGA8fLZWNxLW27+X2QJzU+NFLkx0suV9ApmCWRiaIyWUHWG9uZntxA==",
+      "requires": {
+        "@turf/clone": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "rbush": "^3.0.1",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/clusters-kmeans": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-7.0.0.tgz",
+      "integrity": "sha512-ZwN4sLcTgeD7meryarJZunLXISHM7ZLc0S7Lgwv64fYsYU2ea64BMst5mRFCZsrrlFdYmrwUo4DlihL8k9XLKw==",
+      "requires": {
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "skmeans": "0.9.7",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/collect": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-7.0.0.tgz",
+      "integrity": "sha512-zgKPVVmNr/5OJiHLnQAzDCMv1xDxwuNw8PfCPYkek8s2dvr9LFlEMfPxnp9hY+/oHJx8+1mC01c9qgb7hF8yPQ==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "rbush": "^3.0.1",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/combine": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-7.0.0.tgz",
+      "integrity": "sha512-xNg6XGAwEWmpjYImJ3+vie+ASKQ7dzUrwUDJ5DOOS8XonLkVAIGus+qDoXdIzAcb9jqSaSFC4sGmQFdTM1Sj1w==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/concave": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-7.0.0.tgz",
+      "integrity": "sha512-iwrLBgCUgsquvLSCnzppPVDWGLoCjVDV9xgg7jncbi9aURuGPfhHd5eaC9fyxtIlSbcfrSDXSHJLoeC6bpmlOw==",
+      "requires": {
+        "@turf/clone": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/tin": "^7.0.0",
+        "topojson-client": "3.x",
+        "topojson-server": "3.x",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/convex": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-7.0.0.tgz",
+      "integrity": "sha512-iAAwC1FPB4aiA7djUU/pk7lMgWjACbQOB2oX6cH39P5M7W6GXhrTEvYAx+thBtNq+M6BPk/gk3bU1BjZFrQ4+g==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "concaveman": "^1.2.1",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/destination": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-7.0.0.tgz",
+      "integrity": "sha512-wXfLd37ul7xuFvv4L7dtNQOZnmYepnrsMZrxbmxvy2SCnF+Rzf1C7D1NQ6+Nx5SInB/SbTfi6SCDgyfB8MOawQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/difference": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-7.0.0.tgz",
+      "integrity": "sha512-JCPRuGcOkT+Hq5PJcEUhkCheTyJcwB5dS1SIJGhDDNOJp8m8REHFJCmvxA3K40demovbyDLk85AojYpJ3jlALQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "polygon-clipping": "^0.15.3",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/dissolve": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-7.0.0.tgz",
+      "integrity": "sha512-WUapSrl4nTpKGQ9uacfefPNI8mEl0PYrCN6vDTs2W4k6UT9NdeJYNPaR6275nAoOUEL9t9K+adPgdMltm/EG3g==",
+      "requires": {
+        "@turf/flatten": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "polygon-clipping": "^0.15.3",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/distance": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.0.0.tgz",
+      "integrity": "sha512-DBPKhHABpPZ0KRduRpEaoi8MB6r1DVuyyps68VFH2Qi5H0ZnFtJFj7nQxBPZR3bVpbUq4zzu7I+MiNAd3ujFWQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/distance-weight": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/distance-weight/-/distance-weight-7.0.0.tgz",
+      "integrity": "sha512-BFftfC1QdtcJNMx4TOYxkHX/xsy4FjiG4tdEgdx99DBZ4L1RS/qqgC1O943WuqbfvJTn15E6ka0Rkep2/90IMA==",
+      "requires": {
+        "@turf/centroid": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/ellipse": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-7.0.0.tgz",
+      "integrity": "sha512-bdHzKPfxIWVz3p7jlsyi89BAxvjIhxCgLzDXKYp4tSf2LYGpkfWpSJA2bRnj7TuEq5zYQR8L5LJhn7jg0hehlg==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/rhumb-destination": "^7.0.0",
+        "@turf/transform-rotate": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/envelope": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-7.0.0.tgz",
+      "integrity": "sha512-110YN+9PmhRYE7co+4ewB/IY3SL9q90mw5FoXrv97VRYVlf8jQCa2mwSalMiuAGnhvfG+Yq1k+ibjjLJcS3gWA==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/bbox-polygon": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/explode": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-7.0.0.tgz",
+      "integrity": "sha512-q7KZ/PxY9zHN4UGXaADUpsHGkj8lbexVZxdBnp0nEfTHm/ziLTAfpI15CdAknoz4Ee8k8tx7ldosVjjg7YJ3/g==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/flatten": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-7.0.0.tgz",
+      "integrity": "sha512-QVTPgE9PdulQiQPglQ+mXpThBfp3v5RhCSupBCAoqOkqo/KfnliHqJXmVTaZotUZnMgc3wbAMJtSJvDRhTnFFA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/flip": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-7.0.0.tgz",
+      "integrity": "sha512-8yqhjXhqKF9fqN4ZfLgVNKCX0AVDaOY9KzD3AGQ+UiRHgmnY/F/T8Np9hSgEVQl1E9N6GXWF/7d8fOTVKCFCbQ==",
+      "requires": {
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/geojson-rbush": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/geojson-rbush/-/geojson-rbush-7.0.0.tgz",
+      "integrity": "sha512-h0fJPWHkpGEHkVvQ/tv4FwYkWuEbhbSF0rrQEUyXwvZtlZPRBYJ7WQ5qRsvE7QdQK81B7jWxZiM/qWeayALu1g==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@types/geojson": "7946.0.8",
+        "rbush": "^3.0.1"
+      }
+    },
+    "@turf/great-circle": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-7.0.0.tgz",
+      "integrity": "sha512-onZYQ4ZiN2sIff8j648k+eaeavC+W2wG9L+7wSZjWgeaM4t40r3ZhcJLwqmMUSHxccACNlnINukQodulsflFDg==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0"
+      }
+    },
+    "@turf/helpers": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.0.0.tgz",
+      "integrity": "sha512-vwZvxRuyjGpGXvhXSbT9mX6FK92dBMLWbMbDJ/MXQUPx17ReVPFc+6N6IcxAzZfkiCnqy7vpuq0c+/TTrQxIiA==",
+      "requires": {
+        "deep-equal": "^2.2.3",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "deep-equal": {
+          "version": "2.2.3",
+          "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
+          "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
+          "requires": {
+            "array-buffer-byte-length": "^1.0.0",
+            "call-bind": "^1.0.5",
+            "es-get-iterator": "^1.1.3",
+            "get-intrinsic": "^1.2.2",
+            "is-arguments": "^1.1.1",
+            "is-array-buffer": "^3.0.2",
+            "is-date-object": "^1.0.5",
+            "is-regex": "^1.1.4",
+            "is-shared-array-buffer": "^1.0.2",
+            "isarray": "^2.0.5",
+            "object-is": "^1.1.5",
+            "object-keys": "^1.1.1",
+            "object.assign": "^4.1.4",
+            "regexp.prototype.flags": "^1.5.1",
+            "side-channel": "^1.0.4",
+            "which-boxed-primitive": "^1.0.2",
+            "which-collection": "^1.0.1",
+            "which-typed-array": "^1.1.13"
+          }
+        },
+        "isarray": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+        },
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/hex-grid": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-7.0.0.tgz",
+      "integrity": "sha512-6vWO/eVyCvk9mUOj7wxCRUSFpZ0Rlqo4fLvAWX+WsNlOn7xnYs8TFXyiVuWcJdWiMX/LzjOF2OTI6HXF3BhEAQ==",
+      "requires": {
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/intersect": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/interpolate": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-7.0.0.tgz",
+      "integrity": "sha512-ERorrpqItp/qrVtkCkFhB0i4fgjb27cCObTucWdSVUMEitH2ieEQzysmghtyq2F6zq1DW3tC33Jjr79IDj+X6A==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/centroid": "^7.0.0",
+        "@turf/clone": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/hex-grid": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/point-grid": "^7.0.0",
+        "@turf/square-grid": "^7.0.0",
+        "@turf/triangle-grid": "^7.0.0"
+      }
+    },
+    "@turf/intersect": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-7.0.0.tgz",
+      "integrity": "sha512-2GL9yAPwmzkec5UiuPbVdLpPVsJIRVl8obPu4oMzhOMKVqw3UGsFGCjWNOY2cKg2cN8E7ijfAEoFNztLyNPY+g==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "polygon-clipping": "^0.15.3",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/invariant": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.0.0.tgz",
+      "integrity": "sha512-Kayszfz3W8yJ1/cIA3/aNSzAuw7QgSp+IwsSmhLAfp4DbjV0o6sjxRZXRY2gRstZHqkNHSSEeir8V/icdO8sjA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/isobands": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-7.0.0.tgz",
+      "integrity": "sha512-2l+FIbywYPCsus8+H6eSyyf3Xsrbe+Zi0NbgpVDScvR9TVu55ta0KMvQdS4aMEtg9ADlQa/C81hZhmYsBtvLug==",
+      "requires": {
+        "@turf/area": "^7.0.0",
+        "@turf/bbox": "^7.0.0",
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/explode": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "marchingsquares": "^1.3.3",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/isolines": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-7.0.0.tgz",
+      "integrity": "sha512-3LqwbzHnZ19gca5VC08XnHK36iRw2tEKjVtrI87iq6QEN9rR4FYcZOCmkPznYKwMKr44KkZKOlfNq/s72s1t3w==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "marchingsquares": "^1.3.3",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/jsts": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/@turf/jsts/-/jsts-2.7.1.tgz",
+      "integrity": "sha512-+nwOKme/aUprsxnLSfr2LylV6eL6T1Tuln+4Hl92uwZ8FrmjDRCH5Bi1LJNVfWCiYgk8+5K+t2zDphWNTsIFDA==",
+      "requires": {
+        "jsts": "2.7.1"
+      }
+    },
+    "@turf/kinks": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-7.0.0.tgz",
+      "integrity": "sha512-rUzx2G4NSb7f+SMjuBZBakrK4BrS3pfb67vYH8XQA28C9NBRQcZqJBCjXqA079q16GXiDpjCLianQMewtd6ksw==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "sweepline-intersections": "^1.5.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/length": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/length/-/length-7.0.0.tgz",
+      "integrity": "sha512-B+ABesWLtQc8W310LJ8kmUn//NfpUUhsm4Gwt9ZHNYxBVV+FNolY965F7DYm/tvLMZP9bGMomTlczFWV7O4YIA==",
+      "requires": {
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/line-arc": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-7.0.0.tgz",
+      "integrity": "sha512-kxZJlbQHR5F7toJ7QR+qF4eWX74RydGavCr2/IPOjcFK1mcSkTfyiSli3pciavD4eH3tHx0flTqH2poqTQxtyg==",
+      "requires": {
+        "@turf/circle": "^7.0.0",
+        "@turf/destination": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/line-chunk": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-7.0.0.tgz",
+      "integrity": "sha512-oA4GuUSxof3o0JOhNyS+CdzpqJ0VFro8RlGkTtymMhEMly4T7xjbMdffIrJ9o8hpnNKdwkJs4bcB98UD8sSPeA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/length": "^7.0.0",
+        "@turf/line-slice-along": "^7.0.0",
+        "@turf/meta": "^7.0.0"
+      }
+    },
+    "@turf/line-intersect": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-7.0.0.tgz",
+      "integrity": "sha512-vxCwzxCbTyKXO3GsEFQ8hyH1nLQShBhvFobRM2bLrbBlP2fWY9LDGixBcmWuOwV/G/wpQJxAjBJ6IYHjKIJqyA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "sweepline-intersections": "^1.5.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/line-offset": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-7.0.0.tgz",
+      "integrity": "sha512-ZQHAuR2y0ktG8uYAbaxGsJh931oCBwrxzOjiRtOcMifc/Hty37WFVaE9rCDrYrMLut7Ye9JQ36c6DMOljOLkMA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0"
+      }
+    },
+    "@turf/line-overlap": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-7.0.0.tgz",
+      "integrity": "sha512-yYjT0Qe2WIvf3InuSzobmEkD4XguoimdzXt23eHFF/RKNubAwwdFDeLbmyA7fNZFGrMLNEl/zYvgBVXiQ7tihg==",
+      "requires": {
+        "@turf/boolean-point-on-line": "^7.0.0",
+        "@turf/geojson-rbush": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/line-segment": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/nearest-point-on-line": "^7.0.0",
+        "deep-equal": "^2.2.3",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "deep-equal": {
+          "version": "2.2.3",
+          "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
+          "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
+          "requires": {
+            "array-buffer-byte-length": "^1.0.0",
+            "call-bind": "^1.0.5",
+            "es-get-iterator": "^1.1.3",
+            "get-intrinsic": "^1.2.2",
+            "is-arguments": "^1.1.1",
+            "is-array-buffer": "^3.0.2",
+            "is-date-object": "^1.0.5",
+            "is-regex": "^1.1.4",
+            "is-shared-array-buffer": "^1.0.2",
+            "isarray": "^2.0.5",
+            "object-is": "^1.1.5",
+            "object-keys": "^1.1.1",
+            "object.assign": "^4.1.4",
+            "regexp.prototype.flags": "^1.5.1",
+            "side-channel": "^1.0.4",
+            "which-boxed-primitive": "^1.0.2",
+            "which-collection": "^1.0.1",
+            "which-typed-array": "^1.1.13"
+          }
+        },
+        "isarray": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+        },
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/line-segment": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-7.0.0.tgz",
+      "integrity": "sha512-Fn8IPEMGQyDAJjjrEOrF0VUCdRosjdvd9x38gq73Qg5oSsZ4p9DdMdgydK27XL74/ivM4+CtDqQkHcj5Aec/yw==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/line-slice": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-7.0.0.tgz",
+      "integrity": "sha512-De+j4QTdoHguYu4S3UqOdU8GEg7VrVqQ67SkGzgFWL/SFh3V98+KDhxFIMA1OmzOc5/ox3yUQ8a/BOYslAV4DA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/nearest-point-on-line": "^7.0.0"
+      }
+    },
+    "@turf/line-slice-along": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-7.0.0.tgz",
+      "integrity": "sha512-+HNcI8ilm7ma/oKm23f2ca+xaNe4IjDYAjtl2Peap3b39Y9UAgw6lXhIh/L+m/XQXKkdWOfmqf4J2ar0bgG9DQ==",
+      "requires": {
+        "@turf/bearing": "^7.0.0",
+        "@turf/destination": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0"
+      }
+    },
+    "@turf/line-split": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-7.0.0.tgz",
+      "integrity": "sha512-LuJuO1bY++PJEQ7gqbkzdL8RP1pZRQdgoqaZTsMy5AhxfjMCSL4Bx3o8SYAtsQt6CTx17dMCqBcjmjZwqNJJ6w==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/geojson-rbush": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/line-intersect": "^7.0.0",
+        "@turf/line-segment": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/nearest-point-on-line": "^7.0.0",
+        "@turf/square": "^7.0.0",
+        "@turf/truncate": "^7.0.0"
+      }
+    },
+    "@turf/line-to-polygon": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-7.0.0.tgz",
+      "integrity": "sha512-NmrY1jFj4oW30TW2LNoL00/uNmF1bGeTU8W1EtCunoCUUOVD9XSCj0kdSuq+MJLBH06PzOL+2f1jKTFf0X7Kqg==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/mask": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-7.0.0.tgz",
+      "integrity": "sha512-5vSNpN4rCRhEsS69d9u8USlFGdlf5rySCD701gzALNGpvTN4ViXoUUH9ysdqOdvp/IdC8thRP72Hget9fJKcfQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "polygon-clipping": "^0.15.3"
+      }
+    },
+    "@turf/meta": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.0.0.tgz",
+      "integrity": "sha512-cEXr13uFwhXq5mFBy0IK1U/QepE5qgk3zXpBYsla3lYV7cB83Vh+NNUR+r0/w/QoJqest1TG4H20F9tGYWPi/g==",
+      "requires": {
+        "@turf/helpers": "^7.0.0"
+      }
+    },
+    "@turf/midpoint": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-7.0.0.tgz",
+      "integrity": "sha512-Zt0OgtByf5rTKT86WssAzNN2D7eqjay9ZlRb2rutynMyJDdLgbGPurTZIOXOP7ztGaS/WIMYlvPEveIp8ao1zQ==",
+      "requires": {
+        "@turf/bearing": "^7.0.0",
+        "@turf/destination": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0"
+      }
+    },
+    "@turf/moran-index": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/moran-index/-/moran-index-7.0.0.tgz",
+      "integrity": "sha512-Vl3PD8wn8aBYZpQ7Kq+dWosiQP2HTeZmzEyQh7WGAUK7OunODFPIdObj6jLwKYj9ZW2XVxaGmogjVEmQ2/2FQQ==",
+      "requires": {
+        "@turf/distance-weight": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/nearest-neighbor-analysis": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/nearest-neighbor-analysis/-/nearest-neighbor-analysis-7.0.0.tgz",
+      "integrity": "sha512-wz+2U271niT7l18SIctAo5Muh5kqyZl4bqFUWTQhhhzXkcP2hCYT9gYWkrZN0gfyp9sCWUe7mgoU6/wGDsiENQ==",
+      "requires": {
+        "@turf/area": "^7.0.0",
+        "@turf/bbox": "^7.0.0",
+        "@turf/bbox-polygon": "^7.0.0",
+        "@turf/centroid": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/nearest-point": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/nearest-point": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-7.0.0.tgz",
+      "integrity": "sha512-h3uLUoeo6JWTirpI499SRooqEoDxia2C/kDqAwAeXFqwxzGqGprtNA/C0bMgHfxE1M2rxORGzvgywKirpLu1dA==",
+      "requires": {
+        "@turf/clone": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/nearest-point-on-line": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-7.0.0.tgz",
+      "integrity": "sha512-ADf+oytqY3EVT/9JApoRr5H0f8wzkzeXhJUfTDEcWZoJqT/8lOX2HCo87b6+oEb1QIavlSogoku1+M5xMIcJLw==",
+      "requires": {
+        "@turf/bearing": "^7.0.0",
+        "@turf/destination": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/line-intersect": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/nearest-point-to-line": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-7.0.0.tgz",
+      "integrity": "sha512-DmbQ88nChkVD6pe9dbFZEBVtmcgrRFKSv1n3Y1Kka+BeDFzCfie2VJuhsrqrecRmLMIEf1tdVJL/MdpinnZZTQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/point-to-line-distance": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/planepoint": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-7.0.0.tgz",
+      "integrity": "sha512-+/Sqk1I8QwlKsd0rfjwOac3BAdIBeyjN8Irgk2vYbxUADn6QWcxyYLro8DHUVrTu9jZfllc8QNpy9/6iUykm0A==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0"
+      }
+    },
+    "@turf/point-grid": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-7.0.0.tgz",
+      "integrity": "sha512-vXtFeWFC0i9T71AVX5VdlqD2mlKhk649OF/pEJB9wtCGDHYax9kkObNDSz4mFAz4UqQ67P5Lipg8YYaawgmDZg==",
+      "requires": {
+        "@turf/boolean-within": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/point-on-feature": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-7.0.0.tgz",
+      "integrity": "sha512-KTvYrQJEw62GLivd5LfCRt9z/4ZFdz29+3HxW9/RHhb8nrjLU8M8j7fJTQ+/Q+pPunWPK0Fvjv8LZAh0c30/oA==",
+      "requires": {
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/center": "^7.0.0",
+        "@turf/explode": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/nearest-point": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/point-to-line-distance": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-7.0.0.tgz",
+      "integrity": "sha512-BMNy/vbvm9NjrgJq6MA3xhruy+cp/Wj+ff3fiu8Rdl5QX/dMwCeyCZuuvzCftup6GTPUhRbpe0YRFUBInGzx/g==",
+      "requires": {
+        "@turf/bearing": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/projection": "^7.0.0",
+        "@turf/rhumb-bearing": "^7.0.0",
+        "@turf/rhumb-distance": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/points-within-polygon": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-7.0.0.tgz",
+      "integrity": "sha512-Nz4kLSitsfZH0jwgCA5PCVcCocMWNM5+0LZo13j2JoXP980zTwL5t6jiwS2qFoofNE0Q6RfjrfQ3kVm5/g1/bQ==",
+      "requires": {
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/polygon-smooth": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/polygon-smooth/-/polygon-smooth-7.0.0.tgz",
+      "integrity": "sha512-1pY81xZivsToG8zFGvX/1NjrYCNOWm+fdtciWyF+tt0rGE/xvMwE4yiX1chDrKiV2X8W+Ip/ZLry3MIBcSUx0Q==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/polygon-tangents": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-7.0.0.tgz",
+      "integrity": "sha512-BNSKWqOTiCvVSj5CuLmkcHkagFsBSbUuSSffEGxC3cFY2tb0vP71nFE9qM+h9FpApkR6F/bWxRu5AxQ4oVHySQ==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/boolean-within": "^7.0.0",
+        "@turf/explode": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/nearest-point": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/polygon-to-line": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-7.0.0.tgz",
+      "integrity": "sha512-FkbxgABNzULN//WiSWiBqkbePbQANMmYKFgD6tUnVGldTFa1RuUjt/bgbvPjVHZfUdJieyxBszzl1dP0z8czDQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/polygonize": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-7.0.0.tgz",
+      "integrity": "sha512-aTVANRcWHVFZIgUwH5H5BMn9OoGk8KI+mGe4H8cXQWUvarKUz86t8BkdkbWnsAfdOTrEwK4WFWtxfmeWwJUH7Q==",
+      "requires": {
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/envelope": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/projection": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-7.0.0.tgz",
+      "integrity": "sha512-EoPbZPZSDv0AJMfYhqnS455CVMYwPU78kHyQHeOnMR1Tc5z+TiImvyq55umhfecgpETzuDsjFkmeQ2phDKTmbA==",
+      "requires": {
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/quadrat-analysis": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/quadrat-analysis/-/quadrat-analysis-7.0.0.tgz",
+      "integrity": "sha512-JaCARFLS7mFIGORpRFcqrrCWVgTi+Vw5prSgQdaMVMcXo5+wsPh0fJUno4PGHt++R6AE3ZgxtDq2gS/1RZfhOA==",
+      "requires": {
+        "@turf/area": "^7.0.0",
+        "@turf/bbox": "^7.0.0",
+        "@turf/bbox-polygon": "^7.0.0",
+        "@turf/centroid": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/point-grid": "^7.0.0",
+        "@turf/random": "^7.0.0",
+        "@turf/square-grid": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/random": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.0.0.tgz",
+      "integrity": "sha512-l3+FW0pk6MUQx2lyMvzps2YQS7ovP6YoV0tVvuNaQq0UICB1P4EHJIKLMTe5pXk73Z3p0wTgnEPk0Z2lqWaeGQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/rectangle-grid": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/rectangle-grid/-/rectangle-grid-7.0.0.tgz",
+      "integrity": "sha512-iLMRfaWs9+BlGaDP5ka7J9bTGFPGim1Tl38uNTPagIVxk6bNfB8156S9up+/7scpjuQGxY0ky3tlR9aVYlWNdw==",
+      "requires": {
+        "@turf/boolean-intersects": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/rewind": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-7.0.0.tgz",
+      "integrity": "sha512-kZwqJ4enmTZPDrI0rCf+zE9HChCuKKvD0kqZJo50XvfypfKVz5CI751Dgs/cslMIENyKFiHHHM4OMgouJ/lR1Q==",
+      "requires": {
+        "@turf/boolean-clockwise": "^7.0.0",
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/rhumb-bearing": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-7.0.0.tgz",
+      "integrity": "sha512-4qDggFDNBbWdD+o3H+vna5eiKCAsmqAueP3T5rSEB1ier77wVgjg7cs7eTrEBbpuCbPAho7NDNdyAjgItydgLQ==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/rhumb-destination": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-7.0.0.tgz",
+      "integrity": "sha512-uYgqP8BGo8DBs6ZgjBo9SNCXc6BY+iA6OG7yPYSe4Lur2vu+LkbBXV6P3IodkeHyPex+X5ATea8QHutYQX6HUg==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/rhumb-distance": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-7.0.0.tgz",
+      "integrity": "sha512-VAZnZcHbHHUU/Li0sj50/T6bBGRWvJ6eOZmw2aZFxxnC+AkHv4LTKDf0wNsxR03ZwGEh4uJM8OuirNugLIhAyA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/sample": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-7.0.0.tgz",
+      "integrity": "sha512-yCeITDVT3vWMaK/X1JF6jxEipgBCi2Foj87lVO7rcVg5pp/6c2S8BnFB5NoI0+HKXEpulG4eH57khUVND9VCGA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/sector": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-7.0.0.tgz",
+      "integrity": "sha512-HXT8vbCYoIbomcyT0D/0Ap4p3bSmb3EFC7C5BBv3Gr9oWiMf5cFgwwA/inbGorU5fcRap7/Yt4hWWTGLO5MDTw==",
+      "requires": {
+        "@turf/circle": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/line-arc": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/shortest-path": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-7.0.0.tgz",
+      "integrity": "sha512-nEtL6qA3Po6uXZsLnfbFCD+Nng3GIRBX2Okyva3PYCJvuD27qYJFvXk423Z0qA+09zZHhi2Ct1IGuXBBYmdkaw==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/bbox-polygon": "^7.0.0",
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/clean-coords": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/transform-scale": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/simplify": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-7.0.0.tgz",
+      "integrity": "sha512-EizgFBv7LiLTfqk0BlzuKXmGj7owHksI7Q0mur+yOFGFhEmP5pWm+jYxq+pYfUZA3eki4J7kyN4Mhg5c+jhLTw==",
+      "requires": {
+        "@turf/clean-coords": "^7.0.0",
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/square": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/square/-/square-7.0.0.tgz",
+      "integrity": "sha512-HnY2fESbGGzMeb19qZ0HKpsGRZv4f4e8oHH+gdCr6cs03z/TO6JslJdRA65zHNkdReSVEOQWIMF5IB+Cq20jCg==",
+      "requires": {
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0"
+      }
+    },
+    "@turf/square-grid": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-7.0.0.tgz",
+      "integrity": "sha512-Dz7GyFRbcf0aek5nm7gW5gVYq/dJdn+JkVFgSIimysRl1tBtQiE0LvjZRdS97JvPs6m6hcZT+sDEXW1fLDPYFA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/rectangle-grid": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/standard-deviational-ellipse": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-7.0.0.tgz",
+      "integrity": "sha512-rr4T48aAfu2E/V6fStE8Jq1VD2a/zztS1LGu1PSK3pbk7Eq9HTEE9jzjBIONhDI6ljoLBYy4Qib+L3DaNCfmUQ==",
+      "requires": {
+        "@turf/center-mean": "^7.0.0",
+        "@turf/ellipse": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/points-within-polygon": "^7.0.0"
+      }
+    },
+    "@turf/tag": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-7.0.0.tgz",
+      "integrity": "sha512-/QVKwYq9C7BkHrVtwLXwKSrEZcZT+/JQeNpGsOFhCBnDgXUMtLpj2obkMt+v7wXXtUgTsFAnSh7ClNgS6eB2Sg==",
+      "requires": {
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/tesselate": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-7.0.0.tgz",
+      "integrity": "sha512-AWdFrBuLh4RFEBLWVaY9Z3/8jrXFv9WDvO3SyVUCQYFFcQP9aVieHyEEwebRaKb578il/o3rNHyRBuL6xSOcAA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "earcut": "^2.2.4"
+      }
+    },
+    "@turf/tin": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-7.0.0.tgz",
+      "integrity": "sha512-KuzXnoetCqu5RC6wcUWOvotxZMcgZptqz3gJZAuhqa1CF3DKUKFEJ851+f/9KzZ+woalUB8anFr9dMKJjcM6RA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/transform-rotate": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-7.0.0.tgz",
+      "integrity": "sha512-zU6ypVOdVtXaJvy2LEVjx4o7y/vR9kIL6Iu/VkzXIvGCYICDdHnrpeEVJOFZPqdq4GI4C1xAQ4ARPTwtGrpPBg==",
+      "requires": {
+        "@turf/centroid": "^7.0.0",
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/rhumb-bearing": "^7.0.0",
+        "@turf/rhumb-destination": "^7.0.0",
+        "@turf/rhumb-distance": "^7.0.0"
+      }
+    },
+    "@turf/transform-scale": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-7.0.0.tgz",
+      "integrity": "sha512-G94nxT5TyP8TSNRDkoevFoGlUw0H2Az5IG1JKFTT5nRqpbML17IQblV33gaA1Hm197rekQo3CDVWEbgpOV0jAw==",
+      "requires": {
+        "@turf/bbox": "^7.0.0",
+        "@turf/center": "^7.0.0",
+        "@turf/centroid": "^7.0.0",
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/rhumb-bearing": "^7.0.0",
+        "@turf/rhumb-destination": "^7.0.0",
+        "@turf/rhumb-distance": "^7.0.0"
+      }
+    },
+    "@turf/transform-translate": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-7.0.0.tgz",
+      "integrity": "sha512-sdZl29CqHoBo/Mxwos6Hvb6LXtHJYYTIjlWqphnu1kislbJwWUJpYjwD8yqTljfW4QHgDzGpnRLGzjDVZ7KHQQ==",
+      "requires": {
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/rhumb-destination": "^7.0.0"
+      }
+    },
+    "@turf/triangle-grid": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-7.0.0.tgz",
+      "integrity": "sha512-LKBMgkGGfZxZclRzalIYHGG50eMBOHNihBZLagK/f8RAMrvG2rS/S4n/CQbqU9OXenDgYErSm3SCVXC1dTXVPA==",
+      "requires": {
+        "@turf/distance": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/intersect": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/truncate": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-7.0.0.tgz",
+      "integrity": "sha512-G0cKlvONexzRIHRMkzhIA9UsOHiHbVW+iFBlAyDxXKK9Cr9USp/JjETAo8zqCnTQna40xdjt4bcHtsZxqyRQZw==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/turf": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-7.0.0.tgz",
+      "integrity": "sha512-oKtvIoP9nCBT7HCUn0/QP62QwTj8eDxfS810ZGJO0aDPDg2x94tSqwbvmu5WcvcxOBB/6L6rF55UJjL+OjcHxw==",
+      "requires": {
+        "@turf/along": "^7.0.0",
+        "@turf/angle": "^7.0.0",
+        "@turf/area": "^7.0.0",
+        "@turf/bbox": "^7.0.0",
+        "@turf/bbox-clip": "^7.0.0",
+        "@turf/bbox-polygon": "^7.0.0",
+        "@turf/bearing": "^7.0.0",
+        "@turf/bezier-spline": "^7.0.0",
+        "@turf/boolean-clockwise": "^7.0.0",
+        "@turf/boolean-concave": "^7.0.0",
+        "@turf/boolean-contains": "^7.0.0",
+        "@turf/boolean-crosses": "^7.0.0",
+        "@turf/boolean-disjoint": "^7.0.0",
+        "@turf/boolean-equal": "^7.0.0",
+        "@turf/boolean-intersects": "^7.0.0",
+        "@turf/boolean-overlap": "^7.0.0",
+        "@turf/boolean-parallel": "^7.0.0",
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/boolean-point-on-line": "^7.0.0",
+        "@turf/boolean-touches": "^7.0.0",
+        "@turf/boolean-valid": "^7.0.0",
+        "@turf/boolean-within": "^7.0.0",
+        "@turf/buffer": "^7.0.0",
+        "@turf/center": "^7.0.0",
+        "@turf/center-mean": "^7.0.0",
+        "@turf/center-median": "^7.0.0",
+        "@turf/center-of-mass": "^7.0.0",
+        "@turf/centroid": "^7.0.0",
+        "@turf/circle": "^7.0.0",
+        "@turf/clean-coords": "^7.0.0",
+        "@turf/clone": "^7.0.0",
+        "@turf/clusters": "^7.0.0",
+        "@turf/clusters-dbscan": "^7.0.0",
+        "@turf/clusters-kmeans": "^7.0.0",
+        "@turf/collect": "^7.0.0",
+        "@turf/combine": "^7.0.0",
+        "@turf/concave": "^7.0.0",
+        "@turf/convex": "^7.0.0",
+        "@turf/destination": "^7.0.0",
+        "@turf/difference": "^7.0.0",
+        "@turf/dissolve": "^7.0.0",
+        "@turf/distance": "^7.0.0",
+        "@turf/distance-weight": "^7.0.0",
+        "@turf/ellipse": "^7.0.0",
+        "@turf/envelope": "^7.0.0",
+        "@turf/explode": "^7.0.0",
+        "@turf/flatten": "^7.0.0",
+        "@turf/flip": "^7.0.0",
+        "@turf/geojson-rbush": "^7.0.0",
+        "@turf/great-circle": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/hex-grid": "^7.0.0",
+        "@turf/interpolate": "^7.0.0",
+        "@turf/intersect": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "@turf/isobands": "^7.0.0",
+        "@turf/isolines": "^7.0.0",
+        "@turf/kinks": "^7.0.0",
+        "@turf/length": "^7.0.0",
+        "@turf/line-arc": "^7.0.0",
+        "@turf/line-chunk": "^7.0.0",
+        "@turf/line-intersect": "^7.0.0",
+        "@turf/line-offset": "^7.0.0",
+        "@turf/line-overlap": "^7.0.0",
+        "@turf/line-segment": "^7.0.0",
+        "@turf/line-slice": "^7.0.0",
+        "@turf/line-slice-along": "^7.0.0",
+        "@turf/line-split": "^7.0.0",
+        "@turf/line-to-polygon": "^7.0.0",
+        "@turf/mask": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "@turf/midpoint": "^7.0.0",
+        "@turf/moran-index": "^7.0.0",
+        "@turf/nearest-neighbor-analysis": "^7.0.0",
+        "@turf/nearest-point": "^7.0.0",
+        "@turf/nearest-point-on-line": "^7.0.0",
+        "@turf/nearest-point-to-line": "^7.0.0",
+        "@turf/planepoint": "^7.0.0",
+        "@turf/point-grid": "^7.0.0",
+        "@turf/point-on-feature": "^7.0.0",
+        "@turf/point-to-line-distance": "^7.0.0",
+        "@turf/points-within-polygon": "^7.0.0",
+        "@turf/polygon-smooth": "^7.0.0",
+        "@turf/polygon-tangents": "^7.0.0",
+        "@turf/polygon-to-line": "^7.0.0",
+        "@turf/polygonize": "^7.0.0",
+        "@turf/projection": "^7.0.0",
+        "@turf/quadrat-analysis": "^7.0.0",
+        "@turf/random": "^7.0.0",
+        "@turf/rectangle-grid": "^7.0.0",
+        "@turf/rewind": "^7.0.0",
+        "@turf/rhumb-bearing": "^7.0.0",
+        "@turf/rhumb-destination": "^7.0.0",
+        "@turf/rhumb-distance": "^7.0.0",
+        "@turf/sample": "^7.0.0",
+        "@turf/sector": "^7.0.0",
+        "@turf/shortest-path": "^7.0.0",
+        "@turf/simplify": "^7.0.0",
+        "@turf/square": "^7.0.0",
+        "@turf/square-grid": "^7.0.0",
+        "@turf/standard-deviational-ellipse": "^7.0.0",
+        "@turf/tag": "^7.0.0",
+        "@turf/tesselate": "^7.0.0",
+        "@turf/tin": "^7.0.0",
+        "@turf/transform-rotate": "^7.0.0",
+        "@turf/transform-scale": "^7.0.0",
+        "@turf/transform-translate": "^7.0.0",
+        "@turf/triangle-grid": "^7.0.0",
+        "@turf/truncate": "^7.0.0",
+        "@turf/union": "^7.0.0",
+        "@turf/unkink-polygon": "^7.0.0",
+        "@turf/voronoi": "^7.0.0",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/union": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/union/-/union-7.0.0.tgz",
+      "integrity": "sha512-NRnP0GJ3guzVh6D2KNZvqNLMkbZtPQ6X1U4czK9ETicLROzqq6wM/S8gHZJVoh0KxxK1RYDsKu0RGFVobVT2vA==",
+      "requires": {
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "polygon-clipping": "^0.15.3",
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+        }
+      }
+    },
+    "@turf/unkink-polygon": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-7.0.0.tgz",
+      "integrity": "sha512-mkwC7+KgINIAkRYSx0iRp8BjGtw8bijvtzC9Da5CRTSg13WH2IrvksFtasTo58xMdqyt6oO2NdMEDX3JUwRCeg==",
+      "requires": {
+        "@turf/area": "^7.0.0",
+        "@turf/boolean-point-in-polygon": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/meta": "^7.0.0",
+        "rbush": "^3.0.1"
+      }
+    },
+    "@turf/voronoi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-7.0.0.tgz",
+      "integrity": "sha512-AJMrtd9eV+nVA+su1GIp96E5ENzKUepPFr9wWHqqWedj92W2KbdAwfwJVMyl0vBmiMYeTSnfzC7HenIMXePfhA==",
+      "requires": {
+        "@turf/clone": "^7.0.0",
+        "@turf/helpers": "^7.0.0",
+        "@turf/invariant": "^7.0.0",
+        "d3-voronoi": "1.1.2"
+      }
     },
     "@types/body-parser": {
       "version": "1.19.5",
@@ -1488,6 +3636,17 @@
       "requires": {
         "@types/connect": "*",
         "@types/node": "*"
+      }
+    },
+    "@types/cacheable-request": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+      "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+      "requires": {
+        "@types/http-cache-semantics": "*",
+        "@types/keyv": "^3.1.4",
+        "@types/node": "*",
+        "@types/responselike": "^1.0.0"
       }
     },
     "@types/connect": {
@@ -1533,6 +3692,11 @@
         "@types/send": "*"
       }
     },
+    "@types/geojson": {
+      "version": "7946.0.8",
+      "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz",
+      "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA=="
+    },
     "@types/glob": {
       "version": "7.2.0",
       "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz",
@@ -1542,6 +3706,11 @@
         "@types/minimatch": "*",
         "@types/node": "*"
       }
+    },
+    "@types/http-cache-semantics": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+      "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA=="
     },
     "@types/http-errors": {
       "version": "2.0.4",
@@ -1563,6 +3732,14 @@
       "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
       "dev": true
+    },
+    "@types/keyv": {
+      "version": "3.1.4",
+      "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+      "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+      "requires": {
+        "@types/node": "*"
+      }
     },
     "@types/mime": {
       "version": "1.3.5",
@@ -1586,7 +3763,6 @@
       "version": "20.11.13",
       "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.11.13.tgz",
       "integrity": "sha512-5G4zQwdiQBSWYTDAH1ctw2eidqdhMJaNsiIDKHFr55ihz5Trl2qqR8fdrT732yPBho5gkNxXm67OxWFBqX9aPg==",
-      "dev": true,
       "requires": {
         "undici-types": "~5.26.4"
       }
@@ -1614,6 +3790,14 @@
       "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz",
       "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
       "dev": true
+    },
+    "@types/responselike": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
+      "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+      "requires": {
+        "@types/node": "*"
+      }
     },
     "@types/send": {
       "version": "0.17.4",
@@ -2632,7 +4816,6 @@
       "version": "1.0.10",
       "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
       "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "dev": true,
       "requires": {
         "sprintf-js": "~1.0.2"
       }
@@ -2659,7 +4842,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
       "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "is-array-buffer": "^3.0.1"
@@ -2882,8 +5064,7 @@
     "available-typed-arrays": {
       "version": "1.0.5",
       "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
-      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
-      "dev": true
+      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
     },
     "aws-sign2": {
       "version": "0.7.0",
@@ -3450,11 +5631,44 @@
         }
       }
     },
+    "cacheable-lookup": {
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+      "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA=="
+    },
+    "cacheable-request": {
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+      "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+      "requires": {
+        "clone-response": "^1.0.2",
+        "get-stream": "^5.1.0",
+        "http-cache-semantics": "^4.0.0",
+        "keyv": "^4.0.0",
+        "lowercase-keys": "^2.0.0",
+        "normalize-url": "^6.0.1",
+        "responselike": "^2.0.0"
+      },
+      "dependencies": {
+        "get-stream": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+          "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "normalize-url": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+          "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="
+        }
+      }
+    },
     "call-bind": {
       "version": "1.0.5",
       "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz",
       "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
-      "dev": true,
       "requires": {
         "function-bind": "^1.1.2",
         "get-intrinsic": "^1.2.1",
@@ -3863,6 +6077,14 @@
       "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
       "dev": true
     },
+    "clone-response": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+      "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+      "requires": {
+        "mimic-response": "^1.0.0"
+      }
+    },
     "coa": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz",
@@ -3936,8 +6158,7 @@
     "commander": {
       "version": "2.20.3",
       "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-      "dev": true
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
     },
     "commondir": {
       "version": "1.0.1",
@@ -4020,6 +6241,17 @@
         "inherits": "^2.0.3",
         "readable-stream": "^2.2.2",
         "typedarray": "^0.0.6"
+      }
+    },
+    "concaveman": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/concaveman/-/concaveman-1.2.1.tgz",
+      "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==",
+      "requires": {
+        "point-in-polygon": "^1.1.0",
+        "rbush": "^3.0.1",
+        "robust-predicates": "^2.0.4",
+        "tinyqueue": "^2.0.3"
       }
     },
     "connect-history-api-fallback": {
@@ -4732,6 +6964,24 @@
       "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==",
       "dev": true
     },
+    "d3-array": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
+      "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
+    },
+    "d3-geo": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.7.1.tgz",
+      "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==",
+      "requires": {
+        "d3-array": "1"
+      }
+    },
+    "d3-voronoi": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz",
+      "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw=="
+    },
     "dashdash": {
       "version": "1.14.1",
       "resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz",
@@ -4785,6 +7035,21 @@
       "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
       "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
       "dev": true
+    },
+    "decompress-response": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+      "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+      "requires": {
+        "mimic-response": "^3.1.0"
+      },
+      "dependencies": {
+        "mimic-response": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+          "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="
+        }
+      }
     },
     "deep-equal": {
       "version": "1.1.2",
@@ -4935,11 +7200,15 @@
         "clone": "^1.0.2"
       }
     },
+    "defer-to-connect": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+      "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg=="
+    },
     "define-data-property": {
       "version": "1.1.1",
       "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz",
       "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
-      "dev": true,
       "requires": {
         "get-intrinsic": "^1.2.1",
         "gopd": "^1.0.1",
@@ -4950,7 +7219,6 @@
       "version": "1.2.1",
       "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz",
       "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
-      "dev": true,
       "requires": {
         "define-data-property": "^1.0.1",
         "has-property-descriptors": "^1.0.0",
@@ -5229,6 +7497,11 @@
         "stream-shift": "^1.0.0"
       }
     },
+    "earcut": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
+      "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ=="
+    },
     "easy-stack": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz",
@@ -5343,7 +7616,6 @@
       "version": "1.4.4",
       "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz",
       "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-      "dev": true,
       "requires": {
         "once": "^1.4.0"
       }
@@ -5468,6 +7740,56 @@
       "resolved": "https://registry.npmmirror.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
       "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
       "dev": true
+    },
+    "es-define-property": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+      "requires": {
+        "get-intrinsic": "^1.2.4"
+      },
+      "dependencies": {
+        "get-intrinsic": {
+          "version": "1.2.4",
+          "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+          "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+          "requires": {
+            "es-errors": "^1.3.0",
+            "function-bind": "^1.1.2",
+            "has-proto": "^1.0.1",
+            "has-symbols": "^1.0.3",
+            "hasown": "^2.0.0"
+          }
+        }
+      }
+    },
+    "es-errors": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
+    },
+    "es-get-iterator": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+      "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.3",
+        "has-symbols": "^1.0.3",
+        "is-arguments": "^1.1.1",
+        "is-map": "^2.0.2",
+        "is-set": "^2.0.2",
+        "is-string": "^1.0.7",
+        "isarray": "^2.0.5",
+        "stop-iteration-iterator": "^1.0.0"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+        }
+      }
     },
     "es-set-tostringtag": {
       "version": "2.0.2",
@@ -6272,7 +8594,6 @@
       "version": "0.3.3",
       "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz",
       "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
-      "dev": true,
       "requires": {
         "is-callable": "^1.1.3"
       }
@@ -6371,7 +8692,7 @@
     },
     "fsevents": {
       "version": "2.3.3",
-      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
       "dev": true,
       "optional": true
@@ -6379,8 +8700,7 @@
     "function-bind": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
-      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
-      "dev": true
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
     },
     "function.prototype.name": {
       "version": "1.1.6",
@@ -6403,8 +8723,7 @@
     "functions-have-names": {
       "version": "1.2.3",
       "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
-      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
-      "dev": true
+      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
     },
     "gauge": {
       "version": "4.0.4",
@@ -6437,6 +8756,29 @@
       "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
       "dev": true
     },
+    "geojson-polygon-self-intersections": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/geojson-polygon-self-intersections/-/geojson-polygon-self-intersections-1.2.1.tgz",
+      "integrity": "sha512-/QM1b5u2d172qQVO//9CGRa49jEmclKEsYOQmWP9ooEjj63tBM51m2805xsbxkzlEELQ2REgTf700gUhhlegxA==",
+      "requires": {
+        "rbush": "^2.0.1"
+      },
+      "dependencies": {
+        "quickselect": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz",
+          "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ=="
+        },
+        "rbush": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz",
+          "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==",
+          "requires": {
+            "quickselect": "^1.0.1"
+          }
+        }
+      }
+    },
     "get-caller-file": {
       "version": "2.0.5",
       "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -6447,7 +8789,6 @@
       "version": "1.2.2",
       "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
       "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
-      "dev": true,
       "requires": {
         "function-bind": "^1.1.2",
         "has-proto": "^1.0.1",
@@ -6595,9 +8936,26 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
       "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "dev": true,
       "requires": {
         "get-intrinsic": "^1.1.3"
+      }
+    },
+    "got": {
+      "version": "11.8.6",
+      "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+      "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+      "requires": {
+        "@sindresorhus/is": "^4.0.0",
+        "@szmarczak/http-timer": "^4.0.5",
+        "@types/cacheable-request": "^6.0.1",
+        "@types/responselike": "^1.0.0",
+        "cacheable-lookup": "^5.0.3",
+        "cacheable-request": "^7.0.2",
+        "decompress-response": "^6.0.0",
+        "http2-wrapper": "^1.0.0-beta.5.2",
+        "lowercase-keys": "^2.0.0",
+        "p-cancelable": "^2.0.0",
+        "responselike": "^2.0.0"
       }
     },
     "graceful-fs": {
@@ -6653,8 +9011,7 @@
     "has-bigints": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz",
-      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
-      "dev": true
+      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ=="
     },
     "has-flag": {
       "version": "3.0.0",
@@ -6666,7 +9023,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
       "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
-      "dev": true,
       "requires": {
         "get-intrinsic": "^1.2.2"
       }
@@ -6674,20 +9030,17 @@
     "has-proto": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
-      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
-      "dev": true
+      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
     },
     "has-symbols": {
       "version": "1.0.3",
       "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-      "dev": true
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
     },
     "has-tostringtag": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
       "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-      "dev": true,
       "requires": {
         "has-symbols": "^1.0.2"
       }
@@ -6774,7 +9127,6 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz",
       "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
-      "dev": true,
       "requires": {
         "function-bind": "^1.1.2"
       }
@@ -6987,8 +9339,7 @@
     "http-cache-semantics": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
-      "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
-      "dev": true
+      "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
     },
     "http-deceiver": {
       "version": "1.2.7",
@@ -7104,6 +9455,22 @@
         "assert-plus": "^1.0.0",
         "jsprim": "^1.2.2",
         "sshpk": "^1.7.0"
+      }
+    },
+    "http2-wrapper": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+      "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+      "requires": {
+        "quick-lru": "^5.1.1",
+        "resolve-alpn": "^1.0.0"
+      },
+      "dependencies": {
+        "quick-lru": {
+          "version": "5.1.1",
+          "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+          "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="
+        }
       }
     },
     "https-browserify": {
@@ -7453,7 +9820,6 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.6.tgz",
       "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
-      "dev": true,
       "requires": {
         "get-intrinsic": "^1.2.2",
         "hasown": "^2.0.0",
@@ -7521,7 +9887,6 @@
       "version": "1.1.1",
       "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz",
       "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "has-tostringtag": "^1.0.0"
@@ -7531,7 +9896,6 @@
       "version": "3.0.2",
       "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
       "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "get-intrinsic": "^1.2.0",
@@ -7548,7 +9912,6 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz",
       "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-      "dev": true,
       "requires": {
         "has-bigints": "^1.0.1"
       }
@@ -7567,7 +9930,6 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
       "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "has-tostringtag": "^1.0.0"
@@ -7582,8 +9944,7 @@
     "is-callable": {
       "version": "1.2.7",
       "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz",
-      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
-      "dev": true
+      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
     },
     "is-ci": {
       "version": "1.2.1",
@@ -7630,7 +9991,6 @@
       "version": "1.0.5",
       "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz",
       "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "dev": true,
       "requires": {
         "has-tostringtag": "^1.0.0"
       }
@@ -7690,6 +10050,11 @@
       "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
       "dev": true
     },
+    "is-map": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+      "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="
+    },
     "is-negative-zero": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
@@ -7720,7 +10085,6 @@
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz",
       "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-      "dev": true,
       "requires": {
         "has-tostringtag": "^1.0.0"
       }
@@ -7774,7 +10138,6 @@
       "version": "1.1.4",
       "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz",
       "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "has-tostringtag": "^1.0.0"
@@ -7786,11 +10149,15 @@
       "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
       "dev": true
     },
+    "is-set": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+      "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="
+    },
     "is-shared-array-buffer": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
       "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2"
       }
@@ -7805,7 +10172,6 @@
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz",
       "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-      "dev": true,
       "requires": {
         "has-tostringtag": "^1.0.0"
       }
@@ -7814,7 +10180,6 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz",
       "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "dev": true,
       "requires": {
         "has-symbols": "^1.0.2"
       }
@@ -7823,7 +10188,6 @@
       "version": "1.1.12",
       "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz",
       "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
-      "dev": true,
       "requires": {
         "which-typed-array": "^1.1.11"
       }
@@ -7834,6 +10198,11 @@
       "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
       "dev": true
     },
+    "is-weakmap": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+      "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="
+    },
     "is-weakref": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz",
@@ -7841,6 +10210,72 @@
       "dev": true,
       "requires": {
         "call-bind": "^1.0.2"
+      }
+    },
+    "is-weakset": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+      "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+      "requires": {
+        "call-bind": "^1.0.7",
+        "get-intrinsic": "^1.2.4"
+      },
+      "dependencies": {
+        "call-bind": {
+          "version": "1.0.7",
+          "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+          "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+          "requires": {
+            "es-define-property": "^1.0.0",
+            "es-errors": "^1.3.0",
+            "function-bind": "^1.1.2",
+            "get-intrinsic": "^1.2.4",
+            "set-function-length": "^1.2.1"
+          }
+        },
+        "define-data-property": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+          "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+          "requires": {
+            "es-define-property": "^1.0.0",
+            "es-errors": "^1.3.0",
+            "gopd": "^1.0.1"
+          }
+        },
+        "get-intrinsic": {
+          "version": "1.2.4",
+          "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+          "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+          "requires": {
+            "es-errors": "^1.3.0",
+            "function-bind": "^1.1.2",
+            "has-proto": "^1.0.1",
+            "has-symbols": "^1.0.3",
+            "hasown": "^2.0.0"
+          }
+        },
+        "has-property-descriptors": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+          "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+          "requires": {
+            "es-define-property": "^1.0.0"
+          }
+        },
+        "set-function-length": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+          "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+          "requires": {
+            "define-data-property": "^1.1.4",
+            "es-errors": "^1.3.0",
+            "function-bind": "^1.1.2",
+            "get-intrinsic": "^1.2.4",
+            "gopd": "^1.0.1",
+            "has-property-descriptors": "^1.0.2"
+          }
+        }
       }
     },
     "is-what": {
@@ -7930,11 +10365,21 @@
       "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
       "dev": true
     },
+    "jsencrypt": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/jsencrypt/-/jsencrypt-3.3.2.tgz",
+      "integrity": "sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A=="
+    },
     "jsesc": {
       "version": "2.5.2",
       "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
       "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
       "dev": true
+    },
+    "json-buffer": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
     },
     "json-parse-better-errors": {
       "version": "1.0.2",
@@ -7999,6 +10444,11 @@
         "verror": "1.10.0"
       }
     },
+    "jsts": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/jsts/-/jsts-2.7.1.tgz",
+      "integrity": "sha512-x2wSZHEBK20CY+Wy+BPE7MrFQHW6sIsdaGUMEqmGAio+3gFzQaBYPwLRonUfQf9Ak8pBieqj9tUofX1+WtAEIg=="
+    },
     "jwchat": {
       "version": "0.2.50",
       "resolved": "https://registry.npmmirror.com/jwchat/-/jwchat-0.2.50.tgz",
@@ -8008,6 +10458,22 @@
         "iscroll": "^5.2.0",
         "vue": "^2.6.11",
         "wechat-emoji-parser": "^1.1.0"
+      }
+    },
+    "katex": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/katex/-/katex-0.6.0.tgz",
+      "integrity": "sha512-rS4mY3SvHYg5LtQV6RBcK0if7ur6plyEukAOV+jGGPqFImuzu8fHL6M752iBmRGoUyF0bhZbAPoezehn7xYksA==",
+      "requires": {
+        "match-at": "^0.1.0"
+      }
+    },
+    "keyv": {
+      "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+      "requires": {
+        "json-buffer": "3.0.1"
       }
     },
     "killable": {
@@ -8113,6 +10579,14 @@
       "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
       "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
       "dev": true
+    },
+    "linkify-it": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz",
+      "integrity": "sha512-eGHwtlABkp1NOJSiKUNqBf3SYAS5jPHtvRXPAgNaQwTqmkTahjtiLH9NtxdR5IOPhNvwNMN/diswSfZKzUkhGg==",
+      "requires": {
+        "uc.micro": "^1.0.1"
+      }
     },
     "loader-fs-cache": {
       "version": "1.0.3",
@@ -8259,6 +10733,11 @@
       "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz",
       "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==",
       "dev": true
+    },
+    "lowercase-keys": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+      "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="
     },
     "lru-cache": {
       "version": "5.1.1",
@@ -8489,6 +10968,104 @@
         "object-visit": "^1.0.0"
       }
     },
+    "marchingsquares": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/marchingsquares/-/marchingsquares-1.3.3.tgz",
+      "integrity": "sha512-gz6nNQoVK7Lkh2pZulrT4qd4347S/toG9RXH2pyzhLgkL5mLkBoqgv4EvAGXcV0ikDW72n/OQb3Xe8bGagQZCg=="
+    },
+    "markdown-it": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-6.1.1.tgz",
+      "integrity": "sha512-woFl7h/sqt9xRmiMweNuO7nu+w8Lz3SXsDlvE3TYeu1SdPqQ+VW4GZyaKP442Bq6XUN6V6IQjJTR93RDYG2mjw==",
+      "requires": {
+        "argparse": "^1.0.7",
+        "entities": "~1.1.1",
+        "linkify-it": "~1.2.2",
+        "mdurl": "~1.0.1",
+        "uc.micro": "^1.0.1"
+      },
+      "dependencies": {
+        "entities": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+          "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
+        }
+      }
+    },
+    "markdown-it-abbr": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/markdown-it-abbr/-/markdown-it-abbr-1.0.4.tgz",
+      "integrity": "sha512-ZeA4Z4SaBbYysZap5iZcxKmlPL6bYA8grqhzJIHB1ikn7njnzaP8uwbtuXc4YXD5LicI4/2Xmc0VwmSiFV04gg=="
+    },
+    "markdown-it-deflist": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-deflist/-/markdown-it-deflist-2.1.0.tgz",
+      "integrity": "sha512-3OuqoRUlSxJiuQYu0cWTLHNhhq2xtoSFqsZK8plANg91+RJQU1ziQ6lA2LzmFAEes18uPBsHZpcX6We5l76Nzg=="
+    },
+    "markdown-it-emoji": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz",
+      "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg=="
+    },
+    "markdown-it-footnote": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-2.0.0.tgz",
+      "integrity": "sha512-GMWkJXSHh5tiQt77zCLOSZI2Xy3Oqdb82GmT0Q0h2UT6SbUrMCAiHEiMBIt5V7Xfm73rBxS0VOhlLndkn1GPnw=="
+    },
+    "markdown-it-ins": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-ins/-/markdown-it-ins-2.0.0.tgz",
+      "integrity": "sha512-DhLLxseIg2C7+AULvoyVI+zMeufR0QFvXJ2o0oV013hN5HvBvNh2rbVtTdxZjI959+hgo2AA0aRdtEIUaKPbhg=="
+    },
+    "markdown-it-katex": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/markdown-it-katex/-/markdown-it-katex-2.0.3.tgz",
+      "integrity": "sha512-nUkkMtRWeg7OpdflamflE/Ho/pWl64Lk9wNBKOmaj33XkQdumhXAIYhI0WO03GeiycPCsxbmX536V5NEXpC3Ng==",
+      "requires": {
+        "katex": "^0.6.0"
+      }
+    },
+    "markdown-it-mark": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-mark/-/markdown-it-mark-2.0.0.tgz",
+      "integrity": "sha512-iT8ua0Bda8QrVwHDOUNw1eyCuL7irXeYch5n8zGS4tb7wsDIn7EjQZLjihKaijzBiL0ikfWL2zAvL/ECqTvsNA=="
+    },
+    "markdown-it-sub": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz",
+      "integrity": "sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q=="
+    },
+    "markdown-it-sup": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz",
+      "integrity": "sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ=="
+    },
+    "markdown-it-task-lists": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz",
+      "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA=="
+    },
+    "markdown-it-toc-and-anchor": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-toc-and-anchor/-/markdown-it-toc-and-anchor-4.2.0.tgz",
+      "integrity": "sha512-DusSbKtg8CwZ92ztN7bOojDpP4h0+w7BVOPuA3PHDIaabMsERYpwsazLYSP/UlKedoQjOz21mwlai36TQ04EpA==",
+      "requires": {
+        "clone": "^2.1.0",
+        "uslug": "^1.0.4"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+          "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
+        }
+      }
+    },
+    "match-at": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz",
+      "integrity": "sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q=="
+    },
     "md5.js": {
       "version": "1.3.5",
       "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz",
@@ -8505,6 +11082,11 @@
       "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz",
       "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
       "dev": true
+    },
+    "mdurl": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+      "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
     },
     "media-typer": {
       "version": "0.3.0",
@@ -8688,6 +11270,11 @@
       "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz",
       "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
       "dev": true
+    },
+    "mimic-response": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+      "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
     },
     "min-indent": {
       "version": "1.0.1",
@@ -9572,14 +12159,12 @@
     "object-inspect": {
       "version": "1.13.1",
       "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz",
-      "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
-      "dev": true
+      "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ=="
     },
     "object-is": {
       "version": "1.1.5",
       "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz",
       "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.1.3"
@@ -9588,8 +12173,7 @@
     "object-keys": {
       "version": "1.1.1",
       "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
     },
     "object-visit": {
       "version": "1.0.1",
@@ -9604,7 +12188,6 @@
       "version": "4.1.5",
       "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz",
       "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.5",
         "define-properties": "^1.2.1",
@@ -9670,7 +12253,6 @@
       "version": "1.4.0",
       "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
       "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-      "dev": true,
       "requires": {
         "wrappy": "1"
       }
@@ -9758,6 +12340,11 @@
       "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
       "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
       "dev": true
+    },
+    "p-cancelable": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+      "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="
     },
     "p-finally": {
       "version": "1.0.0",
@@ -10045,6 +12632,32 @@
       "dev": true,
       "requires": {
         "ts-pnp": "^1.1.6"
+      }
+    },
+    "point-in-polygon": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz",
+      "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw=="
+    },
+    "point-in-polygon-hao": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/point-in-polygon-hao/-/point-in-polygon-hao-1.1.0.tgz",
+      "integrity": "sha512-3hTIM2j/v9Lio+wOyur3kckD4NxruZhpowUbEgmyikW+a2Kppjtu1eN+AhnMQtoHW46zld88JiYWv6fxpsDrTQ=="
+    },
+    "polygon-clipping": {
+      "version": "0.15.7",
+      "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.7.tgz",
+      "integrity": "sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==",
+      "requires": {
+        "robust-predicates": "^3.0.2",
+        "splaytree": "^3.1.0"
+      },
+      "dependencies": {
+        "robust-predicates": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
+          "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
+        }
       }
     },
     "portfinder": {
@@ -11316,7 +13929,6 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz",
       "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-      "dev": true,
       "requires": {
         "end-of-stream": "^1.1.0",
         "once": "^1.3.1"
@@ -11391,6 +14003,11 @@
       "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
       "dev": true
     },
+    "quickselect": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
+      "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
@@ -11426,6 +14043,14 @@
         "http-errors": "2.0.0",
         "iconv-lite": "0.4.24",
         "unpipe": "1.0.0"
+      }
+    },
+    "rbush": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz",
+      "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==",
+      "requires": {
+        "quickselect": "^2.0.0"
       }
     },
     "read-pkg": {
@@ -11556,7 +14181,6 @@
       "version": "1.5.1",
       "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
       "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.2.0",
@@ -11778,6 +14402,11 @@
         "supports-preserve-symlinks-flag": "^1.0.0"
       }
     },
+    "resolve-alpn": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+      "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="
+    },
     "resolve-cwd": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
@@ -11798,6 +14427,14 @@
       "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz",
       "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
       "dev": true
+    },
+    "responselike": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+      "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+      "requires": {
+        "lowercase-keys": "^2.0.0"
+      }
     },
     "restore-cursor": {
       "version": "2.0.0",
@@ -11851,6 +14488,11 @@
         "hash-base": "^3.0.0",
         "inherits": "^2.0.1"
       }
+    },
+    "robust-predicates": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-2.0.4.tgz",
+      "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg=="
     },
     "run-async": {
       "version": "2.4.1",
@@ -12196,7 +14838,6 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.0.tgz",
       "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==",
-      "dev": true,
       "requires": {
         "define-data-property": "^1.1.1",
         "function-bind": "^1.1.2",
@@ -12209,7 +14850,6 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.1.tgz",
       "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
-      "dev": true,
       "requires": {
         "define-data-property": "^1.0.1",
         "functions-have-names": "^1.2.3",
@@ -12286,7 +14926,6 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
       "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.0",
         "get-intrinsic": "^1.0.2",
@@ -12315,6 +14954,11 @@
           "dev": true
         }
       }
+    },
+    "skmeans": {
+      "version": "0.9.7",
+      "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz",
+      "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg=="
     },
     "slash": {
       "version": "2.0.0",
@@ -12654,6 +15298,11 @@
         }
       }
     },
+    "splaytree": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.2.tgz",
+      "integrity": "sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A=="
+    },
     "split-string": {
       "version": "3.1.0",
       "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz",
@@ -12666,8 +15315,7 @@
     "sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
-      "dev": true
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
     },
     "sshpk": {
       "version": "1.18.0",
@@ -12741,6 +15389,14 @@
       "dev": true,
       "requires": {
         "readable-stream": "^2.0.1"
+      }
+    },
+    "stop-iteration-iterator": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+      "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+      "requires": {
+        "internal-slot": "^1.0.4"
       }
     },
     "stream-browserify": {
@@ -12970,6 +15626,14 @@
         "stable": "^0.1.8",
         "unquote": "~1.1.1",
         "util.promisify": "~1.0.0"
+      }
+    },
+    "sweepline-intersections": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/sweepline-intersections/-/sweepline-intersections-1.5.0.tgz",
+      "integrity": "sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==",
+      "requires": {
+        "tinyqueue": "^2.0.0"
       }
     },
     "table": {
@@ -13274,6 +15938,11 @@
       "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
       "dev": true
     },
+    "tinyqueue": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz",
+      "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA=="
+    },
     "tmp": {
       "version": "0.0.33",
       "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
@@ -13342,6 +16011,22 @@
       "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
       "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
       "dev": true
+    },
+    "topojson-client": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz",
+      "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
+      "requires": {
+        "commander": "2"
+      }
+    },
+    "topojson-server": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz",
+      "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==",
+      "requires": {
+        "commander": "2"
+      }
     },
     "toposort": {
       "version": "1.0.7",
@@ -13488,6 +16173,11 @@
       "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
       "dev": true
     },
+    "uc.micro": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
+    },
     "uglify-js": {
       "version": "3.4.10",
       "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz",
@@ -13521,8 +16211,7 @@
     "undici-types": {
       "version": "5.26.5",
       "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
-      "dev": true
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
     },
     "unicode-canonical-property-names-ecmascript": {
       "version": "2.0.0",
@@ -13599,6 +16288,11 @@
       "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz",
       "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
       "dev": true
+    },
+    "unorm": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz",
+      "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA=="
     },
     "unpipe": {
       "version": "1.0.0",
@@ -13764,6 +16458,14 @@
       "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz",
       "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
       "dev": true
+    },
+    "uslug": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/uslug/-/uslug-1.0.4.tgz",
+      "integrity": "sha512-Jrbpp/NS3TvIGNjfJT1sn3/BCeykoxR8GbNYW5lF6fUscLkbXFwj1b7m4DvIkHm8k3Qr6Co68lbTmoZTMGk/ow==",
+      "requires": {
+        "unorm": ">= 1.0.0"
+      }
     },
     "util": {
       "version": "0.11.1",
@@ -13946,6 +16648,41 @@
         }
       }
     },
+    "vue-markdown": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/vue-markdown/-/vue-markdown-2.2.4.tgz",
+      "integrity": "sha512-hoTX/W1UIdHZrp/b0vpHSsJXAEfWsafaQLgtE2VX4gY8O/C3L2Gabqu95gyG429rL4ML1SwGv+xsPABX7yfFIQ==",
+      "requires": {
+        "highlight.js": "^9.12.0",
+        "markdown-it": "^6.0.1",
+        "markdown-it-abbr": "^1.0.3",
+        "markdown-it-deflist": "^2.0.1",
+        "markdown-it-emoji": "^1.1.1",
+        "markdown-it-footnote": "^2.0.0",
+        "markdown-it-ins": "^2.0.0",
+        "markdown-it-katex": "^2.0.3",
+        "markdown-it-mark": "^2.0.0",
+        "markdown-it-sub": "^1.0.0",
+        "markdown-it-sup": "^1.0.0",
+        "markdown-it-task-lists": "^2.0.1",
+        "markdown-it-toc-and-anchor": "^4.1.2"
+      },
+      "dependencies": {
+        "highlight.js": {
+          "version": "9.18.5",
+          "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz",
+          "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA=="
+        }
+      }
+    },
+    "vue-resource": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/vue-resource/-/vue-resource-1.5.3.tgz",
+      "integrity": "sha512-REhTuEuYSpwmEH/VN4fgDQVC/VXxDK/xsguuiDPnINxOwy1s0CSu//p++osTUkiAXi6d/vptwBpb0AcBIDsXzw==",
+      "requires": {
+        "got": ">=8.0 <12.0"
+      }
+    },
     "vue-router": {
       "version": "3.6.5",
       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz",
@@ -14085,7 +16822,7 @@
         },
         "fsevents": {
           "version": "1.2.13",
-          "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
           "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
           "dev": true,
           "optional": true,
@@ -14419,7 +17156,7 @@
         },
         "fsevents": {
           "version": "1.2.13",
-          "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
           "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
           "dev": true,
           "optional": true,
@@ -14696,13 +17433,23 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
       "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-      "dev": true,
       "requires": {
         "is-bigint": "^1.0.1",
         "is-boolean-object": "^1.1.0",
         "is-number-object": "^1.0.4",
         "is-string": "^1.0.5",
         "is-symbol": "^1.0.3"
+      }
+    },
+    "which-collection": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+      "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+      "requires": {
+        "is-map": "^2.0.3",
+        "is-set": "^2.0.3",
+        "is-weakmap": "^2.0.2",
+        "is-weakset": "^2.0.3"
       }
     },
     "which-module": {
@@ -14715,7 +17462,6 @@
       "version": "1.1.13",
       "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.13.tgz",
       "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
-      "dev": true,
       "requires": {
         "available-typed-arrays": "^1.0.5",
         "call-bind": "^1.0.4",
@@ -14788,8 +17534,7 @@
     "wrappy": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-      "dev": true
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
     },
     "write": {
       "version": "1.0.3",
diff --git a/package.json b/package.json
index 0596cad..c99647e 100644
--- a/package.json
+++ b/package.json
@@ -17,11 +17,15 @@
     "lib": "vue-cli-service build --target lib --name JwChat --dest lib src/components/index.js"
   },
   "dependencies": {
+    "@turf/turf": "^7.0.0",
     "axios": "^1.7.2",
     "core-js": "^3.6.4",
     "element-ui": "^2.13.1",
+    "jsencrypt": "^3.3.2",
     "jwchat": "^0.2.3",
     "vue": "^2.6.11",
+    "vue-markdown": "^2.2.4",
+    "vue-resource": "^1.5.3",
     "vue-router": "^3.6.5",
     "vuex": "^3.6.2",
     "wechat-emoji-parser": "^1.0.4"
diff --git a/public/CimSDK/ol/OpenLayers.js b/public/CimSDK/ol/OpenLayers.js
new file mode 100644
index 0000000..7b54f81
--- /dev/null
+++ b/public/CimSDK/ol/OpenLayers.js
@@ -0,0 +1,30510 @@
+/*
+
+  OpenLayers.js -- OpenLayers Map Viewer Library
+
+  Copyright (c) 2006-2013 by OpenLayers Contributors
+  Published under the 2-clause BSD license.
+  See http://openlayers.org/dev/license.txt for the full text of the license, and http://openlayers.org/dev/authors.txt for full list of contributors.
+
+  Includes compressed code under the following licenses:
+
+  (For uncompressed versions of the code used, please see the
+  OpenLayers Github repository: <https://github.com/openlayers/openlayers>)
+
+*/
+
+/**
+ * Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>
+ * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+/**
+ * OpenLayers.Util.pagePosition is based on Yahoo's getXY method, which is
+ * Copyright (c) 2006, Yahoo! Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use of this software in source and binary forms, with or
+ * without modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ *   this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Yahoo! Inc. nor the names of its contributors may be
+ *   used to endorse or promote products derived from this software without
+ *   specific prior written permission of Yahoo! Inc.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+var OpenLayers = {
+  VERSION_NUMBER: "Release 2.13.1",
+  singleFile: !0,
+  _getScriptLocation: (function () {
+    for (
+      var a = /(^|(.*?\/))(OpenLayers[^\/]*?\.js)(\?|$)/,
+        b = document.getElementsByTagName("script"),
+        c,
+        d = "",
+        e = 0,
+        f = b.length;
+      e < f;
+      e++
+    )
+      if ((c = b[e].getAttribute("src")))
+        if ((c = c.match(a))) {
+          d = c[1];
+          break;
+        }
+    return function () {
+      return d;
+    };
+  })(),
+  ImgPath: "",
+};
+OpenLayers.Class = function () {
+  var a = arguments.length,
+    b = arguments[0],
+    c = arguments[a - 1],
+    d =
+      "function" == typeof c.initialize
+        ? c.initialize
+        : function () {
+            b.prototype.initialize.apply(this, arguments);
+          };
+  1 < a
+    ? ((a = [d, b].concat(Array.prototype.slice.call(arguments).slice(1, a - 1), c)),
+      OpenLayers.inherit.apply(null, a))
+    : (d.prototype = c);
+  return d;
+};
+OpenLayers.inherit = function (a, b) {
+  var c = function () {};
+  c.prototype = b.prototype;
+  a.prototype = new c();
+  var d,
+    e,
+    c = 2;
+  for (d = arguments.length; c < d; c++)
+    (e = arguments[c]),
+      "function" === typeof e && (e = e.prototype),
+      OpenLayers.Util.extend(a.prototype, e);
+};
+OpenLayers.Util = OpenLayers.Util || {};
+OpenLayers.Util.extend = function (a, b) {
+  a = a || {};
+  if (b) {
+    for (var c in b) {
+      var d = b[c];
+      void 0 !== d && (a[c] = d);
+    }
+    ("function" == typeof window.Event && b instanceof window.Event) ||
+      !b.hasOwnProperty ||
+      !b.hasOwnProperty("toString") ||
+      (a.toString = b.toString);
+  }
+  return a;
+};
+OpenLayers.String = {
+  startsWith: function (a, b) {
+    return 0 == a.indexOf(b);
+  },
+  contains: function (a, b) {
+    return -1 != a.indexOf(b);
+  },
+  trim: function (a) {
+    return a.replace(/^\s\s*/, "").replace(/\s\s*$/, "");
+  },
+  camelize: function (a) {
+    a = a.split("-");
+    for (var b = a[0], c = 1, d = a.length; c < d; c++)
+      var e = a[c], b = b + (e.charAt(0).toUpperCase() + e.substring(1));
+    return b;
+  },
+  format: function (a, b, c) {
+    b || (b = window);
+    return a.replace(OpenLayers.String.tokenRegEx, function (a, e) {
+      for (var f, g = e.split(/\.+/), h = 0; h < g.length; h++) {
+        0 == h && (f = b);
+        if (void 0 === f) break;
+        f = f[g[h]];
+      }
+      "function" == typeof f && (f = c ? f.apply(null, c) : f());
+      return "undefined" == typeof f ? "undefined" : f;
+    });
+  },
+  tokenRegEx: /\$\{([\w.]+?)\}/g,
+  numberRegEx: /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/,
+  isNumeric: function (a) {
+    return OpenLayers.String.numberRegEx.test(a);
+  },
+  numericIf: function (a, b) {
+    var c = a;
+    !0 === b && null != a && a.replace && (a = a.replace(/^\s*|\s*$/g, ""));
+    return OpenLayers.String.isNumeric(a) ? parseFloat(a) : c;
+  },
+};
+OpenLayers.Number = {
+  decimalSeparator: ".",
+  thousandsSeparator: ",",
+  limitSigDigs: function (a, b) {
+    var c = 0;
+    0 < b && (c = parseFloat(a.toPrecision(b)));
+    return c;
+  },
+  format: function (a, b, c, d) {
+    b = "undefined" != typeof b ? b : 0;
+    c = "undefined" != typeof c ? c : OpenLayers.Number.thousandsSeparator;
+    d = "undefined" != typeof d ? d : OpenLayers.Number.decimalSeparator;
+    null != b && (a = parseFloat(a.toFixed(b)));
+    var e = a.toString().split(".");
+    1 == e.length && null == b && (b = 0);
+    a = e[0];
+    if (c) for (var f = /(-?[0-9]+)([0-9]{3})/; f.test(a); ) a = a.replace(f, "$1" + c + "$2");
+    0 == b
+      ? (b = a)
+      : ((c = 1 < e.length ? e[1] : "0"),
+        null != b && (c += Array(b - c.length + 1).join("0")),
+        (b = a + d + c));
+    return b;
+  },
+  zeroPad: function (a, b, c) {
+    for (a = a.toString(c || 10); a.length < b; ) a = "0" + a;
+    return a;
+  },
+};
+OpenLayers.Function = {
+  bind: function (a, b) {
+    var c = Array.prototype.slice.apply(arguments, [2]);
+    return function () {
+      var d = c.concat(Array.prototype.slice.apply(arguments, [0]));
+      return a.apply(b, d);
+    };
+  },
+  bindAsEventListener: function (a, b) {
+    return function (c) {
+      return a.call(b, c || window.event);
+    };
+  },
+  False: function () {
+    return !1;
+  },
+  True: function () {
+    return !0;
+  },
+  Void: function () {},
+};
+OpenLayers.Array = {
+  filter: function (a, b, c) {
+    var d = [];
+    if (Array.prototype.filter) d = a.filter(b, c);
+    else {
+      var e = a.length;
+      if ("function" != typeof b) throw new TypeError();
+      for (var f = 0; f < e; f++)
+        if (f in a) {
+          var g = a[f];
+          b.call(c, g, f, a) && d.push(g);
+        }
+    }
+    return d;
+  },
+};
+OpenLayers.Bounds = OpenLayers.Class({
+  left: null,
+  bottom: null,
+  right: null,
+  top: null,
+  centerLonLat: null,
+  initialize: function (a, b, c, d) {
+    OpenLayers.Util.isArray(a) && ((d = a[3]), (c = a[2]), (b = a[1]), (a = a[0]));
+    null != a && (this.left = OpenLayers.Util.toFloat(a));
+    null != b && (this.bottom = OpenLayers.Util.toFloat(b));
+    null != c && (this.right = OpenLayers.Util.toFloat(c));
+    null != d && (this.top = OpenLayers.Util.toFloat(d));
+  },
+  clone: function () {
+    return new OpenLayers.Bounds(this.left, this.bottom, this.right, this.top);
+  },
+  equals: function (a) {
+    var b = !1;
+    null != a &&
+      (b =
+        this.left == a.left &&
+        this.right == a.right &&
+        this.top == a.top &&
+        this.bottom == a.bottom);
+    return b;
+  },
+  toString: function () {
+    return [this.left, this.bottom, this.right, this.top].join();
+  },
+  toArray: function (a) {
+    return !0 === a
+      ? [this.bottom, this.left, this.top, this.right]
+      : [this.left, this.bottom, this.right, this.top];
+  },
+  toBBOX: function (a, b) {
+    null == a && (a = 6);
+    var c = Math.pow(10, a),
+      d = Math.round(this.left * c) / c,
+      e = Math.round(this.bottom * c) / c,
+      f = Math.round(this.right * c) / c,
+      c = Math.round(this.top * c) / c;
+    return !0 === b ? e + "," + d + "," + c + "," + f : d + "," + e + "," + f + "," + c;
+  },
+  toGeometry: function () {
+    return new OpenLayers.Geometry.Polygon([
+      new OpenLayers.Geometry.LinearRing([
+        new OpenLayers.Geometry.Point(this.left, this.bottom),
+        new OpenLayers.Geometry.Point(this.right, this.bottom),
+        new OpenLayers.Geometry.Point(this.right, this.top),
+        new OpenLayers.Geometry.Point(this.left, this.top),
+      ]),
+    ]);
+  },
+  getWidth: function () {
+    return this.right - this.left;
+  },
+  getHeight: function () {
+    return this.top - this.bottom;
+  },
+  getSize: function () {
+    return new OpenLayers.Size(this.getWidth(), this.getHeight());
+  },
+  getCenterPixel: function () {
+    return new OpenLayers.Pixel((this.left + this.right) / 2, (this.bottom + this.top) / 2);
+  },
+  getCenterLonLat: function () {
+    this.centerLonLat ||
+      (this.centerLonLat = new OpenLayers.LonLat(
+        (this.left + this.right) / 2,
+        (this.bottom + this.top) / 2
+      ));
+    return this.centerLonLat;
+  },
+  scale: function (a, b) {
+    null == b && (b = this.getCenterLonLat());
+    var c, d;
+    "OpenLayers.LonLat" == b.CLASS_NAME ? ((c = b.lon), (d = b.lat)) : ((c = b.x), (d = b.y));
+    return new OpenLayers.Bounds(
+      (this.left - c) * a + c,
+      (this.bottom - d) * a + d,
+      (this.right - c) * a + c,
+      (this.top - d) * a + d
+    );
+  },
+  add: function (a, b) {
+    if (null == a || null == b) throw new TypeError("Bounds.add cannot receive null values");
+    return new OpenLayers.Bounds(this.left + a, this.bottom + b, this.right + a, this.top + b);
+  },
+  extend: function (a) {
+    if (a)
+      switch (a.CLASS_NAME) {
+        case "OpenLayers.LonLat":
+          this.extendXY(a.lon, a.lat);
+          break;
+        case "OpenLayers.Geometry.Point":
+          this.extendXY(a.x, a.y);
+          break;
+        case "OpenLayers.Bounds":
+          this.centerLonLat = null;
+          if (null == this.left || a.left < this.left) this.left = a.left;
+          if (null == this.bottom || a.bottom < this.bottom) this.bottom = a.bottom;
+          if (null == this.right || a.right > this.right) this.right = a.right;
+          if (null == this.top || a.top > this.top) this.top = a.top;
+      }
+  },
+  extendXY: function (a, b) {
+    this.centerLonLat = null;
+    if (null == this.left || a < this.left) this.left = a;
+    if (null == this.bottom || b < this.bottom) this.bottom = b;
+    if (null == this.right || a > this.right) this.right = a;
+    if (null == this.top || b > this.top) this.top = b;
+  },
+  containsLonLat: function (a, b) {
+    "boolean" === typeof b && (b = { inclusive: b });
+    b = b || {};
+    var c = this.contains(a.lon, a.lat, b.inclusive),
+      d = b.worldBounds;
+    d &&
+      !c &&
+      ((c = d.getWidth()),
+      (d = Math.round((a.lon - (d.left + d.right) / 2) / c)),
+      (c = this.containsLonLat({ lon: a.lon - d * c, lat: a.lat }, { inclusive: b.inclusive })));
+    return c;
+  },
+  containsPixel: function (a, b) {
+    return this.contains(a.x, a.y, b);
+  },
+  contains: function (a, b, c) {
+    null == c && (c = !0);
+    if (null == a || null == b) return !1;
+    a = OpenLayers.Util.toFloat(a);
+    b = OpenLayers.Util.toFloat(b);
+    var d = !1;
+    return (d = c
+      ? a >= this.left && a <= this.right && b >= this.bottom && b <= this.top
+      : a > this.left && a < this.right && b > this.bottom && b < this.top);
+  },
+  intersectsBounds: function (a, b) {
+    "boolean" === typeof b && (b = { inclusive: b });
+    b = b || {};
+    if (b.worldBounds) {
+      var c = this.wrapDateLine(b.worldBounds);
+      a = a.wrapDateLine(b.worldBounds);
+    } else c = this;
+    null == b.inclusive && (b.inclusive = !0);
+    var d = !1,
+      e = c.left == a.right || c.right == a.left || c.top == a.bottom || c.bottom == a.top;
+    if (b.inclusive || !e)
+      var d = (a.top >= c.bottom && a.top <= c.top) || (c.top > a.bottom && c.top < a.top),
+        e = (a.left >= c.left && a.left <= c.right) || (c.left >= a.left && c.left <= a.right),
+        f = (a.right >= c.left && a.right <= c.right) || (c.right >= a.left && c.right <= a.right),
+        d =
+          ((a.bottom >= c.bottom && a.bottom <= c.top) ||
+            (c.bottom >= a.bottom && c.bottom <= a.top) ||
+            d) &&
+          (e || f);
+    if (b.worldBounds && !d) {
+      var g = b.worldBounds,
+        e = g.getWidth(),
+        f = !g.containsBounds(c),
+        g = !g.containsBounds(a);
+      f && !g
+        ? ((a = a.add(-e, 0)), (d = c.intersectsBounds(a, { inclusive: b.inclusive })))
+        : g && !f && ((c = c.add(-e, 0)), (d = a.intersectsBounds(c, { inclusive: b.inclusive })));
+    }
+    return d;
+  },
+  containsBounds: function (a, b, c) {
+    null == b && (b = !1);
+    null == c && (c = !0);
+    var d = this.contains(a.left, a.bottom, c),
+      e = this.contains(a.right, a.bottom, c),
+      f = this.contains(a.left, a.top, c);
+    a = this.contains(a.right, a.top, c);
+    return b ? d || e || f || a : d && e && f && a;
+  },
+  determineQuadrant: function (a) {
+    var b = "",
+      c = this.getCenterLonLat(),
+      b = b + (a.lat < c.lat ? "b" : "t");
+    return (b += a.lon < c.lon ? "l" : "r");
+  },
+  transform: function (a, b) {
+    this.centerLonLat = null;
+    var c = OpenLayers.Projection.transform({ x: this.left, y: this.bottom }, a, b),
+      d = OpenLayers.Projection.transform({ x: this.right, y: this.bottom }, a, b),
+      e = OpenLayers.Projection.transform({ x: this.left, y: this.top }, a, b),
+      f = OpenLayers.Projection.transform({ x: this.right, y: this.top }, a, b);
+    this.left = Math.min(c.x, e.x);
+    this.bottom = Math.min(c.y, d.y);
+    this.right = Math.max(d.x, f.x);
+    this.top = Math.max(e.y, f.y);
+    return this;
+  },
+  wrapDateLine: function (a, b) {
+    b = b || {};
+    var c = b.leftTolerance || 0,
+      d = b.rightTolerance || 0,
+      e = this.clone();
+    if (a) {
+      for (var f = a.getWidth(); e.left < a.left && e.right - d <= a.left; ) e = e.add(f, 0);
+      for (; e.left + c >= a.right && e.right > a.right; ) e = e.add(-f, 0);
+      c = e.left + c;
+      c < a.right && c > a.left && e.right - d > a.right && (e = e.add(-f, 0));
+    }
+    return e;
+  },
+  CLASS_NAME: "OpenLayers.Bounds",
+});
+OpenLayers.Bounds.fromString = function (a, b) {
+  var c = a.split(",");
+  return OpenLayers.Bounds.fromArray(c, b);
+};
+OpenLayers.Bounds.fromArray = function (a, b) {
+  return !0 === b
+    ? new OpenLayers.Bounds(a[1], a[0], a[3], a[2])
+    : new OpenLayers.Bounds(a[0], a[1], a[2], a[3]);
+};
+OpenLayers.Bounds.fromSize = function (a) {
+  return new OpenLayers.Bounds(0, a.h, a.w, 0);
+};
+OpenLayers.Bounds.oppositeQuadrant = function (a) {
+  var b;
+  b = "" + ("t" == a.charAt(0) ? "b" : "t");
+  return (b += "l" == a.charAt(1) ? "r" : "l");
+};
+OpenLayers.Element = {
+  visible: function (a) {
+    return "none" != OpenLayers.Util.getElement(a).style.display;
+  },
+  toggle: function () {
+    for (var a = 0, b = arguments.length; a < b; a++) {
+      var c = OpenLayers.Util.getElement(arguments[a]),
+        d = OpenLayers.Element.visible(c) ? "none" : "";
+      c.style.display = d;
+    }
+  },
+  remove: function (a) {
+    a = OpenLayers.Util.getElement(a);
+    a.parentNode.removeChild(a);
+  },
+  getHeight: function (a) {
+    a = OpenLayers.Util.getElement(a);
+    return a.offsetHeight;
+  },
+  hasClass: function (a, b) {
+    var c = a.className;
+    return !!c && RegExp("(^|\\s)" + b + "(\\s|$)").test(c);
+  },
+  addClass: function (a, b) {
+    OpenLayers.Element.hasClass(a, b) || (a.className += (a.className ? " " : "") + b);
+    return a;
+  },
+  removeClass: function (a, b) {
+    var c = a.className;
+    c &&
+      (a.className = OpenLayers.String.trim(c.replace(RegExp("(^|\\s+)" + b + "(\\s+|$)"), " ")));
+    return a;
+  },
+  toggleClass: function (a, b) {
+    OpenLayers.Element.hasClass(a, b)
+      ? OpenLayers.Element.removeClass(a, b)
+      : OpenLayers.Element.addClass(a, b);
+    return a;
+  },
+  getStyle: function (a, b) {
+    a = OpenLayers.Util.getElement(a);
+    var c = null;
+    if (a && a.style) {
+      c = a.style[OpenLayers.String.camelize(b)];
+      c ||
+        (document.defaultView && document.defaultView.getComputedStyle
+          ? (c = (c = document.defaultView.getComputedStyle(a, null))
+              ? c.getPropertyValue(b)
+              : null)
+          : a.currentStyle && (c = a.currentStyle[OpenLayers.String.camelize(b)]));
+      var d = ["left", "top", "right", "bottom"];
+      window.opera &&
+        -1 != OpenLayers.Util.indexOf(d, b) &&
+        "static" == OpenLayers.Element.getStyle(a, "position") &&
+        (c = "auto");
+    }
+    return "auto" == c ? null : c;
+  },
+};
+OpenLayers.LonLat = OpenLayers.Class({
+  lon: 0,
+  lat: 0,
+  initialize: function (a, b) {
+    OpenLayers.Util.isArray(a) && ((b = a[1]), (a = a[0]));
+    this.lon = OpenLayers.Util.toFloat(a);
+    this.lat = OpenLayers.Util.toFloat(b);
+  },
+  toString: function () {
+    return "lon=" + this.lon + ",lat=" + this.lat;
+  },
+  toShortString: function () {
+    return this.lon + ", " + this.lat;
+  },
+  clone: function () {
+    return new OpenLayers.LonLat(this.lon, this.lat);
+  },
+  add: function (a, b) {
+    if (null == a || null == b) throw new TypeError("LonLat.add cannot receive null values");
+    return new OpenLayers.LonLat(
+      this.lon + OpenLayers.Util.toFloat(a),
+      this.lat + OpenLayers.Util.toFloat(b)
+    );
+  },
+  equals: function (a) {
+    var b = !1;
+    null != a &&
+      (b =
+        (this.lon == a.lon && this.lat == a.lat) ||
+        (isNaN(this.lon) && isNaN(this.lat) && isNaN(a.lon) && isNaN(a.lat)));
+    return b;
+  },
+  transform: function (a, b) {
+    var c = OpenLayers.Projection.transform({ x: this.lon, y: this.lat }, a, b);
+    this.lon = c.x;
+    this.lat = c.y;
+    return this;
+  },
+  wrapDateLine: function (a) {
+    var b = this.clone();
+    if (a) {
+      for (; b.lon < a.left; ) b.lon += a.getWidth();
+      for (; b.lon > a.right; ) b.lon -= a.getWidth();
+    }
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.LonLat",
+});
+OpenLayers.LonLat.fromString = function (a) {
+  a = a.split(",");
+  return new OpenLayers.LonLat(a[0], a[1]);
+};
+OpenLayers.LonLat.fromArray = function (a) {
+  var b = OpenLayers.Util.isArray(a);
+  return new OpenLayers.LonLat(b && a[0], b && a[1]);
+};
+OpenLayers.Pixel = OpenLayers.Class({
+  x: 0,
+  y: 0,
+  initialize: function (a, b) {
+    this.x = parseFloat(a);
+    this.y = parseFloat(b);
+  },
+  toString: function () {
+    return "x=" + this.x + ",y=" + this.y;
+  },
+  clone: function () {
+    return new OpenLayers.Pixel(this.x, this.y);
+  },
+  equals: function (a) {
+    var b = !1;
+    null != a &&
+      (b =
+        (this.x == a.x && this.y == a.y) ||
+        (isNaN(this.x) && isNaN(this.y) && isNaN(a.x) && isNaN(a.y)));
+    return b;
+  },
+  distanceTo: function (a) {
+    return Math.sqrt(Math.pow(this.x - a.x, 2) + Math.pow(this.y - a.y, 2));
+  },
+  add: function (a, b) {
+    if (null == a || null == b) throw new TypeError("Pixel.add cannot receive null values");
+    return new OpenLayers.Pixel(this.x + a, this.y + b);
+  },
+  offset: function (a) {
+    var b = this.clone();
+    a && (b = this.add(a.x, a.y));
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Pixel",
+});
+OpenLayers.Size = OpenLayers.Class({
+  w: 0,
+  h: 0,
+  initialize: function (a, b) {
+    this.w = parseFloat(a);
+    this.h = parseFloat(b);
+  },
+  toString: function () {
+    return "w=" + this.w + ",h=" + this.h;
+  },
+  clone: function () {
+    return new OpenLayers.Size(this.w, this.h);
+  },
+  equals: function (a) {
+    var b = !1;
+    null != a &&
+      (b =
+        (this.w == a.w && this.h == a.h) ||
+        (isNaN(this.w) && isNaN(this.h) && isNaN(a.w) && isNaN(a.h)));
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Size",
+});
+OpenLayers.Console = {
+  log: function () {},
+  debug: function () {},
+  info: function () {},
+  warn: function () {},
+  error: function () {},
+  userError: function (a) {
+    alert(a);
+  },
+  assert: function () {},
+  dir: function () {},
+  dirxml: function () {},
+  trace: function () {},
+  group: function () {},
+  groupEnd: function () {},
+  time: function () {},
+  timeEnd: function () {},
+  profile: function () {},
+  profileEnd: function () {},
+  count: function () {},
+  CLASS_NAME: "OpenLayers.Console",
+};
+(function () {
+  for (var a = document.getElementsByTagName("script"), b = 0, c = a.length; b < c; ++b)
+    if (-1 != a[b].src.indexOf("firebug.js") && console) {
+      OpenLayers.Util.extend(OpenLayers.Console, console);
+      break;
+    }
+})();
+OpenLayers.Lang = {
+  code: null,
+  defaultCode: "en",
+  getCode: function () {
+    OpenLayers.Lang.code || OpenLayers.Lang.setCode();
+    return OpenLayers.Lang.code;
+  },
+  setCode: function (a) {
+    var b;
+    a || (a = "msie" == OpenLayers.BROWSER_NAME ? navigator.userLanguage : navigator.language);
+    a = a.split("-");
+    a[0] = a[0].toLowerCase();
+    "object" == typeof OpenLayers.Lang[a[0]] && (b = a[0]);
+    if (a[1]) {
+      var c = a[0] + "-" + a[1].toUpperCase();
+      "object" == typeof OpenLayers.Lang[c] && (b = c);
+    }
+    b ||
+      (OpenLayers.Console.warn(
+        "Failed to find OpenLayers.Lang." +
+          a.join("-") +
+          " dictionary, falling back to default language"
+      ),
+      (b = OpenLayers.Lang.defaultCode));
+    OpenLayers.Lang.code = b;
+  },
+  translate: function (a, b) {
+    var c = OpenLayers.Lang[OpenLayers.Lang.getCode()];
+    (c = c && c[a]) || (c = a);
+    b && (c = OpenLayers.String.format(c, b));
+    return c;
+  },
+};
+OpenLayers.i18n = OpenLayers.Lang.translate;
+OpenLayers.Util = OpenLayers.Util || {};
+OpenLayers.Util.getElement = function () {
+  for (var a = [], b = 0, c = arguments.length; b < c; b++) {
+    var d = arguments[b];
+    "string" == typeof d && (d = document.getElementById(d));
+    if (1 == arguments.length) return d;
+    a.push(d);
+  }
+  return a;
+};
+OpenLayers.Util.isElement = function (a) {
+  return !(!a || 1 !== a.nodeType);
+};
+OpenLayers.Util.isArray = function (a) {
+  return "[object Array]" === Object.prototype.toString.call(a);
+};
+OpenLayers.Util.removeItem = function (a, b) {
+  for (var c = a.length - 1; 0 <= c; c--) a[c] == b && a.splice(c, 1);
+  return a;
+};
+OpenLayers.Util.indexOf = function (a, b) {
+  if ("function" == typeof a.indexOf) return a.indexOf(b);
+  for (var c = 0, d = a.length; c < d; c++) if (a[c] == b) return c;
+  return -1;
+};
+OpenLayers.Util.dotless = /\./g;
+OpenLayers.Util.modifyDOMElement = function (a, b, c, d, e, f, g, h) {
+  b && (a.id = b.replace(OpenLayers.Util.dotless, "_"));
+  c && ((a.style.left = c.x + "px"), (a.style.top = c.y + "px"));
+  d && ((a.style.width = d.w + "px"), (a.style.height = d.h + "px"));
+  e && (a.style.position = e);
+  f && (a.style.border = f);
+  g && (a.style.overflow = g);
+  0 <= parseFloat(h) && 1 > parseFloat(h)
+    ? ((a.style.filter = "alpha(opacity=" + 100 * h + ")"), (a.style.opacity = h))
+    : 1 == parseFloat(h) && ((a.style.filter = ""), (a.style.opacity = ""));
+};
+OpenLayers.Util.createDiv = function (a, b, c, d, e, f, g, h) {
+  var k = document.createElement("div");
+  d && (k.style.backgroundImage = "url(" + d + ")");
+  a || (a = OpenLayers.Util.createUniqueID("OpenLayersDiv"));
+  e || (e = "absolute");
+  OpenLayers.Util.modifyDOMElement(k, a, b, c, e, f, g, h);
+  return k;
+};
+OpenLayers.Util.createImage = function (a, b, c, d, e, f, g, h) {
+  var k = document.createElement("img");
+  a || (a = OpenLayers.Util.createUniqueID("OpenLayersDiv"));
+  e || (e = "relative");
+  OpenLayers.Util.modifyDOMElement(k, a, b, c, e, f, null, g);
+  h &&
+    ((k.style.display = "none"),
+    (b = function () {
+      k.style.display = "";
+      OpenLayers.Event.stopObservingElement(k);
+    }),
+    OpenLayers.Event.observe(k, "load", b),
+    OpenLayers.Event.observe(k, "error", b));
+  k.style.alt = a;
+  k.galleryImg = "no";
+  d && (k.src = d);
+  return k;
+};
+OpenLayers.IMAGE_RELOAD_ATTEMPTS = 0;
+OpenLayers.Util.alphaHackNeeded = null;
+OpenLayers.Util.alphaHack = function () {
+  if (null == OpenLayers.Util.alphaHackNeeded) {
+    var a = navigator.appVersion.split("MSIE"),
+      a = parseFloat(a[1]),
+      b = !1;
+    try {
+      b = !!document.body.filters;
+    } catch (c) {}
+    OpenLayers.Util.alphaHackNeeded = b && 5.5 <= a && 7 > a;
+  }
+  return OpenLayers.Util.alphaHackNeeded;
+};
+OpenLayers.Util.modifyAlphaImageDiv = function (a, b, c, d, e, f, g, h, k) {
+  OpenLayers.Util.modifyDOMElement(a, b, c, d, f, null, null, k);
+  b = a.childNodes[0];
+  e && (b.src = e);
+  OpenLayers.Util.modifyDOMElement(b, a.id + "_innerImage", null, d, "relative", g);
+  OpenLayers.Util.alphaHack() &&
+    ("none" != a.style.display && (a.style.display = "inline-block"),
+    null == h && (h = "scale"),
+    (a.style.filter =
+      "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
+      b.src +
+      "', sizingMethod='" +
+      h +
+      "')"),
+    0 <= parseFloat(a.style.opacity) &&
+      1 > parseFloat(a.style.opacity) &&
+      (a.style.filter += " alpha(opacity=" + 100 * a.style.opacity + ")"),
+    (b.style.filter = "alpha(opacity=0)"));
+};
+OpenLayers.Util.createAlphaImageDiv = function (a, b, c, d, e, f, g, h, k) {
+  var l = OpenLayers.Util.createDiv();
+  k = OpenLayers.Util.createImage(null, null, null, null, null, null, null, k);
+  k.className = "olAlphaImg";
+  l.appendChild(k);
+  OpenLayers.Util.modifyAlphaImageDiv(l, a, b, c, d, e, f, g, h);
+  return l;
+};
+OpenLayers.Util.upperCaseObject = function (a) {
+  var b = {},
+    c;
+  for (c in a) b[c.toUpperCase()] = a[c];
+  return b;
+};
+OpenLayers.Util.applyDefaults = function (a, b) {
+  a = a || {};
+  var c = "function" == typeof window.Event && b instanceof window.Event,
+    d;
+  for (d in b)
+    if (void 0 === a[d] || (!c && b.hasOwnProperty && b.hasOwnProperty(d) && !a.hasOwnProperty(d)))
+      a[d] = b[d];
+  !c &&
+    b &&
+    b.hasOwnProperty &&
+    b.hasOwnProperty("toString") &&
+    !a.hasOwnProperty("toString") &&
+    (a.toString = b.toString);
+  return a;
+};
+OpenLayers.Util.getParameterString = function (a) {
+  var b = [],
+    c;
+  for (c in a) {
+    var d = a[c];
+    if (null != d && "function" != typeof d) {
+      if ("object" == typeof d && d.constructor == Array) {
+        for (var e = [], f, g = 0, h = d.length; g < h; g++)
+          (f = d[g]), e.push(encodeURIComponent(null === f || void 0 === f ? "" : f));
+        d = e.join(",");
+      } else d = encodeURIComponent(d);
+      b.push(encodeURIComponent(c) + "=" + d);
+    }
+  }
+  return b.join("&");
+};
+OpenLayers.Util.urlAppend = function (a, b) {
+  var c = a;
+  if (b)
+    var d = (a + " ").split(/[?&]/),
+      c = c + (" " === d.pop() ? b : d.length ? "&" + b : "?" + b);
+  return c;
+};
+OpenLayers.Util.getImagesLocation = function () {
+  return OpenLayers.ImgPath || OpenLayers._getScriptLocation() + "img/";
+};
+OpenLayers.Util.getImageLocation = function (a) {
+  return OpenLayers.Util.getImagesLocation() + a;
+};
+OpenLayers.Util.Try = function () {
+  for (var a = null, b = 0, c = arguments.length; b < c; b++) {
+    var d = arguments[b];
+    try {
+      a = d();
+      break;
+    } catch (e) {}
+  }
+  return a;
+};
+OpenLayers.Util.getXmlNodeValue = function (a) {
+  var b = null;
+  OpenLayers.Util.Try(
+    function () {
+      b = a.text;
+      b || (b = a.textContent);
+      b || (b = a.firstChild.nodeValue);
+    },
+    function () {
+      b = a.textContent;
+    }
+  );
+  return b;
+};
+OpenLayers.Util.mouseLeft = function (a, b) {
+  for (var c = a.relatedTarget ? a.relatedTarget : a.toElement; c != b && null != c; )
+    c = c.parentNode;
+  return c != b;
+};
+OpenLayers.Util.DEFAULT_PRECISION = 14;
+OpenLayers.Util.toFloat = function (a, b) {
+  null == b && (b = OpenLayers.Util.DEFAULT_PRECISION);
+  "number" !== typeof a && (a = parseFloat(a));
+  return 0 === b ? a : parseFloat(a.toPrecision(b));
+};
+OpenLayers.Util.rad = function (a) {
+  return (a * Math.PI) / 180;
+};
+OpenLayers.Util.deg = function (a) {
+  return (180 * a) / Math.PI;
+};
+OpenLayers.Util.VincentyConstants = { a: 6378137, b: 6356752.3142, f: 1 / 298.257223563 };
+OpenLayers.Util.distVincenty = function (a, b) {
+  for (
+    var c = OpenLayers.Util.VincentyConstants,
+      d = c.a,
+      e = c.b,
+      c = c.f,
+      f = OpenLayers.Util.rad(b.lon - a.lon),
+      g = Math.atan((1 - c) * Math.tan(OpenLayers.Util.rad(a.lat))),
+      h = Math.atan((1 - c) * Math.tan(OpenLayers.Util.rad(b.lat))),
+      k = Math.sin(g),
+      g = Math.cos(g),
+      l = Math.sin(h),
+      h = Math.cos(h),
+      m = f,
+      n = 2 * Math.PI,
+      p = 20;
+    1e-12 < Math.abs(m - n) && 0 < --p;
+
+  ) {
+    var q = Math.sin(m),
+      r = Math.cos(m),
+      s = Math.sqrt(h * q * h * q + (g * l - k * h * r) * (g * l - k * h * r));
+    if (0 == s) return 0;
+    var r = k * l + g * h * r,
+      t = Math.atan2(s, r),
+      u = Math.asin((g * h * q) / s),
+      v = Math.cos(u) * Math.cos(u),
+      q = r - (2 * k * l) / v,
+      w = (c / 16) * v * (4 + c * (4 - 3 * v)),
+      n = m,
+      m = f + (1 - w) * c * Math.sin(u) * (t + w * s * (q + w * r * (-1 + 2 * q * q)));
+  }
+  if (0 == p) return NaN;
+  d = (v * (d * d - e * e)) / (e * e);
+  c = (d / 1024) * (256 + d * (-128 + d * (74 - 47 * d)));
+  return (
+    (
+      e *
+      (1 + (d / 16384) * (4096 + d * (-768 + d * (320 - 175 * d)))) *
+      (t -
+        c *
+          s *
+          (q +
+            (c / 4) * (r * (-1 + 2 * q * q) - (c / 6) * q * (-3 + 4 * s * s) * (-3 + 4 * q * q))))
+    ).toFixed(3) / 1e3
+  );
+};
+OpenLayers.Util.destinationVincenty = function (a, b, c) {
+  var d = OpenLayers.Util,
+    e = d.VincentyConstants,
+    f = e.a,
+    g = e.b,
+    h = e.f,
+    e = a.lon;
+  a = a.lat;
+  var k = d.rad(b);
+  b = Math.sin(k);
+  k = Math.cos(k);
+  a = (1 - h) * Math.tan(d.rad(a));
+  var l = 1 / Math.sqrt(1 + a * a),
+    m = a * l,
+    n = Math.atan2(a, k);
+  a = l * b;
+  for (
+    var p = 1 - a * a,
+      f = (p * (f * f - g * g)) / (g * g),
+      q = 1 + (f / 16384) * (4096 + f * (-768 + f * (320 - 175 * f))),
+      r = (f / 1024) * (256 + f * (-128 + f * (74 - 47 * f))),
+      f = c / (g * q),
+      s = 2 * Math.PI;
+    1e-12 < Math.abs(f - s);
+
+  )
+    var t = Math.cos(2 * n + f),
+      u = Math.sin(f),
+      v = Math.cos(f),
+      w =
+        r *
+        u *
+        (t + (r / 4) * (v * (-1 + 2 * t * t) - (r / 6) * t * (-3 + 4 * u * u) * (-3 + 4 * t * t))),
+      s = f,
+      f = c / (g * q) + w;
+  c = m * u - l * v * k;
+  g = Math.atan2(m * v + l * u * k, (1 - h) * Math.sqrt(a * a + c * c));
+  b = Math.atan2(u * b, l * v - m * u * k);
+  k = (h / 16) * p * (4 + h * (4 - 3 * p));
+  t = b - (1 - k) * h * a * (f + k * u * (t + k * v * (-1 + 2 * t * t)));
+  Math.atan2(a, -c);
+  return new OpenLayers.LonLat(e + d.deg(t), d.deg(g));
+};
+OpenLayers.Util.getParameters = function (a, b) {
+  b = b || {};
+  a = null === a || void 0 === a ? window.location.href : a;
+  var c = "";
+  if (OpenLayers.String.contains(a, "?"))
+    var d = a.indexOf("?") + 1,
+      c = OpenLayers.String.contains(a, "#") ? a.indexOf("#") : a.length,
+      c = a.substring(d, c);
+  for (var d = {}, c = c.split(/[&;]/), e = 0, f = c.length; e < f; ++e) {
+    var g = c[e].split("=");
+    if (g[0]) {
+      var h = g[0];
+      try {
+        h = decodeURIComponent(h);
+      } catch (k) {
+        h = unescape(h);
+      }
+      g = (g[1] || "").replace(/\+/g, " ");
+      try {
+        g = decodeURIComponent(g);
+      } catch (l) {
+        g = unescape(g);
+      }
+      !1 !== b.splitArgs && (g = g.split(","));
+      1 == g.length && (g = g[0]);
+      d[h] = g;
+    }
+  }
+  return d;
+};
+OpenLayers.Util.lastSeqID = 0;
+OpenLayers.Util.createUniqueID = function (a) {
+  a = null == a ? "id_" : a.replace(OpenLayers.Util.dotless, "_");
+  OpenLayers.Util.lastSeqID += 1;
+  return a + OpenLayers.Util.lastSeqID;
+};
+OpenLayers.INCHES_PER_UNIT = {
+  inches: 1,
+  ft: 12,
+  mi: 63360,
+  m: 39.37,
+  km: 39370,
+  dd: 4374754,
+  yd: 36,
+};
+OpenLayers.INCHES_PER_UNIT["in"] = OpenLayers.INCHES_PER_UNIT.inches;
+OpenLayers.INCHES_PER_UNIT.degrees = OpenLayers.INCHES_PER_UNIT.dd;
+OpenLayers.INCHES_PER_UNIT.nmi = 1852 * OpenLayers.INCHES_PER_UNIT.m;
+OpenLayers.METERS_PER_INCH = 0.0254000508001016;
+OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT, {
+  Inch: OpenLayers.INCHES_PER_UNIT.inches,
+  Meter: 1 / OpenLayers.METERS_PER_INCH,
+  Foot: 0.3048006096012192 / OpenLayers.METERS_PER_INCH,
+  IFoot: 0.3048 / OpenLayers.METERS_PER_INCH,
+  ClarkeFoot: 0.3047972651151 / OpenLayers.METERS_PER_INCH,
+  SearsFoot: 0.30479947153867626 / OpenLayers.METERS_PER_INCH,
+  GoldCoastFoot: 0.3047997101815088 / OpenLayers.METERS_PER_INCH,
+  IInch: 0.0254 / OpenLayers.METERS_PER_INCH,
+  MicroInch: 2.54e-5 / OpenLayers.METERS_PER_INCH,
+  Mil: 2.54e-8 / OpenLayers.METERS_PER_INCH,
+  Centimeter: 0.01 / OpenLayers.METERS_PER_INCH,
+  Kilometer: 1e3 / OpenLayers.METERS_PER_INCH,
+  Yard: 0.9144018288036576 / OpenLayers.METERS_PER_INCH,
+  SearsYard: 0.914398414616029 / OpenLayers.METERS_PER_INCH,
+  IndianYard: 0.9143985307444408 / OpenLayers.METERS_PER_INCH,
+  IndianYd37: 0.91439523 / OpenLayers.METERS_PER_INCH,
+  IndianYd62: 0.9143988 / OpenLayers.METERS_PER_INCH,
+  IndianYd75: 0.9143985 / OpenLayers.METERS_PER_INCH,
+  IndianFoot: 0.30479951 / OpenLayers.METERS_PER_INCH,
+  IndianFt37: 0.30479841 / OpenLayers.METERS_PER_INCH,
+  IndianFt62: 0.3047996 / OpenLayers.METERS_PER_INCH,
+  IndianFt75: 0.3047995 / OpenLayers.METERS_PER_INCH,
+  Mile: 1609.3472186944373 / OpenLayers.METERS_PER_INCH,
+  IYard: 0.9144 / OpenLayers.METERS_PER_INCH,
+  IMile: 1609.344 / OpenLayers.METERS_PER_INCH,
+  NautM: 1852 / OpenLayers.METERS_PER_INCH,
+  "Lat-66": 110943.31648893273 / OpenLayers.METERS_PER_INCH,
+  "Lat-83": 110946.25736872235 / OpenLayers.METERS_PER_INCH,
+  Decimeter: 0.1 / OpenLayers.METERS_PER_INCH,
+  Millimeter: 0.001 / OpenLayers.METERS_PER_INCH,
+  Dekameter: 10 / OpenLayers.METERS_PER_INCH,
+  Decameter: 10 / OpenLayers.METERS_PER_INCH,
+  Hectometer: 100 / OpenLayers.METERS_PER_INCH,
+  GermanMeter: 1.0000135965 / OpenLayers.METERS_PER_INCH,
+  CaGrid: 0.999738 / OpenLayers.METERS_PER_INCH,
+  ClarkeChain: 20.1166194976 / OpenLayers.METERS_PER_INCH,
+  GunterChain: 20.11684023368047 / OpenLayers.METERS_PER_INCH,
+  BenoitChain: 20.116782494375872 / OpenLayers.METERS_PER_INCH,
+  SearsChain: 20.11676512155 / OpenLayers.METERS_PER_INCH,
+  ClarkeLink: 0.201166194976 / OpenLayers.METERS_PER_INCH,
+  GunterLink: 0.2011684023368047 / OpenLayers.METERS_PER_INCH,
+  BenoitLink: 0.20116782494375873 / OpenLayers.METERS_PER_INCH,
+  SearsLink: 0.2011676512155 / OpenLayers.METERS_PER_INCH,
+  Rod: 5.02921005842012 / OpenLayers.METERS_PER_INCH,
+  IntnlChain: 20.1168 / OpenLayers.METERS_PER_INCH,
+  IntnlLink: 0.201168 / OpenLayers.METERS_PER_INCH,
+  Perch: 5.02921005842012 / OpenLayers.METERS_PER_INCH,
+  Pole: 5.02921005842012 / OpenLayers.METERS_PER_INCH,
+  Furlong: 201.1684023368046 / OpenLayers.METERS_PER_INCH,
+  Rood: 3.778266898 / OpenLayers.METERS_PER_INCH,
+  CapeFoot: 0.3047972615 / OpenLayers.METERS_PER_INCH,
+  Brealey: 375 / OpenLayers.METERS_PER_INCH,
+  ModAmFt: 0.304812252984506 / OpenLayers.METERS_PER_INCH,
+  Fathom: 1.8288 / OpenLayers.METERS_PER_INCH,
+  "NautM-UK": 1853.184 / OpenLayers.METERS_PER_INCH,
+  "50kilometers": 5e4 / OpenLayers.METERS_PER_INCH,
+  "150kilometers": 15e4 / OpenLayers.METERS_PER_INCH,
+});
+OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT, {
+  mm: OpenLayers.INCHES_PER_UNIT.Meter / 1e3,
+  cm: OpenLayers.INCHES_PER_UNIT.Meter / 100,
+  dm: 100 * OpenLayers.INCHES_PER_UNIT.Meter,
+  km: 1e3 * OpenLayers.INCHES_PER_UNIT.Meter,
+  kmi: OpenLayers.INCHES_PER_UNIT.nmi,
+  fath: OpenLayers.INCHES_PER_UNIT.Fathom,
+  ch: OpenLayers.INCHES_PER_UNIT.IntnlChain,
+  link: OpenLayers.INCHES_PER_UNIT.IntnlLink,
+  "us-in": OpenLayers.INCHES_PER_UNIT.inches,
+  "us-ft": OpenLayers.INCHES_PER_UNIT.Foot,
+  "us-yd": OpenLayers.INCHES_PER_UNIT.Yard,
+  "us-ch": OpenLayers.INCHES_PER_UNIT.GunterChain,
+  "us-mi": OpenLayers.INCHES_PER_UNIT.Mile,
+  "ind-yd": OpenLayers.INCHES_PER_UNIT.IndianYd37,
+  "ind-ft": OpenLayers.INCHES_PER_UNIT.IndianFt37,
+  "ind-ch": 20.11669506 / OpenLayers.METERS_PER_INCH,
+});
+OpenLayers.DOTS_PER_INCH = 72;
+OpenLayers.Util.normalizeScale = function (a) {
+  return 1 < a ? 1 / a : a;
+};
+OpenLayers.Util.getResolutionFromScale = function (a, b) {
+  var c;
+  a &&
+    (null == b && (b = "degrees"),
+    (c =
+      1 /
+      (OpenLayers.Util.normalizeScale(a) *
+        OpenLayers.INCHES_PER_UNIT[b] *
+        OpenLayers.DOTS_PER_INCH)));
+  return c;
+};
+OpenLayers.Util.getScaleFromResolution = function (a, b) {
+  null == b && (b = "degrees");
+  return a * OpenLayers.INCHES_PER_UNIT[b] * OpenLayers.DOTS_PER_INCH;
+};
+OpenLayers.Util.pagePosition = function (a) {
+  var b = [0, 0],
+    c = OpenLayers.Util.getViewportElement();
+  if (!a || a == window || a == c) return b;
+  var d =
+      OpenLayers.IS_GECKO &&
+      document.getBoxObjectFor &&
+      "absolute" == OpenLayers.Element.getStyle(a, "position") &&
+      ("" == a.style.top || "" == a.style.left),
+    e = null;
+  if (a.getBoundingClientRect)
+    (a = a.getBoundingClientRect()),
+      (e = window.pageYOffset || c.scrollTop),
+      (b[0] = a.left + (window.pageXOffset || c.scrollLeft)),
+      (b[1] = a.top + e);
+  else if (document.getBoxObjectFor && !d)
+    (a = document.getBoxObjectFor(a)),
+      (c = document.getBoxObjectFor(c)),
+      (b[0] = a.screenX - c.screenX),
+      (b[1] = a.screenY - c.screenY);
+  else {
+    b[0] = a.offsetLeft;
+    b[1] = a.offsetTop;
+    e = a.offsetParent;
+    if (e != a) for (; e; ) (b[0] += e.offsetLeft), (b[1] += e.offsetTop), (e = e.offsetParent);
+    c = OpenLayers.BROWSER_NAME;
+    if ("opera" == c || ("safari" == c && "absolute" == OpenLayers.Element.getStyle(a, "position")))
+      b[1] -= document.body.offsetTop;
+    for (e = a.offsetParent; e && e != document.body; ) {
+      b[0] -= e.scrollLeft;
+      if ("opera" != c || "TR" != e.tagName) b[1] -= e.scrollTop;
+      e = e.offsetParent;
+    }
+  }
+  return b;
+};
+OpenLayers.Util.getViewportElement = function () {
+  var a = arguments.callee.viewportElement;
+  void 0 == a &&
+    ((a =
+      "msie" == OpenLayers.BROWSER_NAME && "CSS1Compat" != document.compatMode
+        ? document.body
+        : document.documentElement),
+    (arguments.callee.viewportElement = a));
+  return a;
+};
+OpenLayers.Util.isEquivalentUrl = function (a, b, c) {
+  c = c || {};
+  OpenLayers.Util.applyDefaults(c, {
+    ignoreCase: !0,
+    ignorePort80: !0,
+    ignoreHash: !0,
+    splitArgs: !1,
+  });
+  a = OpenLayers.Util.createUrlObject(a, c);
+  b = OpenLayers.Util.createUrlObject(b, c);
+  for (var d in a) if ("args" !== d && a[d] != b[d]) return !1;
+  for (d in a.args) {
+    if (a.args[d] != b.args[d]) return !1;
+    delete b.args[d];
+  }
+  for (d in b.args) return !1;
+  return !0;
+};
+OpenLayers.Util.createUrlObject = function (a, b) {
+  b = b || {};
+  if (!/^\w+:\/\//.test(a)) {
+    var c = window.location,
+      d = c.port ? ":" + c.port : "",
+      d = c.protocol + "//" + c.host.split(":").shift() + d;
+    0 === a.indexOf("/")
+      ? (a = d + a)
+      : ((c = c.pathname.split("/")), c.pop(), (a = d + c.join("/") + "/" + a));
+  }
+  b.ignoreCase && (a = a.toLowerCase());
+  c = document.createElement("a");
+  c.href = a;
+  d = {};
+  d.host = c.host.split(":").shift();
+  d.protocol = c.protocol;
+  d.port = b.ignorePort80
+    ? "80" == c.port || "0" == c.port
+      ? ""
+      : c.port
+    : "" == c.port || "0" == c.port
+    ? "80"
+    : c.port;
+  d.hash = b.ignoreHash || "#" === c.hash ? "" : c.hash;
+  var e = c.search;
+  e || ((e = a.indexOf("?")), (e = -1 != e ? a.substr(e) : ""));
+  d.args = OpenLayers.Util.getParameters(e, { splitArgs: b.splitArgs });
+  d.pathname = "/" == c.pathname.charAt(0) ? c.pathname : "/" + c.pathname;
+  return d;
+};
+OpenLayers.Util.removeTail = function (a) {
+  var b = null,
+    b = a.indexOf("?"),
+    c = a.indexOf("#");
+  return (b =
+    -1 == b
+      ? -1 != c
+        ? a.substr(0, c)
+        : a
+      : -1 != c
+      ? a.substr(0, Math.min(b, c))
+      : a.substr(0, b));
+};
+OpenLayers.IS_GECKO = (function () {
+  var a = navigator.userAgent.toLowerCase();
+  return -1 == a.indexOf("webkit") && -1 != a.indexOf("gecko");
+})();
+OpenLayers.CANVAS_SUPPORTED = (function () {
+  var a = document.createElement("canvas");
+  return !(!a.getContext || !a.getContext("2d"));
+})();
+OpenLayers.BROWSER_NAME = (function () {
+  var a = "",
+    b = navigator.userAgent.toLowerCase();
+  -1 != b.indexOf("opera")
+    ? (a = "opera")
+    : -1 != b.indexOf("msie")
+    ? (a = "msie")
+    : -1 != b.indexOf("safari")
+    ? (a = "safari")
+    : -1 != b.indexOf("mozilla") && (a = -1 != b.indexOf("firefox") ? "firefox" : "mozilla");
+  return a;
+})();
+OpenLayers.Util.getBrowserName = function () {
+  return OpenLayers.BROWSER_NAME;
+};
+OpenLayers.Util.getRenderedDimensions = function (a, b, c) {
+  var d,
+    e,
+    f = document.createElement("div");
+  f.style.visibility = "hidden";
+  for (
+    var g = c && c.containerElement ? c.containerElement : document.body, h = !1, k = null, l = g;
+    l && "body" != l.tagName.toLowerCase();
+
+  ) {
+    var m = OpenLayers.Element.getStyle(l, "position");
+    if ("absolute" == m) {
+      h = !0;
+      break;
+    } else if (m && "static" != m) break;
+    l = l.parentNode;
+  }
+  !h ||
+    (0 !== g.clientHeight && 0 !== g.clientWidth) ||
+    ((k = document.createElement("div")),
+    (k.style.visibility = "hidden"),
+    (k.style.position = "absolute"),
+    (k.style.overflow = "visible"),
+    (k.style.width = document.body.clientWidth + "px"),
+    (k.style.height = document.body.clientHeight + "px"),
+    k.appendChild(f));
+  f.style.position = "absolute";
+  b &&
+    (b.w
+      ? ((d = b.w), (f.style.width = d + "px"))
+      : b.h && ((e = b.h), (f.style.height = e + "px")));
+  c && c.displayClass && (f.className = c.displayClass);
+  b = document.createElement("div");
+  b.innerHTML = a;
+  b.style.overflow = "visible";
+  if (b.childNodes)
+    for (a = 0, c = b.childNodes.length; a < c; a++)
+      b.childNodes[a].style && (b.childNodes[a].style.overflow = "visible");
+  f.appendChild(b);
+  k ? g.appendChild(k) : g.appendChild(f);
+  d || ((d = parseInt(b.scrollWidth)), (f.style.width = d + "px"));
+  e || (e = parseInt(b.scrollHeight));
+  f.removeChild(b);
+  k ? (k.removeChild(f), g.removeChild(k)) : g.removeChild(f);
+  return new OpenLayers.Size(d, e);
+};
+OpenLayers.Util.getScrollbarWidth = function () {
+  var a = OpenLayers.Util._scrollbarWidth;
+  if (null == a) {
+    var b = null,
+      c = null,
+      b = (a = 0),
+      b = document.createElement("div");
+    b.style.position = "absolute";
+    b.style.top = "-1000px";
+    b.style.left = "-1000px";
+    b.style.width = "100px";
+    b.style.height = "50px";
+    b.style.overflow = "hidden";
+    c = document.createElement("div");
+    c.style.width = "100%";
+    c.style.height = "200px";
+    b.appendChild(c);
+    document.body.appendChild(b);
+    a = c.offsetWidth;
+    b.style.overflow = "scroll";
+    b = c.offsetWidth;
+    document.body.removeChild(document.body.lastChild);
+    OpenLayers.Util._scrollbarWidth = a - b;
+    a = OpenLayers.Util._scrollbarWidth;
+  }
+  return a;
+};
+OpenLayers.Util.getFormattedLonLat = function (a, b, c) {
+  c || (c = "dms");
+  a = ((a + 540) % 360) - 180;
+  var d = Math.abs(a),
+    e = Math.floor(d),
+    f = (d = (d - e) / (1 / 60)),
+    d = Math.floor(d),
+    f = Math.round(10 * ((f - d) / (1 / 60))),
+    f = f / 10;
+  60 <= f && ((f -= 60), (d += 1), 60 <= d && ((d -= 60), (e += 1)));
+  10 > e && (e = "0" + e);
+  e += "\u00b0";
+  0 <= c.indexOf("dm") &&
+    (10 > d && (d = "0" + d),
+    (e += d + "'"),
+    0 <= c.indexOf("dms") && (10 > f && (f = "0" + f), (e += f + '"')));
+  return (e =
+    "lon" == b
+      ? e + (0 > a ? OpenLayers.i18n("W") : OpenLayers.i18n("E"))
+      : e + (0 > a ? OpenLayers.i18n("S") : OpenLayers.i18n("N")));
+};
+OpenLayers.Format = OpenLayers.Class({
+  options: null,
+  externalProjection: null,
+  internalProjection: null,
+  data: null,
+  keepData: !1,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+    this.options = a;
+  },
+  destroy: function () {},
+  read: function (a) {
+    throw Error("Read not implemented.");
+  },
+  write: function (a) {
+    throw Error("Write not implemented.");
+  },
+  CLASS_NAME: "OpenLayers.Format",
+});
+OpenLayers.Format.CSWGetRecords = function (a) {
+  a = OpenLayers.Util.applyDefaults(a, OpenLayers.Format.CSWGetRecords.DEFAULTS);
+  var b = OpenLayers.Format.CSWGetRecords["v" + a.version.replace(/\./g, "_")];
+  if (!b) throw "Unsupported CSWGetRecords version: " + a.version;
+  return new b(a);
+};
+OpenLayers.Format.CSWGetRecords.DEFAULTS = { version: "2.0.2" };
+OpenLayers.Control = OpenLayers.Class({
+  id: null,
+  map: null,
+  div: null,
+  type: null,
+  allowSelection: !1,
+  displayClass: "",
+  title: "",
+  autoActivate: !1,
+  active: null,
+  handlerOptions: null,
+  handler: null,
+  eventListeners: null,
+  events: null,
+  initialize: function (a) {
+    this.displayClass = this.CLASS_NAME.replace("OpenLayers.", "ol").replace(/\./g, "");
+    OpenLayers.Util.extend(this, a);
+    this.events = new OpenLayers.Events(this);
+    if (this.eventListeners instanceof Object) this.events.on(this.eventListeners);
+    null == this.id && (this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_"));
+  },
+  destroy: function () {
+    this.events &&
+      (this.eventListeners && this.events.un(this.eventListeners),
+      this.events.destroy(),
+      (this.events = null));
+    this.eventListeners = null;
+    this.handler && (this.handler.destroy(), (this.handler = null));
+    if (this.handlers) {
+      for (var a in this.handlers)
+        this.handlers.hasOwnProperty(a) &&
+          "function" == typeof this.handlers[a].destroy &&
+          this.handlers[a].destroy();
+      this.handlers = null;
+    }
+    this.map && (this.map.removeControl(this), (this.map = null));
+    this.div = null;
+  },
+  setMap: function (a) {
+    this.map = a;
+    this.handler && this.handler.setMap(a);
+  },
+  draw: function (a) {
+    null == this.div &&
+      ((this.div = OpenLayers.Util.createDiv(this.id)),
+      (this.div.className = this.displayClass),
+      this.allowSelection ||
+        ((this.div.className += " olControlNoSelect"),
+        this.div.setAttribute("unselectable", "on", 0),
+        (this.div.onselectstart = OpenLayers.Function.False)),
+      "" != this.title && (this.div.title = this.title));
+    null != a && (this.position = a.clone());
+    this.moveTo(this.position);
+    return this.div;
+  },
+  moveTo: function (a) {
+    null != a &&
+      null != this.div &&
+      ((this.div.style.left = a.x + "px"), (this.div.style.top = a.y + "px"));
+  },
+  activate: function () {
+    if (this.active) return !1;
+    this.handler && this.handler.activate();
+    this.active = !0;
+    this.map &&
+      OpenLayers.Element.addClass(
+        this.map.viewPortDiv,
+        this.displayClass.replace(/ /g, "") + "Active"
+      );
+    this.events.triggerEvent("activate");
+    return !0;
+  },
+  deactivate: function () {
+    return this.active
+      ? (this.handler && this.handler.deactivate(),
+        (this.active = !1),
+        this.map &&
+          OpenLayers.Element.removeClass(
+            this.map.viewPortDiv,
+            this.displayClass.replace(/ /g, "") + "Active"
+          ),
+        this.events.triggerEvent("deactivate"),
+        !0)
+      : !1;
+  },
+  CLASS_NAME: "OpenLayers.Control",
+});
+OpenLayers.Control.TYPE_BUTTON = 1;
+OpenLayers.Control.TYPE_TOGGLE = 2;
+OpenLayers.Control.TYPE_TOOL = 3;
+OpenLayers.Event = {
+  observers: !1,
+  KEY_SPACE: 32,
+  KEY_BACKSPACE: 8,
+  KEY_TAB: 9,
+  KEY_RETURN: 13,
+  KEY_ESC: 27,
+  KEY_LEFT: 37,
+  KEY_UP: 38,
+  KEY_RIGHT: 39,
+  KEY_DOWN: 40,
+  KEY_DELETE: 46,
+  element: function (a) {
+    return a.target || a.srcElement;
+  },
+  isSingleTouch: function (a) {
+    return a.touches && 1 == a.touches.length;
+  },
+  isMultiTouch: function (a) {
+    return a.touches && 1 < a.touches.length;
+  },
+  isLeftClick: function (a) {
+    return (a.which && 1 == a.which) || (a.button && 1 == a.button);
+  },
+  isRightClick: function (a) {
+    return (a.which && 3 == a.which) || (a.button && 2 == a.button);
+  },
+  stop: function (a, b) {
+    b || OpenLayers.Event.preventDefault(a);
+    a.stopPropagation ? a.stopPropagation() : (a.cancelBubble = !0);
+  },
+  preventDefault: function (a) {
+    a.preventDefault ? a.preventDefault() : (a.returnValue = !1);
+  },
+  findElement: function (a, b) {
+    for (
+      var c = OpenLayers.Event.element(a);
+      c.parentNode && (!c.tagName || c.tagName.toUpperCase() != b.toUpperCase());
+
+    )
+      c = c.parentNode;
+    return c;
+  },
+  observe: function (a, b, c, d) {
+    a = OpenLayers.Util.getElement(a);
+    d = d || !1;
+    "keypress" == b &&
+      (navigator.appVersion.match(/Konqueror|Safari|KHTML/) || a.attachEvent) &&
+      (b = "keydown");
+    this.observers || (this.observers = {});
+    if (!a._eventCacheID) {
+      var e = "eventCacheID_";
+      a.id && (e = a.id + "_" + e);
+      a._eventCacheID = OpenLayers.Util.createUniqueID(e);
+    }
+    e = a._eventCacheID;
+    this.observers[e] || (this.observers[e] = []);
+    this.observers[e].push({ element: a, name: b, observer: c, useCapture: d });
+    a.addEventListener ? a.addEventListener(b, c, d) : a.attachEvent && a.attachEvent("on" + b, c);
+  },
+  stopObservingElement: function (a) {
+    a = OpenLayers.Util.getElement(a)._eventCacheID;
+    this._removeElementObservers(OpenLayers.Event.observers[a]);
+  },
+  _removeElementObservers: function (a) {
+    if (a)
+      for (var b = a.length - 1; 0 <= b; b--) {
+        var c = a[b];
+        OpenLayers.Event.stopObserving.apply(this, [c.element, c.name, c.observer, c.useCapture]);
+      }
+  },
+  stopObserving: function (a, b, c, d) {
+    d = d || !1;
+    a = OpenLayers.Util.getElement(a);
+    var e = a._eventCacheID;
+    "keypress" == b &&
+      (navigator.appVersion.match(/Konqueror|Safari|KHTML/) || a.detachEvent) &&
+      (b = "keydown");
+    var f = !1,
+      g = OpenLayers.Event.observers[e];
+    if (g)
+      for (var h = 0; !f && h < g.length; ) {
+        var k = g[h];
+        if (k.name == b && k.observer == c && k.useCapture == d) {
+          g.splice(h, 1);
+          0 == g.length && delete OpenLayers.Event.observers[e];
+          f = !0;
+          break;
+        }
+        h++;
+      }
+    f &&
+      (a.removeEventListener
+        ? a.removeEventListener(b, c, d)
+        : a && a.detachEvent && a.detachEvent("on" + b, c));
+    return f;
+  },
+  unloadCache: function () {
+    if (OpenLayers.Event && OpenLayers.Event.observers) {
+      for (var a in OpenLayers.Event.observers)
+        OpenLayers.Event._removeElementObservers.apply(this, [OpenLayers.Event.observers[a]]);
+      OpenLayers.Event.observers = !1;
+    }
+  },
+  CLASS_NAME: "OpenLayers.Event",
+};
+OpenLayers.Event.observe(window, "unload", OpenLayers.Event.unloadCache, !1);
+OpenLayers.Events = OpenLayers.Class({
+  BROWSER_EVENTS: "mouseover mouseout mousedown mouseup mousemove click dblclick rightclick dblrightclick resize focus blur touchstart touchmove touchend keydown".split(
+    " "
+  ),
+  listeners: null,
+  object: null,
+  element: null,
+  eventHandler: null,
+  fallThrough: null,
+  includeXY: !1,
+  extensions: null,
+  extensionCount: null,
+  clearMouseListener: null,
+  initialize: function (a, b, c, d, e) {
+    OpenLayers.Util.extend(this, e);
+    this.object = a;
+    this.fallThrough = d;
+    this.listeners = {};
+    this.extensions = {};
+    this.extensionCount = {};
+    this._msTouches = [];
+    null != b && this.attachToElement(b);
+  },
+  destroy: function () {
+    for (var a in this.extensions)
+      "boolean" !== typeof this.extensions[a] && this.extensions[a].destroy();
+    this.extensions = null;
+    this.element &&
+      (OpenLayers.Event.stopObservingElement(this.element),
+      this.element.hasScrollEvent &&
+        OpenLayers.Event.stopObserving(window, "scroll", this.clearMouseListener));
+    this.eventHandler = this.fallThrough = this.object = this.listeners = this.element = null;
+  },
+  addEventType: function (a) {},
+  attachToElement: function (a) {
+    this.element
+      ? OpenLayers.Event.stopObservingElement(this.element)
+      : ((this.eventHandler = OpenLayers.Function.bindAsEventListener(
+          this.handleBrowserEvent,
+          this
+        )),
+        (this.clearMouseListener = OpenLayers.Function.bind(this.clearMouseCache, this)));
+    this.element = a;
+    for (
+      var b = !!window.navigator.msMaxTouchPoints, c, d = 0, e = this.BROWSER_EVENTS.length;
+      d < e;
+      d++
+    )
+      (c = this.BROWSER_EVENTS[d]),
+        OpenLayers.Event.observe(a, c, this.eventHandler),
+        b && 0 === c.indexOf("touch") && this.addMsTouchListener(a, c, this.eventHandler);
+    OpenLayers.Event.observe(a, "dragstart", OpenLayers.Event.stop);
+  },
+  on: function (a) {
+    for (var b in a) "scope" != b && a.hasOwnProperty(b) && this.register(b, a.scope, a[b]);
+  },
+  register: function (a, b, c, d) {
+    a in OpenLayers.Events &&
+      !this.extensions[a] &&
+      (this.extensions[a] = new OpenLayers.Events[a](this));
+    if (null != c) {
+      null == b && (b = this.object);
+      var e = this.listeners[a];
+      e || ((e = []), (this.listeners[a] = e), (this.extensionCount[a] = 0));
+      b = { obj: b, func: c };
+      d
+        ? (e.splice(this.extensionCount[a], 0, b),
+          "object" === typeof d && d.extension && this.extensionCount[a]++)
+        : e.push(b);
+    }
+  },
+  registerPriority: function (a, b, c) {
+    this.register(a, b, c, !0);
+  },
+  un: function (a) {
+    for (var b in a) "scope" != b && a.hasOwnProperty(b) && this.unregister(b, a.scope, a[b]);
+  },
+  unregister: function (a, b, c) {
+    null == b && (b = this.object);
+    a = this.listeners[a];
+    if (null != a)
+      for (var d = 0, e = a.length; d < e; d++)
+        if (a[d].obj == b && a[d].func == c) {
+          a.splice(d, 1);
+          break;
+        }
+  },
+  remove: function (a) {
+    null != this.listeners[a] && (this.listeners[a] = []);
+  },
+  triggerEvent: function (a, b) {
+    var c = this.listeners[a];
+    if (c && 0 != c.length) {
+      null == b && (b = {});
+      b.object = this.object;
+      b.element = this.element;
+      b.type || (b.type = a);
+      for (
+        var c = c.slice(), d, e = 0, f = c.length;
+        e < f && ((d = c[e]), (d = d.func.apply(d.obj, [b])), void 0 == d || !1 != d);
+        e++
+      );
+      this.fallThrough || OpenLayers.Event.stop(b, !0);
+      return d;
+    }
+  },
+  handleBrowserEvent: function (a) {
+    var b = a.type,
+      c = this.listeners[b];
+    if (c && 0 != c.length) {
+      if ((c = a.touches) && c[0]) {
+        for (var d = 0, e = 0, f = c.length, g, h = 0; h < f; ++h)
+          (g = this.getTouchClientXY(c[h])), (d += g.clientX), (e += g.clientY);
+        a.clientX = d / f;
+        a.clientY = e / f;
+      }
+      this.includeXY && (a.xy = this.getMousePosition(a));
+      this.triggerEvent(b, a);
+    }
+  },
+  getTouchClientXY: function (a) {
+    var b = window.olMockWin || window,
+      c = b.pageXOffset,
+      b = b.pageYOffset,
+      d = a.clientX,
+      e = a.clientY;
+    if (
+      (0 === a.pageY && Math.floor(e) > Math.floor(a.pageY)) ||
+      (0 === a.pageX && Math.floor(d) > Math.floor(a.pageX))
+    )
+      (d -= c), (e -= b);
+    else if (e < a.pageY - b || d < a.pageX - c) (d = a.pageX - c), (e = a.pageY - b);
+    a.olClientX = d;
+    a.olClientY = e;
+    return { clientX: d, clientY: e };
+  },
+  clearMouseCache: function () {
+    this.element.scrolls = null;
+    this.element.lefttop = null;
+    this.element.offsets = null;
+  },
+  getMousePosition: function (a) {
+    this.includeXY
+      ? this.element.hasScrollEvent ||
+        (OpenLayers.Event.observe(window, "scroll", this.clearMouseListener),
+        (this.element.hasScrollEvent = !0))
+      : this.clearMouseCache();
+    if (!this.element.scrolls) {
+      var b = OpenLayers.Util.getViewportElement();
+      this.element.scrolls = [
+        window.pageXOffset || b.scrollLeft,
+        window.pageYOffset || b.scrollTop,
+      ];
+    }
+    this.element.lefttop ||
+      (this.element.lefttop = [
+        document.documentElement.clientLeft || 0,
+        document.documentElement.clientTop || 0,
+      ]);
+    this.element.offsets || (this.element.offsets = OpenLayers.Util.pagePosition(this.element));
+    return new OpenLayers.Pixel(
+      a.clientX + this.element.scrolls[0] - this.element.offsets[0] - this.element.lefttop[0],
+      a.clientY + this.element.scrolls[1] - this.element.offsets[1] - this.element.lefttop[1]
+    );
+  },
+  addMsTouchListener: function (a, b, c) {
+    function d(a) {
+      c(
+        OpenLayers.Util.applyDefaults(
+          {
+            stopPropagation: function () {
+              for (var a = e.length - 1; 0 <= a; --a) e[a].stopPropagation();
+            },
+            preventDefault: function () {
+              for (var a = e.length - 1; 0 <= a; --a) e[a].preventDefault();
+            },
+            type: b,
+          },
+          a
+        )
+      );
+    }
+    var e = this._msTouches;
+    switch (b) {
+      case "touchstart":
+        return this.addMsTouchListenerStart(a, b, d);
+      case "touchend":
+        return this.addMsTouchListenerEnd(a, b, d);
+      case "touchmove":
+        return this.addMsTouchListenerMove(a, b, d);
+      default:
+        throw "Unknown touch event type";
+    }
+  },
+  addMsTouchListenerStart: function (a, b, c) {
+    var d = this._msTouches;
+    OpenLayers.Event.observe(a, "MSPointerDown", function (a) {
+      for (var b = !1, g = 0, h = d.length; g < h; ++g)
+        if (d[g].pointerId == a.pointerId) {
+          b = !0;
+          break;
+        }
+      b || d.push(a);
+      a.touches = d.slice();
+      c(a);
+    });
+    OpenLayers.Event.observe(a, "MSPointerUp", function (a) {
+      for (var b = 0, c = d.length; b < c; ++b)
+        if (d[b].pointerId == a.pointerId) {
+          d.splice(b, 1);
+          break;
+        }
+    });
+  },
+  addMsTouchListenerMove: function (a, b, c) {
+    var d = this._msTouches;
+    OpenLayers.Event.observe(a, "MSPointerMove", function (a) {
+      if (a.pointerType != a.MSPOINTER_TYPE_MOUSE || 0 != a.buttons)
+        if (1 != d.length || d[0].pageX != a.pageX || d[0].pageY != a.pageY) {
+          for (var b = 0, g = d.length; b < g; ++b)
+            if (d[b].pointerId == a.pointerId) {
+              d[b] = a;
+              break;
+            }
+          a.touches = d.slice();
+          c(a);
+        }
+    });
+  },
+  addMsTouchListenerEnd: function (a, b, c) {
+    var d = this._msTouches;
+    OpenLayers.Event.observe(a, "MSPointerUp", function (a) {
+      for (var b = 0, g = d.length; b < g; ++b)
+        if (d[b].pointerId == a.pointerId) {
+          d.splice(b, 1);
+          break;
+        }
+      a.touches = d.slice();
+      c(a);
+    });
+  },
+  CLASS_NAME: "OpenLayers.Events",
+});
+OpenLayers.Events.buttonclick = OpenLayers.Class({
+  target: null,
+  events: "mousedown mouseup click dblclick touchstart touchmove touchend keydown".split(" "),
+  startRegEx: /^mousedown|touchstart$/,
+  cancelRegEx: /^touchmove$/,
+  completeRegEx: /^mouseup|touchend$/,
+  initialize: function (a) {
+    this.target = a;
+    for (a = this.events.length - 1; 0 <= a; --a)
+      this.target.register(this.events[a], this, this.buttonClick, { extension: !0 });
+  },
+  destroy: function () {
+    for (var a = this.events.length - 1; 0 <= a; --a)
+      this.target.unregister(this.events[a], this, this.buttonClick);
+    delete this.target;
+  },
+  getPressedButton: function (a) {
+    var b = 3,
+      c;
+    do {
+      if (OpenLayers.Element.hasClass(a, "olButton")) {
+        c = a;
+        break;
+      }
+      a = a.parentNode;
+    } while (0 < --b && a);
+    return c;
+  },
+  ignore: function (a) {
+    var b = 3,
+      c = !1;
+    do {
+      if ("a" === a.nodeName.toLowerCase()) {
+        c = !0;
+        break;
+      }
+      a = a.parentNode;
+    } while (0 < --b && a);
+    return c;
+  },
+  buttonClick: function (a) {
+    var b = !0,
+      c = OpenLayers.Event.element(a);
+    if (c && (OpenLayers.Event.isLeftClick(a) || !~a.type.indexOf("mouse")))
+      if ((c = this.getPressedButton(c))) {
+        if ("keydown" === a.type)
+          switch (a.keyCode) {
+            case OpenLayers.Event.KEY_RETURN:
+            case OpenLayers.Event.KEY_SPACE:
+              this.target.triggerEvent("buttonclick", { buttonElement: c }),
+                OpenLayers.Event.stop(a),
+                (b = !1);
+          }
+        else if (this.startEvt) {
+          if (this.completeRegEx.test(a.type)) {
+            var b = OpenLayers.Util.pagePosition(c),
+              d = OpenLayers.Util.getViewportElement(),
+              e = window.pageYOffset || d.scrollTop;
+            b[0] -= window.pageXOffset || d.scrollLeft;
+            b[1] -= e;
+            this.target.triggerEvent("buttonclick", {
+              buttonElement: c,
+              buttonXY: { x: this.startEvt.clientX - b[0], y: this.startEvt.clientY - b[1] },
+            });
+          }
+          this.cancelRegEx.test(a.type) && delete this.startEvt;
+          OpenLayers.Event.stop(a);
+          b = !1;
+        }
+        this.startRegEx.test(a.type) && ((this.startEvt = a), OpenLayers.Event.stop(a), (b = !1));
+      } else (b = !this.ignore(OpenLayers.Event.element(a))), delete this.startEvt;
+    return b;
+  },
+});
+OpenLayers.Util = OpenLayers.Util || {};
+OpenLayers.Util.vendorPrefix = (function () {
+  function a(a) {
+    return a
+      ? a
+          .replace(/([A-Z])/g, function (a) {
+            return "-" + a.toLowerCase();
+          })
+          .replace(/^ms-/, "-ms-")
+      : null;
+  }
+  function b(a, b) {
+    if (void 0 === g[b]) {
+      var c,
+        e = 0,
+        f = d.length,
+        p = "undefined" !== typeof a.cssText;
+      for (g[b] = null; e < f; e++)
+        if (
+          ((c = d[e])
+            ? (p || (c = c.toLowerCase()), (c = c + b.charAt(0).toUpperCase() + b.slice(1)))
+            : (c = b),
+          void 0 !== a[c])
+        ) {
+          g[b] = c;
+          break;
+        }
+    }
+    return g[b];
+  }
+  function c(a) {
+    return b(e, a);
+  }
+  var d = ["", "O", "ms", "Moz", "Webkit"],
+    e = document.createElement("div").style,
+    f = {},
+    g = {};
+  return {
+    css: function (b) {
+      if (void 0 === f[b]) {
+        var d = b.replace(/(-[\s\S])/g, function (a) {
+            return a.charAt(1).toUpperCase();
+          }),
+          d = c(d);
+        f[b] = a(d);
+      }
+      return f[b];
+    },
+    js: b,
+    style: c,
+    cssCache: f,
+    jsCache: g,
+  };
+})();
+OpenLayers.Animation = (function (a) {
+  var b = OpenLayers.Util.vendorPrefix.js(a, "requestAnimationFrame"),
+    c = !!b,
+    d = (function () {
+      var c =
+        a[b] ||
+        function (b, c) {
+          a.setTimeout(b, 16);
+        };
+      return function (b, d) {
+        c.apply(a, [b, d]);
+      };
+    })(),
+    e = 0,
+    f = {};
+  return {
+    isNative: c,
+    requestFrame: d,
+    start: function (a, b, c) {
+      b = 0 < b ? b : Number.POSITIVE_INFINITY;
+      var l = ++e,
+        m = +new Date();
+      f[l] = function () {
+        f[l] && +new Date() - m <= b ? (a(), f[l] && d(f[l], c)) : delete f[l];
+      };
+      d(f[l], c);
+      return l;
+    },
+    stop: function (a) {
+      delete f[a];
+    },
+  };
+})(window);
+OpenLayers.Tween = OpenLayers.Class({
+  easing: null,
+  begin: null,
+  finish: null,
+  duration: null,
+  callbacks: null,
+  time: null,
+  minFrameRate: null,
+  startTime: null,
+  animationId: null,
+  playing: !1,
+  initialize: function (a) {
+    this.easing = a ? a : OpenLayers.Easing.Expo.easeOut;
+  },
+  start: function (a, b, c, d) {
+    this.playing = !0;
+    this.begin = a;
+    this.finish = b;
+    this.duration = c;
+    this.callbacks = d.callbacks;
+    this.minFrameRate = d.minFrameRate || 30;
+    this.time = 0;
+    this.startTime = new Date().getTime();
+    OpenLayers.Animation.stop(this.animationId);
+    this.animationId = null;
+    this.callbacks && this.callbacks.start && this.callbacks.start.call(this, this.begin);
+    this.animationId = OpenLayers.Animation.start(OpenLayers.Function.bind(this.play, this));
+  },
+  stop: function () {
+    this.playing &&
+      (this.callbacks && this.callbacks.done && this.callbacks.done.call(this, this.finish),
+      OpenLayers.Animation.stop(this.animationId),
+      (this.animationId = null),
+      (this.playing = !1));
+  },
+  play: function () {
+    var a = {},
+      b;
+    for (b in this.begin) {
+      var c = this.begin[b],
+        d = this.finish[b];
+      if (null == c || null == d || isNaN(c) || isNaN(d))
+        throw new TypeError("invalid value for Tween");
+      a[b] = this.easing.apply(this, [this.time, c, d - c, this.duration]);
+    }
+    this.time++;
+    this.callbacks &&
+      this.callbacks.eachStep &&
+      (new Date().getTime() - this.startTime) / this.time <= 1e3 / this.minFrameRate &&
+      this.callbacks.eachStep.call(this, a);
+    this.time > this.duration && this.stop();
+  },
+  CLASS_NAME: "OpenLayers.Tween",
+});
+OpenLayers.Easing = { CLASS_NAME: "OpenLayers.Easing" };
+OpenLayers.Easing.Linear = {
+  easeIn: function (a, b, c, d) {
+    return (c * a) / d + b;
+  },
+  easeOut: function (a, b, c, d) {
+    return (c * a) / d + b;
+  },
+  easeInOut: function (a, b, c, d) {
+    return (c * a) / d + b;
+  },
+  CLASS_NAME: "OpenLayers.Easing.Linear",
+};
+OpenLayers.Easing.Expo = {
+  easeIn: function (a, b, c, d) {
+    return 0 == a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b;
+  },
+  easeOut: function (a, b, c, d) {
+    return a == d ? b + c : c * (-Math.pow(2, (-10 * a) / d) + 1) + b;
+  },
+  easeInOut: function (a, b, c, d) {
+    return 0 == a
+      ? b
+      : a == d
+      ? b + c
+      : 1 > (a /= d / 2)
+      ? (c / 2) * Math.pow(2, 10 * (a - 1)) + b
+      : (c / 2) * (-Math.pow(2, -10 * --a) + 2) + b;
+  },
+  CLASS_NAME: "OpenLayers.Easing.Expo",
+};
+OpenLayers.Easing.Quad = {
+  easeIn: function (a, b, c, d) {
+    return c * (a /= d) * a + b;
+  },
+  easeOut: function (a, b, c, d) {
+    return -c * (a /= d) * (a - 2) + b;
+  },
+  easeInOut: function (a, b, c, d) {
+    return 1 > (a /= d / 2) ? (c / 2) * a * a + b : (-c / 2) * (--a * (a - 2) - 1) + b;
+  },
+  CLASS_NAME: "OpenLayers.Easing.Quad",
+};
+OpenLayers.Projection = OpenLayers.Class({
+  proj: null,
+  projCode: null,
+  titleRegEx: /\+title=[^\+]*/,
+  initialize: function (a, b) {
+    OpenLayers.Util.extend(this, b);
+    this.projCode = a;
+    "object" == typeof Proj4js && (this.proj = new Proj4js.Proj(a));
+  },
+  getCode: function () {
+    return this.proj ? this.proj.srsCode : this.projCode;
+  },
+  getUnits: function () {
+    return this.proj ? this.proj.units : null;
+  },
+  toString: function () {
+    return this.getCode();
+  },
+  equals: function (a) {
+    var b = !1;
+    a &&
+      (a instanceof OpenLayers.Projection || (a = new OpenLayers.Projection(a)),
+      "object" == typeof Proj4js && this.proj.defData && a.proj.defData
+        ? (b =
+            this.proj.defData.replace(this.titleRegEx, "") ==
+            a.proj.defData.replace(this.titleRegEx, ""))
+        : a.getCode &&
+          ((b = this.getCode()),
+          (a = a.getCode()),
+          (b =
+            b == a ||
+            (!!OpenLayers.Projection.transforms[b] &&
+              OpenLayers.Projection.transforms[b][a] === OpenLayers.Projection.nullTransform))));
+    return b;
+  },
+  destroy: function () {
+    delete this.proj;
+    delete this.projCode;
+  },
+  CLASS_NAME: "OpenLayers.Projection",
+});
+OpenLayers.Projection.transforms = {};
+OpenLayers.Projection.defaults = {
+  "EPSG:4326": { units: "degrees", maxExtent: [-180, -90, 180, 90], yx: !0 },
+  "CRS:84": { units: "degrees", maxExtent: [-180, -90, 180, 90] },
+  "EPSG:900913": {
+    units: "m",
+    maxExtent: [-2.003750834e7, -2.003750834e7, 2.003750834e7, 2.003750834e7],
+  },
+};
+OpenLayers.Projection.addTransform = function (a, b, c) {
+  if (c === OpenLayers.Projection.nullTransform) {
+    var d = OpenLayers.Projection.defaults[a];
+    d && !OpenLayers.Projection.defaults[b] && (OpenLayers.Projection.defaults[b] = d);
+  }
+  OpenLayers.Projection.transforms[a] || (OpenLayers.Projection.transforms[a] = {});
+  OpenLayers.Projection.transforms[a][b] = c;
+};
+OpenLayers.Projection.transform = function (a, b, c) {
+  if (b && c)
+    if (
+      (b instanceof OpenLayers.Projection || (b = new OpenLayers.Projection(b)),
+      c instanceof OpenLayers.Projection || (c = new OpenLayers.Projection(c)),
+      b.proj && c.proj)
+    )
+      a = Proj4js.transform(b.proj, c.proj, a);
+    else {
+      b = b.getCode();
+      c = c.getCode();
+      var d = OpenLayers.Projection.transforms;
+      if (d[b] && d[b][c]) d[b][c](a);
+    }
+  return a;
+};
+OpenLayers.Projection.nullTransform = function (a) {
+  return a;
+};
+(function () {
+  function a(a) {
+    a.x = (180 * a.x) / d;
+    a.y = (180 / Math.PI) * (2 * Math.atan(Math.exp((a.y / d) * Math.PI)) - Math.PI / 2);
+    return a;
+  }
+  function b(a) {
+    a.x = (a.x * d) / 180;
+    var b = (Math.log(Math.tan(((90 + a.y) * Math.PI) / 360)) / Math.PI) * d;
+    a.y = Math.max(-2.003750834e7, Math.min(b, 2.003750834e7));
+    return a;
+  }
+  function c(c, d) {
+    var e = OpenLayers.Projection.addTransform,
+      f = OpenLayers.Projection.nullTransform,
+      g,
+      p,
+      q,
+      r,
+      s;
+    g = 0;
+    for (p = d.length; g < p; ++g)
+      for (q = d[g], e(c, q, b), e(q, c, a), s = g + 1; s < p; ++s)
+        (r = d[s]), e(q, r, f), e(r, q, f);
+  }
+  var d = 2.003750834e7,
+    e = ["EPSG:900913", "EPSG:3857", "EPSG:102113", "EPSG:102100"],
+    f = ["CRS:84", "urn:ogc:def:crs:EPSG:6.6:4326", "EPSG:4326"],
+    g;
+  for (g = e.length - 1; 0 <= g; --g) c(e[g], f);
+  for (g = f.length - 1; 0 <= g; --g) c(f[g], e);
+})();
+OpenLayers.Map = OpenLayers.Class({
+  Z_INDEX_BASE: { BaseLayer: 100, Overlay: 325, Feature: 725, Popup: 750, Control: 1e3 },
+  id: null,
+  fractionalZoom: !1,
+  events: null,
+  allOverlays: !1,
+  div: null,
+  dragging: !1,
+  size: null,
+  viewPortDiv: null,
+  layerContainerOrigin: null,
+  layerContainerDiv: null,
+  layers: null,
+  controls: null,
+  popups: null,
+  baseLayer: null,
+  center: null,
+  resolution: null,
+  zoom: 0,
+  panRatio: 1.5,
+  options: null,
+  tileSize: null,
+  projection: "EPSG:4326",
+  units: null,
+  resolutions: null,
+  maxResolution: null,
+  minResolution: null,
+  maxScale: null,
+  minScale: null,
+  maxExtent: null,
+  minExtent: null,
+  restrictedExtent: null,
+  numZoomLevels: 16,
+  theme: null,
+  displayProjection: null,
+  fallThrough: !1,
+  autoUpdateSize: !0,
+  eventListeners: null,
+  panTween: null,
+  panMethod: OpenLayers.Easing.Expo.easeOut,
+  panDuration: 50,
+  zoomTween: null,
+  zoomMethod: OpenLayers.Easing.Quad.easeOut,
+  zoomDuration: 20,
+  paddingForPopups: null,
+  layerContainerOriginPx: null,
+  minPx: null,
+  maxPx: null,
+  initialize: function (a, b) {
+    1 === arguments.length && "object" === typeof a && (a = (b = a) && b.div);
+    this.tileSize = new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH, OpenLayers.Map.TILE_HEIGHT);
+    this.paddingForPopups = new OpenLayers.Bounds(15, 15, 15, 15);
+    this.theme = OpenLayers._getScriptLocation() + "theme/default/style.css";
+    this.options = OpenLayers.Util.extend({}, b);
+    OpenLayers.Util.extend(this, b);
+    OpenLayers.Util.applyDefaults(
+      this,
+      OpenLayers.Projection.defaults[
+        this.projection instanceof OpenLayers.Projection
+          ? this.projection.projCode
+          : this.projection
+      ]
+    );
+    !this.maxExtent ||
+      this.maxExtent instanceof OpenLayers.Bounds ||
+      (this.maxExtent = new OpenLayers.Bounds(this.maxExtent));
+    !this.minExtent ||
+      this.minExtent instanceof OpenLayers.Bounds ||
+      (this.minExtent = new OpenLayers.Bounds(this.minExtent));
+    !this.restrictedExtent ||
+      this.restrictedExtent instanceof OpenLayers.Bounds ||
+      (this.restrictedExtent = new OpenLayers.Bounds(this.restrictedExtent));
+    !this.center ||
+      this.center instanceof OpenLayers.LonLat ||
+      (this.center = new OpenLayers.LonLat(this.center));
+    this.layers = [];
+    this.id = OpenLayers.Util.createUniqueID("OpenLayers.Map_");
+    this.div = OpenLayers.Util.getElement(a);
+    this.div ||
+      ((this.div = document.createElement("div")),
+      (this.div.style.height = "1px"),
+      (this.div.style.width = "1px"));
+    OpenLayers.Element.addClass(this.div, "olMap");
+    var c = this.id + "_OpenLayers_ViewPort";
+    this.viewPortDiv = OpenLayers.Util.createDiv(c, null, null, null, "relative", null, "hidden");
+    this.viewPortDiv.style.width = "100%";
+    this.viewPortDiv.style.height = "100%";
+    this.viewPortDiv.className = "olMapViewport";
+    this.div.appendChild(this.viewPortDiv);
+    this.events = new OpenLayers.Events(this, this.viewPortDiv, null, this.fallThrough, {
+      includeXY: !0,
+    });
+    OpenLayers.TileManager &&
+      null !== this.tileManager &&
+      (this.tileManager instanceof OpenLayers.TileManager ||
+        (this.tileManager = new OpenLayers.TileManager(this.tileManager)),
+      this.tileManager.addMap(this));
+    c = this.id + "_OpenLayers_Container";
+    this.layerContainerDiv = OpenLayers.Util.createDiv(c);
+    this.layerContainerDiv.style.zIndex = this.Z_INDEX_BASE.Popup - 1;
+    this.layerContainerOriginPx = { x: 0, y: 0 };
+    this.applyTransform();
+    this.viewPortDiv.appendChild(this.layerContainerDiv);
+    this.updateSize();
+    if (this.eventListeners instanceof Object) this.events.on(this.eventListeners);
+    !0 === this.autoUpdateSize &&
+      ((this.updateSizeDestroy = OpenLayers.Function.bind(this.updateSize, this)),
+      OpenLayers.Event.observe(window, "resize", this.updateSizeDestroy));
+    if (this.theme) {
+      for (var c = !0, d = document.getElementsByTagName("link"), e = 0, f = d.length; e < f; ++e)
+        if (OpenLayers.Util.isEquivalentUrl(d.item(e).href, this.theme)) {
+          c = !1;
+          break;
+        }
+      c &&
+        ((c = document.createElement("link")),
+        c.setAttribute("rel", "stylesheet"),
+        c.setAttribute("type", "text/css"),
+        c.setAttribute("href", this.theme),
+        document.getElementsByTagName("head")[0].appendChild(c));
+    }
+    null == this.controls &&
+      ((this.controls = []),
+      null != OpenLayers.Control &&
+        (OpenLayers.Control.Navigation
+          ? this.controls.push(new OpenLayers.Control.Navigation())
+          : OpenLayers.Control.TouchNavigation &&
+            this.controls.push(new OpenLayers.Control.TouchNavigation()),
+        OpenLayers.Control.Zoom
+          ? this.controls.push(new OpenLayers.Control.Zoom())
+          : OpenLayers.Control.PanZoom && this.controls.push(new OpenLayers.Control.PanZoom()),
+        OpenLayers.Control.ArgParser && this.controls.push(new OpenLayers.Control.ArgParser()),
+        OpenLayers.Control.Attribution &&
+          this.controls.push(new OpenLayers.Control.Attribution())));
+    e = 0;
+    for (f = this.controls.length; e < f; e++) this.addControlToMap(this.controls[e]);
+    this.popups = [];
+    this.unloadDestroy = OpenLayers.Function.bind(this.destroy, this);
+    OpenLayers.Event.observe(window, "unload", this.unloadDestroy);
+    b &&
+      b.layers &&
+      (delete this.center,
+      delete this.zoom,
+      this.addLayers(b.layers),
+      b.center && !this.getCenter() && this.setCenter(b.center, b.zoom));
+    this.panMethod && (this.panTween = new OpenLayers.Tween(this.panMethod));
+    this.zoomMethod &&
+      this.applyTransform.transform &&
+      (this.zoomTween = new OpenLayers.Tween(this.zoomMethod));
+  },
+  getViewport: function () {
+    return this.viewPortDiv;
+  },
+  render: function (a) {
+    this.div = OpenLayers.Util.getElement(a);
+    OpenLayers.Element.addClass(this.div, "olMap");
+    this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);
+    this.div.appendChild(this.viewPortDiv);
+    this.updateSize();
+  },
+  unloadDestroy: null,
+  updateSizeDestroy: null,
+  destroy: function () {
+    if (!this.unloadDestroy) return !1;
+    this.panTween && (this.panTween.stop(), (this.panTween = null));
+    this.zoomTween && (this.zoomTween.stop(), (this.zoomTween = null));
+    OpenLayers.Event.stopObserving(window, "unload", this.unloadDestroy);
+    this.unloadDestroy = null;
+    this.updateSizeDestroy &&
+      OpenLayers.Event.stopObserving(window, "resize", this.updateSizeDestroy);
+    this.paddingForPopups = null;
+    if (null != this.controls) {
+      for (var a = this.controls.length - 1; 0 <= a; --a) this.controls[a].destroy();
+      this.controls = null;
+    }
+    if (null != this.layers) {
+      for (a = this.layers.length - 1; 0 <= a; --a) this.layers[a].destroy(!1);
+      this.layers = null;
+    }
+    this.viewPortDiv &&
+      this.viewPortDiv.parentNode &&
+      this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);
+    this.viewPortDiv = null;
+    this.tileManager && (this.tileManager.removeMap(this), (this.tileManager = null));
+    this.eventListeners && (this.events.un(this.eventListeners), (this.eventListeners = null));
+    this.events.destroy();
+    this.options = this.events = null;
+  },
+  setOptions: function (a) {
+    var b = this.minPx && a.restrictedExtent != this.restrictedExtent;
+    OpenLayers.Util.extend(this, a);
+    b && this.moveTo(this.getCachedCenter(), this.zoom, { forceZoomChange: !0 });
+  },
+  getTileSize: function () {
+    return this.tileSize;
+  },
+  getBy: function (a, b, c) {
+    var d = "function" == typeof c.test;
+    return OpenLayers.Array.filter(this[a], function (a) {
+      return a[b] == c || (d && c.test(a[b]));
+    });
+  },
+  getLayersBy: function (a, b) {
+    return this.getBy("layers", a, b);
+  },
+  getLayersByName: function (a) {
+    return this.getLayersBy("name", a);
+  },
+  getLayersByClass: function (a) {
+    return this.getLayersBy("CLASS_NAME", a);
+  },
+  getControlsBy: function (a, b) {
+    return this.getBy("controls", a, b);
+  },
+  getControlsByClass: function (a) {
+    return this.getControlsBy("CLASS_NAME", a);
+  },
+  getLayer: function (a) {
+    for (var b = null, c = 0, d = this.layers.length; c < d; c++) {
+      var e = this.layers[c];
+      if (e.id == a) {
+        b = e;
+        break;
+      }
+    }
+    return b;
+  },
+  setLayerZIndex: function (a, b) {
+    a.setZIndex(this.Z_INDEX_BASE[a.isBaseLayer ? "BaseLayer" : "Overlay"] + 5 * b);
+  },
+  resetLayersZIndex: function () {
+    for (var a = 0, b = this.layers.length; a < b; a++) this.setLayerZIndex(this.layers[a], a);
+  },
+  addLayer: function (a) {
+    for (var b = 0, c = this.layers.length; b < c; b++) if (this.layers[b] == a) return !1;
+    if (!1 === this.events.triggerEvent("preaddlayer", { layer: a })) return !1;
+    this.allOverlays && (a.isBaseLayer = !1);
+    a.div.className = "olLayerDiv";
+    a.div.style.overflow = "";
+    this.setLayerZIndex(a, this.layers.length);
+    a.isFixed ? this.viewPortDiv.appendChild(a.div) : this.layerContainerDiv.appendChild(a.div);
+    this.layers.push(a);
+    a.setMap(this);
+    a.isBaseLayer || (this.allOverlays && !this.baseLayer)
+      ? null == this.baseLayer
+        ? this.setBaseLayer(a)
+        : a.setVisibility(!1)
+      : a.redraw();
+    this.events.triggerEvent("addlayer", { layer: a });
+    a.events.triggerEvent("added", { map: this, layer: a });
+    a.afterAdd();
+    return !0;
+  },
+  addLayers: function (a) {
+    for (var b = 0, c = a.length; b < c; b++) this.addLayer(a[b]);
+  },
+  removeLayer: function (a, b) {
+    if (!1 !== this.events.triggerEvent("preremovelayer", { layer: a })) {
+      null == b && (b = !0);
+      a.isFixed ? this.viewPortDiv.removeChild(a.div) : this.layerContainerDiv.removeChild(a.div);
+      OpenLayers.Util.removeItem(this.layers, a);
+      a.removeMap(this);
+      a.map = null;
+      if (this.baseLayer == a && ((this.baseLayer = null), b))
+        for (var c = 0, d = this.layers.length; c < d; c++) {
+          var e = this.layers[c];
+          if (e.isBaseLayer || this.allOverlays) {
+            this.setBaseLayer(e);
+            break;
+          }
+        }
+      this.resetLayersZIndex();
+      this.events.triggerEvent("removelayer", { layer: a });
+      a.events.triggerEvent("removed", { map: this, layer: a });
+    }
+  },
+  getNumLayers: function () {
+    return this.layers.length;
+  },
+  getLayerIndex: function (a) {
+    return OpenLayers.Util.indexOf(this.layers, a);
+  },
+  setLayerIndex: function (a, b) {
+    var c = this.getLayerIndex(a);
+    0 > b ? (b = 0) : b > this.layers.length && (b = this.layers.length);
+    if (c != b) {
+      this.layers.splice(c, 1);
+      this.layers.splice(b, 0, a);
+      for (var c = 0, d = this.layers.length; c < d; c++) this.setLayerZIndex(this.layers[c], c);
+      this.events.triggerEvent("changelayer", { layer: a, property: "order" });
+      this.allOverlays &&
+        (0 === b
+          ? this.setBaseLayer(a)
+          : this.baseLayer !== this.layers[0] && this.setBaseLayer(this.layers[0]));
+    }
+  },
+  raiseLayer: function (a, b) {
+    var c = this.getLayerIndex(a) + b;
+    this.setLayerIndex(a, c);
+  },
+  setBaseLayer: function (a) {
+    if (a != this.baseLayer && -1 != OpenLayers.Util.indexOf(this.layers, a)) {
+      var b = this.getCachedCenter(),
+        c = OpenLayers.Util.getResolutionFromScale(this.getScale(), a.units);
+      null == this.baseLayer || this.allOverlays || this.baseLayer.setVisibility(!1);
+      this.baseLayer = a;
+      if (!this.allOverlays || this.baseLayer.visibility)
+        this.baseLayer.setVisibility(!0), !1 === this.baseLayer.inRange && this.baseLayer.redraw();
+      null != b &&
+        ((a = this.getZoomForResolution(c || this.resolution, !0)), this.setCenter(b, a, !1, !0));
+      this.events.triggerEvent("changebaselayer", { layer: this.baseLayer });
+    }
+  },
+  addControl: function (a, b) {
+    this.controls.push(a);
+    this.addControlToMap(a, b);
+  },
+  addControls: function (a, b) {
+    for (var c = 1 === arguments.length ? [] : b, d = 0, e = a.length; d < e; d++)
+      this.addControl(a[d], c[d] ? c[d] : null);
+  },
+  addControlToMap: function (a, b) {
+    a.outsideViewport = null != a.div;
+    this.displayProjection &&
+      !a.displayProjection &&
+      (a.displayProjection = this.displayProjection);
+    a.setMap(this);
+    var c = a.draw(b);
+    c &&
+      !a.outsideViewport &&
+      ((c.style.zIndex = this.Z_INDEX_BASE.Control + this.controls.length),
+      this.viewPortDiv.appendChild(c));
+    a.autoActivate && a.activate();
+  },
+  getControl: function (a) {
+    for (var b = null, c = 0, d = this.controls.length; c < d; c++) {
+      var e = this.controls[c];
+      if (e.id == a) {
+        b = e;
+        break;
+      }
+    }
+    return b;
+  },
+  removeControl: function (a) {
+    a &&
+      a == this.getControl(a.id) &&
+      (a.div && a.div.parentNode == this.viewPortDiv && this.viewPortDiv.removeChild(a.div),
+      OpenLayers.Util.removeItem(this.controls, a));
+  },
+  addPopup: function (a, b) {
+    if (b) for (var c = this.popups.length - 1; 0 <= c; --c) this.removePopup(this.popups[c]);
+    a.map = this;
+    this.popups.push(a);
+    if ((c = a.draw()))
+      (c.style.zIndex = this.Z_INDEX_BASE.Popup + this.popups.length),
+        this.layerContainerDiv.appendChild(c);
+  },
+  removePopup: function (a) {
+    OpenLayers.Util.removeItem(this.popups, a);
+    if (a.div)
+      try {
+        this.layerContainerDiv.removeChild(a.div);
+      } catch (b) {}
+    a.map = null;
+  },
+  getSize: function () {
+    var a = null;
+    null != this.size && (a = this.size.clone());
+    return a;
+  },
+  updateSize: function () {
+    var a = this.getCurrentSize();
+    if (a && !isNaN(a.h) && !isNaN(a.w)) {
+      this.events.clearMouseCache();
+      var b = this.getSize();
+      null == b && (this.size = b = a);
+      if (!a.equals(b)) {
+        this.size = a;
+        a = 0;
+        for (b = this.layers.length; a < b; a++) this.layers[a].onMapResize();
+        a = this.getCachedCenter();
+        null != this.baseLayer &&
+          null != a &&
+          ((b = this.getZoom()), (this.zoom = null), this.setCenter(a, b));
+      }
+    }
+    this.events.triggerEvent("updatesize");
+  },
+  getCurrentSize: function () {
+    var a = new OpenLayers.Size(this.div.clientWidth, this.div.clientHeight);
+    if ((0 == a.w && 0 == a.h) || (isNaN(a.w) && isNaN(a.h)))
+      (a.w = this.div.offsetWidth), (a.h = this.div.offsetHeight);
+    if ((0 == a.w && 0 == a.h) || (isNaN(a.w) && isNaN(a.h)))
+      (a.w = parseInt(this.div.style.width)), (a.h = parseInt(this.div.style.height));
+    return a;
+  },
+  calculateBounds: function (a, b) {
+    var c = null;
+    null == a && (a = this.getCachedCenter());
+    null == b && (b = this.getResolution());
+    if (null != a && null != b)
+      var c = (this.size.w * b) / 2,
+        d = (this.size.h * b) / 2,
+        c = new OpenLayers.Bounds(a.lon - c, a.lat - d, a.lon + c, a.lat + d);
+    return c;
+  },
+  getCenter: function () {
+    var a = null,
+      b = this.getCachedCenter();
+    b && (a = b.clone());
+    return a;
+  },
+  getCachedCenter: function () {
+    !this.center &&
+      this.size &&
+      (this.center = this.getLonLatFromViewPortPx({ x: this.size.w / 2, y: this.size.h / 2 }));
+    return this.center;
+  },
+  getZoom: function () {
+    return this.zoom;
+  },
+  pan: function (a, b, c) {
+    c = OpenLayers.Util.applyDefaults(c, { animate: !0, dragging: !1 });
+    if (c.dragging) (0 == a && 0 == b) || this.moveByPx(a, b);
+    else {
+      var d = this.getViewPortPxFromLonLat(this.getCachedCenter());
+      a = d.add(a, b);
+      if (this.dragging || !a.equals(d))
+        (d = this.getLonLatFromViewPortPx(a)),
+          c.animate
+            ? this.panTo(d)
+            : (this.moveTo(d),
+              this.dragging && ((this.dragging = !1), this.events.triggerEvent("moveend")));
+    }
+  },
+  panTo: function (a) {
+    if (this.panTween && this.getExtent().scale(this.panRatio).containsLonLat(a)) {
+      var b = this.getCachedCenter();
+      if (!a.equals(b)) {
+        var b = this.getPixelFromLonLat(b),
+          c = this.getPixelFromLonLat(a),
+          d = 0,
+          e = 0;
+        this.panTween.start({ x: 0, y: 0 }, { x: c.x - b.x, y: c.y - b.y }, this.panDuration, {
+          callbacks: {
+            eachStep: OpenLayers.Function.bind(function (a) {
+              this.moveByPx(a.x - d, a.y - e);
+              d = Math.round(a.x);
+              e = Math.round(a.y);
+            }, this),
+            done: OpenLayers.Function.bind(function (b) {
+              this.moveTo(a);
+              this.dragging = !1;
+              this.events.triggerEvent("moveend");
+            }, this),
+          },
+        });
+      }
+    } else this.setCenter(a);
+  },
+  setCenter: function (a, b, c, d) {
+    this.panTween && this.panTween.stop();
+    this.zoomTween && this.zoomTween.stop();
+    this.moveTo(a, b, { dragging: c, forceZoomChange: d });
+  },
+  moveByPx: function (a, b) {
+    var c = this.size.w / 2,
+      d = this.size.h / 2,
+      e = c + a,
+      f = d + b,
+      g = this.baseLayer.wrapDateLine,
+      h = 0,
+      k = 0;
+    this.restrictedExtent && ((h = c), (k = d), (g = !1));
+    a = g || (e <= this.maxPx.x - h && e >= this.minPx.x + h) ? Math.round(a) : 0;
+    b = f <= this.maxPx.y - k && f >= this.minPx.y + k ? Math.round(b) : 0;
+    if (a || b) {
+      this.dragging || ((this.dragging = !0), this.events.triggerEvent("movestart"));
+      this.center = null;
+      a && ((this.layerContainerOriginPx.x -= a), (this.minPx.x -= a), (this.maxPx.x -= a));
+      b && ((this.layerContainerOriginPx.y -= b), (this.minPx.y -= b), (this.maxPx.y -= b));
+      this.applyTransform();
+      d = 0;
+      for (e = this.layers.length; d < e; ++d)
+        (c = this.layers[d]),
+          c.visibility &&
+            (c === this.baseLayer || c.inRange) &&
+            (c.moveByPx(a, b), c.events.triggerEvent("move"));
+      this.events.triggerEvent("move");
+    }
+  },
+  adjustZoom: function (a) {
+    if (this.baseLayer && this.baseLayer.wrapDateLine) {
+      var b = this.baseLayer.resolutions,
+        c = this.getMaxExtent().getWidth() / this.size.w;
+      if (this.getResolutionForZoom(a) > c)
+        if (this.fractionalZoom) a = this.getZoomForResolution(c);
+        else
+          for (var d = a | 0, e = b.length; d < e; ++d)
+            if (b[d] <= c) {
+              a = d;
+              break;
+            }
+    }
+    return a;
+  },
+  getMinZoom: function () {
+    return this.adjustZoom(0);
+  },
+  moveTo: function (a, b, c) {
+    null == a || a instanceof OpenLayers.LonLat || (a = new OpenLayers.LonLat(a));
+    c || (c = {});
+    null != b && ((b = parseFloat(b)), this.fractionalZoom || (b = Math.round(b)));
+    var d = b;
+    b = this.adjustZoom(b);
+    b !== d && (a = this.getCenter());
+    var d = c.dragging || this.dragging,
+      e = c.forceZoomChange;
+    this.getCachedCenter() ||
+      this.isValidLonLat(a) ||
+      ((a = this.maxExtent.getCenterLonLat()), (this.center = a.clone()));
+    if (null != this.restrictedExtent) {
+      null == a && (a = this.center);
+      null == b && (b = this.getZoom());
+      var f = this.getResolutionForZoom(b),
+        f = this.calculateBounds(a, f);
+      if (!this.restrictedExtent.containsBounds(f)) {
+        var g = this.restrictedExtent.getCenterLonLat();
+        f.getWidth() > this.restrictedExtent.getWidth()
+          ? (a = new OpenLayers.LonLat(g.lon, a.lat))
+          : f.left < this.restrictedExtent.left
+          ? (a = a.add(this.restrictedExtent.left - f.left, 0))
+          : f.right > this.restrictedExtent.right &&
+            (a = a.add(this.restrictedExtent.right - f.right, 0));
+        f.getHeight() > this.restrictedExtent.getHeight()
+          ? (a = new OpenLayers.LonLat(a.lon, g.lat))
+          : f.bottom < this.restrictedExtent.bottom
+          ? (a = a.add(0, this.restrictedExtent.bottom - f.bottom))
+          : f.top > this.restrictedExtent.top && (a = a.add(0, this.restrictedExtent.top - f.top));
+      }
+    }
+    e = e || (this.isValidZoomLevel(b) && b != this.getZoom());
+    f = this.isValidLonLat(a) && !a.equals(this.center);
+    if (e || f || d) {
+      d || this.events.triggerEvent("movestart", { zoomChanged: e });
+      f && (!e && this.center && this.centerLayerContainer(a), (this.center = a.clone()));
+      a = e ? this.getResolutionForZoom(b) : this.getResolution();
+      if (e || null == this.layerContainerOrigin) {
+        this.layerContainerOrigin = this.getCachedCenter();
+        this.layerContainerOriginPx.x = 0;
+        this.layerContainerOriginPx.y = 0;
+        this.applyTransform();
+        var f = this.getMaxExtent({ restricted: !0 }),
+          h = f.getCenterLonLat(),
+          g = this.center.lon - h.lon,
+          h = h.lat - this.center.lat,
+          k = Math.round(f.getWidth() / a),
+          l = Math.round(f.getHeight() / a);
+        this.minPx = { x: (this.size.w - k) / 2 - g / a, y: (this.size.h - l) / 2 - h / a };
+        this.maxPx = {
+          x: this.minPx.x + Math.round(f.getWidth() / a),
+          y: this.minPx.y + Math.round(f.getHeight() / a),
+        };
+      }
+      e && ((this.zoom = b), (this.resolution = a));
+      a = this.getExtent();
+      this.baseLayer.visibility &&
+        (this.baseLayer.moveTo(a, e, c.dragging),
+        c.dragging || this.baseLayer.events.triggerEvent("moveend", { zoomChanged: e }));
+      a = this.baseLayer.getExtent();
+      for (b = this.layers.length - 1; 0 <= b; --b)
+        (f = this.layers[b]),
+          f === this.baseLayer ||
+            f.isBaseLayer ||
+            ((g = f.calculateInRange()),
+            f.inRange != g &&
+              ((f.inRange = g) || f.display(!1),
+              this.events.triggerEvent("changelayer", { layer: f, property: "visibility" })),
+            g &&
+              f.visibility &&
+              (f.moveTo(a, e, c.dragging),
+              c.dragging || f.events.triggerEvent("moveend", { zoomChanged: e })));
+      this.events.triggerEvent("move");
+      d || this.events.triggerEvent("moveend");
+      if (e) {
+        b = 0;
+        for (c = this.popups.length; b < c; b++) this.popups[b].updatePosition();
+        this.events.triggerEvent("zoomend");
+      }
+    }
+  },
+  centerLayerContainer: function (a) {
+    var b = this.getViewPortPxFromLonLat(this.layerContainerOrigin),
+      c = this.getViewPortPxFromLonLat(a);
+    if (null != b && null != c) {
+      var d = this.layerContainerOriginPx.x;
+      a = this.layerContainerOriginPx.y;
+      var e = Math.round(b.x - c.x),
+        b = Math.round(b.y - c.y);
+      this.applyTransform((this.layerContainerOriginPx.x = e), (this.layerContainerOriginPx.y = b));
+      d -= e;
+      a -= b;
+      this.minPx.x -= d;
+      this.maxPx.x -= d;
+      this.minPx.y -= a;
+      this.maxPx.y -= a;
+    }
+  },
+  isValidZoomLevel: function (a) {
+    return null != a && 0 <= a && a < this.getNumZoomLevels();
+  },
+  isValidLonLat: function (a) {
+    var b = !1;
+    null != a &&
+      ((b = this.getMaxExtent()),
+      (b = b.containsLonLat(a, { worldBounds: this.baseLayer.wrapDateLine && b })));
+    return b;
+  },
+  getProjection: function () {
+    var a = this.getProjectionObject();
+    return a ? a.getCode() : null;
+  },
+  getProjectionObject: function () {
+    var a = null;
+    null != this.baseLayer && (a = this.baseLayer.projection);
+    return a;
+  },
+  getMaxResolution: function () {
+    var a = null;
+    null != this.baseLayer && (a = this.baseLayer.maxResolution);
+    return a;
+  },
+  getMaxExtent: function (a) {
+    var b = null;
+    a && a.restricted && this.restrictedExtent
+      ? (b = this.restrictedExtent)
+      : null != this.baseLayer && (b = this.baseLayer.maxExtent);
+    return b;
+  },
+  getNumZoomLevels: function () {
+    var a = null;
+    null != this.baseLayer && (a = this.baseLayer.numZoomLevels);
+    return a;
+  },
+  getExtent: function () {
+    var a = null;
+    null != this.baseLayer && (a = this.baseLayer.getExtent());
+    return a;
+  },
+  getResolution: function () {
+    var a = null;
+    null != this.baseLayer
+      ? (a = this.baseLayer.getResolution())
+      : !0 === this.allOverlays && 0 < this.layers.length && (a = this.layers[0].getResolution());
+    return a;
+  },
+  getUnits: function () {
+    var a = null;
+    null != this.baseLayer && (a = this.baseLayer.units);
+    return a;
+  },
+  getScale: function () {
+    var a = null;
+    null != this.baseLayer &&
+      ((a = this.getResolution()),
+      (a = OpenLayers.Util.getScaleFromResolution(a, this.baseLayer.units)));
+    return a;
+  },
+  getZoomForExtent: function (a, b) {
+    var c = null;
+    null != this.baseLayer && (c = this.baseLayer.getZoomForExtent(a, b));
+    return c;
+  },
+  getResolutionForZoom: function (a) {
+    var b = null;
+    this.baseLayer && (b = this.baseLayer.getResolutionForZoom(a));
+    return b;
+  },
+  getZoomForResolution: function (a, b) {
+    var c = null;
+    null != this.baseLayer && (c = this.baseLayer.getZoomForResolution(a, b));
+    return c;
+  },
+  zoomTo: function (a, b) {
+    var c = this;
+    if (c.isValidZoomLevel(a))
+      if ((c.baseLayer.wrapDateLine && (a = c.adjustZoom(a)), c.zoomTween)) {
+        var d = c.getResolution(),
+          e = c.getResolutionForZoom(a),
+          f = { scale: 1 },
+          d = { scale: d / e };
+        c.zoomTween.playing && c.zoomTween.duration < 3 * c.zoomDuration
+          ? (c.zoomTween.finish = { scale: c.zoomTween.finish.scale * d.scale })
+          : (b || ((e = c.getSize()), (b = { x: e.w / 2, y: e.h / 2 })),
+            c.zoomTween.start(f, d, c.zoomDuration, {
+              minFrameRate: 50,
+              callbacks: {
+                eachStep: function (a) {
+                  var d = c.layerContainerOriginPx;
+                  a = a.scale;
+                  c.applyTransform(
+                    d.x + (((a - 1) * (d.x - b.x)) | 0),
+                    d.y + (((a - 1) * (d.y - b.y)) | 0),
+                    a
+                  );
+                },
+                done: function (a) {
+                  c.applyTransform();
+                  a = c.getResolution() / a.scale;
+                  var d = c.getZoomForResolution(a, !0);
+                  c.moveTo(c.getZoomTargetCenter(b, a), d, !0);
+                },
+              },
+            }));
+      } else
+        (f = b ? c.getZoomTargetCenter(b, c.getResolutionForZoom(a)) : null), c.setCenter(f, a);
+  },
+  zoomIn: function () {
+    this.zoomTo(this.getZoom() + 1);
+  },
+  zoomOut: function () {
+    this.zoomTo(this.getZoom() - 1);
+  },
+  zoomToExtent: function (a, b) {
+    a instanceof OpenLayers.Bounds || (a = new OpenLayers.Bounds(a));
+    var c = a.getCenterLonLat();
+    if (this.baseLayer.wrapDateLine) {
+      c = this.getMaxExtent();
+      for (a = a.clone(); a.right < a.left; ) a.right += c.getWidth();
+      c = a.getCenterLonLat().wrapDateLine(c);
+    }
+    this.setCenter(c, this.getZoomForExtent(a, b));
+  },
+  zoomToMaxExtent: function (a) {
+    a = this.getMaxExtent({ restricted: a ? a.restricted : !0 });
+    this.zoomToExtent(a);
+  },
+  zoomToScale: function (a, b) {
+    var c = OpenLayers.Util.getResolutionFromScale(a, this.baseLayer.units),
+      d = (this.size.w * c) / 2,
+      c = (this.size.h * c) / 2,
+      e = this.getCachedCenter(),
+      d = new OpenLayers.Bounds(e.lon - d, e.lat - c, e.lon + d, e.lat + c);
+    this.zoomToExtent(d, b);
+  },
+  getLonLatFromViewPortPx: function (a) {
+    var b = null;
+    null != this.baseLayer && (b = this.baseLayer.getLonLatFromViewPortPx(a));
+    return b;
+  },
+  getViewPortPxFromLonLat: function (a) {
+    var b = null;
+    null != this.baseLayer && (b = this.baseLayer.getViewPortPxFromLonLat(a));
+    return b;
+  },
+  getZoomTargetCenter: function (a, b) {
+    var c = null,
+      d = this.getSize(),
+      e = d.w / 2 - a.x,
+      d = a.y - d.h / 2,
+      f = this.getLonLatFromPixel(a);
+    f && (c = new OpenLayers.LonLat(f.lon + e * b, f.lat + d * b));
+    return c;
+  },
+  getLonLatFromPixel: function (a) {
+    return this.getLonLatFromViewPortPx(a);
+  },
+  getPixelFromLonLat: function (a) {
+    a = this.getViewPortPxFromLonLat(a);
+    a.x = Math.round(a.x);
+    a.y = Math.round(a.y);
+    return a;
+  },
+  getGeodesicPixelSize: function (a) {
+    var b = a ? this.getLonLatFromPixel(a) : this.getCachedCenter() || new OpenLayers.LonLat(0, 0),
+      c = this.getResolution();
+    a = b.add(-c / 2, 0);
+    var d = b.add(c / 2, 0),
+      e = b.add(0, -c / 2),
+      b = b.add(0, c / 2),
+      c = new OpenLayers.Projection("EPSG:4326"),
+      f = this.getProjectionObject() || c;
+    f.equals(c) || (a.transform(f, c), d.transform(f, c), e.transform(f, c), b.transform(f, c));
+    return new OpenLayers.Size(
+      OpenLayers.Util.distVincenty(a, d),
+      OpenLayers.Util.distVincenty(e, b)
+    );
+  },
+  getViewPortPxFromLayerPx: function (a) {
+    var b = null;
+    null != a && (b = a.add(this.layerContainerOriginPx.x, this.layerContainerOriginPx.y));
+    return b;
+  },
+  getLayerPxFromViewPortPx: function (a) {
+    var b = null;
+    null != a &&
+      ((b = a.add(-this.layerContainerOriginPx.x, -this.layerContainerOriginPx.y)),
+      isNaN(b.x) || isNaN(b.y)) &&
+      (b = null);
+    return b;
+  },
+  getLonLatFromLayerPx: function (a) {
+    a = this.getViewPortPxFromLayerPx(a);
+    return this.getLonLatFromViewPortPx(a);
+  },
+  getLayerPxFromLonLat: function (a) {
+    a = this.getPixelFromLonLat(a);
+    return this.getLayerPxFromViewPortPx(a);
+  },
+  applyTransform: function (a, b, c) {
+    c = c || 1;
+    var d = this.layerContainerOriginPx,
+      e = 1 !== c;
+    a = a || d.x;
+    b = b || d.y;
+    var f = this.layerContainerDiv.style,
+      g = this.applyTransform.transform,
+      h = this.applyTransform.template;
+    if (
+      void 0 === g &&
+      ((g = OpenLayers.Util.vendorPrefix.style("transform")), (this.applyTransform.transform = g))
+    ) {
+      var k = OpenLayers.Element.getStyle(
+        this.viewPortDiv,
+        OpenLayers.Util.vendorPrefix.css("transform")
+      );
+      (k && "none" === k) ||
+        ((h = ["translate3d(", ",0) ", "scale3d(", ",1)"]), (f[g] = [h[0], "0,0", h[1]].join("")));
+      (h && ~f[g].indexOf(h[0])) || (h = ["translate(", ") ", "scale(", ")"]);
+      this.applyTransform.template = h;
+    }
+    null === g || ("translate3d(" !== h[0] && !0 !== e)
+      ? ((f.left = a + "px"), (f.top = b + "px"), null !== g && (f[g] = ""))
+      : (!0 === e &&
+          "translate(" === h[0] &&
+          ((a -= d.x), (b -= d.y), (f.left = d.x + "px"), (f.top = d.y + "px")),
+        (f[g] = [h[0], a, "px,", b, "px", h[1], h[2], c, ",", c, h[3]].join("")));
+  },
+  CLASS_NAME: "OpenLayers.Map",
+});
+OpenLayers.Map.TILE_WIDTH = 256;
+OpenLayers.Map.TILE_HEIGHT = 256;
+OpenLayers.Handler = OpenLayers.Class({
+  id: null,
+  control: null,
+  map: null,
+  keyMask: null,
+  active: !1,
+  evt: null,
+  touch: !1,
+  initialize: function (a, b, c) {
+    OpenLayers.Util.extend(this, c);
+    this.control = a;
+    this.callbacks = b;
+    (a = this.map || a.map) && this.setMap(a);
+    this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
+  },
+  setMap: function (a) {
+    this.map = a;
+  },
+  checkModifiers: function (a) {
+    return null == this.keyMask
+      ? !0
+      : ((a.shiftKey ? OpenLayers.Handler.MOD_SHIFT : 0) |
+          (a.ctrlKey ? OpenLayers.Handler.MOD_CTRL : 0) |
+          (a.altKey ? OpenLayers.Handler.MOD_ALT : 0) |
+          (a.metaKey ? OpenLayers.Handler.MOD_META : 0)) ==
+          this.keyMask;
+  },
+  activate: function () {
+    if (this.active) return !1;
+    for (var a = OpenLayers.Events.prototype.BROWSER_EVENTS, b = 0, c = a.length; b < c; b++)
+      this[a[b]] && this.register(a[b], this[a[b]]);
+    return (this.active = !0);
+  },
+  deactivate: function () {
+    if (!this.active) return !1;
+    for (var a = OpenLayers.Events.prototype.BROWSER_EVENTS, b = 0, c = a.length; b < c; b++)
+      this[a[b]] && this.unregister(a[b], this[a[b]]);
+    this.active = this.touch = !1;
+    return !0;
+  },
+  startTouch: function () {
+    if (!this.touch) {
+      this.touch = !0;
+      for (
+        var a = "mousedown mouseup mousemove click dblclick mouseout".split(" "),
+          b = 0,
+          c = a.length;
+        b < c;
+        b++
+      )
+        this[a[b]] && this.unregister(a[b], this[a[b]]);
+    }
+  },
+  callback: function (a, b) {
+    a && this.callbacks[a] && this.callbacks[a].apply(this.control, b);
+  },
+  register: function (a, b) {
+    this.map.events.registerPriority(a, this, b);
+    this.map.events.registerPriority(a, this, this.setEvent);
+  },
+  unregister: function (a, b) {
+    this.map.events.unregister(a, this, b);
+    this.map.events.unregister(a, this, this.setEvent);
+  },
+  setEvent: function (a) {
+    this.evt = a;
+    return !0;
+  },
+  destroy: function () {
+    this.deactivate();
+    this.control = this.map = null;
+  },
+  CLASS_NAME: "OpenLayers.Handler",
+});
+OpenLayers.Handler.MOD_NONE = 0;
+OpenLayers.Handler.MOD_SHIFT = 1;
+OpenLayers.Handler.MOD_CTRL = 2;
+OpenLayers.Handler.MOD_ALT = 4;
+OpenLayers.Handler.MOD_META = 8;
+OpenLayers.Handler.Click = OpenLayers.Class(OpenLayers.Handler, {
+  delay: 300,
+  single: !0,
+  double: !1,
+  pixelTolerance: 0,
+  dblclickTolerance: 13,
+  stopSingle: !1,
+  stopDouble: !1,
+  timerId: null,
+  down: null,
+  last: null,
+  first: null,
+  rightclickTimerId: null,
+  touchstart: function (a) {
+    this.startTouch();
+    this.down = this.getEventInfo(a);
+    this.last = this.getEventInfo(a);
+    return !0;
+  },
+  touchmove: function (a) {
+    this.last = this.getEventInfo(a);
+    return !0;
+  },
+  touchend: function (a) {
+    this.down &&
+      ((a.xy = this.last.xy),
+      (a.lastTouches = this.last.touches),
+      this.handleSingle(a),
+      (this.down = null));
+    return !0;
+  },
+  mousedown: function (a) {
+    this.down = this.getEventInfo(a);
+    this.last = this.getEventInfo(a);
+    return !0;
+  },
+  mouseup: function (a) {
+    var b = !0;
+    this.checkModifiers(a) &&
+      this.control.handleRightClicks &&
+      OpenLayers.Event.isRightClick(a) &&
+      (b = this.rightclick(a));
+    return b;
+  },
+  rightclick: function (a) {
+    if (this.passesTolerance(a)) {
+      if (null != this.rightclickTimerId)
+        return this.clearTimer(), this.callback("dblrightclick", [a]), !this.stopDouble;
+      a = this["double"] ? OpenLayers.Util.extend({}, a) : this.callback("rightclick", [a]);
+      a = OpenLayers.Function.bind(this.delayedRightCall, this, a);
+      this.rightclickTimerId = window.setTimeout(a, this.delay);
+    }
+    return !this.stopSingle;
+  },
+  delayedRightCall: function (a) {
+    this.rightclickTimerId = null;
+    a && this.callback("rightclick", [a]);
+  },
+  click: function (a) {
+    this.last || (this.last = this.getEventInfo(a));
+    this.handleSingle(a);
+    return !this.stopSingle;
+  },
+  dblclick: function (a) {
+    this.handleDouble(a);
+    return !this.stopDouble;
+  },
+  handleDouble: function (a) {
+    this.passesDblclickTolerance(a) &&
+      (this["double"] && this.callback("dblclick", [a]), this.clearTimer());
+  },
+  handleSingle: function (a) {
+    this.passesTolerance(a) &&
+      (null != this.timerId
+        ? (this.last.touches &&
+            1 === this.last.touches.length &&
+            (this["double"] && OpenLayers.Event.preventDefault(a), this.handleDouble(a)),
+          (this.last.touches && 2 === this.last.touches.length) || this.clearTimer())
+        : ((this.first = this.getEventInfo(a)),
+          (a = this.single ? OpenLayers.Util.extend({}, a) : null),
+          this.queuePotentialClick(a)));
+  },
+  queuePotentialClick: function (a) {
+    this.timerId = window.setTimeout(
+      OpenLayers.Function.bind(this.delayedCall, this, a),
+      this.delay
+    );
+  },
+  passesTolerance: function (a) {
+    var b = !0;
+    if (
+      null != this.pixelTolerance &&
+      this.down &&
+      this.down.xy &&
+      (b = this.pixelTolerance >= this.down.xy.distanceTo(a.xy)) &&
+      this.touch &&
+      this.down.touches.length === this.last.touches.length
+    ) {
+      a = 0;
+      for (var c = this.down.touches.length; a < c; ++a)
+        if (
+          this.getTouchDistance(this.down.touches[a], this.last.touches[a]) > this.pixelTolerance
+        ) {
+          b = !1;
+          break;
+        }
+    }
+    return b;
+  },
+  getTouchDistance: function (a, b) {
+    return Math.sqrt(Math.pow(a.clientX - b.clientX, 2) + Math.pow(a.clientY - b.clientY, 2));
+  },
+  passesDblclickTolerance: function (a) {
+    a = !0;
+    this.down &&
+      this.first &&
+      (a = this.down.xy.distanceTo(this.first.xy) <= this.dblclickTolerance);
+    return a;
+  },
+  clearTimer: function () {
+    null != this.timerId && (window.clearTimeout(this.timerId), (this.timerId = null));
+    null != this.rightclickTimerId &&
+      (window.clearTimeout(this.rightclickTimerId), (this.rightclickTimerId = null));
+  },
+  delayedCall: function (a) {
+    this.timerId = null;
+    a && this.callback("click", [a]);
+  },
+  getEventInfo: function (a) {
+    var b;
+    if (a.touches) {
+      var c = a.touches.length;
+      b = Array(c);
+      for (var d, e = 0; e < c; e++)
+        (d = a.touches[e]), (b[e] = { clientX: d.olClientX, clientY: d.olClientY });
+    }
+    return { xy: a.xy, touches: b };
+  },
+  deactivate: function () {
+    var a = !1;
+    OpenLayers.Handler.prototype.deactivate.apply(this, arguments) &&
+      (this.clearTimer(), (this.last = this.first = this.down = null), (a = !0));
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Handler.Click",
+});
+OpenLayers.Handler.Drag = OpenLayers.Class(OpenLayers.Handler, {
+  started: !1,
+  stopDown: !0,
+  dragging: !1,
+  last: null,
+  start: null,
+  lastMoveEvt: null,
+  oldOnselectstart: null,
+  interval: 0,
+  timeoutId: null,
+  documentDrag: !1,
+  documentEvents: null,
+  initialize: function (a, b, c) {
+    OpenLayers.Handler.prototype.initialize.apply(this, arguments);
+    if (!0 === this.documentDrag) {
+      var d = this;
+      this._docMove = function (a) {
+        d.mousemove({ xy: { x: a.clientX, y: a.clientY }, element: document });
+      };
+      this._docUp = function (a) {
+        d.mouseup({ xy: { x: a.clientX, y: a.clientY } });
+      };
+    }
+  },
+  dragstart: function (a) {
+    var b = !0;
+    this.dragging = !1;
+    this.checkModifiers(a) && (OpenLayers.Event.isLeftClick(a) || OpenLayers.Event.isSingleTouch(a))
+      ? ((this.started = !0),
+        (this.last = this.start = a.xy),
+        OpenLayers.Element.addClass(this.map.viewPortDiv, "olDragDown"),
+        this.down(a),
+        this.callback("down", [a.xy]),
+        OpenLayers.Event.preventDefault(a),
+        this.oldOnselectstart ||
+          (this.oldOnselectstart = document.onselectstart
+            ? document.onselectstart
+            : OpenLayers.Function.True),
+        (document.onselectstart = OpenLayers.Function.False),
+        (b = !this.stopDown))
+      : ((this.started = !1), (this.last = this.start = null));
+    return b;
+  },
+  dragmove: function (a) {
+    this.lastMoveEvt = a;
+    !this.started ||
+      this.timeoutId ||
+      (a.xy.x == this.last.x && a.xy.y == this.last.y) ||
+      (!0 === this.documentDrag &&
+        this.documentEvents &&
+        (a.element === document
+          ? (this.adjustXY(a), this.setEvent(a))
+          : this.removeDocumentEvents()),
+      0 < this.interval &&
+        (this.timeoutId = setTimeout(
+          OpenLayers.Function.bind(this.removeTimeout, this),
+          this.interval
+        )),
+      (this.dragging = !0),
+      this.move(a),
+      this.callback("move", [a.xy]),
+      this.oldOnselectstart ||
+        ((this.oldOnselectstart = document.onselectstart),
+        (document.onselectstart = OpenLayers.Function.False)),
+      (this.last = a.xy));
+    return !0;
+  },
+  dragend: function (a) {
+    if (this.started) {
+      !0 === this.documentDrag &&
+        this.documentEvents &&
+        (this.adjustXY(a), this.removeDocumentEvents());
+      var b = this.start != this.last;
+      this.dragging = this.started = !1;
+      OpenLayers.Element.removeClass(this.map.viewPortDiv, "olDragDown");
+      this.up(a);
+      this.callback("up", [a.xy]);
+      b && this.callback("done", [a.xy]);
+      document.onselectstart = this.oldOnselectstart;
+    }
+    return !0;
+  },
+  down: function (a) {},
+  move: function (a) {},
+  up: function (a) {},
+  out: function (a) {},
+  mousedown: function (a) {
+    return this.dragstart(a);
+  },
+  touchstart: function (a) {
+    this.startTouch();
+    return this.dragstart(a);
+  },
+  mousemove: function (a) {
+    return this.dragmove(a);
+  },
+  touchmove: function (a) {
+    return this.dragmove(a);
+  },
+  removeTimeout: function () {
+    this.timeoutId = null;
+    this.dragging && this.mousemove(this.lastMoveEvt);
+  },
+  mouseup: function (a) {
+    return this.dragend(a);
+  },
+  touchend: function (a) {
+    a.xy = this.last;
+    return this.dragend(a);
+  },
+  mouseout: function (a) {
+    if (this.started && OpenLayers.Util.mouseLeft(a, this.map.viewPortDiv))
+      if (!0 === this.documentDrag) this.addDocumentEvents();
+      else {
+        var b = this.start != this.last;
+        this.dragging = this.started = !1;
+        OpenLayers.Element.removeClass(this.map.viewPortDiv, "olDragDown");
+        this.out(a);
+        this.callback("out", []);
+        b && this.callback("done", [a.xy]);
+        document.onselectstart && (document.onselectstart = this.oldOnselectstart);
+      }
+    return !0;
+  },
+  click: function (a) {
+    return this.start == this.last;
+  },
+  activate: function () {
+    var a = !1;
+    OpenLayers.Handler.prototype.activate.apply(this, arguments) &&
+      ((this.dragging = !1), (a = !0));
+    return a;
+  },
+  deactivate: function () {
+    var a = !1;
+    OpenLayers.Handler.prototype.deactivate.apply(this, arguments) &&
+      ((this.dragging = this.started = !1),
+      (this.last = this.start = null),
+      (a = !0),
+      OpenLayers.Element.removeClass(this.map.viewPortDiv, "olDragDown"));
+    return a;
+  },
+  adjustXY: function (a) {
+    var b = OpenLayers.Util.pagePosition(this.map.viewPortDiv);
+    a.xy.x -= b[0];
+    a.xy.y -= b[1];
+  },
+  addDocumentEvents: function () {
+    OpenLayers.Element.addClass(document.body, "olDragDown");
+    this.documentEvents = !0;
+    OpenLayers.Event.observe(document, "mousemove", this._docMove);
+    OpenLayers.Event.observe(document, "mouseup", this._docUp);
+  },
+  removeDocumentEvents: function () {
+    OpenLayers.Element.removeClass(document.body, "olDragDown");
+    this.documentEvents = !1;
+    OpenLayers.Event.stopObserving(document, "mousemove", this._docMove);
+    OpenLayers.Event.stopObserving(document, "mouseup", this._docUp);
+  },
+  CLASS_NAME: "OpenLayers.Handler.Drag",
+});
+OpenLayers.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control, {
+  element: null,
+  ovmap: null,
+  size: { w: 180, h: 90 },
+  layers: null,
+  minRectSize: 15,
+  minRectDisplayClass: "RectReplacement",
+  minRatio: 8,
+  maxRatio: 32,
+  mapOptions: null,
+  autoPan: !1,
+  handlers: null,
+  resolutionFactor: 1,
+  maximized: !1,
+  maximizeTitle: "",
+  minimizeTitle: "",
+  initialize: function (a) {
+    this.layers = [];
+    this.handlers = {};
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+  },
+  destroy: function () {
+    this.mapDiv &&
+      (this.handlers.click && this.handlers.click.destroy(),
+      this.handlers.drag && this.handlers.drag.destroy(),
+      this.ovmap && this.ovmap.viewPortDiv.removeChild(this.extentRectangle),
+      (this.extentRectangle = null),
+      this.rectEvents && (this.rectEvents.destroy(), (this.rectEvents = null)),
+      this.ovmap && (this.ovmap.destroy(), (this.ovmap = null)),
+      this.element.removeChild(this.mapDiv),
+      (this.mapDiv = null),
+      this.div.removeChild(this.element),
+      (this.element = null),
+      this.maximizeDiv && (this.div.removeChild(this.maximizeDiv), (this.maximizeDiv = null)),
+      this.minimizeDiv && (this.div.removeChild(this.minimizeDiv), (this.minimizeDiv = null)),
+      this.map.events.un({
+        buttonclick: this.onButtonClick,
+        moveend: this.update,
+        changebaselayer: this.baseLayerDraw,
+        scope: this,
+      }),
+      OpenLayers.Control.prototype.destroy.apply(this, arguments));
+  },
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    if (0 === this.layers.length)
+      if (this.map.baseLayer) this.layers = [this.map.baseLayer.clone()];
+      else return this.map.events.register("changebaselayer", this, this.baseLayerDraw), this.div;
+    this.element = document.createElement("div");
+    this.element.className = this.displayClass + "Element";
+    this.element.style.display = "none";
+    this.mapDiv = document.createElement("div");
+    this.mapDiv.style.width = this.size.w + "px";
+    this.mapDiv.style.height = this.size.h + "px";
+    this.mapDiv.style.position = "relative";
+    this.mapDiv.style.overflow = "hidden";
+    this.mapDiv.id = OpenLayers.Util.createUniqueID("overviewMap");
+    this.extentRectangle = document.createElement("div");
+    this.extentRectangle.style.position = "absolute";
+    this.extentRectangle.style.zIndex = 1e3;
+    this.extentRectangle.className = this.displayClass + "ExtentRectangle";
+    this.element.appendChild(this.mapDiv);
+    this.div.appendChild(this.element);
+    if (this.outsideViewport) this.element.style.display = "";
+    else {
+      this.div.className += " " + this.displayClass + "Container";
+      var a = OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");
+      this.maximizeDiv = OpenLayers.Util.createAlphaImageDiv(
+        this.displayClass + "MaximizeButton",
+        null,
+        null,
+        a,
+        "absolute"
+      );
+      this.maximizeDiv.style.display = "none";
+      this.maximizeDiv.className = this.displayClass + "MaximizeButton olButton";
+      this.maximizeTitle && (this.maximizeDiv.title = this.maximizeTitle);
+      this.div.appendChild(this.maximizeDiv);
+      a = OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");
+      this.minimizeDiv = OpenLayers.Util.createAlphaImageDiv(
+        "OpenLayers_Control_minimizeDiv",
+        null,
+        null,
+        a,
+        "absolute"
+      );
+      this.minimizeDiv.style.display = "none";
+      this.minimizeDiv.className = this.displayClass + "MinimizeButton olButton";
+      this.minimizeTitle && (this.minimizeDiv.title = this.minimizeTitle);
+      this.div.appendChild(this.minimizeDiv);
+      this.minimizeControl();
+    }
+    this.map.getExtent() && this.update();
+    this.map.events.on({ buttonclick: this.onButtonClick, moveend: this.update, scope: this });
+    this.maximized && this.maximizeControl();
+    return this.div;
+  },
+  baseLayerDraw: function () {
+    this.draw();
+    this.map.events.unregister("changebaselayer", this, this.baseLayerDraw);
+  },
+  rectDrag: function (a) {
+    var b = this.handlers.drag.last.x - a.x,
+      c = this.handlers.drag.last.y - a.y;
+    if (0 != b || 0 != c) {
+      var d = this.rectPxBounds.top,
+        e = this.rectPxBounds.left;
+      a = Math.abs(this.rectPxBounds.getHeight());
+      var f = this.rectPxBounds.getWidth(),
+        c = Math.max(0, d - c),
+        c = Math.min(c, this.ovmap.size.h - this.hComp - a),
+        b = Math.max(0, e - b),
+        b = Math.min(b, this.ovmap.size.w - this.wComp - f);
+      this.setRectPxBounds(new OpenLayers.Bounds(b, c + a, b + f, c));
+    }
+  },
+  mapDivClick: function (a) {
+    var b = this.rectPxBounds.getCenterPixel(),
+      c = a.xy.x - b.x,
+      d = a.xy.y - b.y,
+      e = this.rectPxBounds.top,
+      f = this.rectPxBounds.left;
+    a = Math.abs(this.rectPxBounds.getHeight());
+    b = this.rectPxBounds.getWidth();
+    d = Math.max(0, e + d);
+    d = Math.min(d, this.ovmap.size.h - a);
+    c = Math.max(0, f + c);
+    c = Math.min(c, this.ovmap.size.w - b);
+    this.setRectPxBounds(new OpenLayers.Bounds(c, d + a, c + b, d));
+    this.updateMapToRect();
+  },
+  onButtonClick: function (a) {
+    a.buttonElement === this.minimizeDiv
+      ? this.minimizeControl()
+      : a.buttonElement === this.maximizeDiv && this.maximizeControl();
+  },
+  maximizeControl: function (a) {
+    this.element.style.display = "";
+    this.showToggle(!1);
+    null != a && OpenLayers.Event.stop(a);
+  },
+  minimizeControl: function (a) {
+    this.element.style.display = "none";
+    this.showToggle(!0);
+    null != a && OpenLayers.Event.stop(a);
+  },
+  showToggle: function (a) {
+    this.maximizeDiv && (this.maximizeDiv.style.display = a ? "" : "none");
+    this.minimizeDiv && (this.minimizeDiv.style.display = a ? "none" : "");
+  },
+  update: function () {
+    null == this.ovmap && this.createMap();
+    (!this.autoPan && this.isSuitableOverview()) || this.updateOverview();
+    this.updateRectToMap();
+  },
+  isSuitableOverview: function () {
+    var a = this.map.getExtent(),
+      b = this.map.getMaxExtent(),
+      a = new OpenLayers.Bounds(
+        Math.max(a.left, b.left),
+        Math.max(a.bottom, b.bottom),
+        Math.min(a.right, b.right),
+        Math.min(a.top, b.top)
+      );
+    this.ovmap.getProjection() != this.map.getProjection() &&
+      (a = a.transform(this.map.getProjectionObject(), this.ovmap.getProjectionObject()));
+    b = this.ovmap.getResolution() / this.map.getResolution();
+    return b > this.minRatio && b <= this.maxRatio && this.ovmap.getExtent().containsBounds(a);
+  },
+  updateOverview: function () {
+    var a = this.map.getResolution(),
+      b = this.ovmap.getResolution(),
+      c = b / a;
+    c > this.maxRatio ? (b = this.minRatio * a) : c <= this.minRatio && (b = this.maxRatio * a);
+    this.ovmap.getProjection() != this.map.getProjection()
+      ? ((a = this.map.center.clone()),
+        a.transform(this.map.getProjectionObject(), this.ovmap.getProjectionObject()))
+      : (a = this.map.center);
+    this.ovmap.setCenter(a, this.ovmap.getZoomForResolution(b * this.resolutionFactor));
+    this.updateRectToMap();
+  },
+  createMap: function () {
+    var a = OpenLayers.Util.extend(
+      { controls: [], maxResolution: "auto", fallThrough: !1 },
+      this.mapOptions
+    );
+    this.ovmap = new OpenLayers.Map(this.mapDiv, a);
+    this.ovmap.viewPortDiv.appendChild(this.extentRectangle);
+    OpenLayers.Event.stopObserving(window, "unload", this.ovmap.unloadDestroy);
+    this.ovmap.addLayers(this.layers);
+    this.ovmap.zoomToMaxExtent();
+    this.wComp = (this.wComp =
+      parseInt(OpenLayers.Element.getStyle(this.extentRectangle, "border-left-width")) +
+      parseInt(OpenLayers.Element.getStyle(this.extentRectangle, "border-right-width")))
+      ? this.wComp
+      : 2;
+    this.hComp = (this.hComp =
+      parseInt(OpenLayers.Element.getStyle(this.extentRectangle, "border-top-width")) +
+      parseInt(OpenLayers.Element.getStyle(this.extentRectangle, "border-bottom-width")))
+      ? this.hComp
+      : 2;
+    this.handlers.drag = new OpenLayers.Handler.Drag(
+      this,
+      { move: this.rectDrag, done: this.updateMapToRect },
+      { map: this.ovmap }
+    );
+    this.handlers.click = new OpenLayers.Handler.Click(
+      this,
+      { click: this.mapDivClick },
+      { single: !0, double: !1, stopSingle: !0, stopDouble: !0, pixelTolerance: 1, map: this.ovmap }
+    );
+    this.handlers.click.activate();
+    this.rectEvents = new OpenLayers.Events(this, this.extentRectangle, null, !0);
+    this.rectEvents.register("mouseover", this, function (a) {
+      this.handlers.drag.active || this.map.dragging || this.handlers.drag.activate();
+    });
+    this.rectEvents.register("mouseout", this, function (a) {
+      this.handlers.drag.dragging || this.handlers.drag.deactivate();
+    });
+    if (this.ovmap.getProjection() != this.map.getProjection()) {
+      var a =
+          this.map.getProjectionObject().getUnits() || this.map.units || this.map.baseLayer.units,
+        b =
+          this.ovmap.getProjectionObject().getUnits() ||
+          this.ovmap.units ||
+          this.ovmap.baseLayer.units;
+      this.resolutionFactor =
+        a && b ? OpenLayers.INCHES_PER_UNIT[a] / OpenLayers.INCHES_PER_UNIT[b] : 1;
+    }
+  },
+  updateRectToMap: function () {
+    var a;
+    a =
+      this.ovmap.getProjection() != this.map.getProjection()
+        ? this.map
+            .getExtent()
+            .transform(this.map.getProjectionObject(), this.ovmap.getProjectionObject())
+        : this.map.getExtent();
+    (a = this.getRectBoundsFromMapBounds(a)) && this.setRectPxBounds(a);
+  },
+  updateMapToRect: function () {
+    var a = this.getMapBoundsFromRectBounds(this.rectPxBounds);
+    this.ovmap.getProjection() != this.map.getProjection() &&
+      (a = a.transform(this.ovmap.getProjectionObject(), this.map.getProjectionObject()));
+    this.map.panTo(a.getCenterLonLat());
+  },
+  setRectPxBounds: function (a) {
+    var b = Math.max(a.top, 0),
+      c = Math.max(a.left, 0),
+      d = Math.min(a.top + Math.abs(a.getHeight()), this.ovmap.size.h - this.hComp);
+    a = Math.min(a.left + a.getWidth(), this.ovmap.size.w - this.wComp);
+    var e = Math.max(a - c, 0),
+      f = Math.max(d - b, 0);
+    e < this.minRectSize || f < this.minRectSize
+      ? ((this.extentRectangle.className = this.displayClass + this.minRectDisplayClass),
+        (e = c + e / 2 - this.minRectSize / 2),
+        (this.extentRectangle.style.top = Math.round(b + f / 2 - this.minRectSize / 2) + "px"),
+        (this.extentRectangle.style.left = Math.round(e) + "px"),
+        (this.extentRectangle.style.height = this.minRectSize + "px"),
+        (this.extentRectangle.style.width = this.minRectSize + "px"))
+      : ((this.extentRectangle.className = this.displayClass + "ExtentRectangle"),
+        (this.extentRectangle.style.top = Math.round(b) + "px"),
+        (this.extentRectangle.style.left = Math.round(c) + "px"),
+        (this.extentRectangle.style.height = Math.round(f) + "px"),
+        (this.extentRectangle.style.width = Math.round(e) + "px"));
+    this.rectPxBounds = new OpenLayers.Bounds(
+      Math.round(c),
+      Math.round(d),
+      Math.round(a),
+      Math.round(b)
+    );
+  },
+  getRectBoundsFromMapBounds: function (a) {
+    var b = this.getOverviewPxFromLonLat({ lon: a.left, lat: a.bottom });
+    a = this.getOverviewPxFromLonLat({ lon: a.right, lat: a.top });
+    var c = null;
+    b && a && (c = new OpenLayers.Bounds(b.x, b.y, a.x, a.y));
+    return c;
+  },
+  getMapBoundsFromRectBounds: function (a) {
+    var b = this.getLonLatFromOverviewPx({ x: a.left, y: a.bottom });
+    a = this.getLonLatFromOverviewPx({ x: a.right, y: a.top });
+    return new OpenLayers.Bounds(b.lon, b.lat, a.lon, a.lat);
+  },
+  getLonLatFromOverviewPx: function (a) {
+    var b = this.ovmap.size,
+      c = this.ovmap.getResolution(),
+      d = this.ovmap.getExtent().getCenterLonLat();
+    return { lon: d.lon + (a.x - b.w / 2) * c, lat: d.lat - (a.y - b.h / 2) * c };
+  },
+  getOverviewPxFromLonLat: function (a) {
+    var b = this.ovmap.getResolution(),
+      c = this.ovmap.getExtent();
+    if (c)
+      return {
+        x: Math.round((1 / b) * (a.lon - c.left)),
+        y: Math.round((1 / b) * (c.top - a.lat)),
+      };
+  },
+  CLASS_NAME: "OpenLayers.Control.OverviewMap",
+});
+OpenLayers.Layer = OpenLayers.Class({
+  id: null,
+  name: null,
+  div: null,
+  opacity: 1,
+  alwaysInRange: null,
+  RESOLUTION_PROPERTIES: "scales resolutions maxScale minScale maxResolution minResolution numZoomLevels maxZoomLevel".split(
+    " "
+  ),
+  events: null,
+  map: null,
+  isBaseLayer: !1,
+  alpha: !1,
+  displayInLayerSwitcher: !0,
+  visibility: !0,
+  attribution: null,
+  inRange: !1,
+  imageSize: null,
+  options: null,
+  eventListeners: null,
+  gutter: 0,
+  projection: null,
+  units: null,
+  scales: null,
+  resolutions: null,
+  maxExtent: null,
+  minExtent: null,
+  maxResolution: null,
+  minResolution: null,
+  numZoomLevels: null,
+  minScale: null,
+  maxScale: null,
+  displayOutsideMaxExtent: !1,
+  wrapDateLine: !1,
+  metadata: null,
+  initialize: function (a, b) {
+    this.metadata = {};
+    b = OpenLayers.Util.extend({}, b);
+    null != this.alwaysInRange && (b.alwaysInRange = this.alwaysInRange);
+    this.addOptions(b);
+    this.name = a;
+    if (
+      null == this.id &&
+      ((this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_")),
+      (this.div = OpenLayers.Util.createDiv(this.id)),
+      (this.div.style.width = "100%"),
+      (this.div.style.height = "100%"),
+      (this.div.dir = "ltr"),
+      (this.events = new OpenLayers.Events(this, this.div)),
+      this.eventListeners instanceof Object)
+    )
+      this.events.on(this.eventListeners);
+  },
+  destroy: function (a) {
+    null == a && (a = !0);
+    null != this.map && this.map.removeLayer(this, a);
+    this.options = this.div = this.name = this.map = this.projection = null;
+    this.events &&
+      (this.eventListeners && this.events.un(this.eventListeners), this.events.destroy());
+    this.events = this.eventListeners = null;
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer(this.name, this.getOptions()));
+    OpenLayers.Util.applyDefaults(a, this);
+    a.map = null;
+    return a;
+  },
+  getOptions: function () {
+    var a = {},
+      b;
+    for (b in this.options) a[b] = this[b];
+    return a;
+  },
+  setName: function (a) {
+    a != this.name &&
+      ((this.name = a),
+      null != this.map &&
+        this.map.events.triggerEvent("changelayer", { layer: this, property: "name" }));
+  },
+  addOptions: function (a, b) {
+    null == this.options && (this.options = {});
+    a &&
+      ("string" == typeof a.projection && (a.projection = new OpenLayers.Projection(a.projection)),
+      a.projection &&
+        OpenLayers.Util.applyDefaults(a, OpenLayers.Projection.defaults[a.projection.getCode()]),
+      !a.maxExtent ||
+        a.maxExtent instanceof OpenLayers.Bounds ||
+        (a.maxExtent = new OpenLayers.Bounds(a.maxExtent)),
+      !a.minExtent ||
+        a.minExtent instanceof OpenLayers.Bounds ||
+        (a.minExtent = new OpenLayers.Bounds(a.minExtent)));
+    OpenLayers.Util.extend(this.options, a);
+    OpenLayers.Util.extend(this, a);
+    this.projection && this.projection.getUnits() && (this.units = this.projection.getUnits());
+    if (this.map) {
+      var c = this.map.getResolution(),
+        d = this.RESOLUTION_PROPERTIES.concat(["projection", "units", "minExtent", "maxExtent"]),
+        e;
+      for (e in a)
+        if (a.hasOwnProperty(e) && 0 <= OpenLayers.Util.indexOf(d, e)) {
+          this.initResolutions();
+          b &&
+            this.map.baseLayer === this &&
+            (this.map.setCenter(this.map.getCenter(), this.map.getZoomForResolution(c), !1, !0),
+            this.map.events.triggerEvent("changebaselayer", { layer: this }));
+          break;
+        }
+    }
+  },
+  onMapResize: function () {},
+  redraw: function () {
+    var a = !1;
+    if (this.map) {
+      this.inRange = this.calculateInRange();
+      var b = this.getExtent();
+      b &&
+        this.inRange &&
+        this.visibility &&
+        (this.moveTo(b, !0, !1),
+        this.events.triggerEvent("moveend", { zoomChanged: !0 }),
+        (a = !0));
+    }
+    return a;
+  },
+  moveTo: function (a, b, c) {
+    a = this.visibility;
+    this.isBaseLayer || (a = a && this.inRange);
+    this.display(a);
+  },
+  moveByPx: function (a, b) {},
+  setMap: function (a) {
+    null == this.map &&
+      ((this.map = a),
+      (this.maxExtent = this.maxExtent || this.map.maxExtent),
+      (this.minExtent = this.minExtent || this.map.minExtent),
+      (this.projection = this.projection || this.map.projection),
+      "string" == typeof this.projection &&
+        (this.projection = new OpenLayers.Projection(this.projection)),
+      (this.units = this.projection.getUnits() || this.units || this.map.units),
+      this.initResolutions(),
+      this.isBaseLayer ||
+        ((this.inRange = this.calculateInRange()),
+        (this.div.style.display = this.visibility && this.inRange ? "" : "none")),
+      this.setTileSize());
+  },
+  afterAdd: function () {},
+  removeMap: function (a) {},
+  getImageSize: function (a) {
+    return this.imageSize || this.tileSize;
+  },
+  setTileSize: function (a) {
+    this.tileSize = a = a ? a : this.tileSize ? this.tileSize : this.map.getTileSize();
+    this.gutter &&
+      (this.imageSize = new OpenLayers.Size(a.w + 2 * this.gutter, a.h + 2 * this.gutter));
+  },
+  getVisibility: function () {
+    return this.visibility;
+  },
+  setVisibility: function (a) {
+    a != this.visibility &&
+      ((this.visibility = a),
+      this.display(a),
+      this.redraw(),
+      null != this.map &&
+        this.map.events.triggerEvent("changelayer", { layer: this, property: "visibility" }),
+      this.events.triggerEvent("visibilitychanged"));
+  },
+  display: function (a) {
+    a != ("none" != this.div.style.display) &&
+      (this.div.style.display = a && this.calculateInRange() ? "block" : "none");
+  },
+  calculateInRange: function () {
+    var a = !1;
+    this.alwaysInRange
+      ? (a = !0)
+      : this.map &&
+        ((a = this.map.getResolution()), (a = a >= this.minResolution && a <= this.maxResolution));
+    return a;
+  },
+  setIsBaseLayer: function (a) {
+    a != this.isBaseLayer &&
+      ((this.isBaseLayer = a),
+      null != this.map && this.map.events.triggerEvent("changebaselayer", { layer: this }));
+  },
+  initResolutions: function () {
+    var a,
+      b,
+      c,
+      d = {},
+      e = !0;
+    a = 0;
+    for (b = this.RESOLUTION_PROPERTIES.length; a < b; a++)
+      (c = this.RESOLUTION_PROPERTIES[a]),
+        (d[c] = this.options[c]),
+        e && this.options[c] && (e = !1);
+    null == this.options.alwaysInRange && (this.alwaysInRange = e);
+    null == d.resolutions && (d.resolutions = this.resolutionsFromScales(d.scales));
+    null == d.resolutions && (d.resolutions = this.calculateResolutions(d));
+    if (null == d.resolutions) {
+      a = 0;
+      for (b = this.RESOLUTION_PROPERTIES.length; a < b; a++)
+        (c = this.RESOLUTION_PROPERTIES[a]),
+          (d[c] = null != this.options[c] ? this.options[c] : this.map[c]);
+      null == d.resolutions && (d.resolutions = this.resolutionsFromScales(d.scales));
+      null == d.resolutions && (d.resolutions = this.calculateResolutions(d));
+    }
+    var f;
+    this.options.maxResolution &&
+      "auto" !== this.options.maxResolution &&
+      (f = this.options.maxResolution);
+    this.options.minScale &&
+      (f = OpenLayers.Util.getResolutionFromScale(this.options.minScale, this.units));
+    var g;
+    this.options.minResolution &&
+      "auto" !== this.options.minResolution &&
+      (g = this.options.minResolution);
+    this.options.maxScale &&
+      (g = OpenLayers.Util.getResolutionFromScale(this.options.maxScale, this.units));
+    d.resolutions &&
+      (d.resolutions.sort(function (a, b) {
+        return b - a;
+      }),
+      f || (f = d.resolutions[0]),
+      g || (g = d.resolutions[d.resolutions.length - 1]));
+    if ((this.resolutions = d.resolutions)) {
+      b = this.resolutions.length;
+      this.scales = Array(b);
+      for (a = 0; a < b; a++)
+        this.scales[a] = OpenLayers.Util.getScaleFromResolution(this.resolutions[a], this.units);
+      this.numZoomLevels = b;
+    }
+    if ((this.minResolution = g))
+      this.maxScale = OpenLayers.Util.getScaleFromResolution(g, this.units);
+    if ((this.maxResolution = f))
+      this.minScale = OpenLayers.Util.getScaleFromResolution(f, this.units);
+  },
+  resolutionsFromScales: function (a) {
+    if (null != a) {
+      var b, c, d;
+      d = a.length;
+      b = Array(d);
+      for (c = 0; c < d; c++) b[c] = OpenLayers.Util.getResolutionFromScale(a[c], this.units);
+      return b;
+    }
+  },
+  calculateResolutions: function (a) {
+    var b,
+      c,
+      d = a.maxResolution;
+    null != a.minScale
+      ? (d = OpenLayers.Util.getResolutionFromScale(a.minScale, this.units))
+      : "auto" == d &&
+        null != this.maxExtent &&
+        ((b = this.map.getSize()),
+        (c = this.maxExtent.getWidth() / b.w),
+        (b = this.maxExtent.getHeight() / b.h),
+        (d = Math.max(c, b)));
+    c = a.minResolution;
+    null != a.maxScale
+      ? (c = OpenLayers.Util.getResolutionFromScale(a.maxScale, this.units))
+      : "auto" == a.minResolution &&
+        null != this.minExtent &&
+        ((b = this.map.getSize()),
+        (c = this.minExtent.getWidth() / b.w),
+        (b = this.minExtent.getHeight() / b.h),
+        (c = Math.max(c, b)));
+    "number" !== typeof d &&
+      "number" !== typeof c &&
+      null != this.maxExtent &&
+      ((d = this.map.getTileSize()),
+      (d = Math.max(this.maxExtent.getWidth() / d.w, this.maxExtent.getHeight() / d.h)));
+    b = a.maxZoomLevel;
+    a = a.numZoomLevels;
+    "number" === typeof c && "number" === typeof d && void 0 === a
+      ? (a = Math.floor(Math.log(d / c) / Math.log(2)) + 1)
+      : void 0 === a && null != b && (a = b + 1);
+    if (!("number" !== typeof a || 0 >= a || ("number" !== typeof d && "number" !== typeof c))) {
+      b = Array(a);
+      var e = 2;
+      "number" == typeof c && "number" == typeof d && (e = Math.pow(d / c, 1 / (a - 1)));
+      var f;
+      if ("number" === typeof d) for (f = 0; f < a; f++) b[f] = d / Math.pow(e, f);
+      else for (f = 0; f < a; f++) b[a - 1 - f] = c * Math.pow(e, f);
+      return b;
+    }
+  },
+  getResolution: function () {
+    var a = this.map.getZoom();
+    return this.getResolutionForZoom(a);
+  },
+  getExtent: function () {
+    return this.map.calculateBounds();
+  },
+  getZoomForExtent: function (a, b) {
+    var c = this.map.getSize(),
+      c = Math.max(a.getWidth() / c.w, a.getHeight() / c.h);
+    return this.getZoomForResolution(c, b);
+  },
+  getDataExtent: function () {},
+  getResolutionForZoom: function (a) {
+    a = Math.max(0, Math.min(a, this.resolutions.length - 1));
+    if (this.map.fractionalZoom) {
+      var b = Math.floor(a),
+        c = Math.ceil(a);
+      a = this.resolutions[b] - (a - b) * (this.resolutions[b] - this.resolutions[c]);
+    } else a = this.resolutions[Math.round(a)];
+    return a;
+  },
+  getZoomForResolution: function (a, b) {
+    var c, d;
+    if (this.map.fractionalZoom) {
+      var e = 0,
+        f = this.resolutions[e],
+        g = this.resolutions[this.resolutions.length - 1],
+        h;
+      c = 0;
+      for (d = this.resolutions.length; c < d; ++c)
+        if (((h = this.resolutions[c]), h >= a && ((f = h), (e = c)), h <= a)) {
+          g = h;
+          break;
+        }
+      c = f - g;
+      c = 0 < c ? e + (f - a) / c : e;
+    } else {
+      f = Number.POSITIVE_INFINITY;
+      c = 0;
+      for (d = this.resolutions.length; c < d; c++)
+        if (b) {
+          e = Math.abs(this.resolutions[c] - a);
+          if (e > f) break;
+          f = e;
+        } else if (this.resolutions[c] < a) break;
+      c = Math.max(0, c - 1);
+    }
+    return c;
+  },
+  getLonLatFromViewPortPx: function (a) {
+    var b = null,
+      c = this.map;
+    if (null != a && c.minPx) {
+      var b = c.getResolution(),
+        d = c.getMaxExtent({ restricted: !0 }),
+        b = new OpenLayers.LonLat((a.x - c.minPx.x) * b + d.left, (c.minPx.y - a.y) * b + d.top);
+      this.wrapDateLine && (b = b.wrapDateLine(this.maxExtent));
+    }
+    return b;
+  },
+  getViewPortPxFromLonLat: function (a, b) {
+    var c = null;
+    null != a &&
+      ((b = b || this.map.getResolution()),
+      (c = this.map.calculateBounds(null, b)),
+      (c = new OpenLayers.Pixel((1 / b) * (a.lon - c.left), (1 / b) * (c.top - a.lat))));
+    return c;
+  },
+  setOpacity: function (a) {
+    if (a != this.opacity) {
+      this.opacity = a;
+      for (var b = this.div.childNodes, c = 0, d = b.length; c < d; ++c) {
+        var e = b[c].firstChild || b[c],
+          f = b[c].lastChild;
+        f && "iframe" === f.nodeName.toLowerCase() && (e = f.parentNode);
+        OpenLayers.Util.modifyDOMElement(e, null, null, null, null, null, null, a);
+      }
+      null != this.map &&
+        this.map.events.triggerEvent("changelayer", { layer: this, property: "opacity" });
+    }
+  },
+  getZIndex: function () {
+    return this.div.style.zIndex;
+  },
+  setZIndex: function (a) {
+    this.div.style.zIndex = a;
+  },
+  adjustBounds: function (a) {
+    if (this.gutter) {
+      var b = this.gutter * this.map.getResolution();
+      a = new OpenLayers.Bounds(a.left - b, a.bottom - b, a.right + b, a.top + b);
+    }
+    this.wrapDateLine &&
+      ((b = { rightTolerance: this.getResolution(), leftTolerance: this.getResolution() }),
+      (a = a.wrapDateLine(this.maxExtent, b)));
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Layer",
+});
+OpenLayers.Layer.SphericalMercator = {
+  getExtent: function () {
+    var a = null;
+    return (a = this.sphericalMercator
+      ? this.map.calculateBounds()
+      : OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this));
+  },
+  getLonLatFromViewPortPx: function (a) {
+    return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this, arguments);
+  },
+  getViewPortPxFromLonLat: function (a) {
+    return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this, arguments);
+  },
+  initMercatorParameters: function () {
+    this.RESOLUTIONS = [];
+    for (var a = 0; a <= this.MAX_ZOOM_LEVEL; ++a)
+      this.RESOLUTIONS[a] = 156543.03390625 / Math.pow(2, a);
+    this.units = "m";
+    this.projection = this.projection || "EPSG:900913";
+  },
+  forwardMercator: (function () {
+    var a = new OpenLayers.Projection("EPSG:4326"),
+      b = new OpenLayers.Projection("EPSG:900913");
+    return function (c, d) {
+      var e = OpenLayers.Projection.transform({ x: c, y: d }, a, b);
+      return new OpenLayers.LonLat(e.x, e.y);
+    };
+  })(),
+  inverseMercator: (function () {
+    var a = new OpenLayers.Projection("EPSG:4326"),
+      b = new OpenLayers.Projection("EPSG:900913");
+    return function (c, d) {
+      var e = OpenLayers.Projection.transform({ x: c, y: d }, b, a);
+      return new OpenLayers.LonLat(e.x, e.y);
+    };
+  })(),
+};
+OpenLayers.Layer.EventPane = OpenLayers.Class(OpenLayers.Layer, {
+  smoothDragPan: !0,
+  isBaseLayer: !0,
+  isFixed: !0,
+  pane: null,
+  mapObject: null,
+  initialize: function (a, b) {
+    OpenLayers.Layer.prototype.initialize.apply(this, arguments);
+    null == this.pane && (this.pane = OpenLayers.Util.createDiv(this.div.id + "_EventPane"));
+  },
+  destroy: function () {
+    this.pane = this.mapObject = null;
+    OpenLayers.Layer.prototype.destroy.apply(this, arguments);
+  },
+  setMap: function (a) {
+    OpenLayers.Layer.prototype.setMap.apply(this, arguments);
+    this.pane.style.zIndex = parseInt(this.div.style.zIndex) + 1;
+    this.pane.style.display = this.div.style.display;
+    this.pane.style.width = "100%";
+    this.pane.style.height = "100%";
+    "msie" == OpenLayers.BROWSER_NAME &&
+      (this.pane.style.background = "url(" + OpenLayers.Util.getImageLocation("blank.gif") + ")");
+    this.isFixed
+      ? this.map.viewPortDiv.appendChild(this.pane)
+      : this.map.layerContainerDiv.appendChild(this.pane);
+    this.loadMapObject();
+    null == this.mapObject && this.loadWarningMessage();
+  },
+  removeMap: function (a) {
+    this.pane && this.pane.parentNode && this.pane.parentNode.removeChild(this.pane);
+    OpenLayers.Layer.prototype.removeMap.apply(this, arguments);
+  },
+  loadWarningMessage: function () {
+    this.div.style.backgroundColor = "darkblue";
+    var a = this.map.getSize(),
+      b = Math.min(a.w, 300),
+      c = Math.min(a.h, 200),
+      b = new OpenLayers.Size(b, c),
+      a = new OpenLayers.Pixel(a.w / 2, a.h / 2).add(-b.w / 2, -b.h / 2),
+      a = OpenLayers.Util.createDiv(this.name + "_warning", a, b, null, null, null, "auto");
+    a.style.padding = "7px";
+    a.style.backgroundColor = "yellow";
+    a.innerHTML = this.getWarningHTML();
+    this.div.appendChild(a);
+  },
+  getWarningHTML: function () {
+    return "";
+  },
+  display: function (a) {
+    OpenLayers.Layer.prototype.display.apply(this, arguments);
+    this.pane.style.display = this.div.style.display;
+  },
+  setZIndex: function (a) {
+    OpenLayers.Layer.prototype.setZIndex.apply(this, arguments);
+    this.pane.style.zIndex = parseInt(this.div.style.zIndex) + 1;
+  },
+  moveByPx: function (a, b) {
+    OpenLayers.Layer.prototype.moveByPx.apply(this, arguments);
+    this.dragPanMapObject ? this.dragPanMapObject(a, -b) : this.moveTo(this.map.getCachedCenter());
+  },
+  moveTo: function (a, b, c) {
+    OpenLayers.Layer.prototype.moveTo.apply(this, arguments);
+    if (null != this.mapObject) {
+      var d = this.map.getCenter(),
+        e = this.map.getZoom();
+      if (null != d) {
+        var f = this.getMapObjectCenter(),
+          f = this.getOLLonLatFromMapObjectLonLat(f),
+          g = this.getMapObjectZoom(),
+          g = this.getOLZoomFromMapObjectZoom(g);
+        (d.equals(f) && e == g) ||
+          (!b && f && this.dragPanMapObject && this.smoothDragPan
+            ? ((e = this.map.getViewPortPxFromLonLat(f)),
+              (d = this.map.getViewPortPxFromLonLat(d)),
+              this.dragPanMapObject(d.x - e.x, e.y - d.y))
+            : ((d = this.getMapObjectLonLatFromOLLonLat(d)),
+              (e = this.getMapObjectZoomFromOLZoom(e)),
+              this.setMapObjectCenter(d, e, c)));
+      }
+    }
+  },
+  getLonLatFromViewPortPx: function (a) {
+    var b = null;
+    null != this.mapObject &&
+      null != this.getMapObjectCenter() &&
+      ((a = this.getMapObjectPixelFromOLPixel(a)),
+      (a = this.getMapObjectLonLatFromMapObjectPixel(a)),
+      (b = this.getOLLonLatFromMapObjectLonLat(a)));
+    return b;
+  },
+  getViewPortPxFromLonLat: function (a) {
+    var b = null;
+    null != this.mapObject &&
+      null != this.getMapObjectCenter() &&
+      ((a = this.getMapObjectLonLatFromOLLonLat(a)),
+      (a = this.getMapObjectPixelFromMapObjectLonLat(a)),
+      (b = this.getOLPixelFromMapObjectPixel(a)));
+    return b;
+  },
+  getOLLonLatFromMapObjectLonLat: function (a) {
+    var b = null;
+    null != a &&
+      ((b = this.getLongitudeFromMapObjectLonLat(a)),
+      (a = this.getLatitudeFromMapObjectLonLat(a)),
+      (b = new OpenLayers.LonLat(b, a)));
+    return b;
+  },
+  getMapObjectLonLatFromOLLonLat: function (a) {
+    var b = null;
+    null != a && (b = this.getMapObjectLonLatFromLonLat(a.lon, a.lat));
+    return b;
+  },
+  getOLPixelFromMapObjectPixel: function (a) {
+    var b = null;
+    null != a &&
+      ((b = this.getXFromMapObjectPixel(a)),
+      (a = this.getYFromMapObjectPixel(a)),
+      (b = new OpenLayers.Pixel(b, a)));
+    return b;
+  },
+  getMapObjectPixelFromOLPixel: function (a) {
+    var b = null;
+    null != a && (b = this.getMapObjectPixelFromXY(a.x, a.y));
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Layer.EventPane",
+});
+OpenLayers.Layer.FixedZoomLevels = OpenLayers.Class({
+  initialize: function () {},
+  initResolutions: function () {
+    for (
+      var a = ["minZoomLevel", "maxZoomLevel", "numZoomLevels"], b = 0, c = a.length;
+      b < c;
+      b++
+    ) {
+      var d = a[b];
+      this[d] = null != this.options[d] ? this.options[d] : this.map[d];
+    }
+    if (null == this.minZoomLevel || this.minZoomLevel < this.MIN_ZOOM_LEVEL)
+      this.minZoomLevel = this.MIN_ZOOM_LEVEL;
+    a = this.MAX_ZOOM_LEVEL - this.minZoomLevel + 1;
+    b =
+      (null == this.options.numZoomLevels && null != this.options.maxZoomLevel) ||
+      (null == this.numZoomLevels && null != this.maxZoomLevel)
+        ? this.maxZoomLevel - this.minZoomLevel + 1
+        : this.numZoomLevels;
+    this.numZoomLevels = null != b ? Math.min(b, a) : a;
+    this.maxZoomLevel = this.minZoomLevel + this.numZoomLevels - 1;
+    if (null != this.RESOLUTIONS) {
+      a = 0;
+      this.resolutions = [];
+      for (b = this.minZoomLevel; b <= this.maxZoomLevel; b++)
+        this.resolutions[a++] = this.RESOLUTIONS[b];
+      this.maxResolution = this.resolutions[0];
+      this.minResolution = this.resolutions[this.resolutions.length - 1];
+    }
+  },
+  getResolution: function () {
+    if (null != this.resolutions)
+      return OpenLayers.Layer.prototype.getResolution.apply(this, arguments);
+    var a = null,
+      b = this.map.getSize(),
+      c = this.getExtent();
+    null != b && null != c && (a = Math.max(c.getWidth() / b.w, c.getHeight() / b.h));
+    return a;
+  },
+  getExtent: function () {
+    var a = this.map.getSize(),
+      b = this.getLonLatFromViewPortPx({ x: 0, y: 0 }),
+      a = this.getLonLatFromViewPortPx({ x: a.w, y: a.h });
+    return null != b && null != a ? new OpenLayers.Bounds(b.lon, a.lat, a.lon, b.lat) : null;
+  },
+  getZoomForResolution: function (a) {
+    if (null != this.resolutions)
+      return OpenLayers.Layer.prototype.getZoomForResolution.apply(this, arguments);
+    var b = OpenLayers.Layer.prototype.getExtent.apply(this, []);
+    return this.getZoomForExtent(b);
+  },
+  getOLZoomFromMapObjectZoom: function (a) {
+    var b = null;
+    null != a &&
+      ((b = a - this.minZoomLevel),
+      this.map.baseLayer !== this &&
+        (b = this.map.baseLayer.getZoomForResolution(this.getResolutionForZoom(b))));
+    return b;
+  },
+  getMapObjectZoomFromOLZoom: function (a) {
+    var b = null;
+    null != a &&
+      ((b = a + this.minZoomLevel),
+      this.map.baseLayer !== this &&
+        (b = this.getZoomForResolution(this.map.baseLayer.getResolutionForZoom(b))));
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Layer.FixedZoomLevels",
+});
+OpenLayers.Layer.Google = OpenLayers.Class(
+  OpenLayers.Layer.EventPane,
+  OpenLayers.Layer.FixedZoomLevels,
+  {
+    MIN_ZOOM_LEVEL: 0,
+    MAX_ZOOM_LEVEL: 21,
+    RESOLUTIONS: [
+      1.40625,
+      0.703125,
+      0.3515625,
+      0.17578125,
+      0.087890625,
+      0.0439453125,
+      0.02197265625,
+      0.010986328125,
+      0.0054931640625,
+      0.00274658203125,
+      0.001373291015625,
+      6.866455078125e-4,
+      3.4332275390625e-4,
+      1.71661376953125e-4,
+      8.58306884765625e-5,
+      4.291534423828125e-5,
+      2.145767211914062e-5,
+      1.072883605957031e-5,
+      5.36441802978515e-6,
+      2.68220901489257e-6,
+      1.341104507446289e-6,
+      6.705522537231445e-7,
+    ],
+    type: null,
+    wrapDateLine: !0,
+    sphericalMercator: !1,
+    version: null,
+    initialize: function (a, b) {
+      b = b || {};
+      b.version || (b.version = "function" === typeof GMap2 ? "2" : "3");
+      var c = OpenLayers.Layer.Google["v" + b.version.replace(/\./g, "_")];
+      if (c) OpenLayers.Util.applyDefaults(b, c);
+      else throw "Unsupported Google Maps API version: " + b.version;
+      OpenLayers.Util.applyDefaults(b, c.DEFAULTS);
+      b.maxExtent && (b.maxExtent = b.maxExtent.clone());
+      OpenLayers.Layer.EventPane.prototype.initialize.apply(this, [a, b]);
+      OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this, [a, b]);
+      this.sphericalMercator &&
+        (OpenLayers.Util.extend(this, OpenLayers.Layer.SphericalMercator),
+        this.initMercatorParameters());
+    },
+    clone: function () {
+      return new OpenLayers.Layer.Google(this.name, this.getOptions());
+    },
+    setVisibility: function (a) {
+      var b = null == this.opacity ? 1 : this.opacity;
+      OpenLayers.Layer.EventPane.prototype.setVisibility.apply(this, arguments);
+      this.setOpacity(b);
+    },
+    display: function (a) {
+      this._dragging || this.setGMapVisibility(a);
+      OpenLayers.Layer.EventPane.prototype.display.apply(this, arguments);
+    },
+    moveTo: function (a, b, c) {
+      this._dragging = c;
+      OpenLayers.Layer.EventPane.prototype.moveTo.apply(this, arguments);
+      delete this._dragging;
+    },
+    setOpacity: function (a) {
+      a !== this.opacity &&
+        (null != this.map &&
+          this.map.events.triggerEvent("changelayer", { layer: this, property: "opacity" }),
+        (this.opacity = a));
+      if (this.getVisibility()) {
+        var b = this.getMapContainer();
+        OpenLayers.Util.modifyDOMElement(b, null, null, null, null, null, null, a);
+      }
+    },
+    destroy: function () {
+      if (this.map) {
+        this.setGMapVisibility(!1);
+        var a = OpenLayers.Layer.Google.cache[this.map.id];
+        a && 1 >= a.count && this.removeGMapElements();
+      }
+      OpenLayers.Layer.EventPane.prototype.destroy.apply(this, arguments);
+    },
+    removeGMapElements: function () {
+      var a = OpenLayers.Layer.Google.cache[this.map.id];
+      if (a) {
+        var b = this.mapObject && this.getMapContainer();
+        b && b.parentNode && b.parentNode.removeChild(b);
+        (b = a.termsOfUse) && b.parentNode && b.parentNode.removeChild(b);
+        (a = a.poweredBy) && a.parentNode && a.parentNode.removeChild(a);
+        this.mapObject &&
+          window.google &&
+          google.maps &&
+          google.maps.event &&
+          google.maps.event.clearListeners &&
+          google.maps.event.clearListeners(this.mapObject, "tilesloaded");
+      }
+    },
+    removeMap: function (a) {
+      this.visibility && this.mapObject && this.setGMapVisibility(!1);
+      var b = OpenLayers.Layer.Google.cache[a.id];
+      b &&
+        (1 >= b.count
+          ? (this.removeGMapElements(), delete OpenLayers.Layer.Google.cache[a.id])
+          : --b.count);
+      delete this.termsOfUse;
+      delete this.poweredBy;
+      delete this.mapObject;
+      delete this.dragObject;
+      OpenLayers.Layer.EventPane.prototype.removeMap.apply(this, arguments);
+    },
+    getOLBoundsFromMapObjectBounds: function (a) {
+      var b = null;
+      null != a &&
+        ((b = a.getSouthWest()),
+        (a = a.getNorthEast()),
+        this.sphericalMercator
+          ? ((b = this.forwardMercator(b.lng(), b.lat())),
+            (a = this.forwardMercator(a.lng(), a.lat())))
+          : ((b = new OpenLayers.LonLat(b.lng(), b.lat())),
+            (a = new OpenLayers.LonLat(a.lng(), a.lat()))),
+        (b = new OpenLayers.Bounds(b.lon, b.lat, a.lon, a.lat)));
+      return b;
+    },
+    getWarningHTML: function () {
+      return OpenLayers.i18n("googleWarning");
+    },
+    getMapObjectCenter: function () {
+      return this.mapObject.getCenter();
+    },
+    getMapObjectZoom: function () {
+      return this.mapObject.getZoom();
+    },
+    getLongitudeFromMapObjectLonLat: function (a) {
+      return this.sphericalMercator ? this.forwardMercator(a.lng(), a.lat()).lon : a.lng();
+    },
+    getLatitudeFromMapObjectLonLat: function (a) {
+      return this.sphericalMercator ? this.forwardMercator(a.lng(), a.lat()).lat : a.lat();
+    },
+    getXFromMapObjectPixel: function (a) {
+      return a.x;
+    },
+    getYFromMapObjectPixel: function (a) {
+      return a.y;
+    },
+    CLASS_NAME: "OpenLayers.Layer.Google",
+  }
+);
+OpenLayers.Layer.Google.cache = {};
+OpenLayers.Layer.Google.v2 = {
+  termsOfUse: null,
+  poweredBy: null,
+  dragObject: null,
+  loadMapObject: function () {
+    this.type || (this.type = G_NORMAL_MAP);
+    var a,
+      b,
+      c,
+      d = OpenLayers.Layer.Google.cache[this.map.id];
+    if (d) (a = d.mapObject), (b = d.termsOfUse), (c = d.poweredBy), ++d.count;
+    else {
+      var d = this.map.viewPortDiv,
+        e = document.createElement("div");
+      e.id = this.map.id + "_GMap2Container";
+      e.style.position = "absolute";
+      e.style.width = "100%";
+      e.style.height = "100%";
+      d.appendChild(e);
+      try {
+        (a = new GMap2(e)),
+          (b = e.lastChild),
+          d.appendChild(b),
+          (b.style.zIndex = "1100"),
+          (b.style.right = ""),
+          (b.style.bottom = ""),
+          (b.className = "olLayerGoogleCopyright"),
+          (c = e.lastChild),
+          d.appendChild(c),
+          (c.style.zIndex = "1100"),
+          (c.style.right = ""),
+          (c.style.bottom = ""),
+          (c.className = "olLayerGooglePoweredBy gmnoprint");
+      } catch (f) {
+        throw f;
+      }
+      OpenLayers.Layer.Google.cache[this.map.id] = {
+        mapObject: a,
+        termsOfUse: b,
+        poweredBy: c,
+        count: 1,
+      };
+    }
+    this.mapObject = a;
+    this.termsOfUse = b;
+    this.poweredBy = c;
+    -1 === OpenLayers.Util.indexOf(this.mapObject.getMapTypes(), this.type) &&
+      this.mapObject.addMapType(this.type);
+    "function" == typeof a.getDragObject
+      ? (this.dragObject = a.getDragObject())
+      : (this.dragPanMapObject = null);
+    !1 === this.isBaseLayer && this.setGMapVisibility("none" !== this.div.style.display);
+  },
+  onMapResize: function () {
+    if (this.visibility && this.mapObject.isLoaded()) this.mapObject.checkResize();
+    else {
+      if (!this._resized)
+        var a = this,
+          b = GEvent.addListener(this.mapObject, "load", function () {
+            GEvent.removeListener(b);
+            delete a._resized;
+            a.mapObject.checkResize();
+            a.moveTo(a.map.getCenter(), a.map.getZoom());
+          });
+      this._resized = !0;
+    }
+  },
+  setGMapVisibility: function (a) {
+    var b = OpenLayers.Layer.Google.cache[this.map.id];
+    if (b) {
+      var c = this.mapObject.getContainer();
+      !0 === a
+        ? (this.mapObject.setMapType(this.type),
+          (c.style.display = ""),
+          (this.termsOfUse.style.left = ""),
+          (this.termsOfUse.style.display = ""),
+          (this.poweredBy.style.display = ""),
+          (b.displayed = this.id))
+        : (b.displayed === this.id && delete b.displayed,
+          b.displayed ||
+            ((c.style.display = "none"),
+            (this.termsOfUse.style.display = "none"),
+            (this.termsOfUse.style.left = "-9999px"),
+            (this.poweredBy.style.display = "none")));
+    }
+  },
+  getMapContainer: function () {
+    return this.mapObject.getContainer();
+  },
+  getMapObjectBoundsFromOLBounds: function (a) {
+    var b = null;
+    null != a &&
+      ((b = this.sphericalMercator
+        ? this.inverseMercator(a.bottom, a.left)
+        : new OpenLayers.LonLat(a.bottom, a.left)),
+      (a = this.sphericalMercator
+        ? this.inverseMercator(a.top, a.right)
+        : new OpenLayers.LonLat(a.top, a.right)),
+      (b = new GLatLngBounds(new GLatLng(b.lat, b.lon), new GLatLng(a.lat, a.lon))));
+    return b;
+  },
+  setMapObjectCenter: function (a, b) {
+    this.mapObject.setCenter(a, b);
+  },
+  dragPanMapObject: function (a, b) {
+    this.dragObject.moveBy(new GSize(-a, b));
+  },
+  getMapObjectLonLatFromMapObjectPixel: function (a) {
+    return this.mapObject.fromContainerPixelToLatLng(a);
+  },
+  getMapObjectPixelFromMapObjectLonLat: function (a) {
+    return this.mapObject.fromLatLngToContainerPixel(a);
+  },
+  getMapObjectZoomFromMapObjectBounds: function (a) {
+    return this.mapObject.getBoundsZoomLevel(a);
+  },
+  getMapObjectLonLatFromLonLat: function (a, b) {
+    var c;
+    this.sphericalMercator
+      ? ((c = this.inverseMercator(a, b)), (c = new GLatLng(c.lat, c.lon)))
+      : (c = new GLatLng(b, a));
+    return c;
+  },
+  getMapObjectPixelFromXY: function (a, b) {
+    return new GPoint(a, b);
+  },
+};
+OpenLayers.Format.XML = OpenLayers.Class(OpenLayers.Format, {
+  namespaces: null,
+  namespaceAlias: null,
+  defaultPrefix: null,
+  readers: {},
+  writers: {},
+  xmldom: null,
+  initialize: function (a) {
+    window.ActiveXObject && (this.xmldom = new ActiveXObject("Microsoft.XMLDOM"));
+    OpenLayers.Format.prototype.initialize.apply(this, [a]);
+    this.namespaces = OpenLayers.Util.extend({}, this.namespaces);
+    this.namespaceAlias = {};
+    for (var b in this.namespaces) this.namespaceAlias[this.namespaces[b]] = b;
+  },
+  destroy: function () {
+    this.xmldom = null;
+    OpenLayers.Format.prototype.destroy.apply(this, arguments);
+  },
+  setNamespace: function (a, b) {
+    this.namespaces[a] = b;
+    this.namespaceAlias[b] = a;
+  },
+  read: function (a) {
+    var b = a.indexOf("<");
+    0 < b && (a = a.substring(b));
+    b = OpenLayers.Util.Try(
+      OpenLayers.Function.bind(function () {
+        var b;
+        b =
+          window.ActiveXObject && !this.xmldom
+            ? new ActiveXObject("Microsoft.XMLDOM")
+            : this.xmldom;
+        b.loadXML(a);
+        return b;
+      }, this),
+      function () {
+        return new DOMParser().parseFromString(a, "text/xml");
+      },
+      function () {
+        var b = new XMLHttpRequest();
+        b.open("GET", "data:text/xml;charset=utf-8," + encodeURIComponent(a), !1);
+        b.overrideMimeType && b.overrideMimeType("text/xml");
+        b.send(null);
+        return b.responseXML;
+      }
+    );
+    this.keepData && (this.data = b);
+    return b;
+  },
+  write: function (a) {
+    if (this.xmldom) a = a.xml;
+    else {
+      var b = new XMLSerializer();
+      if (1 == a.nodeType) {
+        var c = document.implementation.createDocument("", "", null);
+        c.importNode && (a = c.importNode(a, !0));
+        c.appendChild(a);
+        a = b.serializeToString(c);
+      } else a = b.serializeToString(a);
+    }
+    return a;
+  },
+  createElementNS: function (a, b) {
+    return this.xmldom
+      ? "string" == typeof a
+        ? this.xmldom.createNode(1, b, a)
+        : this.xmldom.createNode(1, b, "")
+      : document.createElementNS(a, b);
+  },
+  createDocumentFragment: function () {
+    return this.xmldom ? this.xmldom.createDocumentFragment() : document.createDocumentFragment();
+  },
+  createTextNode: function (a) {
+    "string" !== typeof a && (a = String(a));
+    return this.xmldom ? this.xmldom.createTextNode(a) : document.createTextNode(a);
+  },
+  getElementsByTagNameNS: function (a, b, c) {
+    var d = [];
+    if (a.getElementsByTagNameNS) d = a.getElementsByTagNameNS(b, c);
+    else {
+      a = a.getElementsByTagName("*");
+      for (var e, f, g = 0, h = a.length; g < h; ++g)
+        if (((e = a[g]), (f = e.prefix ? e.prefix + ":" + c : c), "*" == c || f == e.nodeName))
+          ("*" != b && b != e.namespaceURI) || d.push(e);
+    }
+    return d;
+  },
+  getAttributeNodeNS: function (a, b, c) {
+    var d = null;
+    if (a.getAttributeNodeNS) d = a.getAttributeNodeNS(b, c);
+    else {
+      a = a.attributes;
+      for (var e, f, g = 0, h = a.length; g < h; ++g)
+        if (
+          ((e = a[g]),
+          e.namespaceURI == b && ((f = e.prefix ? e.prefix + ":" + c : c), f == e.nodeName))
+        ) {
+          d = e;
+          break;
+        }
+    }
+    return d;
+  },
+  getAttributeNS: function (a, b, c) {
+    var d = "";
+    if (a.getAttributeNS) d = a.getAttributeNS(b, c) || "";
+    else if ((a = this.getAttributeNodeNS(a, b, c))) d = a.nodeValue;
+    return d;
+  },
+  getChildValue: function (a, b) {
+    var c = b || "";
+    if (a)
+      for (var d = a.firstChild; d; d = d.nextSibling)
+        switch (d.nodeType) {
+          case 3:
+          case 4:
+            c += d.nodeValue;
+        }
+    return c;
+  },
+  isSimpleContent: function (a) {
+    var b = !0;
+    for (a = a.firstChild; a; a = a.nextSibling)
+      if (1 === a.nodeType) {
+        b = !1;
+        break;
+      }
+    return b;
+  },
+  contentType: function (a) {
+    var b = !1,
+      c = !1,
+      d = OpenLayers.Format.XML.CONTENT_TYPE.EMPTY;
+    for (a = a.firstChild; a; a = a.nextSibling) {
+      switch (a.nodeType) {
+        case 1:
+          c = !0;
+          break;
+        case 8:
+          break;
+        default:
+          b = !0;
+      }
+      if (c && b) break;
+    }
+    if (c && b) d = OpenLayers.Format.XML.CONTENT_TYPE.MIXED;
+    else {
+      if (c) return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;
+      if (b) return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE;
+    }
+    return d;
+  },
+  hasAttributeNS: function (a, b, c) {
+    var d = !1;
+    return (d = a.hasAttributeNS ? a.hasAttributeNS(b, c) : !!this.getAttributeNodeNS(a, b, c));
+  },
+  setAttributeNS: function (a, b, c, d) {
+    if (a.setAttributeNS) a.setAttributeNS(b, c, d);
+    else if (this.xmldom)
+      b
+        ? ((b = a.ownerDocument.createNode(2, c, b)), (b.nodeValue = d), a.setAttributeNode(b))
+        : a.setAttribute(c, d);
+    else throw "setAttributeNS not implemented";
+  },
+  createElementNSPlus: function (a, b) {
+    b = b || {};
+    var c = b.uri || this.namespaces[b.prefix];
+    c || ((c = a.indexOf(":")), (c = this.namespaces[a.substring(0, c)]));
+    c || (c = this.namespaces[this.defaultPrefix]);
+    c = this.createElementNS(c, a);
+    b.attributes && this.setAttributes(c, b.attributes);
+    var d = b.value;
+    null != d && c.appendChild(this.createTextNode(d));
+    return c;
+  },
+  setAttributes: function (a, b) {
+    var c, d, e;
+    for (e in b)
+      null != b[e] &&
+        b[e].toString &&
+        ((c = b[e].toString()),
+        (d = this.namespaces[e.substring(0, e.indexOf(":"))] || null),
+        this.setAttributeNS(a, d, e, c));
+  },
+  readNode: function (a, b) {
+    b || (b = {});
+    var c = this.readers[a.namespaceURI ? this.namespaceAlias[a.namespaceURI] : this.defaultPrefix];
+    if (c) {
+      var d = a.localName || a.nodeName.split(":").pop();
+      (c = c[d] || c["*"]) && c.apply(this, [a, b]);
+    }
+    return b;
+  },
+  readChildNodes: function (a, b) {
+    b || (b = {});
+    for (var c = a.childNodes, d, e = 0, f = c.length; e < f; ++e)
+      (d = c[e]), 1 == d.nodeType && this.readNode(d, b);
+    return b;
+  },
+  writeNode: function (a, b, c) {
+    var d,
+      e = a.indexOf(":");
+    0 < e
+      ? ((d = a.substring(0, e)), (a = a.substring(e + 1)))
+      : (d = c ? this.namespaceAlias[c.namespaceURI] : this.defaultPrefix);
+    b = this.writers[d][a].apply(this, [b]);
+    c && c.appendChild(b);
+    return b;
+  },
+  getChildEl: function (a, b, c) {
+    return a && this.getThisOrNextEl(a.firstChild, b, c);
+  },
+  getNextEl: function (a, b, c) {
+    return a && this.getThisOrNextEl(a.nextSibling, b, c);
+  },
+  getThisOrNextEl: function (a, b, c) {
+    a: for (; a; a = a.nextSibling)
+      switch (a.nodeType) {
+        case 1:
+          if (
+            !(
+              (b && b !== (a.localName || a.nodeName.split(":").pop())) ||
+              (c && c !== a.namespaceURI)
+            )
+          )
+            break a;
+          a = null;
+          break a;
+        case 3:
+          if (/^\s*$/.test(a.nodeValue)) break;
+        case 4:
+        case 6:
+        case 12:
+        case 10:
+        case 11:
+          a = null;
+          break a;
+      }
+    return a || null;
+  },
+  lookupNamespaceURI: function (a, b) {
+    var c = null;
+    if (a)
+      if (a.lookupNamespaceURI) c = a.lookupNamespaceURI(b);
+      else
+        a: switch (a.nodeType) {
+          case 1:
+            if (null !== a.namespaceURI && a.prefix === b) {
+              c = a.namespaceURI;
+              break a;
+            }
+            if ((c = a.attributes.length))
+              for (var d, e = 0; e < c; ++e)
+                if (((d = a.attributes[e]), "xmlns" === d.prefix && d.name === "xmlns:" + b)) {
+                  c = d.value || null;
+                  break a;
+                } else if ("xmlns" === d.name && null === b) {
+                  c = d.value || null;
+                  break a;
+                }
+            c = this.lookupNamespaceURI(a.parentNode, b);
+            break a;
+          case 2:
+            c = this.lookupNamespaceURI(a.ownerElement, b);
+            break a;
+          case 9:
+            c = this.lookupNamespaceURI(a.documentElement, b);
+            break a;
+          case 6:
+          case 12:
+          case 10:
+          case 11:
+            break a;
+          default:
+            c = this.lookupNamespaceURI(a.parentNode, b);
+        }
+    return c;
+  },
+  getXMLDoc: function () {
+    OpenLayers.Format.XML.document ||
+      this.xmldom ||
+      (document.implementation && document.implementation.createDocument
+        ? (OpenLayers.Format.XML.document = document.implementation.createDocument("", "", null))
+        : !this.xmldom &&
+          window.ActiveXObject &&
+          (this.xmldom = new ActiveXObject("Microsoft.XMLDOM")));
+    return OpenLayers.Format.XML.document || this.xmldom;
+  },
+  CLASS_NAME: "OpenLayers.Format.XML",
+});
+OpenLayers.Format.XML.CONTENT_TYPE = { EMPTY: 0, SIMPLE: 1, COMPLEX: 2, MIXED: 3 };
+OpenLayers.Format.XML.lookupNamespaceURI = OpenLayers.Function.bind(
+  OpenLayers.Format.XML.prototype.lookupNamespaceURI,
+  OpenLayers.Format.XML.prototype
+);
+OpenLayers.Format.XML.document = null;
+OpenLayers.Format.WFST = function (a) {
+  a = OpenLayers.Util.applyDefaults(a, OpenLayers.Format.WFST.DEFAULTS);
+  var b = OpenLayers.Format.WFST["v" + a.version.replace(/\./g, "_")];
+  if (!b) throw "Unsupported WFST version: " + a.version;
+  return new b(a);
+};
+OpenLayers.Format.WFST.DEFAULTS = { version: "1.0.0" };
+OpenLayers.Feature = OpenLayers.Class({
+  layer: null,
+  id: null,
+  lonlat: null,
+  data: null,
+  marker: null,
+  popupClass: null,
+  popup: null,
+  initialize: function (a, b, c) {
+    this.layer = a;
+    this.lonlat = b;
+    this.data = null != c ? c : {};
+    this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
+  },
+  destroy: function () {
+    null != this.layer &&
+      null != this.layer.map &&
+      null != this.popup &&
+      this.layer.map.removePopup(this.popup);
+    null != this.layer && null != this.marker && this.layer.removeMarker(this.marker);
+    this.data = this.lonlat = this.id = this.layer = null;
+    null != this.marker && (this.destroyMarker(this.marker), (this.marker = null));
+    null != this.popup && (this.destroyPopup(this.popup), (this.popup = null));
+  },
+  onScreen: function () {
+    var a = !1;
+    null != this.layer &&
+      null != this.layer.map &&
+      (a = this.layer.map.getExtent().containsLonLat(this.lonlat));
+    return a;
+  },
+  createMarker: function () {
+    null != this.lonlat && (this.marker = new OpenLayers.Marker(this.lonlat, this.data.icon));
+    return this.marker;
+  },
+  destroyMarker: function () {
+    this.marker.destroy();
+  },
+  createPopup: function (a) {
+    null != this.lonlat &&
+      (this.popup ||
+        (this.popup = new (this.popupClass ? this.popupClass : OpenLayers.Popup.Anchored)(
+          this.id + "_popup",
+          this.lonlat,
+          this.data.popupSize,
+          this.data.popupContentHTML,
+          this.marker ? this.marker.icon : null,
+          a
+        )),
+      null != this.data.overflow && (this.popup.contentDiv.style.overflow = this.data.overflow),
+      (this.popup.feature = this));
+    return this.popup;
+  },
+  destroyPopup: function () {
+    this.popup && ((this.popup.feature = null), this.popup.destroy(), (this.popup = null));
+  },
+  CLASS_NAME: "OpenLayers.Feature",
+});
+OpenLayers.State = { UNKNOWN: "Unknown", INSERT: "Insert", UPDATE: "Update", DELETE: "Delete" };
+OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, {
+  fid: null,
+  geometry: null,
+  attributes: null,
+  bounds: null,
+  state: null,
+  style: null,
+  url: null,
+  renderIntent: "default",
+  modified: null,
+  initialize: function (a, b, c) {
+    OpenLayers.Feature.prototype.initialize.apply(this, [null, null, b]);
+    this.lonlat = null;
+    this.geometry = a ? a : null;
+    this.state = null;
+    this.attributes = {};
+    b && (this.attributes = OpenLayers.Util.extend(this.attributes, b));
+    this.style = c ? c : null;
+  },
+  destroy: function () {
+    this.layer && (this.layer.removeFeatures(this), (this.layer = null));
+    this.modified = this.geometry = null;
+    OpenLayers.Feature.prototype.destroy.apply(this, arguments);
+  },
+  clone: function () {
+    return new OpenLayers.Feature.Vector(
+      this.geometry ? this.geometry.clone() : null,
+      this.attributes,
+      this.style
+    );
+  },
+  onScreen: function (a) {
+    var b = !1;
+    this.layer &&
+      this.layer.map &&
+      ((b = this.layer.map.getExtent()),
+      a
+        ? ((a = this.geometry.getBounds()), (b = b.intersectsBounds(a)))
+        : (b = b.toGeometry().intersects(this.geometry)));
+    return b;
+  },
+  getVisibility: function () {
+    return !(
+      (this.style && "none" == this.style.display) ||
+      !this.layer ||
+      (this.layer &&
+        this.layer.styleMap &&
+        "none" == this.layer.styleMap.createSymbolizer(this, this.renderIntent).display) ||
+      (this.layer && !this.layer.getVisibility())
+    );
+  },
+  createMarker: function () {
+    return null;
+  },
+  destroyMarker: function () {},
+  createPopup: function () {
+    return null;
+  },
+  atPoint: function (a, b, c) {
+    var d = !1;
+    this.geometry && (d = this.geometry.atPoint(a, b, c));
+    return d;
+  },
+  destroyPopup: function () {},
+  move: function (a) {
+    if (this.layer && this.geometry.move) {
+      a = "OpenLayers.LonLat" == a.CLASS_NAME ? this.layer.getViewPortPxFromLonLat(a) : a;
+      var b = this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat()),
+        c = this.layer.map.getResolution();
+      this.geometry.move(c * (a.x - b.x), c * (b.y - a.y));
+      this.layer.drawFeature(this);
+      return b;
+    }
+  },
+  toState: function (a) {
+    if (a == OpenLayers.State.UPDATE)
+      switch (this.state) {
+        case OpenLayers.State.UNKNOWN:
+        case OpenLayers.State.DELETE:
+          this.state = a;
+      }
+    else if (a == OpenLayers.State.INSERT)
+      switch (this.state) {
+        case OpenLayers.State.UNKNOWN:
+          break;
+        default:
+          this.state = a;
+      }
+    else if (a == OpenLayers.State.DELETE)
+      switch (this.state) {
+        case OpenLayers.State.UNKNOWN:
+        case OpenLayers.State.UPDATE:
+          this.state = a;
+      }
+    else a == OpenLayers.State.UNKNOWN && (this.state = a);
+  },
+  CLASS_NAME: "OpenLayers.Feature.Vector",
+});
+OpenLayers.Feature.Vector.style = {
+  default: {
+    fillColor: "#ee9900",
+    fillOpacity: 0.4,
+    hoverFillColor: "white",
+    hoverFillOpacity: 0.8,
+    strokeColor: "#ee9900",
+    strokeOpacity: 1,
+    strokeWidth: 1,
+    strokeLinecap: "round",
+    strokeDashstyle: "solid",
+    hoverStrokeColor: "red",
+    hoverStrokeOpacity: 1,
+    hoverStrokeWidth: 0.2,
+    pointRadius: 6,
+    hoverPointRadius: 1,
+    hoverPointUnit: "%",
+    pointerEvents: "visiblePainted",
+    cursor: "inherit",
+    fontColor: "#000000",
+    labelAlign: "cm",
+    labelOutlineColor: "white",
+    labelOutlineWidth: 3,
+  },
+  select: {
+    fillColor: "blue",
+    fillOpacity: 0.4,
+    hoverFillColor: "white",
+    hoverFillOpacity: 0.8,
+    strokeColor: "blue",
+    strokeOpacity: 1,
+    strokeWidth: 2,
+    strokeLinecap: "round",
+    strokeDashstyle: "solid",
+    hoverStrokeColor: "red",
+    hoverStrokeOpacity: 1,
+    hoverStrokeWidth: 0.2,
+    pointRadius: 6,
+    hoverPointRadius: 1,
+    hoverPointUnit: "%",
+    pointerEvents: "visiblePainted",
+    cursor: "pointer",
+    fontColor: "#000000",
+    labelAlign: "cm",
+    labelOutlineColor: "white",
+    labelOutlineWidth: 3,
+  },
+  temporary: {
+    fillColor: "#66cccc",
+    fillOpacity: 0.2,
+    hoverFillColor: "white",
+    hoverFillOpacity: 0.8,
+    strokeColor: "#66cccc",
+    strokeOpacity: 1,
+    strokeLinecap: "round",
+    strokeWidth: 2,
+    strokeDashstyle: "solid",
+    hoverStrokeColor: "red",
+    hoverStrokeOpacity: 1,
+    hoverStrokeWidth: 0.2,
+    pointRadius: 6,
+    hoverPointRadius: 1,
+    hoverPointUnit: "%",
+    pointerEvents: "visiblePainted",
+    cursor: "inherit",
+    fontColor: "#000000",
+    labelAlign: "cm",
+    labelOutlineColor: "white",
+    labelOutlineWidth: 3,
+  },
+  delete: { display: "none" },
+};
+OpenLayers.Style = OpenLayers.Class({
+  id: null,
+  name: null,
+  title: null,
+  description: null,
+  layerName: null,
+  isDefault: !1,
+  rules: null,
+  context: null,
+  defaultStyle: null,
+  defaultsPerSymbolizer: !1,
+  propertyStyles: null,
+  initialize: function (a, b) {
+    OpenLayers.Util.extend(this, b);
+    this.rules = [];
+    b && b.rules && this.addRules(b.rules);
+    this.setDefaultStyle(a || OpenLayers.Feature.Vector.style["default"]);
+    this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
+  },
+  destroy: function () {
+    for (var a = 0, b = this.rules.length; a < b; a++)
+      this.rules[a].destroy(), (this.rules[a] = null);
+    this.defaultStyle = this.rules = null;
+  },
+  createSymbolizer: function (a) {
+    for (
+      var b = this.defaultsPerSymbolizer
+          ? {}
+          : this.createLiterals(OpenLayers.Util.extend({}, this.defaultStyle), a),
+        c = this.rules,
+        d,
+        e = [],
+        f = !1,
+        g = 0,
+        h = c.length;
+      g < h;
+      g++
+    )
+      (d = c[g]),
+        d.evaluate(a) &&
+          (d instanceof OpenLayers.Rule && d.elseFilter
+            ? e.push(d)
+            : ((f = !0), this.applySymbolizer(d, b, a)));
+    if (!1 == f && 0 < e.length)
+      for (f = !0, g = 0, h = e.length; g < h; g++) this.applySymbolizer(e[g], b, a);
+    0 < c.length && !1 == f && (b.display = "none");
+    null != b.label && "string" !== typeof b.label && (b.label = String(b.label));
+    return b;
+  },
+  applySymbolizer: function (a, b, c) {
+    var d = c.geometry
+      ? this.getSymbolizerPrefix(c.geometry)
+      : OpenLayers.Style.SYMBOLIZER_PREFIXES[0];
+    a = a.symbolizer[d] || a.symbolizer;
+    !0 === this.defaultsPerSymbolizer &&
+      ((d = this.defaultStyle),
+      OpenLayers.Util.applyDefaults(a, { pointRadius: d.pointRadius }),
+      (!0 !== a.stroke && !0 !== a.graphic) ||
+        OpenLayers.Util.applyDefaults(a, {
+          strokeWidth: d.strokeWidth,
+          strokeColor: d.strokeColor,
+          strokeOpacity: d.strokeOpacity,
+          strokeDashstyle: d.strokeDashstyle,
+          strokeLinecap: d.strokeLinecap,
+        }),
+      (!0 !== a.fill && !0 !== a.graphic) ||
+        OpenLayers.Util.applyDefaults(a, { fillColor: d.fillColor, fillOpacity: d.fillOpacity }),
+      !0 === a.graphic &&
+        OpenLayers.Util.applyDefaults(a, {
+          pointRadius: this.defaultStyle.pointRadius,
+          externalGraphic: this.defaultStyle.externalGraphic,
+          graphicName: this.defaultStyle.graphicName,
+          graphicOpacity: this.defaultStyle.graphicOpacity,
+          graphicWidth: this.defaultStyle.graphicWidth,
+          graphicHeight: this.defaultStyle.graphicHeight,
+          graphicXOffset: this.defaultStyle.graphicXOffset,
+          graphicYOffset: this.defaultStyle.graphicYOffset,
+        }));
+    return this.createLiterals(OpenLayers.Util.extend(b, a), c);
+  },
+  createLiterals: function (a, b) {
+    var c = OpenLayers.Util.extend({}, b.attributes || b.data);
+    OpenLayers.Util.extend(c, this.context);
+    for (var d in this.propertyStyles) a[d] = OpenLayers.Style.createLiteral(a[d], c, b, d);
+    return a;
+  },
+  findPropertyStyles: function () {
+    var a = {};
+    this.addPropertyStyles(a, this.defaultStyle);
+    for (var b = this.rules, c, d, e = 0, f = b.length; e < f; e++) {
+      c = b[e].symbolizer;
+      for (var g in c)
+        if (((d = c[g]), "object" == typeof d)) this.addPropertyStyles(a, d);
+        else {
+          this.addPropertyStyles(a, c);
+          break;
+        }
+    }
+    return a;
+  },
+  addPropertyStyles: function (a, b) {
+    var c, d;
+    for (d in b) (c = b[d]), "string" == typeof c && c.match(/\$\{\w+\}/) && (a[d] = !0);
+    return a;
+  },
+  addRules: function (a) {
+    Array.prototype.push.apply(this.rules, a);
+    this.propertyStyles = this.findPropertyStyles();
+  },
+  setDefaultStyle: function (a) {
+    this.defaultStyle = a;
+    this.propertyStyles = this.findPropertyStyles();
+  },
+  getSymbolizerPrefix: function (a) {
+    for (var b = OpenLayers.Style.SYMBOLIZER_PREFIXES, c = 0, d = b.length; c < d; c++)
+      if (-1 != a.CLASS_NAME.indexOf(b[c])) return b[c];
+  },
+  clone: function () {
+    var a = OpenLayers.Util.extend({}, this);
+    if (this.rules) {
+      a.rules = [];
+      for (var b = 0, c = this.rules.length; b < c; ++b) a.rules.push(this.rules[b].clone());
+    }
+    a.context = this.context && OpenLayers.Util.extend({}, this.context);
+    b = OpenLayers.Util.extend({}, this.defaultStyle);
+    return new OpenLayers.Style(b, a);
+  },
+  CLASS_NAME: "OpenLayers.Style",
+});
+OpenLayers.Style.createLiteral = function (a, b, c, d) {
+  "string" == typeof a &&
+    -1 != a.indexOf("${") &&
+    ((a = OpenLayers.String.format(a, b, [c, d])), (a = isNaN(a) || !a ? a : parseFloat(a)));
+  return a;
+};
+OpenLayers.Style.SYMBOLIZER_PREFIXES = ["Point", "Line", "Polygon", "Text", "Raster"];
+OpenLayers.Filter = OpenLayers.Class({
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+  },
+  destroy: function () {},
+  evaluate: function (a) {
+    return !0;
+  },
+  clone: function () {
+    return null;
+  },
+  toString: function () {
+    return OpenLayers.Format && OpenLayers.Format.CQL
+      ? OpenLayers.Format.CQL.prototype.write(this)
+      : Object.prototype.toString.call(this);
+  },
+  CLASS_NAME: "OpenLayers.Filter",
+});
+OpenLayers.Filter.Spatial = OpenLayers.Class(OpenLayers.Filter, {
+  type: null,
+  property: null,
+  value: null,
+  distance: null,
+  distanceUnits: null,
+  evaluate: function (a) {
+    var b = !1;
+    switch (this.type) {
+      case OpenLayers.Filter.Spatial.BBOX:
+      case OpenLayers.Filter.Spatial.INTERSECTS:
+        if (a.geometry) {
+          var c = this.value;
+          "OpenLayers.Bounds" == this.value.CLASS_NAME && (c = this.value.toGeometry());
+          a.geometry.intersects(c) && (b = !0);
+        }
+        break;
+      default:
+        throw Error("evaluate is not implemented for this filter type.");
+    }
+    return b;
+  },
+  clone: function () {
+    var a = OpenLayers.Util.applyDefaults(
+      { value: this.value && this.value.clone && this.value.clone() },
+      this
+    );
+    return new OpenLayers.Filter.Spatial(a);
+  },
+  CLASS_NAME: "OpenLayers.Filter.Spatial",
+});
+OpenLayers.Filter.Spatial.BBOX = "BBOX";
+OpenLayers.Filter.Spatial.INTERSECTS = "INTERSECTS";
+OpenLayers.Filter.Spatial.DWITHIN = "DWITHIN";
+OpenLayers.Filter.Spatial.WITHIN = "WITHIN";
+OpenLayers.Filter.Spatial.CONTAINS = "CONTAINS";
+OpenLayers.Filter.FeatureId = OpenLayers.Class(OpenLayers.Filter, {
+  fids: null,
+  type: "FID",
+  initialize: function (a) {
+    this.fids = [];
+    OpenLayers.Filter.prototype.initialize.apply(this, [a]);
+  },
+  evaluate: function (a) {
+    for (var b = 0, c = this.fids.length; b < c; b++)
+      if ((a.fid || a.id) == this.fids[b]) return !0;
+    return !1;
+  },
+  clone: function () {
+    var a = new OpenLayers.Filter.FeatureId();
+    OpenLayers.Util.extend(a, this);
+    a.fids = this.fids.slice();
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Filter.FeatureId",
+});
+OpenLayers.Format.WFST.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+    wfs: "http://www.opengis.net/wfs",
+    gml: "http://www.opengis.net/gml",
+    ogc: "http://www.opengis.net/ogc",
+    ows: "http://www.opengis.net/ows",
+  },
+  defaultPrefix: "wfs",
+  version: null,
+  schemaLocations: null,
+  srsName: null,
+  extractAttributes: !0,
+  xy: !0,
+  stateName: null,
+  initialize: function (a) {
+    this.stateName = {};
+    this.stateName[OpenLayers.State.INSERT] = "wfs:Insert";
+    this.stateName[OpenLayers.State.UPDATE] = "wfs:Update";
+    this.stateName[OpenLayers.State.DELETE] = "wfs:Delete";
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+  },
+  getSrsName: function (a, b) {
+    var c = b && b.srsName;
+    c || (c = a && a.layer ? a.layer.projection.getCode() : this.srsName);
+    return c;
+  },
+  read: function (a, b) {
+    b = b || {};
+    OpenLayers.Util.applyDefaults(b, { output: "features" });
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var c = {};
+    a && this.readNode(a, c, !0);
+    c.features && "features" === b.output && (c = c.features);
+    return c;
+  },
+  readers: {
+    wfs: {
+      FeatureCollection: function (a, b) {
+        b.features = [];
+        this.readChildNodes(a, b);
+      },
+    },
+  },
+  write: function (a, b) {
+    var c = this.writeNode("wfs:Transaction", { features: a, options: b }),
+      d = this.schemaLocationAttr();
+    d && this.setAttributeNS(c, this.namespaces.xsi, "xsi:schemaLocation", d);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [c]);
+  },
+  writers: {
+    wfs: {
+      GetFeature: function (a) {
+        var b = this.createElementNSPlus("wfs:GetFeature", {
+          attributes: {
+            service: "WFS",
+            version: this.version,
+            handle: a && a.handle,
+            outputFormat: a && a.outputFormat,
+            maxFeatures: a && a.maxFeatures,
+            "xsi:schemaLocation": this.schemaLocationAttr(a),
+          },
+        });
+        if ("string" == typeof this.featureType) this.writeNode("Query", a, b);
+        else
+          for (var c = 0, d = this.featureType.length; c < d; c++)
+            (a.featureType = this.featureType[c]), this.writeNode("Query", a, b);
+        return b;
+      },
+      Transaction: function (a) {
+        a = a || {};
+        var b = a.options || {},
+          c = this.createElementNSPlus("wfs:Transaction", {
+            attributes: { service: "WFS", version: this.version, handle: b.handle },
+          }),
+          d,
+          e = a.features;
+        if (e) {
+          !0 === b.multi &&
+            OpenLayers.Util.extend(this.geometryTypes, {
+              "OpenLayers.Geometry.Point": "MultiPoint",
+              "OpenLayers.Geometry.LineString":
+                !0 === this.multiCurve ? "MultiCurve" : "MultiLineString",
+              "OpenLayers.Geometry.Polygon":
+                !0 === this.multiSurface ? "MultiSurface" : "MultiPolygon",
+            });
+          var f, g;
+          a = 0;
+          for (d = e.length; a < d; ++a)
+            (g = e[a]),
+              (f = this.stateName[g.state]) && this.writeNode(f, { feature: g, options: b }, c);
+          !0 === b.multi && this.setGeometryTypes();
+        }
+        if (b.nativeElements)
+          for (a = 0, d = b.nativeElements.length; a < d; ++a)
+            this.writeNode("wfs:Native", b.nativeElements[a], c);
+        return c;
+      },
+      Native: function (a) {
+        return this.createElementNSPlus("wfs:Native", {
+          attributes: { vendorId: a.vendorId, safeToIgnore: a.safeToIgnore },
+          value: a.value,
+        });
+      },
+      Insert: function (a) {
+        var b = a.feature;
+        a = a.options;
+        a = this.createElementNSPlus("wfs:Insert", { attributes: { handle: a && a.handle } });
+        this.srsName = this.getSrsName(b);
+        this.writeNode("feature:_typeName", b, a);
+        return a;
+      },
+      Update: function (a) {
+        var b = a.feature;
+        a = a.options;
+        a = this.createElementNSPlus("wfs:Update", {
+          attributes: {
+            handle: a && a.handle,
+            typeName: (this.featureNS ? this.featurePrefix + ":" : "") + this.featureType,
+          },
+        });
+        this.featureNS && a.setAttribute("xmlns:" + this.featurePrefix, this.featureNS);
+        var c = b.modified;
+        null === this.geometryName ||
+          (c && void 0 === c.geometry) ||
+          ((this.srsName = this.getSrsName(b)),
+          this.writeNode("Property", { name: this.geometryName, value: b.geometry }, a));
+        for (var d in b.attributes)
+          void 0 === b.attributes[d] ||
+            (c && c.attributes && (!c.attributes || void 0 === c.attributes[d])) ||
+            this.writeNode("Property", { name: d, value: b.attributes[d] }, a);
+        this.writeNode("ogc:Filter", new OpenLayers.Filter.FeatureId({ fids: [b.fid] }), a);
+        return a;
+      },
+      Property: function (a) {
+        var b = this.createElementNSPlus("wfs:Property");
+        this.writeNode("Name", a.name, b);
+        null !== a.value && this.writeNode("Value", a.value, b);
+        return b;
+      },
+      Name: function (a) {
+        return this.createElementNSPlus("wfs:Name", { value: a });
+      },
+      Value: function (a) {
+        var b;
+        a instanceof OpenLayers.Geometry
+          ? ((b = this.createElementNSPlus("wfs:Value")),
+            (a = this.writeNode("feature:_geometry", a).firstChild),
+            b.appendChild(a))
+          : (b = this.createElementNSPlus("wfs:Value", { value: a }));
+        return b;
+      },
+      Delete: function (a) {
+        var b = a.feature;
+        a = a.options;
+        a = this.createElementNSPlus("wfs:Delete", {
+          attributes: {
+            handle: a && a.handle,
+            typeName: (this.featureNS ? this.featurePrefix + ":" : "") + this.featureType,
+          },
+        });
+        this.featureNS && a.setAttribute("xmlns:" + this.featurePrefix, this.featureNS);
+        this.writeNode("ogc:Filter", new OpenLayers.Filter.FeatureId({ fids: [b.fid] }), a);
+        return a;
+      },
+    },
+  },
+  schemaLocationAttr: function (a) {
+    a = OpenLayers.Util.extend({ featurePrefix: this.featurePrefix, schema: this.schema }, a);
+    var b = OpenLayers.Util.extend({}, this.schemaLocations);
+    a.schema && (b[a.featurePrefix] = a.schema);
+    a = [];
+    var c, d;
+    for (d in b) (c = this.namespaces[d]) && a.push(c + " " + b[d]);
+    return a.join(" ") || void 0;
+  },
+  setFilterProperty: function (a) {
+    if (a.filters)
+      for (var b = 0, c = a.filters.length; b < c; ++b)
+        OpenLayers.Format.WFST.v1.prototype.setFilterProperty.call(this, a.filters[b]);
+    else a instanceof OpenLayers.Filter.Spatial && !a.property && (a.property = this.geometryName);
+  },
+  CLASS_NAME: "OpenLayers.Format.WFST.v1",
+});
+OpenLayers.Format.OGCExceptionReport = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: { ogc: "http://www.opengis.net/ogc" },
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  defaultPrefix: "ogc",
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    var b = { exceptionReport: null };
+    a.documentElement &&
+      (this.readChildNodes(a, b),
+      null === b.exceptionReport && (b = new OpenLayers.Format.OWSCommon().read(a)));
+    return b;
+  },
+  readers: {
+    ogc: {
+      ServiceExceptionReport: function (a, b) {
+        b.exceptionReport = { exceptions: [] };
+        this.readChildNodes(a, b.exceptionReport);
+      },
+      ServiceException: function (a, b) {
+        var c = {
+          code: a.getAttribute("code"),
+          locator: a.getAttribute("locator"),
+          text: this.getChildValue(a),
+        };
+        b.exceptions.push(c);
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.OGCExceptionReport",
+});
+OpenLayers.Format.XML.VersionedOGC = OpenLayers.Class(OpenLayers.Format.XML, {
+  defaultVersion: null,
+  version: null,
+  profile: null,
+  allowFallback: !1,
+  name: null,
+  stringifyOutput: !1,
+  parser: null,
+  initialize: function (a) {
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+    a = this.CLASS_NAME;
+    this.name = a.substring(a.lastIndexOf(".") + 1);
+  },
+  getVersion: function (a, b) {
+    var c;
+    a
+      ? ((c = this.version), c || ((c = a.getAttribute("version")), c || (c = this.defaultVersion)))
+      : (c = (b && b.version) || this.version || this.defaultVersion);
+    return c;
+  },
+  getParser: function (a) {
+    a = a || this.defaultVersion;
+    var b = this.profile ? "_" + this.profile : "";
+    if (!this.parser || this.parser.VERSION != a) {
+      var c = OpenLayers.Format[this.name]["v" + a.replace(/\./g, "_") + b];
+      if (
+        !c &&
+        ("" !== b &&
+          this.allowFallback &&
+          ((b = ""), (c = OpenLayers.Format[this.name]["v" + a.replace(/\./g, "_")])),
+        !c)
+      )
+        throw "Can't find a " + this.name + " parser for version " + a + b;
+      this.parser = new c(this.options);
+    }
+    return this.parser;
+  },
+  write: function (a, b) {
+    var c = this.getVersion(null, b);
+    this.parser = this.getParser(c);
+    c = this.parser.write(a, b);
+    return !1 === this.stringifyOutput ? c : OpenLayers.Format.XML.prototype.write.apply(this, [c]);
+  },
+  read: function (a, b) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    var c = this.getVersion(a.documentElement);
+    this.parser = this.getParser(c);
+    var d = this.parser.read(a, b),
+      e = this.parser.errorProperty || null;
+    null !== e &&
+      void 0 === d[e] &&
+      ((e = new OpenLayers.Format.OGCExceptionReport()), (d.error = e.read(a)));
+    d.version = c;
+    return d;
+  },
+  CLASS_NAME: "OpenLayers.Format.XML.VersionedOGC",
+});
+OpenLayers.Filter.Logical = OpenLayers.Class(OpenLayers.Filter, {
+  filters: null,
+  type: null,
+  initialize: function (a) {
+    this.filters = [];
+    OpenLayers.Filter.prototype.initialize.apply(this, [a]);
+  },
+  destroy: function () {
+    this.filters = null;
+    OpenLayers.Filter.prototype.destroy.apply(this);
+  },
+  evaluate: function (a) {
+    var b, c;
+    switch (this.type) {
+      case OpenLayers.Filter.Logical.AND:
+        b = 0;
+        for (c = this.filters.length; b < c; b++) if (!1 == this.filters[b].evaluate(a)) return !1;
+        return !0;
+      case OpenLayers.Filter.Logical.OR:
+        b = 0;
+        for (c = this.filters.length; b < c; b++) if (!0 == this.filters[b].evaluate(a)) return !0;
+        return !1;
+      case OpenLayers.Filter.Logical.NOT:
+        return !this.filters[0].evaluate(a);
+    }
+  },
+  clone: function () {
+    for (var a = [], b = 0, c = this.filters.length; b < c; ++b) a.push(this.filters[b].clone());
+    return new OpenLayers.Filter.Logical({ type: this.type, filters: a });
+  },
+  CLASS_NAME: "OpenLayers.Filter.Logical",
+});
+OpenLayers.Filter.Logical.AND = "&&";
+OpenLayers.Filter.Logical.OR = "||";
+OpenLayers.Filter.Logical.NOT = "!";
+OpenLayers.Filter.Comparison = OpenLayers.Class(OpenLayers.Filter, {
+  type: null,
+  property: null,
+  value: null,
+  matchCase: !0,
+  lowerBoundary: null,
+  upperBoundary: null,
+  initialize: function (a) {
+    OpenLayers.Filter.prototype.initialize.apply(this, [a]);
+    this.type === OpenLayers.Filter.Comparison.LIKE &&
+      void 0 === a.matchCase &&
+      (this.matchCase = null);
+  },
+  evaluate: function (a) {
+    a instanceof OpenLayers.Feature.Vector && (a = a.attributes);
+    var b = !1;
+    a = a[this.property];
+    switch (this.type) {
+      case OpenLayers.Filter.Comparison.EQUAL_TO:
+        b = this.value;
+        b =
+          this.matchCase || "string" != typeof a || "string" != typeof b
+            ? a == b
+            : a.toUpperCase() == b.toUpperCase();
+        break;
+      case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:
+        b = this.value;
+        b =
+          this.matchCase || "string" != typeof a || "string" != typeof b
+            ? a != b
+            : a.toUpperCase() != b.toUpperCase();
+        break;
+      case OpenLayers.Filter.Comparison.LESS_THAN:
+        b = a < this.value;
+        break;
+      case OpenLayers.Filter.Comparison.GREATER_THAN:
+        b = a > this.value;
+        break;
+      case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:
+        b = a <= this.value;
+        break;
+      case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:
+        b = a >= this.value;
+        break;
+      case OpenLayers.Filter.Comparison.BETWEEN:
+        b = a >= this.lowerBoundary && a <= this.upperBoundary;
+        break;
+      case OpenLayers.Filter.Comparison.LIKE:
+        b = RegExp(this.value, "gi").test(a);
+        break;
+      case OpenLayers.Filter.Comparison.IS_NULL:
+        b = null === a;
+    }
+    return b;
+  },
+  value2regex: function (a, b, c) {
+    if ("." == a)
+      throw Error("'.' is an unsupported wildCard character for OpenLayers.Filter.Comparison");
+    a = a ? a : "*";
+    b = b ? b : ".";
+    this.value = this.value.replace(RegExp("\\" + (c ? c : "!") + "(.|$)", "g"), "\\$1");
+    this.value = this.value.replace(RegExp("\\" + b, "g"), ".");
+    this.value = this.value.replace(RegExp("\\" + a, "g"), ".*");
+    this.value = this.value.replace(RegExp("\\\\.\\*", "g"), "\\" + a);
+    return (this.value = this.value.replace(RegExp("\\\\\\.", "g"), "\\" + b));
+  },
+  regex2value: function () {
+    var a = this.value,
+      a = a.replace(/!/g, "!!"),
+      a = a.replace(/(\\)?\\\./g, function (a, c) {
+        return c ? a : "!.";
+      }),
+      a = a.replace(/(\\)?\\\*/g, function (a, c) {
+        return c ? a : "!*";
+      }),
+      a = a.replace(/\\\\/g, "\\");
+    return (a = a.replace(/\.\*/g, "*"));
+  },
+  clone: function () {
+    return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison(), this);
+  },
+  CLASS_NAME: "OpenLayers.Filter.Comparison",
+});
+OpenLayers.Filter.Comparison.EQUAL_TO = "==";
+OpenLayers.Filter.Comparison.NOT_EQUAL_TO = "!=";
+OpenLayers.Filter.Comparison.LESS_THAN = "<";
+OpenLayers.Filter.Comparison.GREATER_THAN = ">";
+OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO = "<=";
+OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO = ">=";
+OpenLayers.Filter.Comparison.BETWEEN = "..";
+OpenLayers.Filter.Comparison.LIKE = "~";
+OpenLayers.Filter.Comparison.IS_NULL = "NULL";
+OpenLayers.Format.Filter = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.0.0",
+  CLASS_NAME: "OpenLayers.Format.Filter",
+});
+OpenLayers.Filter.Function = OpenLayers.Class(OpenLayers.Filter, {
+  name: null,
+  params: null,
+  CLASS_NAME: "OpenLayers.Filter.Function",
+});
+OpenLayers.Date = {
+  dateRegEx: /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/,
+  toISOString: (function () {
+    return "toISOString" in Date.prototype
+      ? function (a) {
+          return a.toISOString();
+        }
+      : function (a) {
+          return isNaN(a.getTime())
+            ? "Invalid Date"
+            : a.getUTCFullYear() +
+                "-" +
+                OpenLayers.Number.zeroPad(a.getUTCMonth() + 1, 2) +
+                "-" +
+                OpenLayers.Number.zeroPad(a.getUTCDate(), 2) +
+                "T" +
+                OpenLayers.Number.zeroPad(a.getUTCHours(), 2) +
+                ":" +
+                OpenLayers.Number.zeroPad(a.getUTCMinutes(), 2) +
+                ":" +
+                OpenLayers.Number.zeroPad(a.getUTCSeconds(), 2) +
+                "." +
+                OpenLayers.Number.zeroPad(a.getUTCMilliseconds(), 3) +
+                "Z";
+        };
+  })(),
+  parse: function (a) {
+    var b;
+    if ((a = a.match(this.dateRegEx)) && (a[1] || a[7])) {
+      b = parseInt(a[1], 10) || 0;
+      var c = parseInt(a[2], 10) - 1 || 0,
+        d = parseInt(a[3], 10) || 1;
+      b = new Date(Date.UTC(b, c, d));
+      if ((c = a[7])) {
+        var d = parseInt(a[4], 10),
+          e = parseInt(a[5], 10),
+          f = parseFloat(a[6]),
+          g = f | 0,
+          f = Math.round(1e3 * (f - g));
+        b.setUTCHours(d, e, g, f);
+        "Z" !== c &&
+          ((c = parseInt(c, 10)),
+          (a = parseInt(a[8], 10) || 0),
+          (a = -1e3 * (60 * 60 * c + 60 * a)),
+          (b = new Date(b.getTime() + a)));
+      }
+    } else b = new Date("invalid");
+    return b;
+  },
+};
+OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    ogc: "http://www.opengis.net/ogc",
+    gml: "http://www.opengis.net/gml",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  defaultPrefix: "ogc",
+  schemaLocation: null,
+  initialize: function (a) {
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    var b = {};
+    this.readers.ogc.Filter.apply(this, [a, b]);
+    return b.filter;
+  },
+  readers: {
+    ogc: {
+      _expression: function (a) {
+        for (var b = "", c = a.firstChild; c; c = c.nextSibling)
+          switch (c.nodeType) {
+            case 1:
+              a = this.readNode(c);
+              a.property ? (b += "${" + a.property + "}") : void 0 !== a.value && (b += a.value);
+              break;
+            case 3:
+            case 4:
+              b += c.nodeValue;
+          }
+        return b;
+      },
+      Filter: function (a, b) {
+        var c = { fids: [], filters: [] };
+        this.readChildNodes(a, c);
+        0 < c.fids.length
+          ? (b.filter = new OpenLayers.Filter.FeatureId({ fids: c.fids }))
+          : 0 < c.filters.length && (b.filter = c.filters[0]);
+      },
+      FeatureId: function (a, b) {
+        var c = a.getAttribute("fid");
+        c && b.fids.push(c);
+      },
+      And: function (a, b) {
+        var c = new OpenLayers.Filter.Logical({ type: OpenLayers.Filter.Logical.AND });
+        this.readChildNodes(a, c);
+        b.filters.push(c);
+      },
+      Or: function (a, b) {
+        var c = new OpenLayers.Filter.Logical({ type: OpenLayers.Filter.Logical.OR });
+        this.readChildNodes(a, c);
+        b.filters.push(c);
+      },
+      Not: function (a, b) {
+        var c = new OpenLayers.Filter.Logical({ type: OpenLayers.Filter.Logical.NOT });
+        this.readChildNodes(a, c);
+        b.filters.push(c);
+      },
+      PropertyIsLessThan: function (a, b) {
+        var c = new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.LESS_THAN });
+        this.readChildNodes(a, c);
+        b.filters.push(c);
+      },
+      PropertyIsGreaterThan: function (a, b) {
+        var c = new OpenLayers.Filter.Comparison({
+          type: OpenLayers.Filter.Comparison.GREATER_THAN,
+        });
+        this.readChildNodes(a, c);
+        b.filters.push(c);
+      },
+      PropertyIsLessThanOrEqualTo: function (a, b) {
+        var c = new OpenLayers.Filter.Comparison({
+          type: OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,
+        });
+        this.readChildNodes(a, c);
+        b.filters.push(c);
+      },
+      PropertyIsGreaterThanOrEqualTo: function (a, b) {
+        var c = new OpenLayers.Filter.Comparison({
+          type: OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,
+        });
+        this.readChildNodes(a, c);
+        b.filters.push(c);
+      },
+      PropertyIsBetween: function (a, b) {
+        var c = new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.BETWEEN });
+        this.readChildNodes(a, c);
+        b.filters.push(c);
+      },
+      Literal: function (a, b) {
+        b.value = OpenLayers.String.numericIf(this.getChildValue(a), !0);
+      },
+      PropertyName: function (a, b) {
+        b.property = this.getChildValue(a);
+      },
+      LowerBoundary: function (a, b) {
+        b.lowerBoundary = OpenLayers.String.numericIf(
+          this.readers.ogc._expression.call(this, a),
+          !0
+        );
+      },
+      UpperBoundary: function (a, b) {
+        b.upperBoundary = OpenLayers.String.numericIf(
+          this.readers.ogc._expression.call(this, a),
+          !0
+        );
+      },
+      Intersects: function (a, b) {
+        this.readSpatial(a, b, OpenLayers.Filter.Spatial.INTERSECTS);
+      },
+      Within: function (a, b) {
+        this.readSpatial(a, b, OpenLayers.Filter.Spatial.WITHIN);
+      },
+      Contains: function (a, b) {
+        this.readSpatial(a, b, OpenLayers.Filter.Spatial.CONTAINS);
+      },
+      DWithin: function (a, b) {
+        this.readSpatial(a, b, OpenLayers.Filter.Spatial.DWITHIN);
+      },
+      Distance: function (a, b) {
+        b.distance = parseInt(this.getChildValue(a));
+        b.distanceUnits = a.getAttribute("units");
+      },
+      Function: function (a, b) {},
+      PropertyIsNull: function (a, b) {
+        var c = new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.IS_NULL });
+        this.readChildNodes(a, c);
+        b.filters.push(c);
+      },
+    },
+  },
+  readSpatial: function (a, b, c) {
+    c = new OpenLayers.Filter.Spatial({ type: c });
+    this.readChildNodes(a, c);
+    c.value = c.components[0];
+    delete c.components;
+    b.filters.push(c);
+  },
+  encodeLiteral: function (a) {
+    a instanceof Date && (a = OpenLayers.Date.toISOString(a));
+    return a;
+  },
+  writeOgcExpression: function (a, b) {
+    a instanceof OpenLayers.Filter.Function
+      ? this.writeNode("Function", a, b)
+      : this.writeNode("Literal", a, b);
+    return b;
+  },
+  write: function (a) {
+    return this.writers.ogc.Filter.apply(this, [a]);
+  },
+  writers: {
+    ogc: {
+      Filter: function (a) {
+        var b = this.createElementNSPlus("ogc:Filter");
+        this.writeNode(this.getFilterType(a), a, b);
+        return b;
+      },
+      _featureIds: function (a) {
+        for (var b = this.createDocumentFragment(), c = 0, d = a.fids.length; c < d; ++c)
+          this.writeNode("ogc:FeatureId", a.fids[c], b);
+        return b;
+      },
+      FeatureId: function (a) {
+        return this.createElementNSPlus("ogc:FeatureId", { attributes: { fid: a } });
+      },
+      And: function (a) {
+        for (
+          var b = this.createElementNSPlus("ogc:And"), c, d = 0, e = a.filters.length;
+          d < e;
+          ++d
+        )
+          (c = a.filters[d]), this.writeNode(this.getFilterType(c), c, b);
+        return b;
+      },
+      Or: function (a) {
+        for (var b = this.createElementNSPlus("ogc:Or"), c, d = 0, e = a.filters.length; d < e; ++d)
+          (c = a.filters[d]), this.writeNode(this.getFilterType(c), c, b);
+        return b;
+      },
+      Not: function (a) {
+        var b = this.createElementNSPlus("ogc:Not");
+        a = a.filters[0];
+        this.writeNode(this.getFilterType(a), a, b);
+        return b;
+      },
+      PropertyIsLessThan: function (a) {
+        var b = this.createElementNSPlus("ogc:PropertyIsLessThan");
+        this.writeNode("PropertyName", a, b);
+        this.writeOgcExpression(a.value, b);
+        return b;
+      },
+      PropertyIsGreaterThan: function (a) {
+        var b = this.createElementNSPlus("ogc:PropertyIsGreaterThan");
+        this.writeNode("PropertyName", a, b);
+        this.writeOgcExpression(a.value, b);
+        return b;
+      },
+      PropertyIsLessThanOrEqualTo: function (a) {
+        var b = this.createElementNSPlus("ogc:PropertyIsLessThanOrEqualTo");
+        this.writeNode("PropertyName", a, b);
+        this.writeOgcExpression(a.value, b);
+        return b;
+      },
+      PropertyIsGreaterThanOrEqualTo: function (a) {
+        var b = this.createElementNSPlus("ogc:PropertyIsGreaterThanOrEqualTo");
+        this.writeNode("PropertyName", a, b);
+        this.writeOgcExpression(a.value, b);
+        return b;
+      },
+      PropertyIsBetween: function (a) {
+        var b = this.createElementNSPlus("ogc:PropertyIsBetween");
+        this.writeNode("PropertyName", a, b);
+        this.writeNode("LowerBoundary", a, b);
+        this.writeNode("UpperBoundary", a, b);
+        return b;
+      },
+      PropertyName: function (a) {
+        return this.createElementNSPlus("ogc:PropertyName", { value: a.property });
+      },
+      Literal: function (a) {
+        return this.createElementNSPlus("ogc:Literal", {
+          value: (this.encodeLiteral || OpenLayers.Format.Filter.v1.prototype.encodeLiteral)(a),
+        });
+      },
+      LowerBoundary: function (a) {
+        var b = this.createElementNSPlus("ogc:LowerBoundary");
+        this.writeOgcExpression(a.lowerBoundary, b);
+        return b;
+      },
+      UpperBoundary: function (a) {
+        var b = this.createElementNSPlus("ogc:UpperBoundary");
+        this.writeNode("Literal", a.upperBoundary, b);
+        return b;
+      },
+      INTERSECTS: function (a) {
+        return this.writeSpatial(a, "Intersects");
+      },
+      WITHIN: function (a) {
+        return this.writeSpatial(a, "Within");
+      },
+      CONTAINS: function (a) {
+        return this.writeSpatial(a, "Contains");
+      },
+      DWITHIN: function (a) {
+        var b = this.writeSpatial(a, "DWithin");
+        this.writeNode("Distance", a, b);
+        return b;
+      },
+      Distance: function (a) {
+        return this.createElementNSPlus("ogc:Distance", {
+          attributes: { units: a.distanceUnits },
+          value: a.distance,
+        });
+      },
+      Function: function (a) {
+        var b = this.createElementNSPlus("ogc:Function", { attributes: { name: a.name } });
+        a = a.params;
+        for (var c = 0, d = a.length; c < d; c++) this.writeOgcExpression(a[c], b);
+        return b;
+      },
+      PropertyIsNull: function (a) {
+        var b = this.createElementNSPlus("ogc:PropertyIsNull");
+        this.writeNode("PropertyName", a, b);
+        return b;
+      },
+    },
+  },
+  getFilterType: function (a) {
+    var b = this.filterMap[a.type];
+    if (!b) throw "Filter writing not supported for rule type: " + a.type;
+    return b;
+  },
+  filterMap: {
+    "&&": "And",
+    "||": "Or",
+    "!": "Not",
+    "==": "PropertyIsEqualTo",
+    "!=": "PropertyIsNotEqualTo",
+    "<": "PropertyIsLessThan",
+    ">": "PropertyIsGreaterThan",
+    "<=": "PropertyIsLessThanOrEqualTo",
+    ">=": "PropertyIsGreaterThanOrEqualTo",
+    "..": "PropertyIsBetween",
+    "~": "PropertyIsLike",
+    NULL: "PropertyIsNull",
+    BBOX: "BBOX",
+    DWITHIN: "DWITHIN",
+    WITHIN: "WITHIN",
+    CONTAINS: "CONTAINS",
+    INTERSECTS: "INTERSECTS",
+    FID: "_featureIds",
+  },
+  CLASS_NAME: "OpenLayers.Format.Filter.v1",
+});
+OpenLayers.Geometry = OpenLayers.Class({
+  id: null,
+  parent: null,
+  bounds: null,
+  initialize: function () {
+    this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
+  },
+  destroy: function () {
+    this.bounds = this.id = null;
+  },
+  clone: function () {
+    return new OpenLayers.Geometry();
+  },
+  setBounds: function (a) {
+    a && (this.bounds = a.clone());
+  },
+  clearBounds: function () {
+    this.bounds = null;
+    this.parent && this.parent.clearBounds();
+  },
+  extendBounds: function (a) {
+    this.getBounds() ? this.bounds.extend(a) : this.setBounds(a);
+  },
+  getBounds: function () {
+    null == this.bounds && this.calculateBounds();
+    return this.bounds;
+  },
+  calculateBounds: function () {},
+  distanceTo: function (a, b) {},
+  getVertices: function (a) {},
+  atPoint: function (a, b, c) {
+    var d = !1;
+    null != this.getBounds() &&
+      null != a &&
+      ((b = null != b ? b : 0),
+      (c = null != c ? c : 0),
+      (d = new OpenLayers.Bounds(
+        this.bounds.left - b,
+        this.bounds.bottom - c,
+        this.bounds.right + b,
+        this.bounds.top + c
+      ).containsLonLat(a)));
+    return d;
+  },
+  getLength: function () {
+    return 0;
+  },
+  getArea: function () {
+    return 0;
+  },
+  getCentroid: function () {
+    return null;
+  },
+  toString: function () {
+    return OpenLayers.Format && OpenLayers.Format.WKT
+      ? OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this))
+      : Object.prototype.toString.call(this);
+  },
+  CLASS_NAME: "OpenLayers.Geometry",
+});
+OpenLayers.Geometry.fromWKT = function (a) {
+  var b;
+  if (OpenLayers.Format && OpenLayers.Format.WKT) {
+    var c = OpenLayers.Geometry.fromWKT.format;
+    c || ((c = new OpenLayers.Format.WKT()), (OpenLayers.Geometry.fromWKT.format = c));
+    a = c.read(a);
+    if (a instanceof OpenLayers.Feature.Vector) b = a.geometry;
+    else if (OpenLayers.Util.isArray(a)) {
+      b = a.length;
+      for (var c = Array(b), d = 0; d < b; ++d) c[d] = a[d].geometry;
+      b = new OpenLayers.Geometry.Collection(c);
+    }
+  }
+  return b;
+};
+OpenLayers.Geometry.segmentsIntersect = function (a, b, c) {
+  var d = c && c.point;
+  c = c && c.tolerance;
+  var e = !1,
+    f = a.x1 - b.x1,
+    g = a.y1 - b.y1,
+    h = a.x2 - a.x1,
+    k = a.y2 - a.y1,
+    l = b.y2 - b.y1,
+    m = b.x2 - b.x1,
+    n = l * h - m * k,
+    l = m * g - l * f,
+    g = h * g - k * f;
+  0 == n
+    ? 0 == l && 0 == g && (e = !0)
+    : ((f = l / n),
+      (n = g / n),
+      0 <= f &&
+        1 >= f &&
+        0 <= n &&
+        1 >= n &&
+        (d
+          ? ((h = a.x1 + f * h), (n = a.y1 + f * k), (e = new OpenLayers.Geometry.Point(h, n)))
+          : (e = !0)));
+  if (c)
+    if (e) {
+      if (d)
+        a: for (a = [a, b], b = 0; 2 > b; ++b)
+          for (f = a[b], k = 1; 3 > k; ++k)
+            if (
+              ((h = f["x" + k]),
+              (n = f["y" + k]),
+              (d = Math.sqrt(Math.pow(h - e.x, 2) + Math.pow(n - e.y, 2))),
+              d < c)
+            ) {
+              e.x = h;
+              e.y = n;
+              break a;
+            }
+    } else
+      a: for (a = [a, b], b = 0; 2 > b; ++b)
+        for (h = a[b], n = a[(b + 1) % 2], k = 1; 3 > k; ++k)
+          if (
+            ((f = { x: h["x" + k], y: h["y" + k] }),
+            (g = OpenLayers.Geometry.distanceToSegment(f, n)),
+            g.distance < c)
+          ) {
+            e = d ? new OpenLayers.Geometry.Point(f.x, f.y) : !0;
+            break a;
+          }
+  return e;
+};
+OpenLayers.Geometry.distanceToSegment = function (a, b) {
+  var c = OpenLayers.Geometry.distanceSquaredToSegment(a, b);
+  c.distance = Math.sqrt(c.distance);
+  return c;
+};
+OpenLayers.Geometry.distanceSquaredToSegment = function (a, b) {
+  var c = a.x,
+    d = a.y,
+    e = b.x1,
+    f = b.y1,
+    g = b.x2,
+    h = b.y2,
+    k = g - e,
+    l = h - f,
+    m = (k * (c - e) + l * (d - f)) / (Math.pow(k, 2) + Math.pow(l, 2));
+  0 >= m || (1 <= m ? ((e = g), (f = h)) : ((e += m * k), (f += m * l)));
+  return { distance: Math.pow(e - c, 2) + Math.pow(f - d, 2), x: e, y: f, along: m };
+};
+OpenLayers.Geometry.Point = OpenLayers.Class(OpenLayers.Geometry, {
+  x: null,
+  y: null,
+  initialize: function (a, b) {
+    OpenLayers.Geometry.prototype.initialize.apply(this, arguments);
+    this.x = parseFloat(a);
+    this.y = parseFloat(b);
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Geometry.Point(this.x, this.y));
+    OpenLayers.Util.applyDefaults(a, this);
+    return a;
+  },
+  calculateBounds: function () {
+    this.bounds = new OpenLayers.Bounds(this.x, this.y, this.x, this.y);
+  },
+  distanceTo: function (a, b) {
+    var c = !(b && !1 === b.edge) && b && b.details,
+      d,
+      e,
+      f,
+      g,
+      h;
+    a instanceof OpenLayers.Geometry.Point
+      ? ((e = this.x),
+        (f = this.y),
+        (g = a.x),
+        (h = a.y),
+        (d = Math.sqrt(Math.pow(e - g, 2) + Math.pow(f - h, 2))),
+        (d = c ? { x0: e, y0: f, x1: g, y1: h, distance: d } : d))
+      : ((d = a.distanceTo(this, b)),
+        c && (d = { x0: d.x1, y0: d.y1, x1: d.x0, y1: d.y0, distance: d.distance }));
+    return d;
+  },
+  equals: function (a) {
+    var b = !1;
+    null != a &&
+      (b =
+        (this.x == a.x && this.y == a.y) ||
+        (isNaN(this.x) && isNaN(this.y) && isNaN(a.x) && isNaN(a.y)));
+    return b;
+  },
+  toShortString: function () {
+    return this.x + ", " + this.y;
+  },
+  move: function (a, b) {
+    this.x += a;
+    this.y += b;
+    this.clearBounds();
+  },
+  rotate: function (a, b) {
+    a *= Math.PI / 180;
+    var c = this.distanceTo(b),
+      d = a + Math.atan2(this.y - b.y, this.x - b.x);
+    this.x = b.x + c * Math.cos(d);
+    this.y = b.y + c * Math.sin(d);
+    this.clearBounds();
+  },
+  getCentroid: function () {
+    return new OpenLayers.Geometry.Point(this.x, this.y);
+  },
+  resize: function (a, b, c) {
+    this.x = b.x + a * (void 0 == c ? 1 : c) * (this.x - b.x);
+    this.y = b.y + a * (this.y - b.y);
+    this.clearBounds();
+    return this;
+  },
+  intersects: function (a) {
+    var b = !1;
+    return (b = "OpenLayers.Geometry.Point" == a.CLASS_NAME ? this.equals(a) : a.intersects(this));
+  },
+  transform: function (a, b) {
+    a && b && (OpenLayers.Projection.transform(this, a, b), (this.bounds = null));
+    return this;
+  },
+  getVertices: function (a) {
+    return [this];
+  },
+  CLASS_NAME: "OpenLayers.Geometry.Point",
+});
+OpenLayers.Geometry.Collection = OpenLayers.Class(OpenLayers.Geometry, {
+  components: null,
+  componentTypes: null,
+  initialize: function (a) {
+    OpenLayers.Geometry.prototype.initialize.apply(this, arguments);
+    this.components = [];
+    null != a && this.addComponents(a);
+  },
+  destroy: function () {
+    this.components.length = 0;
+    this.components = null;
+    OpenLayers.Geometry.prototype.destroy.apply(this, arguments);
+  },
+  clone: function () {
+    for (
+      var a = eval("new " + this.CLASS_NAME + "()"), b = 0, c = this.components.length;
+      b < c;
+      b++
+    )
+      a.addComponent(this.components[b].clone());
+    OpenLayers.Util.applyDefaults(a, this);
+    return a;
+  },
+  getComponentsString: function () {
+    for (var a = [], b = 0, c = this.components.length; b < c; b++)
+      a.push(this.components[b].toShortString());
+    return a.join(",");
+  },
+  calculateBounds: function () {
+    this.bounds = null;
+    var a = new OpenLayers.Bounds(),
+      b = this.components;
+    if (b) for (var c = 0, d = b.length; c < d; c++) a.extend(b[c].getBounds());
+    null != a.left && null != a.bottom && null != a.right && null != a.top && this.setBounds(a);
+  },
+  addComponents: function (a) {
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    for (var b = 0, c = a.length; b < c; b++) this.addComponent(a[b]);
+  },
+  addComponent: function (a, b) {
+    var c = !1;
+    if (
+      a &&
+      (null == this.componentTypes ||
+        -1 < OpenLayers.Util.indexOf(this.componentTypes, a.CLASS_NAME))
+    ) {
+      if (null != b && b < this.components.length) {
+        var c = this.components.slice(0, b),
+          d = this.components.slice(b, this.components.length);
+        c.push(a);
+        this.components = c.concat(d);
+      } else this.components.push(a);
+      a.parent = this;
+      this.clearBounds();
+      c = !0;
+    }
+    return c;
+  },
+  removeComponents: function (a) {
+    var b = !1;
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    for (var c = a.length - 1; 0 <= c; --c) b = this.removeComponent(a[c]) || b;
+    return b;
+  },
+  removeComponent: function (a) {
+    OpenLayers.Util.removeItem(this.components, a);
+    this.clearBounds();
+    return !0;
+  },
+  getLength: function () {
+    for (var a = 0, b = 0, c = this.components.length; b < c; b++)
+      a += this.components[b].getLength();
+    return a;
+  },
+  getArea: function () {
+    for (var a = 0, b = 0, c = this.components.length; b < c; b++)
+      a += this.components[b].getArea();
+    return a;
+  },
+  getGeodesicArea: function (a) {
+    for (var b = 0, c = 0, d = this.components.length; c < d; c++)
+      b += this.components[c].getGeodesicArea(a);
+    return b;
+  },
+  getCentroid: function (a) {
+    if (!a) return this.components.length && this.components[0].getCentroid();
+    a = this.components.length;
+    if (!a) return !1;
+    for (var b = [], c = [], d = 0, e = Number.MAX_VALUE, f, g = 0; g < a; ++g) {
+      f = this.components[g];
+      var h = f.getArea();
+      f = f.getCentroid(!0);
+      isNaN(h) ||
+        isNaN(f.x) ||
+        isNaN(f.y) ||
+        (b.push(h), (d += h), (e = h < e && 0 < h ? h : e), c.push(f));
+    }
+    a = b.length;
+    if (0 === d) {
+      for (g = 0; g < a; ++g) b[g] = 1;
+      d = b.length;
+    } else {
+      for (g = 0; g < a; ++g) b[g] /= e;
+      d /= e;
+    }
+    for (var k = (e = 0), g = 0; g < a; ++g) (f = c[g]), (h = b[g]), (e += f.x * h), (k += f.y * h);
+    return new OpenLayers.Geometry.Point(e / d, k / d);
+  },
+  getGeodesicLength: function (a) {
+    for (var b = 0, c = 0, d = this.components.length; c < d; c++)
+      b += this.components[c].getGeodesicLength(a);
+    return b;
+  },
+  move: function (a, b) {
+    for (var c = 0, d = this.components.length; c < d; c++) this.components[c].move(a, b);
+  },
+  rotate: function (a, b) {
+    for (var c = 0, d = this.components.length; c < d; ++c) this.components[c].rotate(a, b);
+  },
+  resize: function (a, b, c) {
+    for (var d = 0; d < this.components.length; ++d) this.components[d].resize(a, b, c);
+    return this;
+  },
+  distanceTo: function (a, b) {
+    for (
+      var c = !(b && !1 === b.edge) && b && b.details,
+        d,
+        e,
+        f,
+        g = Number.POSITIVE_INFINITY,
+        h = 0,
+        k = this.components.length;
+      h < k &&
+      !((d = this.components[h].distanceTo(a, b)),
+      (f = c ? d.distance : d),
+      f < g && ((g = f), (e = d), 0 == g));
+      ++h
+    );
+    return e;
+  },
+  equals: function (a) {
+    var b = !0;
+    if (a && a.CLASS_NAME && this.CLASS_NAME == a.CLASS_NAME)
+      if (OpenLayers.Util.isArray(a.components) && a.components.length == this.components.length)
+        for (var c = 0, d = this.components.length; c < d; ++c) {
+          if (!this.components[c].equals(a.components[c])) {
+            b = !1;
+            break;
+          }
+        }
+      else b = !1;
+    else b = !1;
+    return b;
+  },
+  transform: function (a, b) {
+    if (a && b) {
+      for (var c = 0, d = this.components.length; c < d; c++) this.components[c].transform(a, b);
+      this.bounds = null;
+    }
+    return this;
+  },
+  intersects: function (a) {
+    for (
+      var b = !1, c = 0, d = this.components.length;
+      c < d && !(b = a.intersects(this.components[c]));
+      ++c
+    );
+    return b;
+  },
+  getVertices: function (a) {
+    for (var b = [], c = 0, d = this.components.length; c < d; ++c)
+      Array.prototype.push.apply(b, this.components[c].getVertices(a));
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Geometry.Collection",
+});
+OpenLayers.Geometry.MultiPoint = OpenLayers.Class(OpenLayers.Geometry.Collection, {
+  componentTypes: ["OpenLayers.Geometry.Point"],
+  addPoint: function (a, b) {
+    this.addComponent(a, b);
+  },
+  removePoint: function (a) {
+    this.removeComponent(a);
+  },
+  CLASS_NAME: "OpenLayers.Geometry.MultiPoint",
+});
+OpenLayers.Geometry.Curve = OpenLayers.Class(OpenLayers.Geometry.MultiPoint, {
+  componentTypes: ["OpenLayers.Geometry.Point"],
+  getLength: function () {
+    var a = 0;
+    if (this.components && 1 < this.components.length)
+      for (var b = 1, c = this.components.length; b < c; b++)
+        a += this.components[b - 1].distanceTo(this.components[b]);
+    return a;
+  },
+  getGeodesicLength: function (a) {
+    var b = this;
+    if (a) {
+      var c = new OpenLayers.Projection("EPSG:4326");
+      c.equals(a) || (b = this.clone().transform(a, c));
+    }
+    a = 0;
+    if (b.components && 1 < b.components.length)
+      for (var d, e = 1, f = b.components.length; e < f; e++)
+        (c = b.components[e - 1]),
+          (d = b.components[e]),
+          (a += OpenLayers.Util.distVincenty({ lon: c.x, lat: c.y }, { lon: d.x, lat: d.y }));
+    return 1e3 * a;
+  },
+  CLASS_NAME: "OpenLayers.Geometry.Curve",
+});
+OpenLayers.Geometry.LineString = OpenLayers.Class(OpenLayers.Geometry.Curve, {
+  removeComponent: function (a) {
+    var b = this.components && 2 < this.components.length;
+    b && OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this, arguments);
+    return b;
+  },
+  intersects: function (a) {
+    var b = !1,
+      c = a.CLASS_NAME;
+    if (
+      "OpenLayers.Geometry.LineString" == c ||
+      "OpenLayers.Geometry.LinearRing" == c ||
+      "OpenLayers.Geometry.Point" == c
+    ) {
+      var d = this.getSortedSegments();
+      a =
+        "OpenLayers.Geometry.Point" == c
+          ? [{ x1: a.x, y1: a.y, x2: a.x, y2: a.y }]
+          : a.getSortedSegments();
+      var e,
+        f,
+        g,
+        h,
+        k,
+        l,
+        m,
+        n = 0,
+        p = d.length;
+      a: for (; n < p; ++n) {
+        c = d[n];
+        e = c.x1;
+        f = c.x2;
+        g = c.y1;
+        h = c.y2;
+        var q = 0,
+          r = a.length;
+        for (; q < r; ++q) {
+          k = a[q];
+          if (k.x1 > f) break;
+          if (
+            !(
+              k.x2 < e ||
+              ((l = k.y1),
+              (m = k.y2),
+              Math.min(l, m) > Math.max(g, h) ||
+                Math.max(l, m) < Math.min(g, h) ||
+                !OpenLayers.Geometry.segmentsIntersect(c, k))
+            )
+          ) {
+            b = !0;
+            break a;
+          }
+        }
+      }
+    } else b = a.intersects(this);
+    return b;
+  },
+  getSortedSegments: function () {
+    for (var a = this.components.length - 1, b = Array(a), c, d, e = 0; e < a; ++e)
+      (c = this.components[e]),
+        (d = this.components[e + 1]),
+        (b[e] =
+          c.x < d.x
+            ? { x1: c.x, y1: c.y, x2: d.x, y2: d.y }
+            : { x1: d.x, y1: d.y, x2: c.x, y2: c.y });
+    return b.sort(function (a, b) {
+      return a.x1 - b.x1;
+    });
+  },
+  splitWithSegment: function (a, b) {
+    for (
+      var c = !(b && !1 === b.edge),
+        d = b && b.tolerance,
+        e = [],
+        f = this.getVertices(),
+        g = [],
+        h = [],
+        k = !1,
+        l,
+        m,
+        n,
+        p = { point: !0, tolerance: d },
+        q = null,
+        r = 0,
+        s = f.length - 2;
+      r <= s;
+      ++r
+    )
+      if (
+        ((d = f[r]),
+        g.push(d.clone()),
+        (l = f[r + 1]),
+        (m = { x1: d.x, y1: d.y, x2: l.x, y2: l.y }),
+        (m = OpenLayers.Geometry.segmentsIntersect(a, m, p)),
+        m instanceof OpenLayers.Geometry.Point &&
+          ((n =
+            (m.x === a.x1 && m.y === a.y1) ||
+            (m.x === a.x2 && m.y === a.y2) ||
+            m.equals(d) ||
+            m.equals(l)
+              ? !0
+              : !1) ||
+            c))
+      )
+        m.equals(h[h.length - 1]) || h.push(m.clone()),
+          (0 === r && m.equals(d)) ||
+            m.equals(l) ||
+            ((k = !0),
+            m.equals(d) || g.push(m),
+            e.push(new OpenLayers.Geometry.LineString(g)),
+            (g = [m.clone()]));
+    k && (g.push(l.clone()), e.push(new OpenLayers.Geometry.LineString(g)));
+    if (0 < h.length)
+      var t = a.x1 < a.x2 ? 1 : -1,
+        u = a.y1 < a.y2 ? 1 : -1,
+        q = {
+          lines: e,
+          points: h.sort(function (a, b) {
+            return t * a.x - t * b.x || u * a.y - u * b.y;
+          }),
+        };
+    return q;
+  },
+  split: function (a, b) {
+    var c = null,
+      d = b && b.mutual,
+      e,
+      f,
+      g,
+      h;
+    if (a instanceof OpenLayers.Geometry.LineString) {
+      var k = this.getVertices(),
+        l,
+        m,
+        n,
+        p,
+        q,
+        r = [];
+      g = [];
+      for (var s = 0, t = k.length - 2; s <= t; ++s) {
+        l = k[s];
+        m = k[s + 1];
+        n = { x1: l.x, y1: l.y, x2: m.x, y2: m.y };
+        h = h || [a];
+        d && r.push(l.clone());
+        for (var u = 0; u < h.length; ++u)
+          if ((p = h[u].splitWithSegment(n, b)))
+            if (
+              ((q = p.lines),
+              0 < q.length &&
+                (q.unshift(u, 1), Array.prototype.splice.apply(h, q), (u += q.length - 2)),
+              d)
+            )
+              for (var v = 0, w = p.points.length; v < w; ++v)
+                (q = p.points[v]),
+                  q.equals(l) ||
+                    (r.push(q),
+                    g.push(new OpenLayers.Geometry.LineString(r)),
+                    (r = q.equals(m) ? [] : [q.clone()]));
+      }
+      d &&
+        0 < g.length &&
+        0 < r.length &&
+        (r.push(m.clone()), g.push(new OpenLayers.Geometry.LineString(r)));
+    } else c = a.splitWith(this, b);
+    h && 1 < h.length ? (f = !0) : (h = []);
+    g && 1 < g.length ? (e = !0) : (g = []);
+    if (f || e) c = d ? [g, h] : h;
+    return c;
+  },
+  splitWith: function (a, b) {
+    return a.split(this, b);
+  },
+  getVertices: function (a) {
+    return !0 === a
+      ? [this.components[0], this.components[this.components.length - 1]]
+      : !1 === a
+      ? this.components.slice(1, this.components.length - 1)
+      : this.components.slice();
+  },
+  distanceTo: function (a, b) {
+    var c = !(b && !1 === b.edge) && b && b.details,
+      d,
+      e = {},
+      f = Number.POSITIVE_INFINITY;
+    if (a instanceof OpenLayers.Geometry.Point) {
+      for (var g = this.getSortedSegments(), h = a.x, k = a.y, l, m = 0, n = g.length; m < n; ++m)
+        if (((l = g[m]), (d = OpenLayers.Geometry.distanceToSegment(a, l)), d.distance < f)) {
+          if (((f = d.distance), (e = d), 0 === f)) break;
+        } else if (l.x2 > h && ((k > l.y1 && k < l.y2) || (k < l.y1 && k > l.y2))) break;
+      e = c ? { distance: e.distance, x0: e.x, y0: e.y, x1: h, y1: k } : e.distance;
+    } else if (a instanceof OpenLayers.Geometry.LineString) {
+      var g = this.getSortedSegments(),
+        h = a.getSortedSegments(),
+        p,
+        q,
+        r = h.length,
+        s = { point: !0 },
+        m = 0,
+        n = g.length;
+      a: for (; m < n; ++m) {
+        k = g[m];
+        l = k.x1;
+        q = k.y1;
+        for (var t = 0; t < r; ++t)
+          if (((d = h[t]), (p = OpenLayers.Geometry.segmentsIntersect(k, d, s)))) {
+            f = 0;
+            e = { distance: 0, x0: p.x, y0: p.y, x1: p.x, y1: p.y };
+            break a;
+          } else
+            (d = OpenLayers.Geometry.distanceToSegment({ x: l, y: q }, d)),
+              d.distance < f &&
+                ((f = d.distance), (e = { distance: f, x0: l, y0: q, x1: d.x, y1: d.y }));
+      }
+      c || (e = e.distance);
+      0 !== f &&
+        k &&
+        ((d = a.distanceTo(new OpenLayers.Geometry.Point(k.x2, k.y2), b)),
+        (m = c ? d.distance : d),
+        m < f && (e = c ? { distance: f, x0: d.x1, y0: d.y1, x1: d.x0, y1: d.y0 } : m));
+    } else
+      (e = a.distanceTo(this, b)),
+        c && (e = { distance: e.distance, x0: e.x1, y0: e.y1, x1: e.x0, y1: e.y0 });
+    return e;
+  },
+  simplify: function (a) {
+    if (this && null !== this) {
+      var b = this.getVertices();
+      if (3 > b.length) return this;
+      var c = function (a, b, d, k) {
+          for (var l = 0, m = 0, n = b, p; n < d; n++) {
+            p = a[b];
+            var q = a[d],
+              r = a[n],
+              r = Math.abs(
+                0.5 * (p.x * q.y + q.x * r.y + r.x * p.y - q.x * p.y - r.x * q.y - p.x * r.y)
+              );
+            p = Math.sqrt(Math.pow(p.x - q.x, 2) + Math.pow(p.y - q.y, 2));
+            p = 2 * (r / p);
+            p > l && ((l = p), (m = n));
+          }
+          l > k && m != b && (e.push(m), c(a, b, m, k), c(a, m, d, k));
+        },
+        d = b.length - 1,
+        e = [];
+      e.push(0);
+      for (e.push(d); b[0].equals(b[d]); ) d--, e.push(d);
+      c(b, 0, d, a);
+      a = [];
+      e.sort(function (a, b) {
+        return a - b;
+      });
+      for (d = 0; d < e.length; d++) a.push(b[e[d]]);
+      return new OpenLayers.Geometry.LineString(a);
+    }
+    return this;
+  },
+  CLASS_NAME: "OpenLayers.Geometry.LineString",
+});
+OpenLayers.Geometry.MultiLineString = OpenLayers.Class(OpenLayers.Geometry.Collection, {
+  componentTypes: ["OpenLayers.Geometry.LineString"],
+  split: function (a, b) {
+    for (
+      var c = null,
+        d = b && b.mutual,
+        e,
+        f,
+        g,
+        h,
+        k = [],
+        l = [a],
+        m = 0,
+        n = this.components.length;
+      m < n;
+      ++m
+    ) {
+      f = this.components[m];
+      g = !1;
+      for (var p = 0; p < l.length; ++p)
+        if ((e = f.split(l[p], b))) {
+          if (d) {
+            g = e[0];
+            for (var q = 0, r = g.length; q < r; ++q)
+              0 === q && k.length
+                ? k[k.length - 1].addComponent(g[q])
+                : k.push(new OpenLayers.Geometry.MultiLineString([g[q]]));
+            g = !0;
+            e = e[1];
+          }
+          if (e.length) {
+            e.unshift(p, 1);
+            Array.prototype.splice.apply(l, e);
+            break;
+          }
+        }
+      g ||
+        (k.length
+          ? k[k.length - 1].addComponent(f.clone())
+          : (k = [new OpenLayers.Geometry.MultiLineString(f.clone())]));
+    }
+    k && 1 < k.length ? (g = !0) : (k = []);
+    l && 1 < l.length ? (h = !0) : (l = []);
+    if (g || h) c = d ? [k, l] : l;
+    return c;
+  },
+  splitWith: function (a, b) {
+    var c = null,
+      d = b && b.mutual,
+      e,
+      f,
+      g,
+      h,
+      k,
+      l;
+    if (a instanceof OpenLayers.Geometry.LineString) {
+      l = [];
+      k = [a];
+      for (var m = 0, n = this.components.length; m < n; ++m) {
+        g = !1;
+        f = this.components[m];
+        for (var p = 0; p < k.length; ++p)
+          if ((e = k[p].split(f, b))) {
+            d &&
+              ((g = e[0]),
+              g.length &&
+                (g.unshift(p, 1), Array.prototype.splice.apply(k, g), (p += g.length - 2)),
+              (e = e[1]),
+              0 === e.length && (e = [f.clone()]));
+            g = 0;
+            for (var q = e.length; g < q; ++g)
+              0 === g && l.length
+                ? l[l.length - 1].addComponent(e[g])
+                : l.push(new OpenLayers.Geometry.MultiLineString([e[g]]));
+            g = !0;
+          }
+        g ||
+          (l.length
+            ? l[l.length - 1].addComponent(f.clone())
+            : (l = [new OpenLayers.Geometry.MultiLineString([f.clone()])]));
+      }
+    } else c = a.split(this);
+    k && 1 < k.length ? (h = !0) : (k = []);
+    l && 1 < l.length ? (g = !0) : (l = []);
+    if (h || g) c = d ? [k, l] : l;
+    return c;
+  },
+  CLASS_NAME: "OpenLayers.Geometry.MultiLineString",
+});
+OpenLayers.Geometry.LinearRing = OpenLayers.Class(OpenLayers.Geometry.LineString, {
+  componentTypes: ["OpenLayers.Geometry.Point"],
+  addComponent: function (a, b) {
+    var c = !1,
+      d = this.components.pop();
+    (null == b && a.equals(d)) ||
+      (c = OpenLayers.Geometry.Collection.prototype.addComponent.apply(this, arguments));
+    OpenLayers.Geometry.Collection.prototype.addComponent.apply(this, [this.components[0]]);
+    return c;
+  },
+  removeComponent: function (a) {
+    var b = this.components && 3 < this.components.length;
+    b &&
+      (this.components.pop(),
+      OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this, arguments),
+      OpenLayers.Geometry.Collection.prototype.addComponent.apply(this, [this.components[0]]));
+    return b;
+  },
+  move: function (a, b) {
+    for (var c = 0, d = this.components.length; c < d - 1; c++) this.components[c].move(a, b);
+  },
+  rotate: function (a, b) {
+    for (var c = 0, d = this.components.length; c < d - 1; ++c) this.components[c].rotate(a, b);
+  },
+  resize: function (a, b, c) {
+    for (var d = 0, e = this.components.length; d < e - 1; ++d) this.components[d].resize(a, b, c);
+    return this;
+  },
+  transform: function (a, b) {
+    if (a && b) {
+      for (var c = 0, d = this.components.length; c < d - 1; c++)
+        this.components[c].transform(a, b);
+      this.bounds = null;
+    }
+    return this;
+  },
+  getCentroid: function () {
+    if (this.components) {
+      var a = this.components.length;
+      if (0 < a && 2 >= a) return this.components[0].clone();
+      if (2 < a) {
+        var b = 0,
+          c = 0,
+          d = this.components[0].x,
+          e = this.components[0].y,
+          f = -1 * this.getArea();
+        if (0 != f) {
+          for (var g = 0; g < a - 1; g++)
+            var h = this.components[g],
+              k = this.components[g + 1],
+              b = b + (h.x + k.x - 2 * d) * ((h.x - d) * (k.y - e) - (k.x - d) * (h.y - e)),
+              c = c + (h.y + k.y - 2 * e) * ((h.x - d) * (k.y - e) - (k.x - d) * (h.y - e));
+          b = d + b / (6 * f);
+          a = e + c / (6 * f);
+        } else {
+          for (g = 0; g < a - 1; g++) (b += this.components[g].x), (c += this.components[g].y);
+          b /= a - 1;
+          a = c / (a - 1);
+        }
+        return new OpenLayers.Geometry.Point(b, a);
+      }
+      return null;
+    }
+  },
+  getArea: function () {
+    var a = 0;
+    if (this.components && 2 < this.components.length) {
+      for (var b = (a = 0), c = this.components.length; b < c - 1; b++)
+        var d = this.components[b], e = this.components[b + 1], a = a + (d.x + e.x) * (e.y - d.y);
+      a = -a / 2;
+    }
+    return a;
+  },
+  getGeodesicArea: function (a) {
+    var b = this;
+    if (a) {
+      var c = new OpenLayers.Projection("EPSG:4326");
+      c.equals(a) || (b = this.clone().transform(a, c));
+    }
+    a = 0;
+    c = b.components && b.components.length;
+    if (2 < c) {
+      for (var d, e, f = 0; f < c - 1; f++)
+        (d = b.components[f]),
+          (e = b.components[f + 1]),
+          (a +=
+            OpenLayers.Util.rad(e.x - d.x) *
+            (2 + Math.sin(OpenLayers.Util.rad(d.y)) + Math.sin(OpenLayers.Util.rad(e.y))));
+      a = (40680631590769 * a) / 2;
+    }
+    return a;
+  },
+  containsPoint: function (a) {
+    var b = OpenLayers.Number.limitSigDigs,
+      c = b(a.x, 14);
+    a = b(a.y, 14);
+    for (var d = this.components.length - 1, e, f, g, h, k, l = 0, m = 0; m < d; ++m)
+      if (
+        ((e = this.components[m]),
+        (g = b(e.x, 14)),
+        (e = b(e.y, 14)),
+        (f = this.components[m + 1]),
+        (h = b(f.x, 14)),
+        (f = b(f.y, 14)),
+        e == f)
+      ) {
+        if (a == e && ((g <= h && c >= g && c <= h) || (g >= h && c <= g && c >= h))) {
+          l = -1;
+          break;
+        }
+      } else {
+        k = b((a - f) * ((h - g) / (f - e)) + h, 14);
+        if (k == c && ((e < f && a >= e && a <= f) || (e > f && a <= e && a >= f))) {
+          l = -1;
+          break;
+        }
+        k <= c ||
+          (g != h && (k < Math.min(g, h) || k > Math.max(g, h))) ||
+          (((e < f && a >= e && a < f) || (e > f && a < e && a >= f)) && ++l);
+      }
+    return -1 == l ? 1 : !!(l & 1);
+  },
+  intersects: function (a) {
+    var b = !1;
+    if ("OpenLayers.Geometry.Point" == a.CLASS_NAME) b = this.containsPoint(a);
+    else if ("OpenLayers.Geometry.LineString" == a.CLASS_NAME) b = a.intersects(this);
+    else if ("OpenLayers.Geometry.LinearRing" == a.CLASS_NAME)
+      b = OpenLayers.Geometry.LineString.prototype.intersects.apply(this, [a]);
+    else
+      for (
+        var c = 0, d = a.components.length;
+        c < d && !(b = a.components[c].intersects(this));
+        ++c
+      );
+    return b;
+  },
+  getVertices: function (a) {
+    return !0 === a ? [] : this.components.slice(0, this.components.length - 1);
+  },
+  CLASS_NAME: "OpenLayers.Geometry.LinearRing",
+});
+OpenLayers.Geometry.Polygon = OpenLayers.Class(OpenLayers.Geometry.Collection, {
+  componentTypes: ["OpenLayers.Geometry.LinearRing"],
+  getArea: function () {
+    var a = 0;
+    if (this.components && 0 < this.components.length)
+      for (
+        var a = a + Math.abs(this.components[0].getArea()), b = 1, c = this.components.length;
+        b < c;
+        b++
+      )
+        a -= Math.abs(this.components[b].getArea());
+    return a;
+  },
+  getGeodesicArea: function (a) {
+    var b = 0;
+    if (this.components && 0 < this.components.length)
+      for (
+        var b = b + Math.abs(this.components[0].getGeodesicArea(a)),
+          c = 1,
+          d = this.components.length;
+        c < d;
+        c++
+      )
+        b -= Math.abs(this.components[c].getGeodesicArea(a));
+    return b;
+  },
+  containsPoint: function (a) {
+    var b = this.components.length,
+      c = !1;
+    if (0 < b && ((c = this.components[0].containsPoint(a)), 1 !== c && c && 1 < b))
+      for (var d, e = 1; e < b; ++e)
+        if ((d = this.components[e].containsPoint(a))) {
+          c = 1 === d ? 1 : !1;
+          break;
+        }
+    return c;
+  },
+  intersects: function (a) {
+    var b = !1,
+      c,
+      d;
+    if ("OpenLayers.Geometry.Point" == a.CLASS_NAME) b = this.containsPoint(a);
+    else if (
+      "OpenLayers.Geometry.LineString" == a.CLASS_NAME ||
+      "OpenLayers.Geometry.LinearRing" == a.CLASS_NAME
+    ) {
+      c = 0;
+      for (d = this.components.length; c < d && !(b = a.intersects(this.components[c])); ++c);
+      if (!b)
+        for (
+          c = 0, d = a.components.length;
+          c < d && !(b = this.containsPoint(a.components[c]));
+          ++c
+        );
+    } else
+      for (c = 0, d = a.components.length; c < d && !(b = this.intersects(a.components[c])); ++c);
+    if (!b && "OpenLayers.Geometry.Polygon" == a.CLASS_NAME) {
+      var e = this.components[0];
+      c = 0;
+      for (d = e.components.length; c < d && !(b = a.containsPoint(e.components[c])); ++c);
+    }
+    return b;
+  },
+  distanceTo: function (a, b) {
+    return b && !1 === b.edge && this.intersects(a)
+      ? 0
+      : OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this, [a, b]);
+  },
+  CLASS_NAME: "OpenLayers.Geometry.Polygon",
+});
+OpenLayers.Geometry.Polygon.createRegularPolygon = function (a, b, c, d) {
+  var e = Math.PI * (1 / c - 0.5);
+  d && (e += (d / 180) * Math.PI);
+  for (var f, g = [], h = 0; h < c; ++h)
+    (f = e + (2 * h * Math.PI) / c),
+      (d = a.x + b * Math.cos(f)),
+      (f = a.y + b * Math.sin(f)),
+      g.push(new OpenLayers.Geometry.Point(d, f));
+  a = new OpenLayers.Geometry.LinearRing(g);
+  return new OpenLayers.Geometry.Polygon([a]);
+};
+OpenLayers.Geometry.MultiPolygon = OpenLayers.Class(OpenLayers.Geometry.Collection, {
+  componentTypes: ["OpenLayers.Geometry.Polygon"],
+  CLASS_NAME: "OpenLayers.Geometry.MultiPolygon",
+});
+OpenLayers.Format.GML = OpenLayers.Class(OpenLayers.Format.XML, {
+  featureNS: "http://mapserver.gis.umn.edu/mapserver",
+  featurePrefix: "feature",
+  featureName: "featureMember",
+  layerName: "features",
+  geometryName: "geometry",
+  collectionName: "FeatureCollection",
+  gmlns: "http://www.opengis.net/gml",
+  extractAttributes: !0,
+  xy: !0,
+  initialize: function (a) {
+    this.regExes = {
+      trimSpace: /^\s*|\s*$/g,
+      removeSpace: /\s*/g,
+      splitSpace: /\s+/,
+      trimComma: /\s*,\s*/g,
+    };
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a = this.getElementsByTagNameNS(a.documentElement, this.gmlns, this.featureName);
+    for (var b = [], c = 0; c < a.length; c++) {
+      var d = this.parseFeature(a[c]);
+      d && b.push(d);
+    }
+    return b;
+  },
+  parseFeature: function (a) {
+    for (
+      var b = "MultiPolygon Polygon MultiLineString LineString MultiPoint Point Envelope".split(
+          " "
+        ),
+        c,
+        d,
+        e,
+        f = 0;
+      f < b.length;
+      ++f
+    )
+      if (((c = b[f]), (d = this.getElementsByTagNameNS(a, this.gmlns, c)), 0 < d.length)) {
+        if ((e = this.parseGeometry[c.toLowerCase()]))
+          (e = e.apply(this, [d[0]])),
+            this.internalProjection &&
+              this.externalProjection &&
+              e.transform(this.externalProjection, this.internalProjection);
+        else throw new TypeError("Unsupported geometry type: " + c);
+        break;
+      }
+    var g;
+    c = this.getElementsByTagNameNS(a, this.gmlns, "Box");
+    for (f = 0; f < c.length; ++f)
+      (b = c[f]),
+        (d = this.parseGeometry.box.apply(this, [b])),
+        (b = b.parentNode),
+        "boundedBy" === (b.localName || b.nodeName.split(":").pop())
+          ? (g = d)
+          : (e = d.toGeometry());
+    var h;
+    this.extractAttributes && (h = this.parseAttributes(a));
+    h = new OpenLayers.Feature.Vector(e, h);
+    h.bounds = g;
+    h.gml = {
+      featureType: a.firstChild.nodeName.split(":")[1],
+      featureNS: a.firstChild.namespaceURI,
+      featureNSPrefix: a.firstChild.prefix,
+    };
+    a = a.firstChild;
+    for (var k; a && (1 != a.nodeType || !(k = a.getAttribute("fid") || a.getAttribute("id"))); )
+      a = a.nextSibling;
+    h.fid = k;
+    return h;
+  },
+  parseGeometry: {
+    point: function (a) {
+      var b, c;
+      c = [];
+      b = this.getElementsByTagNameNS(a, this.gmlns, "pos");
+      0 < b.length &&
+        ((c = b[0].firstChild.nodeValue),
+        (c = c.replace(this.regExes.trimSpace, "")),
+        (c = c.split(this.regExes.splitSpace)));
+      0 == c.length &&
+        ((b = this.getElementsByTagNameNS(a, this.gmlns, "coordinates")),
+        0 < b.length &&
+          ((c = b[0].firstChild.nodeValue),
+          (c = c.replace(this.regExes.removeSpace, "")),
+          (c = c.split(","))));
+      0 == c.length &&
+        ((b = this.getElementsByTagNameNS(a, this.gmlns, "coord")),
+        0 < b.length &&
+          ((a = this.getElementsByTagNameNS(b[0], this.gmlns, "X")),
+          (b = this.getElementsByTagNameNS(b[0], this.gmlns, "Y")),
+          0 < a.length &&
+            0 < b.length &&
+            (c = [a[0].firstChild.nodeValue, b[0].firstChild.nodeValue])));
+      2 == c.length && (c[2] = null);
+      return this.xy
+        ? new OpenLayers.Geometry.Point(c[0], c[1], c[2])
+        : new OpenLayers.Geometry.Point(c[1], c[0], c[2]);
+    },
+    multipoint: function (a) {
+      a = this.getElementsByTagNameNS(a, this.gmlns, "Point");
+      var b = [];
+      if (0 < a.length)
+        for (var c, d = 0; d < a.length; ++d)
+          (c = this.parseGeometry.point.apply(this, [a[d]])) && b.push(c);
+      return new OpenLayers.Geometry.MultiPoint(b);
+    },
+    linestring: function (a, b) {
+      var c, d;
+      d = [];
+      var e = [];
+      c = this.getElementsByTagNameNS(a, this.gmlns, "posList");
+      if (0 < c.length) {
+        d = this.getChildValue(c[0]);
+        d = d.replace(this.regExes.trimSpace, "");
+        d = d.split(this.regExes.splitSpace);
+        var f = parseInt(c[0].getAttribute("dimension")),
+          g,
+          h,
+          k;
+        for (c = 0; c < d.length / f; ++c)
+          (g = c * f),
+            (h = d[g]),
+            (k = d[g + 1]),
+            (g = 2 == f ? null : d[g + 2]),
+            this.xy
+              ? e.push(new OpenLayers.Geometry.Point(h, k, g))
+              : e.push(new OpenLayers.Geometry.Point(k, h, g));
+      }
+      if (
+        0 == d.length &&
+        ((c = this.getElementsByTagNameNS(a, this.gmlns, "coordinates")), 0 < c.length)
+      )
+        for (
+          d = this.getChildValue(c[0]),
+            d = d.replace(this.regExes.trimSpace, ""),
+            d = d.replace(this.regExes.trimComma, ","),
+            f = d.split(this.regExes.splitSpace),
+            c = 0;
+          c < f.length;
+          ++c
+        )
+          (d = f[c].split(",")),
+            2 == d.length && (d[2] = null),
+            this.xy
+              ? e.push(new OpenLayers.Geometry.Point(d[0], d[1], d[2]))
+              : e.push(new OpenLayers.Geometry.Point(d[1], d[0], d[2]));
+      d = null;
+      0 != e.length &&
+        (d = b ? new OpenLayers.Geometry.LinearRing(e) : new OpenLayers.Geometry.LineString(e));
+      return d;
+    },
+    multilinestring: function (a) {
+      a = this.getElementsByTagNameNS(a, this.gmlns, "LineString");
+      var b = [];
+      if (0 < a.length)
+        for (var c, d = 0; d < a.length; ++d)
+          (c = this.parseGeometry.linestring.apply(this, [a[d]])) && b.push(c);
+      return new OpenLayers.Geometry.MultiLineString(b);
+    },
+    polygon: function (a) {
+      a = this.getElementsByTagNameNS(a, this.gmlns, "LinearRing");
+      var b = [];
+      if (0 < a.length)
+        for (var c, d = 0; d < a.length; ++d)
+          (c = this.parseGeometry.linestring.apply(this, [a[d], !0])) && b.push(c);
+      return new OpenLayers.Geometry.Polygon(b);
+    },
+    multipolygon: function (a) {
+      a = this.getElementsByTagNameNS(a, this.gmlns, "Polygon");
+      var b = [];
+      if (0 < a.length)
+        for (var c, d = 0; d < a.length; ++d)
+          (c = this.parseGeometry.polygon.apply(this, [a[d]])) && b.push(c);
+      return new OpenLayers.Geometry.MultiPolygon(b);
+    },
+    envelope: function (a) {
+      var b = [],
+        c,
+        d,
+        e = this.getElementsByTagNameNS(a, this.gmlns, "lowerCorner");
+      if (0 < e.length) {
+        c = [];
+        0 < e.length &&
+          ((c = e[0].firstChild.nodeValue),
+          (c = c.replace(this.regExes.trimSpace, "")),
+          (c = c.split(this.regExes.splitSpace)));
+        2 == c.length && (c[2] = null);
+        var f = this.xy
+          ? new OpenLayers.Geometry.Point(c[0], c[1], c[2])
+          : new OpenLayers.Geometry.Point(c[1], c[0], c[2]);
+      }
+      a = this.getElementsByTagNameNS(a, this.gmlns, "upperCorner");
+      if (0 < a.length) {
+        c = [];
+        0 < a.length &&
+          ((c = a[0].firstChild.nodeValue),
+          (c = c.replace(this.regExes.trimSpace, "")),
+          (c = c.split(this.regExes.splitSpace)));
+        2 == c.length && (c[2] = null);
+        var g = this.xy
+          ? new OpenLayers.Geometry.Point(c[0], c[1], c[2])
+          : new OpenLayers.Geometry.Point(c[1], c[0], c[2]);
+      }
+      f &&
+        g &&
+        (b.push(new OpenLayers.Geometry.Point(f.x, f.y)),
+        b.push(new OpenLayers.Geometry.Point(g.x, f.y)),
+        b.push(new OpenLayers.Geometry.Point(g.x, g.y)),
+        b.push(new OpenLayers.Geometry.Point(f.x, g.y)),
+        b.push(new OpenLayers.Geometry.Point(f.x, f.y)),
+        (b = new OpenLayers.Geometry.LinearRing(b)),
+        (d = new OpenLayers.Geometry.Polygon([b])));
+      return d;
+    },
+    box: function (a) {
+      var b = this.getElementsByTagNameNS(a, this.gmlns, "coordinates"),
+        c = (a = null);
+      0 < b.length &&
+        ((b = b[0].firstChild.nodeValue),
+        (b = b.split(" ")),
+        2 == b.length && ((a = b[0].split(",")), (c = b[1].split(","))));
+      if (null !== a && null !== c)
+        return new OpenLayers.Bounds(
+          parseFloat(a[0]),
+          parseFloat(a[1]),
+          parseFloat(c[0]),
+          parseFloat(c[1])
+        );
+    },
+  },
+  parseAttributes: function (a) {
+    var b = {};
+    a = a.firstChild;
+    for (var c, d, e; a; ) {
+      if (1 == a.nodeType) {
+        a = a.childNodes;
+        for (c = 0; c < a.length; ++c)
+          if (((d = a[c]), 1 == d.nodeType))
+            if (((e = d.childNodes), 1 == e.length)) {
+              if (((e = e[0]), 3 == e.nodeType || 4 == e.nodeType))
+                (d = d.prefix ? d.nodeName.split(":")[1] : d.nodeName),
+                  (e = e.nodeValue.replace(this.regExes.trimSpace, "")),
+                  (b[d] = e);
+            } else b[d.nodeName.split(":").pop()] = null;
+        break;
+      }
+      a = a.nextSibling;
+    }
+    return b;
+  },
+  write: function (a) {
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    for (
+      var b = this.createElementNS("http://www.opengis.net/wfs", "wfs:" + this.collectionName),
+        c = 0;
+      c < a.length;
+      c++
+    )
+      b.appendChild(this.createFeatureXML(a[c]));
+    return OpenLayers.Format.XML.prototype.write.apply(this, [b]);
+  },
+  createFeatureXML: function (a) {
+    var b = this.buildGeometryNode(a.geometry),
+      c = this.createElementNS(this.featureNS, this.featurePrefix + ":" + this.geometryName);
+    c.appendChild(b);
+    var b = this.createElementNS(this.gmlns, "gml:" + this.featureName),
+      d = this.createElementNS(this.featureNS, this.featurePrefix + ":" + this.layerName);
+    d.setAttribute("fid", a.fid || a.id);
+    d.appendChild(c);
+    for (var e in a.attributes) {
+      var c = this.createTextNode(a.attributes[e]),
+        f = e.substring(e.lastIndexOf(":") + 1),
+        f = this.createElementNS(this.featureNS, this.featurePrefix + ":" + f);
+      f.appendChild(c);
+      d.appendChild(f);
+    }
+    b.appendChild(d);
+    return b;
+  },
+  buildGeometryNode: function (a) {
+    this.externalProjection &&
+      this.internalProjection &&
+      ((a = a.clone()), a.transform(this.internalProjection, this.externalProjection));
+    var b = a.CLASS_NAME,
+      b = b.substring(b.lastIndexOf(".") + 1);
+    return this.buildGeometry[b.toLowerCase()].apply(this, [a]);
+  },
+  buildGeometry: {
+    point: function (a) {
+      var b = this.createElementNS(this.gmlns, "gml:Point");
+      b.appendChild(this.buildCoordinatesNode(a));
+      return b;
+    },
+    multipoint: function (a) {
+      var b = this.createElementNS(this.gmlns, "gml:MultiPoint");
+      a = a.components;
+      for (var c, d, e = 0; e < a.length; e++)
+        (c = this.createElementNS(this.gmlns, "gml:pointMember")),
+          (d = this.buildGeometry.point.apply(this, [a[e]])),
+          c.appendChild(d),
+          b.appendChild(c);
+      return b;
+    },
+    linestring: function (a) {
+      var b = this.createElementNS(this.gmlns, "gml:LineString");
+      b.appendChild(this.buildCoordinatesNode(a));
+      return b;
+    },
+    multilinestring: function (a) {
+      var b = this.createElementNS(this.gmlns, "gml:MultiLineString");
+      a = a.components;
+      for (var c, d, e = 0; e < a.length; ++e)
+        (c = this.createElementNS(this.gmlns, "gml:lineStringMember")),
+          (d = this.buildGeometry.linestring.apply(this, [a[e]])),
+          c.appendChild(d),
+          b.appendChild(c);
+      return b;
+    },
+    linearring: function (a) {
+      var b = this.createElementNS(this.gmlns, "gml:LinearRing");
+      b.appendChild(this.buildCoordinatesNode(a));
+      return b;
+    },
+    polygon: function (a) {
+      var b = this.createElementNS(this.gmlns, "gml:Polygon");
+      a = a.components;
+      for (var c, d, e = 0; e < a.length; ++e)
+        (c = 0 == e ? "outerBoundaryIs" : "innerBoundaryIs"),
+          (c = this.createElementNS(this.gmlns, "gml:" + c)),
+          (d = this.buildGeometry.linearring.apply(this, [a[e]])),
+          c.appendChild(d),
+          b.appendChild(c);
+      return b;
+    },
+    multipolygon: function (a) {
+      var b = this.createElementNS(this.gmlns, "gml:MultiPolygon");
+      a = a.components;
+      for (var c, d, e = 0; e < a.length; ++e)
+        (c = this.createElementNS(this.gmlns, "gml:polygonMember")),
+          (d = this.buildGeometry.polygon.apply(this, [a[e]])),
+          c.appendChild(d),
+          b.appendChild(c);
+      return b;
+    },
+    bounds: function (a) {
+      var b = this.createElementNS(this.gmlns, "gml:Box");
+      b.appendChild(this.buildCoordinatesNode(a));
+      return b;
+    },
+  },
+  buildCoordinatesNode: function (a) {
+    var b = this.createElementNS(this.gmlns, "gml:coordinates");
+    b.setAttribute("decimal", ".");
+    b.setAttribute("cs", ",");
+    b.setAttribute("ts", " ");
+    var c = [];
+    if (a instanceof OpenLayers.Bounds)
+      c.push(a.left + "," + a.bottom), c.push(a.right + "," + a.top);
+    else {
+      a = a.components ? a.components : [a];
+      for (var d = 0; d < a.length; d++) c.push(a[d].x + "," + a[d].y);
+    }
+    c = this.createTextNode(c.join(" "));
+    b.appendChild(c);
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Format.GML",
+});
+OpenLayers.Format.GML || (OpenLayers.Format.GML = {});
+OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    gml: "http://www.opengis.net/gml",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+    wfs: "http://www.opengis.net/wfs",
+  },
+  defaultPrefix: "gml",
+  schemaLocation: null,
+  featureType: null,
+  featureNS: null,
+  geometryName: "geometry",
+  extractAttributes: !0,
+  srsName: null,
+  xy: !0,
+  geometryTypes: null,
+  singleFeatureType: null,
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+    featureMember: /^(.*:)?featureMembers?$/,
+  },
+  initialize: function (a) {
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+    this.setGeometryTypes();
+    a && a.featureNS && this.setNamespace("feature", a.featureNS);
+    this.singleFeatureType = !a || "string" === typeof a.featureType;
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = [];
+    this.readNode(a, { features: b }, !0);
+    if (0 == b.length) {
+      var c = this.getElementsByTagNameNS(a, this.namespaces.gml, "featureMember");
+      if (c.length) {
+        a = 0;
+        for (var d = c.length; a < d; ++a) this.readNode(c[a], { features: b }, !0);
+      } else
+        (c = this.getElementsByTagNameNS(a, this.namespaces.gml, "featureMembers")),
+          c.length && this.readNode(c[0], { features: b }, !0);
+    }
+    return b;
+  },
+  readNode: function (a, b, c) {
+    !0 === c &&
+      !0 === this.autoConfig &&
+      ((this.featureType = null),
+      delete this.namespaceAlias[this.featureNS],
+      delete this.namespaces.feature,
+      (this.featureNS = null));
+    this.featureNS ||
+      a.prefix in this.namespaces ||
+      a.parentNode.namespaceURI != this.namespaces.gml ||
+      !this.regExes.featureMember.test(a.parentNode.nodeName) ||
+      ((this.featureType = a.nodeName.split(":").pop()),
+      this.setNamespace("feature", a.namespaceURI),
+      (this.featureNS = a.namespaceURI),
+      (this.autoConfig = !0));
+    return OpenLayers.Format.XML.prototype.readNode.apply(this, [a, b]);
+  },
+  readers: {
+    gml: {
+      _inherit: function (a, b, c) {},
+      featureMember: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      featureMembers: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      name: function (a, b) {
+        b.name = this.getChildValue(a);
+      },
+      boundedBy: function (a, b) {
+        var c = {};
+        this.readChildNodes(a, c);
+        c.components && 0 < c.components.length && (b.bounds = c.components[0]);
+      },
+      Point: function (a, b) {
+        var c = { points: [] };
+        this.readChildNodes(a, c);
+        b.components || (b.components = []);
+        b.components.push(c.points[0]);
+      },
+      coordinates: function (a, b) {
+        for (
+          var c = this.getChildValue(a).replace(this.regExes.trimSpace, ""),
+            c = c.replace(this.regExes.trimComma, ","),
+            c = c.split(this.regExes.splitSpace),
+            d,
+            e = c.length,
+            f = Array(e),
+            g = 0;
+          g < e;
+          ++g
+        )
+          (d = c[g].split(",")),
+            (f[g] = this.xy
+              ? new OpenLayers.Geometry.Point(d[0], d[1], d[2])
+              : new OpenLayers.Geometry.Point(d[1], d[0], d[2]));
+        b.points = f;
+      },
+      coord: function (a, b) {
+        var c = {};
+        this.readChildNodes(a, c);
+        b.points || (b.points = []);
+        b.points.push(new OpenLayers.Geometry.Point(c.x, c.y, c.z));
+      },
+      X: function (a, b) {
+        b.x = this.getChildValue(a);
+      },
+      Y: function (a, b) {
+        b.y = this.getChildValue(a);
+      },
+      Z: function (a, b) {
+        b.z = this.getChildValue(a);
+      },
+      MultiPoint: function (a, b) {
+        var c = { components: [] };
+        this.readers.gml._inherit.apply(this, [a, c, b]);
+        this.readChildNodes(a, c);
+        b.components = [new OpenLayers.Geometry.MultiPoint(c.components)];
+      },
+      pointMember: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      LineString: function (a, b) {
+        var c = {};
+        this.readers.gml._inherit.apply(this, [a, c, b]);
+        this.readChildNodes(a, c);
+        b.components || (b.components = []);
+        b.components.push(new OpenLayers.Geometry.LineString(c.points));
+      },
+      MultiLineString: function (a, b) {
+        var c = { components: [] };
+        this.readers.gml._inherit.apply(this, [a, c, b]);
+        this.readChildNodes(a, c);
+        b.components = [new OpenLayers.Geometry.MultiLineString(c.components)];
+      },
+      lineStringMember: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      Polygon: function (a, b) {
+        var c = { outer: null, inner: [] };
+        this.readers.gml._inherit.apply(this, [a, c, b]);
+        this.readChildNodes(a, c);
+        c.inner.unshift(c.outer);
+        b.components || (b.components = []);
+        b.components.push(new OpenLayers.Geometry.Polygon(c.inner));
+      },
+      LinearRing: function (a, b) {
+        var c = {};
+        this.readers.gml._inherit.apply(this, [a, c]);
+        this.readChildNodes(a, c);
+        b.components = [new OpenLayers.Geometry.LinearRing(c.points)];
+      },
+      MultiPolygon: function (a, b) {
+        var c = { components: [] };
+        this.readers.gml._inherit.apply(this, [a, c, b]);
+        this.readChildNodes(a, c);
+        b.components = [new OpenLayers.Geometry.MultiPolygon(c.components)];
+      },
+      polygonMember: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      GeometryCollection: function (a, b) {
+        var c = { components: [] };
+        this.readers.gml._inherit.apply(this, [a, c, b]);
+        this.readChildNodes(a, c);
+        b.components = [new OpenLayers.Geometry.Collection(c.components)];
+      },
+      geometryMember: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+    },
+    feature: {
+      "*": function (a, b) {
+        var c,
+          d = a.localName || a.nodeName.split(":").pop();
+        b.features
+          ? this.singleFeatureType || -1 === OpenLayers.Util.indexOf(this.featureType, d)
+            ? d === this.featureType && (c = "_typeName")
+            : (c = "_typeName")
+          : 0 == a.childNodes.length || (1 == a.childNodes.length && 3 == a.firstChild.nodeType)
+          ? this.extractAttributes && (c = "_attribute")
+          : (c = "_geometry");
+        c && this.readers.feature[c].apply(this, [a, b]);
+      },
+      _typeName: function (a, b) {
+        var c = { components: [], attributes: {} };
+        this.readChildNodes(a, c);
+        c.name && (c.attributes.name = c.name);
+        var d = new OpenLayers.Feature.Vector(c.components[0], c.attributes);
+        this.singleFeatureType ||
+          ((d.type = a.nodeName.split(":").pop()), (d.namespace = a.namespaceURI));
+        var e = a.getAttribute("fid") || this.getAttributeNS(a, this.namespaces.gml, "id");
+        e && (d.fid = e);
+        this.internalProjection &&
+          this.externalProjection &&
+          d.geometry &&
+          d.geometry.transform(this.externalProjection, this.internalProjection);
+        c.bounds && (d.bounds = c.bounds);
+        b.features.push(d);
+      },
+      _geometry: function (a, b) {
+        this.geometryName || (this.geometryName = a.nodeName.split(":").pop());
+        this.readChildNodes(a, b);
+      },
+      _attribute: function (a, b) {
+        var c = a.localName || a.nodeName.split(":").pop(),
+          d = this.getChildValue(a);
+        b.attributes[c] = d;
+      },
+    },
+    wfs: {
+      FeatureCollection: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+    },
+  },
+  write: function (a) {
+    var b;
+    b = OpenLayers.Util.isArray(a) ? "featureMembers" : "featureMember";
+    a = this.writeNode("gml:" + b, a);
+    this.setAttributeNS(a, this.namespaces.xsi, "xsi:schemaLocation", this.schemaLocation);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [a]);
+  },
+  writers: {
+    gml: {
+      featureMember: function (a) {
+        var b = this.createElementNSPlus("gml:featureMember");
+        this.writeNode("feature:_typeName", a, b);
+        return b;
+      },
+      MultiPoint: function (a) {
+        var b = this.createElementNSPlus("gml:MultiPoint");
+        a = a.components || [a];
+        for (var c = 0, d = a.length; c < d; ++c) this.writeNode("pointMember", a[c], b);
+        return b;
+      },
+      pointMember: function (a) {
+        var b = this.createElementNSPlus("gml:pointMember");
+        this.writeNode("Point", a, b);
+        return b;
+      },
+      MultiLineString: function (a) {
+        var b = this.createElementNSPlus("gml:MultiLineString");
+        a = a.components || [a];
+        for (var c = 0, d = a.length; c < d; ++c) this.writeNode("lineStringMember", a[c], b);
+        return b;
+      },
+      lineStringMember: function (a) {
+        var b = this.createElementNSPlus("gml:lineStringMember");
+        this.writeNode("LineString", a, b);
+        return b;
+      },
+      MultiPolygon: function (a) {
+        var b = this.createElementNSPlus("gml:MultiPolygon");
+        a = a.components || [a];
+        for (var c = 0, d = a.length; c < d; ++c) this.writeNode("polygonMember", a[c], b);
+        return b;
+      },
+      polygonMember: function (a) {
+        var b = this.createElementNSPlus("gml:polygonMember");
+        this.writeNode("Polygon", a, b);
+        return b;
+      },
+      GeometryCollection: function (a) {
+        for (
+          var b = this.createElementNSPlus("gml:GeometryCollection"),
+            c = 0,
+            d = a.components.length;
+          c < d;
+          ++c
+        )
+          this.writeNode("geometryMember", a.components[c], b);
+        return b;
+      },
+      geometryMember: function (a) {
+        var b = this.createElementNSPlus("gml:geometryMember");
+        a = this.writeNode("feature:_geometry", a);
+        b.appendChild(a.firstChild);
+        return b;
+      },
+    },
+    feature: {
+      _typeName: function (a) {
+        var b = this.createElementNSPlus("feature:" + this.featureType, {
+          attributes: { fid: a.fid },
+        });
+        a.geometry && this.writeNode("feature:_geometry", a.geometry, b);
+        for (var c in a.attributes) {
+          var d = a.attributes[c];
+          null != d && this.writeNode("feature:_attribute", { name: c, value: d }, b);
+        }
+        return b;
+      },
+      _geometry: function (a) {
+        this.externalProjection &&
+          this.internalProjection &&
+          (a = a.clone().transform(this.internalProjection, this.externalProjection));
+        var b = this.createElementNSPlus("feature:" + this.geometryName);
+        a = this.writeNode("gml:" + this.geometryTypes[a.CLASS_NAME], a, b);
+        this.srsName && a.setAttribute("srsName", this.srsName);
+        return b;
+      },
+      _attribute: function (a) {
+        return this.createElementNSPlus("feature:" + a.name, { value: a.value });
+      },
+    },
+    wfs: {
+      FeatureCollection: function (a) {
+        for (
+          var b = this.createElementNSPlus("wfs:FeatureCollection"), c = 0, d = a.length;
+          c < d;
+          ++c
+        )
+          this.writeNode("gml:featureMember", a[c], b);
+        return b;
+      },
+    },
+  },
+  setGeometryTypes: function () {
+    this.geometryTypes = {
+      "OpenLayers.Geometry.Point": "Point",
+      "OpenLayers.Geometry.MultiPoint": "MultiPoint",
+      "OpenLayers.Geometry.LineString": "LineString",
+      "OpenLayers.Geometry.MultiLineString": "MultiLineString",
+      "OpenLayers.Geometry.Polygon": "Polygon",
+      "OpenLayers.Geometry.MultiPolygon": "MultiPolygon",
+      "OpenLayers.Geometry.Collection": "GeometryCollection",
+    };
+  },
+  CLASS_NAME: "OpenLayers.Format.GML.Base",
+});
+OpenLayers.Format.GML.v3 = OpenLayers.Class(OpenLayers.Format.GML.Base, {
+  schemaLocation:
+    "http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",
+  curve: !1,
+  multiCurve: !0,
+  surface: !1,
+  multiSurface: !0,
+  initialize: function (a) {
+    OpenLayers.Format.GML.Base.prototype.initialize.apply(this, [a]);
+  },
+  readers: {
+    gml: OpenLayers.Util.applyDefaults(
+      {
+        _inherit: function (a, b, c) {
+          if ((a = parseInt(a.getAttribute("srsDimension"), 10) || (c && c.srsDimension)))
+            b.srsDimension = a;
+        },
+        featureMembers: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        Curve: function (a, b) {
+          var c = { points: [] };
+          this.readers.gml._inherit.apply(this, [a, c, b]);
+          this.readChildNodes(a, c);
+          b.components || (b.components = []);
+          b.components.push(new OpenLayers.Geometry.LineString(c.points));
+        },
+        segments: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        LineStringSegment: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          c.points && Array.prototype.push.apply(b.points, c.points);
+        },
+        pos: function (a, b) {
+          var c = this.getChildValue(a)
+              .replace(this.regExes.trimSpace, "")
+              .split(this.regExes.splitSpace),
+            c = this.xy
+              ? new OpenLayers.Geometry.Point(c[0], c[1], c[2])
+              : new OpenLayers.Geometry.Point(c[1], c[0], c[2]);
+          b.points = [c];
+        },
+        posList: function (a, b) {
+          for (
+            var c = this.getChildValue(a)
+                .replace(this.regExes.trimSpace, "")
+                .split(this.regExes.splitSpace),
+              d =
+                b.srsDimension ||
+                parseInt(a.getAttribute("srsDimension") || a.getAttribute("dimension"), 10) ||
+                2,
+              e,
+              f,
+              g,
+              h = Array(c.length / d),
+              k = 0,
+              l = c.length;
+            k < l;
+            k += d
+          )
+            (e = c[k]),
+              (f = c[k + 1]),
+              (g = 2 == d ? void 0 : c[k + 2]),
+              (h[k / d] = this.xy
+                ? new OpenLayers.Geometry.Point(e, f, g)
+                : new OpenLayers.Geometry.Point(f, e, g));
+          b.points = h;
+        },
+        Surface: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        patches: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        PolygonPatch: function (a, b) {
+          this.readers.gml.Polygon.apply(this, [a, b]);
+        },
+        exterior: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          b.outer = c.components[0];
+        },
+        interior: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          b.inner.push(c.components[0]);
+        },
+        MultiCurve: function (a, b) {
+          var c = { components: [] };
+          this.readers.gml._inherit.apply(this, [a, c, b]);
+          this.readChildNodes(a, c);
+          0 < c.components.length &&
+            (b.components = [new OpenLayers.Geometry.MultiLineString(c.components)]);
+        },
+        curveMember: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        MultiSurface: function (a, b) {
+          var c = { components: [] };
+          this.readers.gml._inherit.apply(this, [a, c, b]);
+          this.readChildNodes(a, c);
+          0 < c.components.length &&
+            (b.components = [new OpenLayers.Geometry.MultiPolygon(c.components)]);
+        },
+        surfaceMember: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        surfaceMembers: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        pointMembers: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        lineStringMembers: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        polygonMembers: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        geometryMembers: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        Envelope: function (a, b) {
+          var c = { points: Array(2) };
+          this.readChildNodes(a, c);
+          b.components || (b.components = []);
+          var d = c.points[0],
+            c = c.points[1];
+          b.components.push(new OpenLayers.Bounds(d.x, d.y, c.x, c.y));
+        },
+        lowerCorner: function (a, b) {
+          var c = {};
+          this.readers.gml.pos.apply(this, [a, c]);
+          b.points[0] = c.points[0];
+        },
+        upperCorner: function (a, b) {
+          var c = {};
+          this.readers.gml.pos.apply(this, [a, c]);
+          b.points[1] = c.points[0];
+        },
+      },
+      OpenLayers.Format.GML.Base.prototype.readers.gml
+    ),
+    feature: OpenLayers.Format.GML.Base.prototype.readers.feature,
+    wfs: OpenLayers.Format.GML.Base.prototype.readers.wfs,
+  },
+  write: function (a) {
+    var b;
+    b = OpenLayers.Util.isArray(a) ? "featureMembers" : "featureMember";
+    a = this.writeNode("gml:" + b, a);
+    this.setAttributeNS(a, this.namespaces.xsi, "xsi:schemaLocation", this.schemaLocation);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [a]);
+  },
+  writers: {
+    gml: OpenLayers.Util.applyDefaults(
+      {
+        featureMembers: function (a) {
+          for (
+            var b = this.createElementNSPlus("gml:featureMembers"), c = 0, d = a.length;
+            c < d;
+            ++c
+          )
+            this.writeNode("feature:_typeName", a[c], b);
+          return b;
+        },
+        Point: function (a) {
+          var b = this.createElementNSPlus("gml:Point");
+          this.writeNode("pos", a, b);
+          return b;
+        },
+        pos: function (a) {
+          return this.createElementNSPlus("gml:pos", {
+            value: this.xy ? a.x + " " + a.y : a.y + " " + a.x,
+          });
+        },
+        LineString: function (a) {
+          var b = this.createElementNSPlus("gml:LineString");
+          this.writeNode("posList", a.components, b);
+          return b;
+        },
+        Curve: function (a) {
+          var b = this.createElementNSPlus("gml:Curve");
+          this.writeNode("segments", a, b);
+          return b;
+        },
+        segments: function (a) {
+          var b = this.createElementNSPlus("gml:segments");
+          this.writeNode("LineStringSegment", a, b);
+          return b;
+        },
+        LineStringSegment: function (a) {
+          var b = this.createElementNSPlus("gml:LineStringSegment");
+          this.writeNode("posList", a.components, b);
+          return b;
+        },
+        posList: function (a) {
+          for (var b = a.length, c = Array(b), d, e = 0; e < b; ++e)
+            (d = a[e]), (c[e] = this.xy ? d.x + " " + d.y : d.y + " " + d.x);
+          return this.createElementNSPlus("gml:posList", { value: c.join(" ") });
+        },
+        Surface: function (a) {
+          var b = this.createElementNSPlus("gml:Surface");
+          this.writeNode("patches", a, b);
+          return b;
+        },
+        patches: function (a) {
+          var b = this.createElementNSPlus("gml:patches");
+          this.writeNode("PolygonPatch", a, b);
+          return b;
+        },
+        PolygonPatch: function (a) {
+          var b = this.createElementNSPlus("gml:PolygonPatch", {
+            attributes: { interpolation: "planar" },
+          });
+          this.writeNode("exterior", a.components[0], b);
+          for (var c = 1, d = a.components.length; c < d; ++c)
+            this.writeNode("interior", a.components[c], b);
+          return b;
+        },
+        Polygon: function (a) {
+          var b = this.createElementNSPlus("gml:Polygon");
+          this.writeNode("exterior", a.components[0], b);
+          for (var c = 1, d = a.components.length; c < d; ++c)
+            this.writeNode("interior", a.components[c], b);
+          return b;
+        },
+        exterior: function (a) {
+          var b = this.createElementNSPlus("gml:exterior");
+          this.writeNode("LinearRing", a, b);
+          return b;
+        },
+        interior: function (a) {
+          var b = this.createElementNSPlus("gml:interior");
+          this.writeNode("LinearRing", a, b);
+          return b;
+        },
+        LinearRing: function (a) {
+          var b = this.createElementNSPlus("gml:LinearRing");
+          this.writeNode("posList", a.components, b);
+          return b;
+        },
+        MultiCurve: function (a) {
+          var b = this.createElementNSPlus("gml:MultiCurve");
+          a = a.components || [a];
+          for (var c = 0, d = a.length; c < d; ++c) this.writeNode("curveMember", a[c], b);
+          return b;
+        },
+        curveMember: function (a) {
+          var b = this.createElementNSPlus("gml:curveMember");
+          this.curve ? this.writeNode("Curve", a, b) : this.writeNode("LineString", a, b);
+          return b;
+        },
+        MultiSurface: function (a) {
+          var b = this.createElementNSPlus("gml:MultiSurface");
+          a = a.components || [a];
+          for (var c = 0, d = a.length; c < d; ++c) this.writeNode("surfaceMember", a[c], b);
+          return b;
+        },
+        surfaceMember: function (a) {
+          var b = this.createElementNSPlus("gml:surfaceMember");
+          this.surface ? this.writeNode("Surface", a, b) : this.writeNode("Polygon", a, b);
+          return b;
+        },
+        Envelope: function (a) {
+          var b = this.createElementNSPlus("gml:Envelope");
+          this.writeNode("lowerCorner", a, b);
+          this.writeNode("upperCorner", a, b);
+          this.srsName && b.setAttribute("srsName", this.srsName);
+          return b;
+        },
+        lowerCorner: function (a) {
+          return this.createElementNSPlus("gml:lowerCorner", {
+            value: this.xy ? a.left + " " + a.bottom : a.bottom + " " + a.left,
+          });
+        },
+        upperCorner: function (a) {
+          return this.createElementNSPlus("gml:upperCorner", {
+            value: this.xy ? a.right + " " + a.top : a.top + " " + a.right,
+          });
+        },
+      },
+      OpenLayers.Format.GML.Base.prototype.writers.gml
+    ),
+    feature: OpenLayers.Format.GML.Base.prototype.writers.feature,
+    wfs: OpenLayers.Format.GML.Base.prototype.writers.wfs,
+  },
+  setGeometryTypes: function () {
+    this.geometryTypes = {
+      "OpenLayers.Geometry.Point": "Point",
+      "OpenLayers.Geometry.MultiPoint": "MultiPoint",
+      "OpenLayers.Geometry.LineString": !0 === this.curve ? "Curve" : "LineString",
+      "OpenLayers.Geometry.MultiLineString":
+        !1 === this.multiCurve ? "MultiLineString" : "MultiCurve",
+      "OpenLayers.Geometry.Polygon": !0 === this.surface ? "Surface" : "Polygon",
+      "OpenLayers.Geometry.MultiPolygon":
+        !1 === this.multiSurface ? "MultiPolygon" : "MultiSurface",
+      "OpenLayers.Geometry.Collection": "GeometryCollection",
+    };
+  },
+  CLASS_NAME: "OpenLayers.Format.GML.v3",
+});
+OpenLayers.Format.Filter.v1_1_0 = OpenLayers.Class(
+  OpenLayers.Format.GML.v3,
+  OpenLayers.Format.Filter.v1,
+  {
+    VERSION: "1.1.0",
+    schemaLocation: "http://www.opengis.net/ogc/filter/1.1.0/filter.xsd",
+    initialize: function (a) {
+      OpenLayers.Format.GML.v3.prototype.initialize.apply(this, [a]);
+    },
+    readers: {
+      ogc: OpenLayers.Util.applyDefaults(
+        {
+          PropertyIsEqualTo: function (a, b) {
+            var c = a.getAttribute("matchCase"),
+              c = new OpenLayers.Filter.Comparison({
+                type: OpenLayers.Filter.Comparison.EQUAL_TO,
+                matchCase: !("false" === c || "0" === c),
+              });
+            this.readChildNodes(a, c);
+            b.filters.push(c);
+          },
+          PropertyIsNotEqualTo: function (a, b) {
+            var c = a.getAttribute("matchCase"),
+              c = new OpenLayers.Filter.Comparison({
+                type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
+                matchCase: !("false" === c || "0" === c),
+              });
+            this.readChildNodes(a, c);
+            b.filters.push(c);
+          },
+          PropertyIsLike: function (a, b) {
+            var c = new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.LIKE });
+            this.readChildNodes(a, c);
+            var d = a.getAttribute("wildCard"),
+              e = a.getAttribute("singleChar"),
+              f = a.getAttribute("escapeChar");
+            c.value2regex(d, e, f);
+            b.filters.push(c);
+          },
+        },
+        OpenLayers.Format.Filter.v1.prototype.readers.ogc
+      ),
+      gml: OpenLayers.Format.GML.v3.prototype.readers.gml,
+      feature: OpenLayers.Format.GML.v3.prototype.readers.feature,
+    },
+    writers: {
+      ogc: OpenLayers.Util.applyDefaults(
+        {
+          PropertyIsEqualTo: function (a) {
+            var b = this.createElementNSPlus("ogc:PropertyIsEqualTo", {
+              attributes: { matchCase: a.matchCase },
+            });
+            this.writeNode("PropertyName", a, b);
+            this.writeOgcExpression(a.value, b);
+            return b;
+          },
+          PropertyIsNotEqualTo: function (a) {
+            var b = this.createElementNSPlus("ogc:PropertyIsNotEqualTo", {
+              attributes: { matchCase: a.matchCase },
+            });
+            this.writeNode("PropertyName", a, b);
+            this.writeOgcExpression(a.value, b);
+            return b;
+          },
+          PropertyIsLike: function (a) {
+            var b = this.createElementNSPlus("ogc:PropertyIsLike", {
+              attributes: {
+                matchCase: a.matchCase,
+                wildCard: "*",
+                singleChar: ".",
+                escapeChar: "!",
+              },
+            });
+            this.writeNode("PropertyName", a, b);
+            this.writeNode("Literal", a.regex2value(), b);
+            return b;
+          },
+          BBOX: function (a) {
+            var b = this.createElementNSPlus("ogc:BBOX");
+            a.property && this.writeNode("PropertyName", a, b);
+            var c = this.writeNode("gml:Envelope", a.value);
+            a.projection && c.setAttribute("srsName", a.projection);
+            b.appendChild(c);
+            return b;
+          },
+          SortBy: function (a) {
+            for (var b = this.createElementNSPlus("ogc:SortBy"), c = 0, d = a.length; c < d; c++)
+              this.writeNode("ogc:SortProperty", a[c], b);
+            return b;
+          },
+          SortProperty: function (a) {
+            var b = this.createElementNSPlus("ogc:SortProperty");
+            this.writeNode("ogc:PropertyName", a, b);
+            this.writeNode("ogc:SortOrder", "DESC" == a.order ? "DESC" : "ASC", b);
+            return b;
+          },
+          SortOrder: function (a) {
+            return this.createElementNSPlus("ogc:SortOrder", { value: a });
+          },
+        },
+        OpenLayers.Format.Filter.v1.prototype.writers.ogc
+      ),
+      gml: OpenLayers.Format.GML.v3.prototype.writers.gml,
+      feature: OpenLayers.Format.GML.v3.prototype.writers.feature,
+    },
+    writeSpatial: function (a, b) {
+      var c = this.createElementNSPlus("ogc:" + b);
+      this.writeNode("PropertyName", a, c);
+      if (a.value instanceof OpenLayers.Filter.Function) this.writeNode("Function", a.value, c);
+      else {
+        var d;
+        d =
+          a.value instanceof OpenLayers.Geometry
+            ? this.writeNode("feature:_geometry", a.value).firstChild
+            : this.writeNode("gml:Envelope", a.value);
+        a.projection && d.setAttribute("srsName", a.projection);
+        c.appendChild(d);
+      }
+      return c;
+    },
+    CLASS_NAME: "OpenLayers.Format.Filter.v1_1_0",
+  }
+);
+OpenLayers.Format.OWSCommon = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.0.0",
+  getVersion: function (a, b) {
+    var c = this.version;
+    if (!c) {
+      var d = a.getAttribute("xmlns:ows");
+      d && "1.1" === d.substring(d.lastIndexOf("/") + 1) && (c = "1.1.0");
+      c || (c = this.defaultVersion);
+    }
+    return c;
+  },
+  CLASS_NAME: "OpenLayers.Format.OWSCommon",
+});
+OpenLayers.Format.OWSCommon.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  read: function (a, b) {
+    OpenLayers.Util.applyDefaults(b, this.options);
+    var c = {};
+    this.readChildNodes(a, c);
+    return c;
+  },
+  readers: {
+    ows: {
+      Exception: function (a, b) {
+        var c = {
+          code: a.getAttribute("exceptionCode"),
+          locator: a.getAttribute("locator"),
+          texts: [],
+        };
+        b.exceptions.push(c);
+        this.readChildNodes(a, c);
+      },
+      ExceptionText: function (a, b) {
+        var c = this.getChildValue(a);
+        b.texts.push(c);
+      },
+      ServiceIdentification: function (a, b) {
+        b.serviceIdentification = {};
+        this.readChildNodes(a, b.serviceIdentification);
+      },
+      Title: function (a, b) {
+        b.title = this.getChildValue(a);
+      },
+      Abstract: function (a, b) {
+        b["abstract"] = this.getChildValue(a);
+      },
+      Keywords: function (a, b) {
+        b.keywords = {};
+        this.readChildNodes(a, b.keywords);
+      },
+      Keyword: function (a, b) {
+        b[this.getChildValue(a)] = !0;
+      },
+      ServiceType: function (a, b) {
+        b.serviceType = { codeSpace: a.getAttribute("codeSpace"), value: this.getChildValue(a) };
+      },
+      ServiceTypeVersion: function (a, b) {
+        b.serviceTypeVersion = this.getChildValue(a);
+      },
+      Fees: function (a, b) {
+        b.fees = this.getChildValue(a);
+      },
+      AccessConstraints: function (a, b) {
+        b.accessConstraints = this.getChildValue(a);
+      },
+      ServiceProvider: function (a, b) {
+        b.serviceProvider = {};
+        this.readChildNodes(a, b.serviceProvider);
+      },
+      ProviderName: function (a, b) {
+        b.providerName = this.getChildValue(a);
+      },
+      ProviderSite: function (a, b) {
+        b.providerSite = this.getAttributeNS(a, this.namespaces.xlink, "href");
+      },
+      ServiceContact: function (a, b) {
+        b.serviceContact = {};
+        this.readChildNodes(a, b.serviceContact);
+      },
+      IndividualName: function (a, b) {
+        b.individualName = this.getChildValue(a);
+      },
+      PositionName: function (a, b) {
+        b.positionName = this.getChildValue(a);
+      },
+      ContactInfo: function (a, b) {
+        b.contactInfo = {};
+        this.readChildNodes(a, b.contactInfo);
+      },
+      Phone: function (a, b) {
+        b.phone = {};
+        this.readChildNodes(a, b.phone);
+      },
+      Voice: function (a, b) {
+        b.voice = this.getChildValue(a);
+      },
+      Address: function (a, b) {
+        b.address = {};
+        this.readChildNodes(a, b.address);
+      },
+      DeliveryPoint: function (a, b) {
+        b.deliveryPoint = this.getChildValue(a);
+      },
+      City: function (a, b) {
+        b.city = this.getChildValue(a);
+      },
+      AdministrativeArea: function (a, b) {
+        b.administrativeArea = this.getChildValue(a);
+      },
+      PostalCode: function (a, b) {
+        b.postalCode = this.getChildValue(a);
+      },
+      Country: function (a, b) {
+        b.country = this.getChildValue(a);
+      },
+      ElectronicMailAddress: function (a, b) {
+        b.electronicMailAddress = this.getChildValue(a);
+      },
+      Role: function (a, b) {
+        b.role = this.getChildValue(a);
+      },
+      OperationsMetadata: function (a, b) {
+        b.operationsMetadata = {};
+        this.readChildNodes(a, b.operationsMetadata);
+      },
+      Operation: function (a, b) {
+        var c = a.getAttribute("name");
+        b[c] = {};
+        this.readChildNodes(a, b[c]);
+      },
+      DCP: function (a, b) {
+        b.dcp = {};
+        this.readChildNodes(a, b.dcp);
+      },
+      HTTP: function (a, b) {
+        b.http = {};
+        this.readChildNodes(a, b.http);
+      },
+      Get: function (a, b) {
+        b.get || (b.get = []);
+        var c = { url: this.getAttributeNS(a, this.namespaces.xlink, "href") };
+        this.readChildNodes(a, c);
+        b.get.push(c);
+      },
+      Post: function (a, b) {
+        b.post || (b.post = []);
+        var c = { url: this.getAttributeNS(a, this.namespaces.xlink, "href") };
+        this.readChildNodes(a, c);
+        b.post.push(c);
+      },
+      Parameter: function (a, b) {
+        b.parameters || (b.parameters = {});
+        var c = a.getAttribute("name");
+        b.parameters[c] = {};
+        this.readChildNodes(a, b.parameters[c]);
+      },
+      Constraint: function (a, b) {
+        b.constraints || (b.constraints = {});
+        var c = a.getAttribute("name");
+        b.constraints[c] = {};
+        this.readChildNodes(a, b.constraints[c]);
+      },
+      Value: function (a, b) {
+        b[this.getChildValue(a)] = !0;
+      },
+      OutputFormat: function (a, b) {
+        b.formats.push({ value: this.getChildValue(a) });
+        this.readChildNodes(a, b);
+      },
+      WGS84BoundingBox: function (a, b) {
+        var c = {};
+        c.crs = a.getAttribute("crs");
+        b.BoundingBox ? b.BoundingBox.push(c) : ((b.projection = c.crs), (c = b));
+        this.readChildNodes(a, c);
+      },
+      BoundingBox: function (a, b) {
+        this.readers.ows.WGS84BoundingBox.apply(this, [a, b]);
+      },
+      LowerCorner: function (a, b) {
+        var c = this.getChildValue(a).replace(this.regExes.trimSpace, ""),
+          c = c.replace(this.regExes.trimComma, ","),
+          c = c.split(this.regExes.splitSpace);
+        b.left = c[0];
+        b.bottom = c[1];
+      },
+      UpperCorner: function (a, b) {
+        var c = this.getChildValue(a).replace(this.regExes.trimSpace, ""),
+          c = c.replace(this.regExes.trimComma, ","),
+          c = c.split(this.regExes.splitSpace);
+        b.right = c[0];
+        b.top = c[1];
+        b.bounds = new OpenLayers.Bounds(b.left, b.bottom, b.right, b.top);
+        delete b.left;
+        delete b.bottom;
+        delete b.right;
+        delete b.top;
+      },
+      Language: function (a, b) {
+        b.language = this.getChildValue(a);
+      },
+    },
+  },
+  writers: {
+    ows: {
+      BoundingBox: function (a, b) {
+        var c = this.createElementNSPlus(b || "ows:BoundingBox", {
+          attributes: { crs: a.projection },
+        });
+        this.writeNode("ows:LowerCorner", a, c);
+        this.writeNode("ows:UpperCorner", a, c);
+        return c;
+      },
+      LowerCorner: function (a) {
+        return this.createElementNSPlus("ows:LowerCorner", {
+          value: a.bounds.left + " " + a.bounds.bottom,
+        });
+      },
+      UpperCorner: function (a) {
+        return this.createElementNSPlus("ows:UpperCorner", {
+          value: a.bounds.right + " " + a.bounds.top,
+        });
+      },
+      Identifier: function (a) {
+        return this.createElementNSPlus("ows:Identifier", { value: a });
+      },
+      Title: function (a) {
+        return this.createElementNSPlus("ows:Title", { value: a });
+      },
+      Abstract: function (a) {
+        return this.createElementNSPlus("ows:Abstract", { value: a });
+      },
+      OutputFormat: function (a) {
+        return this.createElementNSPlus("ows:OutputFormat", { value: a });
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.OWSCommon.v1",
+});
+OpenLayers.Format.OWSCommon.v1_0_0 = OpenLayers.Class(OpenLayers.Format.OWSCommon.v1, {
+  namespaces: { ows: "http://www.opengis.net/ows", xlink: "http://www.w3.org/1999/xlink" },
+  readers: {
+    ows: OpenLayers.Util.applyDefaults(
+      {
+        ExceptionReport: function (a, b) {
+          b.success = !1;
+          b.exceptionReport = {
+            version: a.getAttribute("version"),
+            language: a.getAttribute("language"),
+            exceptions: [],
+          };
+          this.readChildNodes(a, b.exceptionReport);
+        },
+      },
+      OpenLayers.Format.OWSCommon.v1.prototype.readers.ows
+    ),
+  },
+  writers: { ows: OpenLayers.Format.OWSCommon.v1.prototype.writers.ows },
+  CLASS_NAME: "OpenLayers.Format.OWSCommon.v1_0_0",
+});
+OpenLayers.Format.WFST.v1_1_0 = OpenLayers.Class(
+  OpenLayers.Format.Filter.v1_1_0,
+  OpenLayers.Format.WFST.v1,
+  {
+    version: "1.1.0",
+    schemaLocations: { wfs: "http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" },
+    initialize: function (a) {
+      OpenLayers.Format.Filter.v1_1_0.prototype.initialize.apply(this, [a]);
+      OpenLayers.Format.WFST.v1.prototype.initialize.apply(this, [a]);
+    },
+    readNode: function (a, b, c) {
+      return OpenLayers.Format.GML.v3.prototype.readNode.apply(this, arguments);
+    },
+    readers: {
+      wfs: OpenLayers.Util.applyDefaults(
+        {
+          FeatureCollection: function (a, b) {
+            b.numberOfFeatures = parseInt(a.getAttribute("numberOfFeatures"));
+            OpenLayers.Format.WFST.v1.prototype.readers.wfs.FeatureCollection.apply(
+              this,
+              arguments
+            );
+          },
+          TransactionResponse: function (a, b) {
+            b.insertIds = [];
+            b.success = !1;
+            this.readChildNodes(a, b);
+          },
+          TransactionSummary: function (a, b) {
+            b.success = !0;
+          },
+          InsertResults: function (a, b) {
+            this.readChildNodes(a, b);
+          },
+          Feature: function (a, b) {
+            var c = { fids: [] };
+            this.readChildNodes(a, c);
+            b.insertIds.push(c.fids[0]);
+          },
+        },
+        OpenLayers.Format.WFST.v1.prototype.readers.wfs
+      ),
+      gml: OpenLayers.Format.GML.v3.prototype.readers.gml,
+      feature: OpenLayers.Format.GML.v3.prototype.readers.feature,
+      ogc: OpenLayers.Format.Filter.v1_1_0.prototype.readers.ogc,
+      ows: OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows,
+    },
+    writers: {
+      wfs: OpenLayers.Util.applyDefaults(
+        {
+          GetFeature: function (a) {
+            var b = OpenLayers.Format.WFST.v1.prototype.writers.wfs.GetFeature.apply(
+              this,
+              arguments
+            );
+            a &&
+              this.setAttributes(b, {
+                resultType: a.resultType,
+                startIndex: a.startIndex,
+                count: a.count,
+              });
+            return b;
+          },
+          Query: function (a) {
+            a = OpenLayers.Util.extend(
+              {
+                featureNS: this.featureNS,
+                featurePrefix: this.featurePrefix,
+                featureType: this.featureType,
+                srsName: this.srsName,
+              },
+              a
+            );
+            var b = a.featurePrefix,
+              c = this.createElementNSPlus("wfs:Query", {
+                attributes: { typeName: (b ? b + ":" : "") + a.featureType, srsName: a.srsName },
+              });
+            a.featureNS && c.setAttribute("xmlns:" + b, a.featureNS);
+            if (a.propertyNames)
+              for (var b = 0, d = a.propertyNames.length; b < d; b++)
+                this.writeNode("wfs:PropertyName", { property: a.propertyNames[b] }, c);
+            a.filter &&
+              (OpenLayers.Format.WFST.v1_1_0.prototype.setFilterProperty.call(this, a.filter),
+              this.writeNode("ogc:Filter", a.filter, c));
+            return c;
+          },
+          PropertyName: function (a) {
+            return this.createElementNSPlus("wfs:PropertyName", { value: a.property });
+          },
+        },
+        OpenLayers.Format.WFST.v1.prototype.writers.wfs
+      ),
+      gml: OpenLayers.Format.GML.v3.prototype.writers.gml,
+      feature: OpenLayers.Format.GML.v3.prototype.writers.feature,
+      ogc: OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc,
+    },
+    CLASS_NAME: "OpenLayers.Format.WFST.v1_1_0",
+  }
+);
+OpenLayers.Protocol = OpenLayers.Class({
+  format: null,
+  options: null,
+  autoDestroy: !0,
+  defaultFilter: null,
+  initialize: function (a) {
+    a = a || {};
+    OpenLayers.Util.extend(this, a);
+    this.options = a;
+  },
+  mergeWithDefaultFilter: function (a) {
+    return a && this.defaultFilter
+      ? new OpenLayers.Filter.Logical({
+          type: OpenLayers.Filter.Logical.AND,
+          filters: [this.defaultFilter, a],
+        })
+      : a || this.defaultFilter || void 0;
+  },
+  destroy: function () {
+    this.format = this.options = null;
+  },
+  read: function (a) {
+    a = a || {};
+    a.filter = this.mergeWithDefaultFilter(a.filter);
+  },
+  create: function () {},
+  update: function () {},
+  delete: function () {},
+  commit: function () {},
+  abort: function (a) {},
+  createCallback: function (a, b, c) {
+    return OpenLayers.Function.bind(function () {
+      a.apply(this, [b, c]);
+    }, this);
+  },
+  CLASS_NAME: "OpenLayers.Protocol",
+});
+OpenLayers.Protocol.Response = OpenLayers.Class({
+  code: null,
+  requestType: null,
+  last: !0,
+  features: null,
+  data: null,
+  reqFeatures: null,
+  priv: null,
+  error: null,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+  },
+  success: function () {
+    return 0 < this.code;
+  },
+  CLASS_NAME: "OpenLayers.Protocol.Response",
+});
+OpenLayers.Protocol.Response.SUCCESS = 1;
+OpenLayers.Protocol.Response.FAILURE = 0;
+OpenLayers.Format.JSON = OpenLayers.Class(OpenLayers.Format, {
+  indent: "    ",
+  space: " ",
+  newline: "\n",
+  level: 0,
+  pretty: !1,
+  nativeJSON: (function () {
+    return !(
+      !window.JSON ||
+      "function" != typeof JSON.parse ||
+      "function" != typeof JSON.stringify
+    );
+  })(),
+  read: function (a, b) {
+    var c;
+    if (this.nativeJSON) c = JSON.parse(a, b);
+    else
+      try {
+        if (
+          /^[\],:{}\s]*$/.test(
+            a
+              .replace(/\\["\\\/bfnrtu]/g, "@")
+              .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
+              .replace(/(?:^|:|,)(?:\s*\[)+/g, "")
+          ) &&
+          ((c = eval("(" + a + ")")), "function" === typeof b)
+        ) {
+          var d = function (a, c) {
+            if (c && "object" === typeof c)
+              for (var e in c) c.hasOwnProperty(e) && (c[e] = d(e, c[e]));
+            return b(a, c);
+          };
+          c = d("", c);
+        }
+      } catch (e) {}
+    this.keepData && (this.data = c);
+    return c;
+  },
+  write: function (a, b) {
+    this.pretty = !!b;
+    var c = null,
+      d = typeof a;
+    if (this.serialize[d])
+      try {
+        c =
+          !this.pretty && this.nativeJSON ? JSON.stringify(a) : this.serialize[d].apply(this, [a]);
+      } catch (e) {
+        OpenLayers.Console.error("Trouble serializing: " + e);
+      }
+    return c;
+  },
+  writeIndent: function () {
+    var a = [];
+    if (this.pretty) for (var b = 0; b < this.level; ++b) a.push(this.indent);
+    return a.join("");
+  },
+  writeNewline: function () {
+    return this.pretty ? this.newline : "";
+  },
+  writeSpace: function () {
+    return this.pretty ? this.space : "";
+  },
+  serialize: {
+    object: function (a) {
+      if (null == a) return "null";
+      if (a.constructor == Date) return this.serialize.date.apply(this, [a]);
+      if (a.constructor == Array) return this.serialize.array.apply(this, [a]);
+      var b = ["{"];
+      this.level += 1;
+      var c,
+        d,
+        e,
+        f = !1;
+      for (c in a)
+        a.hasOwnProperty(c) &&
+          ((d = OpenLayers.Format.JSON.prototype.write.apply(this, [c, this.pretty])),
+          (e = OpenLayers.Format.JSON.prototype.write.apply(this, [a[c], this.pretty])),
+          null != d &&
+            null != e &&
+            (f && b.push(","),
+            b.push(this.writeNewline(), this.writeIndent(), d, ":", this.writeSpace(), e),
+            (f = !0)));
+      this.level -= 1;
+      b.push(this.writeNewline(), this.writeIndent(), "}");
+      return b.join("");
+    },
+    array: function (a) {
+      var b,
+        c = ["["];
+      this.level += 1;
+      for (var d = 0, e = a.length; d < e; ++d)
+        (b = OpenLayers.Format.JSON.prototype.write.apply(this, [a[d], this.pretty])),
+          null != b && (0 < d && c.push(","), c.push(this.writeNewline(), this.writeIndent(), b));
+      this.level -= 1;
+      c.push(this.writeNewline(), this.writeIndent(), "]");
+      return c.join("");
+    },
+    string: function (a) {
+      var b = {
+        "\b": "\\b",
+        "\t": "\\t",
+        "\n": "\\n",
+        "\f": "\\f",
+        "\r": "\\r",
+        '"': '\\"',
+        "\\": "\\\\",
+      };
+      return /["\\\x00-\x1f]/.test(a)
+        ? '"' +
+            a.replace(/([\x00-\x1f\\"])/g, function (a, d) {
+              var e = b[d];
+              if (e) return e;
+              e = d.charCodeAt();
+              return "\\u00" + Math.floor(e / 16).toString(16) + (e % 16).toString(16);
+            }) +
+            '"'
+        : '"' + a + '"';
+    },
+    number: function (a) {
+      return isFinite(a) ? String(a) : "null";
+    },
+    boolean: function (a) {
+      return String(a);
+    },
+    date: function (a) {
+      function b(a) {
+        return 10 > a ? "0" + a : a;
+      }
+      return (
+        '"' +
+        a.getFullYear() +
+        "-" +
+        b(a.getMonth() + 1) +
+        "-" +
+        b(a.getDate()) +
+        "T" +
+        b(a.getHours()) +
+        ":" +
+        b(a.getMinutes()) +
+        ":" +
+        b(a.getSeconds()) +
+        '"'
+      );
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.JSON",
+});
+OpenLayers.Format.GeoJSON = OpenLayers.Class(OpenLayers.Format.JSON, {
+  ignoreExtraDims: !1,
+  read: function (a, b, c) {
+    b = b ? b : "FeatureCollection";
+    var d = null,
+      e = null,
+      e = "string" == typeof a ? OpenLayers.Format.JSON.prototype.read.apply(this, [a, c]) : a;
+    if (!e) OpenLayers.Console.error("Bad JSON: " + a);
+    else if ("string" != typeof e.type) OpenLayers.Console.error("Bad GeoJSON - no type: " + a);
+    else if (this.isValidType(e, b))
+      switch (b) {
+        case "Geometry":
+          try {
+            d = this.parseGeometry(e);
+          } catch (f) {
+            OpenLayers.Console.error(f);
+          }
+          break;
+        case "Feature":
+          try {
+            (d = this.parseFeature(e)), (d.type = "Feature");
+          } catch (g) {
+            OpenLayers.Console.error(g);
+          }
+          break;
+        case "FeatureCollection":
+          switch (((d = []), e.type)) {
+            case "Feature":
+              try {
+                d.push(this.parseFeature(e));
+              } catch (h) {
+                (d = null), OpenLayers.Console.error(h);
+              }
+              break;
+            case "FeatureCollection":
+              a = 0;
+              for (b = e.features.length; a < b; ++a)
+                try {
+                  d.push(this.parseFeature(e.features[a]));
+                } catch (k) {
+                  (d = null), OpenLayers.Console.error(k);
+                }
+              break;
+            default:
+              try {
+                var l = this.parseGeometry(e);
+                d.push(new OpenLayers.Feature.Vector(l));
+              } catch (m) {
+                (d = null), OpenLayers.Console.error(m);
+              }
+          }
+      }
+    return d;
+  },
+  isValidType: function (a, b) {
+    var c = !1;
+    switch (b) {
+      case "Geometry":
+        -1 ==
+        OpenLayers.Util.indexOf(
+          "Point MultiPoint LineString MultiLineString Polygon MultiPolygon Box GeometryCollection".split(
+            " "
+          ),
+          a.type
+        )
+          ? OpenLayers.Console.error("Unsupported geometry type: " + a.type)
+          : (c = !0);
+        break;
+      case "FeatureCollection":
+        c = !0;
+        break;
+      default:
+        a.type == b
+          ? (c = !0)
+          : OpenLayers.Console.error("Cannot convert types from " + a.type + " to " + b);
+    }
+    return c;
+  },
+  parseFeature: function (a) {
+    var b, c, d;
+    c = a.properties ? a.properties : {};
+    d = (a.geometry && a.geometry.bbox) || a.bbox;
+    try {
+      b = this.parseGeometry(a.geometry);
+    } catch (e) {
+      throw e;
+    }
+    b = new OpenLayers.Feature.Vector(b, c);
+    d && (b.bounds = OpenLayers.Bounds.fromArray(d));
+    a.id && (b.fid = a.id);
+    return b;
+  },
+  parseGeometry: function (a) {
+    if (null == a) return null;
+    var b,
+      c = !1;
+    if ("GeometryCollection" == a.type) {
+      if (!OpenLayers.Util.isArray(a.geometries))
+        throw "GeometryCollection must have geometries array: " + a;
+      b = a.geometries.length;
+      for (var c = Array(b), d = 0; d < b; ++d)
+        c[d] = this.parseGeometry.apply(this, [a.geometries[d]]);
+      b = new OpenLayers.Geometry.Collection(c);
+      c = !0;
+    } else {
+      if (!OpenLayers.Util.isArray(a.coordinates))
+        throw "Geometry must have coordinates array: " + a;
+      if (!this.parseCoords[a.type.toLowerCase()]) throw "Unsupported geometry type: " + a.type;
+      try {
+        b = this.parseCoords[a.type.toLowerCase()].apply(this, [a.coordinates]);
+      } catch (e) {
+        throw e;
+      }
+    }
+    this.internalProjection &&
+      this.externalProjection &&
+      !c &&
+      b.transform(this.externalProjection, this.internalProjection);
+    return b;
+  },
+  parseCoords: {
+    point: function (a) {
+      if (!1 == this.ignoreExtraDims && 2 != a.length) throw "Only 2D points are supported: " + a;
+      return new OpenLayers.Geometry.Point(a[0], a[1]);
+    },
+    multipoint: function (a) {
+      for (var b = [], c = null, d = 0, e = a.length; d < e; ++d) {
+        try {
+          c = this.parseCoords.point.apply(this, [a[d]]);
+        } catch (f) {
+          throw f;
+        }
+        b.push(c);
+      }
+      return new OpenLayers.Geometry.MultiPoint(b);
+    },
+    linestring: function (a) {
+      for (var b = [], c = null, d = 0, e = a.length; d < e; ++d) {
+        try {
+          c = this.parseCoords.point.apply(this, [a[d]]);
+        } catch (f) {
+          throw f;
+        }
+        b.push(c);
+      }
+      return new OpenLayers.Geometry.LineString(b);
+    },
+    multilinestring: function (a) {
+      for (var b = [], c = null, d = 0, e = a.length; d < e; ++d) {
+        try {
+          c = this.parseCoords.linestring.apply(this, [a[d]]);
+        } catch (f) {
+          throw f;
+        }
+        b.push(c);
+      }
+      return new OpenLayers.Geometry.MultiLineString(b);
+    },
+    polygon: function (a) {
+      for (var b = [], c, d, e = 0, f = a.length; e < f; ++e) {
+        try {
+          d = this.parseCoords.linestring.apply(this, [a[e]]);
+        } catch (g) {
+          throw g;
+        }
+        c = new OpenLayers.Geometry.LinearRing(d.components);
+        b.push(c);
+      }
+      return new OpenLayers.Geometry.Polygon(b);
+    },
+    multipolygon: function (a) {
+      for (var b = [], c = null, d = 0, e = a.length; d < e; ++d) {
+        try {
+          c = this.parseCoords.polygon.apply(this, [a[d]]);
+        } catch (f) {
+          throw f;
+        }
+        b.push(c);
+      }
+      return new OpenLayers.Geometry.MultiPolygon(b);
+    },
+    box: function (a) {
+      if (2 != a.length) throw "GeoJSON box coordinates must have 2 elements";
+      return new OpenLayers.Geometry.Polygon([
+        new OpenLayers.Geometry.LinearRing([
+          new OpenLayers.Geometry.Point(a[0][0], a[0][1]),
+          new OpenLayers.Geometry.Point(a[1][0], a[0][1]),
+          new OpenLayers.Geometry.Point(a[1][0], a[1][1]),
+          new OpenLayers.Geometry.Point(a[0][0], a[1][1]),
+          new OpenLayers.Geometry.Point(a[0][0], a[0][1]),
+        ]),
+      ]);
+    },
+  },
+  write: function (a, b) {
+    var c = { type: null };
+    if (OpenLayers.Util.isArray(a)) {
+      c.type = "FeatureCollection";
+      var d = a.length;
+      c.features = Array(d);
+      for (var e = 0; e < d; ++e) {
+        var f = a[e];
+        if (!f instanceof OpenLayers.Feature.Vector)
+          throw "FeatureCollection only supports collections of features: " + f;
+        c.features[e] = this.extract.feature.apply(this, [f]);
+      }
+    } else
+      0 == a.CLASS_NAME.indexOf("OpenLayers.Geometry")
+        ? (c = this.extract.geometry.apply(this, [a]))
+        : a instanceof OpenLayers.Feature.Vector &&
+          ((c = this.extract.feature.apply(this, [a])),
+          a.layer && a.layer.projection && (c.crs = this.createCRSObject(a)));
+    return OpenLayers.Format.JSON.prototype.write.apply(this, [c, b]);
+  },
+  createCRSObject: function (a) {
+    a = a.layer.projection.toString();
+    var b = {};
+    a.match(/epsg:/i) &&
+      ((a = parseInt(a.substring(a.indexOf(":") + 1))),
+      (b =
+        4326 == a
+          ? { type: "name", properties: { name: "urn:ogc:def:crs:OGC:1.3:CRS84" } }
+          : { type: "name", properties: { name: "EPSG:" + a } }));
+    return b;
+  },
+  extract: {
+    feature: function (a) {
+      var b = this.extract.geometry.apply(this, [a.geometry]),
+        b = { type: "Feature", properties: a.attributes, geometry: b };
+      null != a.fid && (b.id = a.fid);
+      return b;
+    },
+    geometry: function (a) {
+      if (null == a) return null;
+      this.internalProjection &&
+        this.externalProjection &&
+        ((a = a.clone()), a.transform(this.internalProjection, this.externalProjection));
+      var b = a.CLASS_NAME.split(".")[2];
+      a = this.extract[b.toLowerCase()].apply(this, [a]);
+      return "Collection" == b
+        ? { type: "GeometryCollection", geometries: a }
+        : { type: b, coordinates: a };
+    },
+    point: function (a) {
+      return [a.x, a.y];
+    },
+    multipoint: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push(this.extract.point.apply(this, [a.components[c]]));
+      return b;
+    },
+    linestring: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push(this.extract.point.apply(this, [a.components[c]]));
+      return b;
+    },
+    multilinestring: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push(this.extract.linestring.apply(this, [a.components[c]]));
+      return b;
+    },
+    polygon: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push(this.extract.linestring.apply(this, [a.components[c]]));
+      return b;
+    },
+    multipolygon: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push(this.extract.polygon.apply(this, [a.components[c]]));
+      return b;
+    },
+    collection: function (a) {
+      for (var b = a.components.length, c = Array(b), d = 0; d < b; ++d)
+        c[d] = this.extract.geometry.apply(this, [a.components[d]]);
+      return c;
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.GeoJSON",
+});
+OpenLayers.Protocol.Script = OpenLayers.Class(OpenLayers.Protocol, {
+  url: null,
+  params: null,
+  callback: null,
+  callbackTemplate: "OpenLayers.Protocol.Script.registry.${id}",
+  callbackKey: "callback",
+  callbackPrefix: "",
+  scope: null,
+  format: null,
+  pendingRequests: null,
+  srsInBBOX: !1,
+  initialize: function (a) {
+    a = a || {};
+    this.params = {};
+    this.pendingRequests = {};
+    OpenLayers.Protocol.prototype.initialize.apply(this, arguments);
+    this.format || (this.format = new OpenLayers.Format.GeoJSON());
+    if (!this.filterToParams && OpenLayers.Format.QueryStringFilter) {
+      var b = new OpenLayers.Format.QueryStringFilter({ srsInBBOX: this.srsInBBOX });
+      this.filterToParams = function (a, d) {
+        return b.write(a, d);
+      };
+    }
+  },
+  read: function (a) {
+    OpenLayers.Protocol.prototype.read.apply(this, arguments);
+    a = OpenLayers.Util.applyDefaults(a, this.options);
+    a.params = OpenLayers.Util.applyDefaults(a.params, this.options.params);
+    a.filter && this.filterToParams && (a.params = this.filterToParams(a.filter, a.params));
+    var b = new OpenLayers.Protocol.Response({ requestType: "read" }),
+      c = this.createRequest(
+        a.url,
+        a.params,
+        OpenLayers.Function.bind(function (c) {
+          b.data = c;
+          this.handleRead(b, a);
+        }, this)
+      );
+    b.priv = c;
+    return b;
+  },
+  createRequest: function (a, b, c) {
+    c = OpenLayers.Protocol.Script.register(c);
+    var d = OpenLayers.String.format(this.callbackTemplate, { id: c });
+    b = OpenLayers.Util.extend({}, b);
+    b[this.callbackKey] = this.callbackPrefix + d;
+    a = OpenLayers.Util.urlAppend(a, OpenLayers.Util.getParameterString(b));
+    b = document.createElement("script");
+    b.type = "text/javascript";
+    b.src = a;
+    b.id = "OpenLayers_Protocol_Script_" + c;
+    this.pendingRequests[b.id] = b;
+    document.getElementsByTagName("head")[0].appendChild(b);
+    return b;
+  },
+  destroyRequest: function (a) {
+    OpenLayers.Protocol.Script.unregister(a.id.split("_").pop());
+    delete this.pendingRequests[a.id];
+    a.parentNode && a.parentNode.removeChild(a);
+  },
+  handleRead: function (a, b) {
+    this.handleResponse(a, b);
+  },
+  handleResponse: function (a, b) {
+    b.callback &&
+      (a.data
+        ? ((a.features = this.parseFeatures(a.data)),
+          (a.code = OpenLayers.Protocol.Response.SUCCESS))
+        : (a.code = OpenLayers.Protocol.Response.FAILURE),
+      this.destroyRequest(a.priv),
+      b.callback.call(b.scope, a));
+  },
+  parseFeatures: function (a) {
+    return this.format.read(a);
+  },
+  abort: function (a) {
+    if (a) this.destroyRequest(a.priv);
+    else for (var b in this.pendingRequests) this.destroyRequest(this.pendingRequests[b]);
+  },
+  destroy: function () {
+    this.abort();
+    delete this.params;
+    delete this.format;
+    OpenLayers.Protocol.prototype.destroy.apply(this);
+  },
+  CLASS_NAME: "OpenLayers.Protocol.Script",
+});
+(function () {
+  var a = OpenLayers.Protocol.Script,
+    b = 0;
+  a.registry = {};
+  a.register = function (c) {
+    var d = "c" + ++b;
+    a.registry[d] = function () {
+      c.apply(this, arguments);
+    };
+    return d;
+  };
+  a.unregister = function (b) {
+    delete a.registry[b];
+  };
+})();
+OpenLayers.Format.EncodedPolyline = OpenLayers.Class(OpenLayers.Format, {
+  geometryType: "linestring",
+  initialize: function (a) {
+    OpenLayers.Format.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    var b;
+    if ("linestring" == this.geometryType) b = OpenLayers.Geometry.LineString;
+    else if ("linearring" == this.geometryType) b = OpenLayers.Geometry.LinearRing;
+    else if ("multipoint" == this.geometryType) b = OpenLayers.Geometry.MultiPoint;
+    else if ("point" != this.geometryType && "polygon" != this.geometryType) return null;
+    a = this.decodeDeltas(a, 2);
+    for (var c = a.length, d = [], e = 0; e + 1 < c; ) {
+      var f = a[e++],
+        g = a[e++];
+      d.push(new OpenLayers.Geometry.Point(g, f));
+    }
+    return "point" == this.geometryType
+      ? new OpenLayers.Feature.Vector(d[0])
+      : "polygon" == this.geometryType
+      ? new OpenLayers.Feature.Vector(
+          new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)])
+        )
+      : new OpenLayers.Feature.Vector(new b(d));
+  },
+  decode: function (a, b, c) {
+    a = this.decodeDeltas(a, b, c || 1e5);
+    c = a.length;
+    for (var d = [], e = 0; e + (b - 1) < c; ) {
+      for (var f = [], g = 0; g < b; ++g) f.push(a[e++]);
+      d.push(f);
+    }
+    return d;
+  },
+  write: function (a) {
+    a = (a.constructor == Array ? a[0] : a).geometry;
+    var b = a.CLASS_NAME.split(".")[2].toLowerCase();
+    if ("point" == b) a = Array(a);
+    else if ("linestring" == b || "linearring" == b || "multipoint" == b) a = a.components;
+    else if ("polygon" == b) a = a.components[0].components;
+    else return null;
+    for (var b = [], c = a.length, d = 0; d < c; ++d) {
+      var e = a[d];
+      b.push(e.y);
+      b.push(e.x);
+    }
+    return this.encodeDeltas(b, 2);
+  },
+  encode: function (a, b, c) {
+    c = c || 1e5;
+    for (var d = [], e = a.length, f = 0; f < e; ++f)
+      for (var g = a[f], h = 0; h < b; ++h) d.push(g[h]);
+    return this.encodeDeltas(d, b, c);
+  },
+  encodeDeltas: function (a, b, c) {
+    var d,
+      e = Array(b);
+    for (d = 0; d < b; ++d) e[d] = 0;
+    for (var f = a.length, g = 0; g < f; )
+      for (d = 0; d < b; ++d, ++g) {
+        var h = a[g],
+          k = h - e[d];
+        e[d] = h;
+        a[g] = k;
+      }
+    return this.encodeFloats(a, c || 1e5);
+  },
+  decodeDeltas: function (a, b, c) {
+    var d,
+      e = Array(b);
+    for (d = 0; d < b; ++d) e[d] = 0;
+    a = this.decodeFloats(a, c || 1e5);
+    c = a.length;
+    for (var f = 0; f < c; ) for (d = 0; d < b; ++d, ++f) (e[d] += a[f]), (a[f] = e[d]);
+    return a;
+  },
+  encodeFloats: function (a, b) {
+    for (var c = b || 1e5, d = a.length, e = 0; e < d; ++e) a[e] = Math.round(a[e] * c);
+    return this.encodeSignedIntegers(a);
+  },
+  decodeFloats: function (a, b) {
+    for (var c = b || 1e5, d = this.decodeSignedIntegers(a), e = d.length, f = 0; f < e; ++f)
+      d[f] /= c;
+    return d;
+  },
+  encodeSignedIntegers: function (a) {
+    for (var b = a.length, c = 0; c < b; ++c) {
+      var d = a[c],
+        e = d << 1;
+      0 > d && (e = ~e);
+      a[c] = e;
+    }
+    return this.encodeUnsignedIntegers(a);
+  },
+  decodeSignedIntegers: function (a) {
+    a = this.decodeUnsignedIntegers(a);
+    for (var b = a.length, c = 0; c < b; ++c) {
+      var d = a[c];
+      a[c] = d & 1 ? ~(d >> 1) : d >> 1;
+    }
+    return a;
+  },
+  encodeUnsignedIntegers: function (a) {
+    for (var b = "", c = a.length, d = 0; d < c; ++d) b += this.encodeUnsignedInteger(a[d]);
+    return b;
+  },
+  decodeUnsignedIntegers: function (a) {
+    for (var b = [], c = 0, d = 0, e = a.length, f = 0; f < e; ++f) {
+      var g = a.charCodeAt(f) - 63,
+        c = c | ((g & 31) << d);
+      32 > g ? (b.push(c), (d = c = 0)) : (d += 5);
+    }
+    return b;
+  },
+  encodeFloat: function (a, b) {
+    a = Math.round(a * (b || 1e5));
+    return this.encodeSignedInteger(a);
+  },
+  decodeFloat: function (a, b) {
+    return this.decodeSignedInteger(a) / (b || 1e5);
+  },
+  encodeSignedInteger: function (a) {
+    var b = a << 1;
+    0 > a && (b = ~b);
+    return this.encodeUnsignedInteger(b);
+  },
+  decodeSignedInteger: function (a) {
+    a = this.decodeUnsignedInteger(a);
+    return a & 1 ? ~(a >> 1) : a >> 1;
+  },
+  encodeUnsignedInteger: function (a) {
+    for (var b, c = ""; 32 <= a; )
+      (b = (32 | (a & 31)) + 63), (c += String.fromCharCode(b)), (a >>= 5);
+    return (c += String.fromCharCode(a + 63));
+  },
+  decodeUnsignedInteger: function (a) {
+    for (var b = 0, c = 0, d = a.length, e = 0; e < d; ++e) {
+      var f = a.charCodeAt(e) - 63,
+        b = b | ((f & 31) << c);
+      if (32 > f) break;
+      c += 5;
+    }
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Format.EncodedPolyline",
+});
+OpenLayers.Control.Panel = OpenLayers.Class(OpenLayers.Control, {
+  controls: null,
+  autoActivate: !0,
+  defaultControl: null,
+  saveState: !1,
+  allowDepress: !1,
+  activeState: null,
+  initialize: function (a) {
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+    this.controls = [];
+    this.activeState = {};
+  },
+  destroy: function () {
+    this.map && this.map.events.unregister("buttonclick", this, this.onButtonClick);
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+    for (var a, b = this.controls.length - 1; 0 <= b; b--)
+      (a = this.controls[b]),
+        a.events && a.events.un({ activate: this.iconOn, deactivate: this.iconOff }),
+        (a.panel_div = null);
+    this.activeState = null;
+  },
+  activate: function () {
+    if (OpenLayers.Control.prototype.activate.apply(this, arguments)) {
+      for (var a, b = 0, c = this.controls.length; b < c; b++)
+        (a = this.controls[b]),
+          (a === this.defaultControl || (this.saveState && this.activeState[a.id])) && a.activate();
+      !0 === this.saveState && (this.defaultControl = null);
+      this.redraw();
+      return !0;
+    }
+    return !1;
+  },
+  deactivate: function () {
+    if (OpenLayers.Control.prototype.deactivate.apply(this, arguments)) {
+      for (var a, b = 0, c = this.controls.length; b < c; b++)
+        (a = this.controls[b]), (this.activeState[a.id] = a.deactivate());
+      this.redraw();
+      return !0;
+    }
+    return !1;
+  },
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    this.outsideViewport
+      ? (this.events.attachToElement(this.div),
+        this.events.register("buttonclick", this, this.onButtonClick))
+      : this.map.events.register("buttonclick", this, this.onButtonClick);
+    this.addControlsToMap(this.controls);
+    return this.div;
+  },
+  redraw: function () {
+    for (var a = this.div.childNodes.length - 1; 0 <= a; a--)
+      this.div.removeChild(this.div.childNodes[a]);
+    this.div.innerHTML = "";
+    if (this.active)
+      for (var a = 0, b = this.controls.length; a < b; a++)
+        this.div.appendChild(this.controls[a].panel_div);
+  },
+  activateControl: function (a) {
+    if (!this.active) return !1;
+    if (a.type == OpenLayers.Control.TYPE_BUTTON) a.trigger();
+    else if (a.type == OpenLayers.Control.TYPE_TOGGLE) a.active ? a.deactivate() : a.activate();
+    else if (this.allowDepress && a.active) a.deactivate();
+    else {
+      for (var b, c = 0, d = this.controls.length; c < d; c++)
+        (b = this.controls[c]),
+          b == a || (b.type !== OpenLayers.Control.TYPE_TOOL && null != b.type) || b.deactivate();
+      a.activate();
+    }
+  },
+  addControls: function (a) {
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    this.controls = this.controls.concat(a);
+    for (var b = 0, c = a.length; b < c; b++) {
+      var d = a[b],
+        e = this.createControlMarkup(d);
+      OpenLayers.Element.addClass(e, d.displayClass + "ItemInactive");
+      OpenLayers.Element.addClass(e, "olButton");
+      "" == d.title || e.title || (e.title = d.title);
+      d.panel_div = e;
+    }
+    this.map && (this.addControlsToMap(a), this.redraw());
+  },
+  createControlMarkup: function (a) {
+    return document.createElement("div");
+  },
+  addControlsToMap: function (a) {
+    for (var b, c = 0, d = a.length; c < d; c++)
+      (b = a[c]),
+        !0 === b.autoActivate
+          ? ((b.autoActivate = !1), this.map.addControl(b), (b.autoActivate = !0))
+          : (this.map.addControl(b), b.deactivate()),
+        b.events.on({ activate: this.iconOn, deactivate: this.iconOff });
+  },
+  iconOn: function () {
+    var a = this.panel_div;
+    a.className = a.className.replace(
+      RegExp("\\b(" + this.displayClass + "Item)Inactive\\b"),
+      "$1Active"
+    );
+  },
+  iconOff: function () {
+    var a = this.panel_div;
+    a.className = a.className.replace(
+      RegExp("\\b(" + this.displayClass + "Item)Active\\b"),
+      "$1Inactive"
+    );
+  },
+  onButtonClick: function (a) {
+    var b = this.controls;
+    a = a.buttonElement;
+    for (var c = b.length - 1; 0 <= c; --c)
+      if (b[c].panel_div === a) {
+        this.activateControl(b[c]);
+        break;
+      }
+  },
+  getControlsBy: function (a, b) {
+    var c = "function" == typeof b.test;
+    return OpenLayers.Array.filter(this.controls, function (d) {
+      return d[a] == b || (c && b.test(d[a]));
+    });
+  },
+  getControlsByName: function (a) {
+    return this.getControlsBy("name", a);
+  },
+  getControlsByClass: function (a) {
+    return this.getControlsBy("CLASS_NAME", a);
+  },
+  CLASS_NAME: "OpenLayers.Control.Panel",
+});
+OpenLayers.Control.Button = OpenLayers.Class(OpenLayers.Control, {
+  type: OpenLayers.Control.TYPE_BUTTON,
+  trigger: function () {},
+  CLASS_NAME: "OpenLayers.Control.Button",
+});
+OpenLayers.Control.ZoomIn = OpenLayers.Class(OpenLayers.Control.Button, {
+  trigger: function () {
+    this.map && this.map.zoomIn();
+  },
+  CLASS_NAME: "OpenLayers.Control.ZoomIn",
+});
+OpenLayers.Control.ZoomOut = OpenLayers.Class(OpenLayers.Control.Button, {
+  trigger: function () {
+    this.map && this.map.zoomOut();
+  },
+  CLASS_NAME: "OpenLayers.Control.ZoomOut",
+});
+OpenLayers.Control.ZoomToMaxExtent = OpenLayers.Class(OpenLayers.Control.Button, {
+  trigger: function () {
+    this.map && this.map.zoomToMaxExtent();
+  },
+  CLASS_NAME: "OpenLayers.Control.ZoomToMaxExtent",
+});
+OpenLayers.Control.ZoomPanel = OpenLayers.Class(OpenLayers.Control.Panel, {
+  initialize: function (a) {
+    OpenLayers.Control.Panel.prototype.initialize.apply(this, [a]);
+    this.addControls([
+      new OpenLayers.Control.ZoomIn(),
+      new OpenLayers.Control.ZoomToMaxExtent(),
+      new OpenLayers.Control.ZoomOut(),
+    ]);
+  },
+  CLASS_NAME: "OpenLayers.Control.ZoomPanel",
+});
+OpenLayers.Layer.HTTPRequest = OpenLayers.Class(OpenLayers.Layer, {
+  URL_HASH_FACTOR: (Math.sqrt(5) - 1) / 2,
+  url: null,
+  params: null,
+  reproject: !1,
+  initialize: function (a, b, c, d) {
+    OpenLayers.Layer.prototype.initialize.apply(this, [a, d]);
+    this.url = b;
+    this.params || (this.params = OpenLayers.Util.extend({}, c));
+  },
+  destroy: function () {
+    this.params = this.url = null;
+    OpenLayers.Layer.prototype.destroy.apply(this, arguments);
+  },
+  clone: function (a) {
+    null == a &&
+      (a = new OpenLayers.Layer.HTTPRequest(this.name, this.url, this.params, this.getOptions()));
+    return (a = OpenLayers.Layer.prototype.clone.apply(this, [a]));
+  },
+  setUrl: function (a) {
+    this.url = a;
+  },
+  mergeNewParams: function (a) {
+    this.params = OpenLayers.Util.extend(this.params, a);
+    a = this.redraw();
+    null != this.map &&
+      this.map.events.triggerEvent("changelayer", { layer: this, property: "params" });
+    return a;
+  },
+  redraw: function (a) {
+    return a
+      ? this.mergeNewParams({ _olSalt: Math.random() })
+      : OpenLayers.Layer.prototype.redraw.apply(this, []);
+  },
+  selectUrl: function (a, b) {
+    for (var c = 1, d = 0, e = a.length; d < e; d++)
+      (c *= a.charCodeAt(d) * this.URL_HASH_FACTOR), (c -= Math.floor(c));
+    return b[Math.floor(c * b.length)];
+  },
+  getFullRequestString: function (a, b) {
+    var c = b || this.url,
+      d = OpenLayers.Util.extend({}, this.params),
+      d = OpenLayers.Util.extend(d, a),
+      e = OpenLayers.Util.getParameterString(d);
+    OpenLayers.Util.isArray(c) && (c = this.selectUrl(e, c));
+    var e = OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),
+      f;
+    for (f in d) f.toUpperCase() in e && delete d[f];
+    e = OpenLayers.Util.getParameterString(d);
+    return OpenLayers.Util.urlAppend(c, e);
+  },
+  CLASS_NAME: "OpenLayers.Layer.HTTPRequest",
+});
+OpenLayers.Tile = OpenLayers.Class({
+  events: null,
+  eventListeners: null,
+  id: null,
+  layer: null,
+  url: null,
+  bounds: null,
+  size: null,
+  position: null,
+  isLoading: !1,
+  initialize: function (a, b, c, d, e, f) {
+    this.layer = a;
+    this.position = b.clone();
+    this.setBounds(c);
+    this.url = d;
+    e && (this.size = e.clone());
+    this.id = OpenLayers.Util.createUniqueID("Tile_");
+    OpenLayers.Util.extend(this, f);
+    this.events = new OpenLayers.Events(this);
+    if (this.eventListeners instanceof Object) this.events.on(this.eventListeners);
+  },
+  unload: function () {
+    this.isLoading && ((this.isLoading = !1), this.events.triggerEvent("unload"));
+  },
+  destroy: function () {
+    this.position = this.size = this.bounds = this.layer = null;
+    this.eventListeners && this.events.un(this.eventListeners);
+    this.events.destroy();
+    this.events = this.eventListeners = null;
+  },
+  draw: function (a) {
+    a || this.clear();
+    var b = this.shouldDraw();
+    b && !a && !1 === this.events.triggerEvent("beforedraw") && (b = null);
+    return b;
+  },
+  shouldDraw: function () {
+    var a = !1,
+      b = this.layer.maxExtent;
+    if (b) {
+      var c = this.layer.map,
+        c = c.baseLayer.wrapDateLine && c.getMaxExtent();
+      this.bounds.intersectsBounds(b, { inclusive: !1, worldBounds: c }) && (a = !0);
+    }
+    return a || this.layer.displayOutsideMaxExtent;
+  },
+  setBounds: function (a) {
+    a = a.clone();
+    if (this.layer.map.baseLayer.wrapDateLine) {
+      var b = this.layer.map.getMaxExtent(),
+        c = this.layer.map.getResolution();
+      a = a.wrapDateLine(b, { leftTolerance: c, rightTolerance: c });
+    }
+    this.bounds = a;
+  },
+  moveTo: function (a, b, c) {
+    null == c && (c = !0);
+    this.setBounds(a);
+    this.position = b.clone();
+    c && this.draw();
+  },
+  clear: function (a) {},
+  CLASS_NAME: "OpenLayers.Tile",
+});
+OpenLayers.Tile.Image = OpenLayers.Class(OpenLayers.Tile, {
+  url: null,
+  imgDiv: null,
+  frame: null,
+  imageReloadAttempts: null,
+  layerAlphaHack: null,
+  asyncRequestId: null,
+  maxGetUrlLength: null,
+  canvasContext: null,
+  crossOriginKeyword: null,
+  initialize: function (a, b, c, d, e, f) {
+    OpenLayers.Tile.prototype.initialize.apply(this, arguments);
+    this.url = d;
+    this.layerAlphaHack = this.layer.alpha && OpenLayers.Util.alphaHack();
+    if (null != this.maxGetUrlLength || this.layer.gutter || this.layerAlphaHack)
+      (this.frame = document.createElement("div")),
+        (this.frame.style.position = "absolute"),
+        (this.frame.style.overflow = "hidden");
+    null != this.maxGetUrlLength && OpenLayers.Util.extend(this, OpenLayers.Tile.Image.IFrame);
+  },
+  destroy: function () {
+    this.imgDiv && (this.clear(), (this.frame = this.imgDiv = null));
+    this.asyncRequestId = null;
+    OpenLayers.Tile.prototype.destroy.apply(this, arguments);
+  },
+  draw: function () {
+    var a = OpenLayers.Tile.prototype.draw.apply(this, arguments);
+    a
+      ? (this.layer != this.layer.map.baseLayer &&
+          this.layer.reproject &&
+          (this.bounds = this.getBoundsFromBaseLayer(this.position)),
+        this.isLoading
+          ? (this._loadEvent = "reload")
+          : ((this.isLoading = !0), (this._loadEvent = "loadstart")),
+        this.renderTile(),
+        this.positionTile())
+      : !1 === a && this.unload();
+    return a;
+  },
+  renderTile: function () {
+    if (this.layer.async) {
+      var a = (this.asyncRequestId = (this.asyncRequestId || 0) + 1);
+      this.layer.getURLasync(
+        this.bounds,
+        function (b) {
+          a == this.asyncRequestId && ((this.url = b), this.initImage());
+        },
+        this
+      );
+    } else (this.url = this.layer.getURL(this.bounds)), this.initImage();
+  },
+  positionTile: function () {
+    var a = this.getTile().style,
+      b = this.frame ? this.size : this.layer.getImageSize(this.bounds),
+      c = 1;
+    this.layer instanceof OpenLayers.Layer.Grid &&
+      (c = this.layer.getServerResolution() / this.layer.map.getResolution());
+    a.left = this.position.x + "px";
+    a.top = this.position.y + "px";
+    a.width = Math.round(c * b.w) + "px";
+    a.height = Math.round(c * b.h) + "px";
+  },
+  clear: function () {
+    OpenLayers.Tile.prototype.clear.apply(this, arguments);
+    var a = this.imgDiv;
+    if (a) {
+      var b = this.getTile();
+      b.parentNode === this.layer.div && this.layer.div.removeChild(b);
+      this.setImgSrc();
+      !0 === this.layerAlphaHack && (a.style.filter = "");
+      OpenLayers.Element.removeClass(a, "olImageLoadError");
+    }
+    this.canvasContext = null;
+  },
+  getImage: function () {
+    if (!this.imgDiv) {
+      this.imgDiv = OpenLayers.Tile.Image.IMAGE.cloneNode(!1);
+      var a = this.imgDiv.style;
+      if (this.frame) {
+        var b = 0,
+          c = 0;
+        this.layer.gutter &&
+          ((b = 100 * (this.layer.gutter / this.layer.tileSize.w)),
+          (c = 100 * (this.layer.gutter / this.layer.tileSize.h)));
+        a.left = -b + "%";
+        a.top = -c + "%";
+        a.width = 2 * b + 100 + "%";
+        a.height = 2 * c + 100 + "%";
+      }
+      a.visibility = "hidden";
+      a.opacity = 0;
+      1 > this.layer.opacity && (a.filter = "alpha(opacity=" + 100 * this.layer.opacity + ")");
+      a.position = "absolute";
+      this.layerAlphaHack && ((a.paddingTop = a.height), (a.height = "0"), (a.width = "100%"));
+      this.frame && this.frame.appendChild(this.imgDiv);
+    }
+    return this.imgDiv;
+  },
+  setImage: function (a) {
+    this.imgDiv = a;
+  },
+  initImage: function () {
+    if (this.url || this.imgDiv) {
+      this.events.triggerEvent("beforeload");
+      this.layer.div.appendChild(this.getTile());
+      this.events.triggerEvent(this._loadEvent);
+      var a = this.getImage(),
+        b = a.getAttribute("src") || "";
+      this.url && OpenLayers.Util.isEquivalentUrl(b, this.url)
+        ? (this._loadTimeout = window.setTimeout(
+            OpenLayers.Function.bind(this.onImageLoad, this),
+            0
+          ))
+        : (this.stopLoading(),
+          this.crossOriginKeyword && a.removeAttribute("crossorigin"),
+          OpenLayers.Event.observe(a, "load", OpenLayers.Function.bind(this.onImageLoad, this)),
+          OpenLayers.Event.observe(a, "error", OpenLayers.Function.bind(this.onImageError, this)),
+          (this.imageReloadAttempts = 0),
+          this.setImgSrc(this.url));
+    } else this.isLoading = !1;
+  },
+  setImgSrc: function (a) {
+    var b = this.imgDiv;
+    a
+      ? ((b.style.visibility = "hidden"),
+        (b.style.opacity = 0),
+        this.crossOriginKeyword &&
+          ("data:" !== a.substr(0, 5)
+            ? b.setAttribute("crossorigin", this.crossOriginKeyword)
+            : b.removeAttribute("crossorigin")),
+        (b.src = a))
+      : (this.stopLoading(), (this.imgDiv = null), b.parentNode && b.parentNode.removeChild(b));
+  },
+  getTile: function () {
+    return this.frame ? this.frame : this.getImage();
+  },
+  createBackBuffer: function () {
+    if (this.imgDiv && !this.isLoading) {
+      var a;
+      this.frame ? ((a = this.frame.cloneNode(!1)), a.appendChild(this.imgDiv)) : (a = this.imgDiv);
+      this.imgDiv = null;
+      return a;
+    }
+  },
+  onImageLoad: function () {
+    var a = this.imgDiv;
+    this.stopLoading();
+    a.style.visibility = "inherit";
+    a.style.opacity = this.layer.opacity;
+    this.isLoading = !1;
+    this.canvasContext = null;
+    this.events.triggerEvent("loadend");
+    !0 === this.layerAlphaHack &&
+      (a.style.filter =
+        "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
+        a.src +
+        "', sizingMethod='scale')");
+  },
+  onImageError: function () {
+    var a = this.imgDiv;
+    null != a.src &&
+      (this.imageReloadAttempts++,
+      this.imageReloadAttempts <= OpenLayers.IMAGE_RELOAD_ATTEMPTS
+        ? this.setImgSrc(this.layer.getURL(this.bounds))
+        : (OpenLayers.Element.addClass(a, "olImageLoadError"),
+          this.events.triggerEvent("loaderror"),
+          this.onImageLoad()));
+  },
+  stopLoading: function () {
+    OpenLayers.Event.stopObservingElement(this.imgDiv);
+    window.clearTimeout(this._loadTimeout);
+    delete this._loadTimeout;
+  },
+  getCanvasContext: function () {
+    if (OpenLayers.CANVAS_SUPPORTED && this.imgDiv && !this.isLoading) {
+      if (!this.canvasContext) {
+        var a = document.createElement("canvas");
+        a.width = this.size.w;
+        a.height = this.size.h;
+        this.canvasContext = a.getContext("2d");
+        this.canvasContext.drawImage(this.imgDiv, 0, 0);
+      }
+      return this.canvasContext;
+    }
+  },
+  CLASS_NAME: "OpenLayers.Tile.Image",
+});
+OpenLayers.Tile.Image.IMAGE = (function () {
+  var a = new Image();
+  a.className = "olTileImage";
+  a.galleryImg = "no";
+  return a;
+})();
+OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
+  tileSize: null,
+  tileOriginCorner: "bl",
+  tileOrigin: null,
+  tileOptions: null,
+  tileClass: OpenLayers.Tile.Image,
+  grid: null,
+  singleTile: !1,
+  ratio: 1.5,
+  buffer: 0,
+  transitionEffect: "resize",
+  numLoadingTiles: 0,
+  serverResolutions: null,
+  loading: !1,
+  backBuffer: null,
+  gridResolution: null,
+  backBufferResolution: null,
+  backBufferLonLat: null,
+  backBufferTimerId: null,
+  removeBackBufferDelay: null,
+  className: null,
+  gridLayout: null,
+  rowSign: null,
+  transitionendEvents: ["transitionend", "webkitTransitionEnd", "otransitionend", "oTransitionEnd"],
+  initialize: function (a, b, c, d) {
+    OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this, arguments);
+    this.grid = [];
+    this._removeBackBuffer = OpenLayers.Function.bind(this.removeBackBuffer, this);
+    this.initProperties();
+    this.rowSign = "t" === this.tileOriginCorner.substr(0, 1) ? 1 : -1;
+  },
+  initProperties: function () {
+    void 0 === this.options.removeBackBufferDelay &&
+      (this.removeBackBufferDelay = this.singleTile ? 0 : 2500);
+    void 0 === this.options.className &&
+      (this.className = this.singleTile ? "olLayerGridSingleTile" : "olLayerGrid");
+  },
+  setMap: function (a) {
+    OpenLayers.Layer.HTTPRequest.prototype.setMap.call(this, a);
+    OpenLayers.Element.addClass(this.div, this.className);
+  },
+  removeMap: function (a) {
+    this.removeBackBuffer();
+  },
+  destroy: function () {
+    this.removeBackBuffer();
+    this.clearGrid();
+    this.tileSize = this.grid = null;
+    OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this, arguments);
+  },
+  clearGrid: function () {
+    if (this.grid) {
+      for (var a = 0, b = this.grid.length; a < b; a++)
+        for (var c = this.grid[a], d = 0, e = c.length; d < e; d++) this.destroyTile(c[d]);
+      this.grid = [];
+      this.gridLayout = this.gridResolution = null;
+    }
+  },
+  addOptions: function (a, b) {
+    var c = void 0 !== a.singleTile && a.singleTile !== this.singleTile;
+    OpenLayers.Layer.HTTPRequest.prototype.addOptions.apply(this, arguments);
+    this.map &&
+      c &&
+      (this.initProperties(),
+      this.clearGrid(),
+      (this.tileSize = this.options.tileSize),
+      this.setTileSize(),
+      this.moveTo(null, !0));
+  },
+  clone: function (a) {
+    null == a &&
+      (a = new OpenLayers.Layer.Grid(this.name, this.url, this.params, this.getOptions()));
+    a = OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this, [a]);
+    null != this.tileSize && (a.tileSize = this.tileSize.clone());
+    a.grid = [];
+    a.gridResolution = null;
+    a.backBuffer = null;
+    a.backBufferTimerId = null;
+    a.loading = !1;
+    a.numLoadingTiles = 0;
+    return a;
+  },
+  moveTo: function (a, b, c) {
+    OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this, arguments);
+    a = a || this.map.getExtent();
+    if (null != a) {
+      var d = !this.grid.length || b,
+        e = this.getTilesBounds(),
+        f = this.map.getResolution();
+      this.getServerResolution(f);
+      if (this.singleTile) {
+        if (d || (!c && !e.containsBounds(a)))
+          b && "resize" !== this.transitionEffect && this.removeBackBuffer(),
+            (b && "resize" !== this.transitionEffect) || this.applyBackBuffer(f),
+            this.initSingleTile(a);
+      } else
+        (d =
+          d ||
+          !e.intersectsBounds(a, {
+            worldBounds: this.map.baseLayer.wrapDateLine && this.map.getMaxExtent(),
+          }))
+          ? (!b ||
+              ("resize" !== this.transitionEffect && this.gridResolution !== f) ||
+              this.applyBackBuffer(f),
+            this.initGriddedTiles(a))
+          : this.moveGriddedTiles();
+    }
+  },
+  getTileData: function (a) {
+    var b = null,
+      c = a.lon,
+      d = a.lat,
+      e = this.grid.length;
+    if (this.map && e) {
+      var f = this.map.getResolution();
+      a = this.tileSize.w;
+      var g = this.tileSize.h,
+        h = this.grid[0][0].bounds,
+        k = h.left,
+        h = h.top;
+      if (c < k && this.map.baseLayer.wrapDateLine)
+        var l = this.map.getMaxExtent().getWidth(),
+          m = Math.ceil((k - c) / l),
+          c = c + l * m;
+      c = (c - k) / (f * a);
+      d = (h - d) / (f * g);
+      f = Math.floor(c);
+      k = Math.floor(d);
+      0 <= k &&
+        k < e &&
+        (e = this.grid[k][f]) &&
+        (b = { tile: e, i: Math.floor((c - f) * a), j: Math.floor((d - k) * g) });
+    }
+    return b;
+  },
+  destroyTile: function (a) {
+    this.removeTileMonitoringHooks(a);
+    a.destroy();
+  },
+  getServerResolution: function (a) {
+    var b = Number.POSITIVE_INFINITY;
+    a = a || this.map.getResolution();
+    if (this.serverResolutions && -1 === OpenLayers.Util.indexOf(this.serverResolutions, a)) {
+      var c, d, e, f;
+      for (c = this.serverResolutions.length - 1; 0 <= c; c--) {
+        e = this.serverResolutions[c];
+        d = Math.abs(e - a);
+        if (d > b) break;
+        b = d;
+        f = e;
+      }
+      a = f;
+    }
+    return a;
+  },
+  getServerZoom: function () {
+    var a = this.getServerResolution();
+    return this.serverResolutions
+      ? OpenLayers.Util.indexOf(this.serverResolutions, a)
+      : this.map.getZoomForResolution(a) + (this.zoomOffset || 0);
+  },
+  applyBackBuffer: function (a) {
+    null !== this.backBufferTimerId && this.removeBackBuffer();
+    var b = this.backBuffer;
+    if (!b) {
+      b = this.createBackBuffer();
+      if (!b) return;
+      a === this.gridResolution
+        ? this.div.insertBefore(b, this.div.firstChild)
+        : this.map.baseLayer.div.parentNode.insertBefore(b, this.map.baseLayer.div);
+      this.backBuffer = b;
+      var c = this.grid[0][0].bounds;
+      this.backBufferLonLat = { lon: c.left, lat: c.top };
+      this.backBufferResolution = this.gridResolution;
+    }
+    for (var c = this.backBufferResolution / a, d = b.childNodes, e, f = d.length - 1; 0 <= f; --f)
+      (e = d[f]),
+        (e.style.top = ((c * e._i * e._h) | 0) + "px"),
+        (e.style.left = ((c * e._j * e._w) | 0) + "px"),
+        (e.style.width = Math.round(c * e._w) + "px"),
+        (e.style.height = Math.round(c * e._h) + "px");
+    a = this.getViewPortPxFromLonLat(this.backBufferLonLat, a);
+    c = this.map.layerContainerOriginPx.y;
+    b.style.left = Math.round(a.x - this.map.layerContainerOriginPx.x) + "px";
+    b.style.top = Math.round(a.y - c) + "px";
+  },
+  createBackBuffer: function () {
+    var a;
+    if (0 < this.grid.length) {
+      a = document.createElement("div");
+      a.id = this.div.id + "_bb";
+      a.className = "olBackBuffer";
+      a.style.position = "absolute";
+      var b = this.map;
+      a.style.zIndex =
+        "resize" === this.transitionEffect
+          ? this.getZIndex() - 1
+          : b.Z_INDEX_BASE.BaseLayer - (b.getNumLayers() - b.getLayerIndex(this));
+      for (var b = 0, c = this.grid.length; b < c; b++)
+        for (var d = 0, e = this.grid[b].length; d < e; d++) {
+          var f = this.grid[b][d],
+            g = this.grid[b][d].createBackBuffer();
+          g &&
+            ((g._i = b),
+            (g._j = d),
+            (g._w = f.size.w),
+            (g._h = f.size.h),
+            (g.id = f.id + "_bb"),
+            a.appendChild(g));
+        }
+    }
+    return a;
+  },
+  removeBackBuffer: function () {
+    if (this._transitionElement) {
+      for (var a = this.transitionendEvents.length - 1; 0 <= a; --a)
+        OpenLayers.Event.stopObserving(
+          this._transitionElement,
+          this.transitionendEvents[a],
+          this._removeBackBuffer
+        );
+      delete this._transitionElement;
+    }
+    this.backBuffer &&
+      (this.backBuffer.parentNode && this.backBuffer.parentNode.removeChild(this.backBuffer),
+      (this.backBufferResolution = this.backBuffer = null),
+      null !== this.backBufferTimerId &&
+        (window.clearTimeout(this.backBufferTimerId), (this.backBufferTimerId = null)));
+  },
+  moveByPx: function (a, b) {
+    this.singleTile || this.moveGriddedTiles();
+  },
+  setTileSize: function (a) {
+    this.singleTile &&
+      ((a = this.map.getSize()),
+      (a.h = parseInt(a.h * this.ratio, 10)),
+      (a.w = parseInt(a.w * this.ratio, 10)));
+    OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this, [a]);
+  },
+  getTilesBounds: function () {
+    var a = null,
+      b = this.grid.length;
+    if (b)
+      var a = this.grid[b - 1][0].bounds,
+        b = this.grid[0].length * a.getWidth(),
+        c = this.grid.length * a.getHeight(),
+        a = new OpenLayers.Bounds(a.left, a.bottom, a.left + b, a.bottom + c);
+    return a;
+  },
+  initSingleTile: function (a) {
+    this.events.triggerEvent("retile");
+    var b = a.getCenterLonLat(),
+      c = a.getWidth() * this.ratio;
+    a = a.getHeight() * this.ratio;
+    b = new OpenLayers.Bounds(b.lon - c / 2, b.lat - a / 2, b.lon + c / 2, b.lat + a / 2);
+    c = this.map.getLayerPxFromLonLat({ lon: b.left, lat: b.top });
+    this.grid.length || (this.grid[0] = []);
+    (a = this.grid[0][0])
+      ? a.moveTo(b, c)
+      : ((a = this.addTile(b, c)), this.addTileMonitoringHooks(a), a.draw(), (this.grid[0][0] = a));
+    this.removeExcessTiles(1, 1);
+    this.gridResolution = this.getServerResolution();
+  },
+  calculateGridLayout: function (a, b, c) {
+    var d = c * this.tileSize.w;
+    c *= this.tileSize.h;
+    var e = Math.floor((a.left - b.lon) / d) - this.buffer,
+      f = this.rowSign;
+    a = Math[~f ? "floor" : "ceil"]((f * (b.lat - a.top + c)) / c) - this.buffer * f;
+    return { tilelon: d, tilelat: c, startcol: e, startrow: a };
+  },
+  getTileOrigin: function () {
+    var a = this.tileOrigin;
+    if (!a)
+      var a = this.getMaxExtent(),
+        b = {
+          tl: ["left", "top"],
+          tr: ["right", "top"],
+          bl: ["left", "bottom"],
+          br: ["right", "bottom"],
+        }[this.tileOriginCorner],
+        a = new OpenLayers.LonLat(a[b[0]], a[b[1]]);
+    return a;
+  },
+  getTileBoundsForGridIndex: function (a, b) {
+    var c = this.getTileOrigin(),
+      d = this.gridLayout,
+      e = d.tilelon,
+      f = d.tilelat,
+      g = d.startcol,
+      d = d.startrow,
+      h = this.rowSign;
+    return new OpenLayers.Bounds(
+      c.lon + (g + b) * e,
+      c.lat - (d + a * h) * f * h,
+      c.lon + (g + b + 1) * e,
+      c.lat - (d + (a - 1) * h) * f * h
+    );
+  },
+  initGriddedTiles: function (a) {
+    this.events.triggerEvent("retile");
+    var b = this.map.getSize(),
+      c = this.getTileOrigin(),
+      d = this.map.getResolution(),
+      e = this.getServerResolution(),
+      f = d / e,
+      d = this.tileSize.w / f,
+      f = this.tileSize.h / f,
+      g = Math.ceil(b.h / f) + 2 * this.buffer + 1,
+      b = Math.ceil(b.w / d) + 2 * this.buffer + 1;
+    this.gridLayout = e = this.calculateGridLayout(a, c, e);
+    var c = e.tilelon,
+      h = e.tilelat,
+      e = this.map.layerContainerOriginPx.x,
+      k = this.map.layerContainerOriginPx.y,
+      l = this.getTileBoundsForGridIndex(0, 0),
+      m = this.map.getViewPortPxFromLonLat(new OpenLayers.LonLat(l.left, l.top));
+    m.x = Math.round(m.x) - e;
+    m.y = Math.round(m.y) - k;
+    var e = [],
+      k = this.map.getCenter(),
+      n = 0;
+    do {
+      var p = this.grid[n];
+      p || ((p = []), this.grid.push(p));
+      var q = 0;
+      do {
+        var l = this.getTileBoundsForGridIndex(n, q),
+          r = m.clone();
+        r.x += q * Math.round(d);
+        r.y += n * Math.round(f);
+        var s = p[q];
+        s
+          ? s.moveTo(l, r, !1)
+          : ((s = this.addTile(l, r)), this.addTileMonitoringHooks(s), p.push(s));
+        r = l.getCenterLonLat();
+        e.push({ tile: s, distance: Math.pow(r.lon - k.lon, 2) + Math.pow(r.lat - k.lat, 2) });
+        q += 1;
+      } while (l.right <= a.right + c * this.buffer || q < b);
+      n += 1;
+    } while (l.bottom >= a.bottom - h * this.buffer || n < g);
+    this.removeExcessTiles(n, q);
+    this.gridResolution = d = this.getServerResolution();
+    e.sort(function (a, b) {
+      return a.distance - b.distance;
+    });
+    a = 0;
+    for (d = e.length; a < d; ++a) e[a].tile.draw();
+  },
+  getMaxExtent: function () {
+    return this.maxExtent;
+  },
+  addTile: function (a, b) {
+    var c = new this.tileClass(this, b, a, null, this.tileSize, this.tileOptions);
+    this.events.triggerEvent("addtile", { tile: c });
+    return c;
+  },
+  addTileMonitoringHooks: function (a) {
+    a.onLoadStart = function () {
+      !1 === this.loading && ((this.loading = !0), this.events.triggerEvent("loadstart"));
+      this.events.triggerEvent("tileloadstart", { tile: a });
+      this.numLoadingTiles++;
+      !this.singleTile &&
+        this.backBuffer &&
+        this.gridResolution === this.backBufferResolution &&
+        OpenLayers.Element.addClass(a.getTile(), "olTileReplacing");
+    };
+    a.onLoadEnd = function (b) {
+      this.numLoadingTiles--;
+      b = "unload" === b.type;
+      this.events.triggerEvent("tileloaded", { tile: a, aborted: b });
+      if (
+        !this.singleTile &&
+        !b &&
+        this.backBuffer &&
+        this.gridResolution === this.backBufferResolution
+      ) {
+        var c = a.getTile();
+        if ("none" === OpenLayers.Element.getStyle(c, "display")) {
+          var d = document.getElementById(a.id + "_bb");
+          d && d.parentNode.removeChild(d);
+        }
+        OpenLayers.Element.removeClass(c, "olTileReplacing");
+      }
+      if (0 === this.numLoadingTiles) {
+        if (this.backBuffer)
+          if (0 === this.backBuffer.childNodes.length) this.removeBackBuffer();
+          else {
+            this._transitionElement = b ? this.div.lastChild : a.imgDiv;
+            b = this.transitionendEvents;
+            for (c = b.length - 1; 0 <= c; --c)
+              OpenLayers.Event.observe(this._transitionElement, b[c], this._removeBackBuffer);
+            this.backBufferTimerId = window.setTimeout(
+              this._removeBackBuffer,
+              this.removeBackBufferDelay
+            );
+          }
+        this.loading = !1;
+        this.events.triggerEvent("loadend");
+      }
+    };
+    a.onLoadError = function () {
+      this.events.triggerEvent("tileerror", { tile: a });
+    };
+    a.events.on({
+      loadstart: a.onLoadStart,
+      loadend: a.onLoadEnd,
+      unload: a.onLoadEnd,
+      loaderror: a.onLoadError,
+      scope: this,
+    });
+  },
+  removeTileMonitoringHooks: function (a) {
+    a.unload();
+    a.events.un({
+      loadstart: a.onLoadStart,
+      loadend: a.onLoadEnd,
+      unload: a.onLoadEnd,
+      loaderror: a.onLoadError,
+      scope: this,
+    });
+  },
+  moveGriddedTiles: function () {
+    for (var a = this.buffer + 1; ; ) {
+      var b = this.grid[0][0],
+        c = b.position.x + this.map.layerContainerOriginPx.x,
+        b = b.position.y + this.map.layerContainerOriginPx.y,
+        d = this.getServerResolution() / this.map.getResolution(),
+        d = { w: Math.round(this.tileSize.w * d), h: Math.round(this.tileSize.h * d) };
+      if (c > -d.w * (a - 1)) this.shiftColumn(!0, d);
+      else if (c < -d.w * a) this.shiftColumn(!1, d);
+      else if (b > -d.h * (a - 1)) this.shiftRow(!0, d);
+      else if (b < -d.h * a) this.shiftRow(!1, d);
+      else break;
+    }
+  },
+  shiftRow: function (a, b) {
+    var c = this.grid,
+      d = a ? 0 : c.length - 1,
+      e = a ? -1 : 1;
+    this.gridLayout.startrow += e * this.rowSign;
+    for (var f = c[d], g = c[a ? "pop" : "shift"](), h = 0, k = g.length; h < k; h++) {
+      var l = g[h],
+        m = f[h].position.clone();
+      m.y += b.h * e;
+      l.moveTo(this.getTileBoundsForGridIndex(d, h), m);
+    }
+    c[a ? "unshift" : "push"](g);
+  },
+  shiftColumn: function (a, b) {
+    var c = this.grid,
+      d = a ? 0 : c[0].length - 1,
+      e = a ? -1 : 1;
+    this.gridLayout.startcol += e;
+    for (var f = 0, g = c.length; f < g; f++) {
+      var h = c[f],
+        k = h[d].position.clone(),
+        l = h[a ? "pop" : "shift"]();
+      k.x += b.w * e;
+      l.moveTo(this.getTileBoundsForGridIndex(f, d), k);
+      h[a ? "unshift" : "push"](l);
+    }
+  },
+  removeExcessTiles: function (a, b) {
+    for (var c, d; this.grid.length > a; ) {
+      var e = this.grid.pop();
+      c = 0;
+      for (d = e.length; c < d; c++) {
+        var f = e[c];
+        this.destroyTile(f);
+      }
+    }
+    c = 0;
+    for (d = this.grid.length; c < d; c++)
+      for (; this.grid[c].length > b; ) (e = this.grid[c]), (f = e.pop()), this.destroyTile(f);
+  },
+  onMapResize: function () {
+    this.singleTile && (this.clearGrid(), this.setTileSize());
+  },
+  getTileBounds: function (a) {
+    var b = this.maxExtent,
+      c = this.getResolution(),
+      d = c * this.tileSize.w,
+      c = c * this.tileSize.h,
+      e = this.getLonLatFromViewPortPx(a);
+    a = b.left + d * Math.floor((e.lon - b.left) / d);
+    b = b.bottom + c * Math.floor((e.lat - b.bottom) / c);
+    return new OpenLayers.Bounds(a, b, a + d, b + c);
+  },
+  CLASS_NAME: "OpenLayers.Layer.Grid",
+});
+OpenLayers.Format.ArcXML = OpenLayers.Class(OpenLayers.Format.XML, {
+  fontStyleKeys: "antialiasing blockout font fontcolor fontsize fontstyle glowing interval outline printmode shadow transparency".split(
+    " "
+  ),
+  request: null,
+  response: null,
+  initialize: function (a) {
+    this.request = new OpenLayers.Format.ArcXML.Request();
+    this.response = new OpenLayers.Format.ArcXML.Response();
+    if (a)
+      if ("feature" == a.requesttype) {
+        this.request.get_image = null;
+        var b = this.request.get_feature.query;
+        this.addCoordSys(b.featurecoordsys, a.featureCoordSys);
+        this.addCoordSys(b.filtercoordsys, a.filterCoordSys);
+        a.polygon
+          ? ((b.isspatial = !0), (b.spatialfilter.polygon = a.polygon))
+          : a.envelope &&
+            ((b.isspatial = !0),
+            (b.spatialfilter.envelope = { minx: 0, miny: 0, maxx: 0, maxy: 0 }),
+            this.parseEnvelope(b.spatialfilter.envelope, a.envelope));
+      } else
+        "image" == a.requesttype
+          ? ((this.request.get_feature = null),
+            (b = this.request.get_image.properties),
+            this.parseEnvelope(b.envelope, a.envelope),
+            this.addLayers(b.layerlist, a.layers),
+            this.addImageSize(b.imagesize, a.tileSize),
+            this.addCoordSys(b.featurecoordsys, a.featureCoordSys),
+            this.addCoordSys(b.filtercoordsys, a.filterCoordSys))
+          : (this.request = null);
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+  },
+  parseEnvelope: function (a, b) {
+    b && 4 == b.length && ((a.minx = b[0]), (a.miny = b[1]), (a.maxx = b[2]), (a.maxy = b[3]));
+  },
+  addLayers: function (a, b) {
+    for (var c = 0, d = b.length; c < d; c++) a.push(b[c]);
+  },
+  addImageSize: function (a, b) {
+    null !== b && ((a.width = b.w), (a.height = b.h), (a.printwidth = b.w), (a.printheight = b.h));
+  },
+  addCoordSys: function (a, b) {
+    "string" == typeof b
+      ? ((a.id = parseInt(b)), (a.string = b))
+      : "object" == typeof b &&
+        null !== b.proj &&
+        ((a.id = b.proj.srsProjNumber), (a.string = b.proj.srsCode));
+  },
+  iserror: function (a) {
+    var b = null;
+    a
+      ? ((a = OpenLayers.Format.XML.prototype.read.apply(this, [a])),
+        (a = a.documentElement.getElementsByTagName("ERROR")),
+        (b = null !== a && 0 < a.length))
+      : (b = "" !== this.response.error);
+    return b;
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    var b = null;
+    a &&
+      a.documentElement &&
+      (b =
+        "ARCXML" == a.documentElement.nodeName
+          ? a.documentElement
+          : a.documentElement.getElementsByTagName("ARCXML")[0]);
+    if (!b || "parsererror" === b.firstChild.nodeName) {
+      var c, d;
+      try {
+        (c = a.firstChild.nodeValue), (d = a.firstChild.childNodes[1].firstChild.nodeValue);
+      } catch (e) {}
+      throw { message: "Error parsing the ArcXML request", error: c, source: d };
+    }
+    return this.parseResponse(b);
+  },
+  write: function (a) {
+    a || (a = this.request);
+    var b = this.createElementNS("", "ARCXML");
+    b.setAttribute("version", "1.1");
+    var c = this.createElementNS("", "REQUEST");
+    if (null != a.get_image) {
+      var d = this.createElementNS("", "GET_IMAGE");
+      c.appendChild(d);
+      var e = this.createElementNS("", "PROPERTIES");
+      d.appendChild(e);
+      a = a.get_image.properties;
+      null != a.featurecoordsys &&
+        ((d = this.createElementNS("", "FEATURECOORDSYS")),
+        e.appendChild(d),
+        0 === a.featurecoordsys.id
+          ? d.setAttribute("string", a.featurecoordsys.string)
+          : d.setAttribute("id", a.featurecoordsys.id));
+      null != a.filtercoordsys &&
+        ((d = this.createElementNS("", "FILTERCOORDSYS")),
+        e.appendChild(d),
+        0 === a.filtercoordsys.id
+          ? d.setAttribute("string", a.filtercoordsys.string)
+          : d.setAttribute("id", a.filtercoordsys.id));
+      null != a.envelope &&
+        ((d = this.createElementNS("", "ENVELOPE")),
+        e.appendChild(d),
+        d.setAttribute("minx", a.envelope.minx),
+        d.setAttribute("miny", a.envelope.miny),
+        d.setAttribute("maxx", a.envelope.maxx),
+        d.setAttribute("maxy", a.envelope.maxy));
+      d = this.createElementNS("", "IMAGESIZE");
+      e.appendChild(d);
+      d.setAttribute("height", a.imagesize.height);
+      d.setAttribute("width", a.imagesize.width);
+      if (
+        a.imagesize.height != a.imagesize.printheight ||
+        a.imagesize.width != a.imagesize.printwidth
+      )
+        d.setAttribute("printheight", a.imagesize.printheight),
+          d.setArrtibute("printwidth", a.imagesize.printwidth);
+      null != a.background &&
+        ((d = this.createElementNS("", "BACKGROUND")),
+        e.appendChild(d),
+        d.setAttribute(
+          "color",
+          a.background.color.r + "," + a.background.color.g + "," + a.background.color.b
+        ),
+        null !== a.background.transcolor &&
+          d.setAttribute(
+            "transcolor",
+            a.background.transcolor.r +
+              "," +
+              a.background.transcolor.g +
+              "," +
+              a.background.transcolor.b
+          ));
+      if (null != a.layerlist && 0 < a.layerlist.length)
+        for (
+          d = this.createElementNS("", "LAYERLIST"), e.appendChild(d), e = 0;
+          e < a.layerlist.length;
+          e++
+        ) {
+          var f = this.createElementNS("", "LAYERDEF");
+          d.appendChild(f);
+          f.setAttribute("id", a.layerlist[e].id);
+          f.setAttribute("visible", a.layerlist[e].visible);
+          if ("object" == typeof a.layerlist[e].query) {
+            var g = a.layerlist[e].query;
+            if (0 > g.where.length) continue;
+            var h = null,
+              h =
+                "boolean" == typeof g.spatialfilter && g.spatialfilter
+                  ? this.createElementNS("", "SPATIALQUERY")
+                  : this.createElementNS("", "QUERY");
+            h.setAttribute("where", g.where);
+            "number" == typeof g.accuracy &&
+              0 < g.accuracy &&
+              h.setAttribute("accuracy", g.accuracy);
+            "number" == typeof g.featurelimit &&
+              2e3 > g.featurelimit &&
+              h.setAttribute("featurelimit", g.featurelimit);
+            "string" == typeof g.subfields &&
+              "#ALL#" != g.subfields &&
+              h.setAttribute("subfields", g.subfields);
+            "string" == typeof g.joinexpression &&
+              0 < g.joinexpression.length &&
+              h.setAttribute("joinexpression", g.joinexpression);
+            "string" == typeof g.jointables &&
+              0 < g.jointables.length &&
+              h.setAttribute("jointables", g.jointables);
+            f.appendChild(h);
+          }
+          "object" == typeof a.layerlist[e].renderer &&
+            this.addRenderer(f, a.layerlist[e].renderer);
+        }
+    } else
+      null != a.get_feature &&
+        ((d = this.createElementNS("", "GET_FEATURES")),
+        d.setAttribute("outputmode", "newxml"),
+        d.setAttribute("checkesc", "true"),
+        a.get_feature.geometry
+          ? d.setAttribute("geometry", a.get_feature.geometry)
+          : d.setAttribute("geometry", "false"),
+        a.get_feature.compact && d.setAttribute("compact", a.get_feature.compact),
+        "number" == a.get_feature.featurelimit &&
+          d.setAttribute("featurelimit", a.get_feature.featurelimit),
+        d.setAttribute("globalenvelope", "true"),
+        c.appendChild(d),
+        null != a.get_feature.layer &&
+          0 < a.get_feature.layer.length &&
+          ((e = this.createElementNS("", "LAYER")),
+          e.setAttribute("id", a.get_feature.layer),
+          d.appendChild(e)),
+        (a = a.get_feature.query),
+        null != a &&
+          ((e = null),
+          (e = a.isspatial
+            ? this.createElementNS("", "SPATIALQUERY")
+            : this.createElementNS("", "QUERY")),
+          d.appendChild(e),
+          "number" == typeof a.accuracy && e.setAttribute("accuracy", a.accuracy),
+          null != a.featurecoordsys &&
+            ((d = this.createElementNS("", "FEATURECOORDSYS")),
+            0 == a.featurecoordsys.id
+              ? d.setAttribute("string", a.featurecoordsys.string)
+              : d.setAttribute("id", a.featurecoordsys.id),
+            e.appendChild(d)),
+          null != a.filtercoordsys &&
+            ((d = this.createElementNS("", "FILTERCOORDSYS")),
+            0 === a.filtercoordsys.id
+              ? d.setAttribute("string", a.filtercoordsys.string)
+              : d.setAttribute("id", a.filtercoordsys.id),
+            e.appendChild(d)),
+          0 < a.buffer &&
+            ((d = this.createElementNS("", "BUFFER")),
+            d.setAttribute("distance", a.buffer),
+            e.appendChild(d)),
+          a.isspatial &&
+            ((d = this.createElementNS("", "SPATIALFILTER")),
+            d.setAttribute("relation", a.spatialfilter.relation),
+            e.appendChild(d),
+            a.spatialfilter.envelope
+              ? ((f = this.createElementNS("", "ENVELOPE")),
+                f.setAttribute("minx", a.spatialfilter.envelope.minx),
+                f.setAttribute("miny", a.spatialfilter.envelope.miny),
+                f.setAttribute("maxx", a.spatialfilter.envelope.maxx),
+                f.setAttribute("maxy", a.spatialfilter.envelope.maxy),
+                d.appendChild(f))
+              : "object" == typeof a.spatialfilter.polygon &&
+                d.appendChild(this.writePolygonGeometry(a.spatialfilter.polygon))),
+          null != a.where && 0 < a.where.length && e.setAttribute("where", a.where)));
+    b.appendChild(c);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [b]);
+  },
+  addGroupRenderer: function (a, b) {
+    var c = this.createElementNS("", "GROUPRENDERER");
+    a.appendChild(c);
+    for (var d = 0; d < b.length; d++) this.addRenderer(c, b[d]);
+  },
+  addRenderer: function (a, b) {
+    if (OpenLayers.Util.isArray(b)) this.addGroupRenderer(a, b);
+    else {
+      var c = this.createElementNS("", b.type.toUpperCase() + "RENDERER");
+      a.appendChild(c);
+      "VALUEMAPRENDERER" == c.tagName
+        ? this.addValueMapRenderer(c, b)
+        : "VALUEMAPLABELRENDERER" == c.tagName
+        ? this.addValueMapLabelRenderer(c, b)
+        : "SIMPLELABELRENDERER" == c.tagName
+        ? this.addSimpleLabelRenderer(c, b)
+        : "SCALEDEPENDENTRENDERER" == c.tagName && this.addScaleDependentRenderer(c, b);
+    }
+  },
+  addScaleDependentRenderer: function (a, b) {
+    ("string" != typeof b.lower && "number" != typeof b.lower) || a.setAttribute("lower", b.lower);
+    ("string" != typeof b.upper && "number" != typeof b.upper) || a.setAttribute("upper", b.upper);
+    this.addRenderer(a, b.renderer);
+  },
+  addValueMapLabelRenderer: function (a, b) {
+    a.setAttribute("lookupfield", b.lookupfield);
+    a.setAttribute("labelfield", b.labelfield);
+    if ("object" == typeof b.exacts)
+      for (var c = 0, d = b.exacts.length; c < d; c++) {
+        var e = b.exacts[c],
+          f = this.createElementNS("", "EXACT");
+        "string" == typeof e.value && f.setAttribute("value", e.value);
+        "string" == typeof e.label && f.setAttribute("label", e.label);
+        "string" == typeof e.method && f.setAttribute("method", e.method);
+        a.appendChild(f);
+        if ("object" == typeof e.symbol) {
+          var g = null;
+          "text" == e.symbol.type && (g = this.createElementNS("", "TEXTSYMBOL"));
+          if (null != g) {
+            for (var h = this.fontStyleKeys, k = 0, l = h.length; k < l; k++) {
+              var m = h[k];
+              e.symbol[m] && g.setAttribute(m, e.symbol[m]);
+            }
+            f.appendChild(g);
+          }
+        }
+      }
+  },
+  addValueMapRenderer: function (a, b) {
+    a.setAttribute("lookupfield", b.lookupfield);
+    if ("object" == typeof b.ranges)
+      for (var c = 0, d = b.ranges.length; c < d; c++) {
+        var e = b.ranges[c],
+          f = this.createElementNS("", "RANGE");
+        f.setAttribute("lower", e.lower);
+        f.setAttribute("upper", e.upper);
+        a.appendChild(f);
+        if ("object" == typeof e.symbol) {
+          var g = null;
+          "simplepolygon" == e.symbol.type && (g = this.createElementNS("", "SIMPLEPOLYGONSYMBOL"));
+          null != g &&
+            ("string" == typeof e.symbol.boundarycolor &&
+              g.setAttribute("boundarycolor", e.symbol.boundarycolor),
+            "string" == typeof e.symbol.fillcolor &&
+              g.setAttribute("fillcolor", e.symbol.fillcolor),
+            "number" == typeof e.symbol.filltransparency &&
+              g.setAttribute("filltransparency", e.symbol.filltransparency),
+            f.appendChild(g));
+        }
+      }
+    else if ("object" == typeof b.exacts)
+      for (c = 0, d = b.exacts.length; c < d; c++)
+        (e = b.exacts[c]),
+          (f = this.createElementNS("", "EXACT")),
+          "string" == typeof e.value && f.setAttribute("value", e.value),
+          "string" == typeof e.label && f.setAttribute("label", e.label),
+          "string" == typeof e.method && f.setAttribute("method", e.method),
+          a.appendChild(f),
+          "object" == typeof e.symbol &&
+            ((g = null),
+            "simplemarker" == e.symbol.type && (g = this.createElementNS("", "SIMPLEMARKERSYMBOL")),
+            null != g &&
+              ("string" == typeof e.symbol.antialiasing &&
+                g.setAttribute("antialiasing", e.symbol.antialiasing),
+              "string" == typeof e.symbol.color && g.setAttribute("color", e.symbol.color),
+              "string" == typeof e.symbol.outline && g.setAttribute("outline", e.symbol.outline),
+              "string" == typeof e.symbol.overlap && g.setAttribute("overlap", e.symbol.overlap),
+              "string" == typeof e.symbol.shadow && g.setAttribute("shadow", e.symbol.shadow),
+              "number" == typeof e.symbol.transparency &&
+                g.setAttribute("transparency", e.symbol.transparency),
+              "string" == typeof e.symbol.usecentroid &&
+                g.setAttribute("usecentroid", e.symbol.usecentroid),
+              "number" == typeof e.symbol.width && g.setAttribute("width", e.symbol.width),
+              f.appendChild(g)));
+  },
+  addSimpleLabelRenderer: function (a, b) {
+    a.setAttribute("field", b.field);
+    for (
+      var c = "featureweight howmanylabels labelbufferratio labelpriorities labelweight linelabelposition rotationalangles".split(
+          " "
+        ),
+        d = 0,
+        e = c.length;
+      d < e;
+      d++
+    ) {
+      var f = c[d];
+      b[f] && a.setAttribute(f, b[f]);
+    }
+    if ("text" == b.symbol.type) {
+      var g = b.symbol,
+        h = this.createElementNS("", "TEXTSYMBOL");
+      a.appendChild(h);
+      c = this.fontStyleKeys;
+      d = 0;
+      for (e = c.length; d < e; d++) (f = c[d]), g[f] && h.setAttribute(f, b[f]);
+    }
+  },
+  writePolygonGeometry: function (a) {
+    if (!(a instanceof OpenLayers.Geometry.Polygon))
+      throw {
+        message: "Cannot write polygon geometry to ArcXML with an " + a.CLASS_NAME + " object.",
+        geometry: a,
+      };
+    for (var b = this.createElementNS("", "POLYGON"), c = 0, d = a.components.length; c < d; c++) {
+      for (
+        var e = a.components[c],
+          f = this.createElementNS("", "RING"),
+          g = 0,
+          h = e.components.length;
+        g < h;
+        g++
+      ) {
+        var k = e.components[g],
+          l = this.createElementNS("", "POINT");
+        l.setAttribute("x", k.x);
+        l.setAttribute("y", k.y);
+        f.appendChild(l);
+      }
+      b.appendChild(f);
+    }
+    return b;
+  },
+  parseResponse: function (a) {
+    "string" == typeof a && (a = new OpenLayers.Format.XML().read(a));
+    var b = new OpenLayers.Format.ArcXML.Response(),
+      c = a.getElementsByTagName("ERROR");
+    if (null != c && 0 < c.length) b.error = this.getChildValue(c, "Unknown error.");
+    else {
+      c = a.getElementsByTagName("RESPONSE");
+      if (null == c || 0 == c.length)
+        return (b.error = "No RESPONSE tag found in ArcXML response."), b;
+      var d = c[0].firstChild.nodeName;
+      "#text" == d && (d = c[0].firstChild.nextSibling.nodeName);
+      if ("IMAGE" == d)
+        (c = a.getElementsByTagName("ENVELOPE")),
+          (a = a.getElementsByTagName("OUTPUT")),
+          null == c || 0 == c.length
+            ? (b.error = "No ENVELOPE tag found in ArcXML response.")
+            : null == a || 0 == a.length
+            ? (b.error = "No OUTPUT tag found in ArcXML response.")
+            : ((c = this.parseAttributes(c[0])),
+              (d = this.parseAttributes(a[0])),
+              (b.image =
+                "string" == typeof d.type
+                  ? { envelope: c, output: { type: d.type, data: this.getChildValue(a[0]) } }
+                  : { envelope: c, output: d }));
+      else if ("FEATURES" == d) {
+        if (
+          ((a = c[0].getElementsByTagName("FEATURES")),
+          (c = a[0].getElementsByTagName("FEATURECOUNT")),
+          (b.features.featurecount = c[0].getAttribute("count")),
+          0 < b.features.featurecount)
+        )
+          for (
+            c = a[0].getElementsByTagName("ENVELOPE"),
+              b.features.envelope = this.parseAttributes(c[0], "number"),
+              a = a[0].getElementsByTagName("FEATURE"),
+              c = 0;
+            c < a.length;
+            c++
+          ) {
+            for (
+              var d = new OpenLayers.Feature.Vector(),
+                e = a[c].getElementsByTagName("FIELD"),
+                f = 0;
+              f < e.length;
+              f++
+            ) {
+              var g = e[f].getAttribute("name"),
+                h = e[f].getAttribute("value");
+              d.attributes[g] = h;
+            }
+            e = a[c].getElementsByTagName("POLYGON");
+            if (0 < e.length) {
+              e = e[0].getElementsByTagName("RING");
+              f = [];
+              for (g = 0; g < e.length; g++) {
+                h = [];
+                h.push(this.parsePointGeometry(e[g]));
+                for (var k = e[g].getElementsByTagName("HOLE"), l = 0; l < k.length; l++)
+                  h.push(this.parsePointGeometry(k[l]));
+                f.push(new OpenLayers.Geometry.Polygon(h));
+              }
+              d.geometry = 1 == f.length ? f[0] : new OpenLayers.Geometry.MultiPolygon(f);
+            }
+            b.features.feature.push(d);
+          }
+      } else b.error = "Unidentified response type.";
+    }
+    return b;
+  },
+  parseAttributes: function (a, b) {
+    for (var c = {}, d = 0; d < a.attributes.length; d++)
+      c[a.attributes[d].nodeName] =
+        "number" == b ? parseFloat(a.attributes[d].nodeValue) : a.attributes[d].nodeValue;
+    return c;
+  },
+  parsePointGeometry: function (a) {
+    var b = [],
+      c = a.getElementsByTagName("COORDS");
+    if (0 < c.length)
+      for (a = this.getChildValue(c[0]), a = a.split(/;/), c = 0; c < a.length; c++) {
+        var d = a[c].split(/ /);
+        b.push(new OpenLayers.Geometry.Point(d[0], d[1]));
+      }
+    else if (((a = a.getElementsByTagName("POINT")), 0 < a.length))
+      for (c = 0; c < a.length; c++)
+        b.push(
+          new OpenLayers.Geometry.Point(
+            parseFloat(a[c].getAttribute("x")),
+            parseFloat(a[c].getAttribute("y"))
+          )
+        );
+    return new OpenLayers.Geometry.LinearRing(b);
+  },
+  CLASS_NAME: "OpenLayers.Format.ArcXML",
+});
+OpenLayers.Format.ArcXML.Request = OpenLayers.Class({
+  initialize: function (a) {
+    return OpenLayers.Util.extend(this, {
+      get_image: {
+        properties: {
+          background: null,
+          draw: !0,
+          envelope: { minx: 0, miny: 0, maxx: 0, maxy: 0 },
+          featurecoordsys: { id: 0, string: "", datumtransformid: 0, datumtransformstring: "" },
+          filtercoordsys: { id: 0, string: "", datumtransformid: 0, datumtransformstring: "" },
+          imagesize: {
+            height: 0,
+            width: 0,
+            dpi: 96,
+            printheight: 0,
+            printwidth: 0,
+            scalesymbols: !1,
+          },
+          layerlist: [],
+          output: {
+            baseurl: "",
+            legendbaseurl: "",
+            legendname: "",
+            legendpath: "",
+            legendurl: "",
+            name: "",
+            path: "",
+            type: "jpg",
+            url: "",
+          },
+        },
+      },
+      get_feature: {
+        layer: "",
+        query: {
+          isspatial: !1,
+          featurecoordsys: { id: 0, string: "", datumtransformid: 0, datumtransformstring: "" },
+          filtercoordsys: { id: 0, string: "", datumtransformid: 0, datumtransformstring: "" },
+          buffer: 0,
+          where: "",
+          spatialfilter: { relation: "envelope_intersection", envelope: null },
+        },
+      },
+      environment: { separators: { cs: " ", ts: ";" } },
+      layer: [],
+      workspaces: [],
+    });
+  },
+  CLASS_NAME: "OpenLayers.Format.ArcXML.Request",
+});
+OpenLayers.Format.ArcXML.Response = OpenLayers.Class({
+  initialize: function (a) {
+    return OpenLayers.Util.extend(this, {
+      image: { envelope: null, output: "" },
+      features: { featurecount: 0, envelope: null, feature: [] },
+      error: "",
+    });
+  },
+  CLASS_NAME: "OpenLayers.Format.ArcXML.Response",
+});
+(function () {
+  function a() {
+    this._object = f && !k ? new f() : new window.ActiveXObject("Microsoft.XMLHTTP");
+    this._listeners = [];
+  }
+  function b() {
+    return new a();
+  }
+  function c(a) {
+    b.onreadystatechange && b.onreadystatechange.apply(a);
+    a.dispatchEvent({
+      type: "readystatechange",
+      bubbles: !1,
+      cancelable: !1,
+      timeStamp: new Date() + 0,
+    });
+  }
+  function d(a) {
+    try {
+      a.responseText = a._object.responseText;
+    } catch (b) {}
+    try {
+      var c;
+      var d = a._object,
+        e = d.responseXML,
+        f = d.responseText;
+      h &&
+        f &&
+        e &&
+        !e.documentElement &&
+        d.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/) &&
+        ((e = new window.ActiveXObject("Microsoft.XMLDOM")),
+        (e.async = !1),
+        (e.validateOnParse = !1),
+        e.loadXML(f));
+      c =
+        e &&
+        ((h && 0 != e.parseError) ||
+          !e.documentElement ||
+          (e.documentElement && "parsererror" == e.documentElement.tagName))
+          ? null
+          : e;
+      a.responseXML = c;
+    } catch (g) {}
+    try {
+      a.status = a._object.status;
+    } catch (k) {}
+    try {
+      a.statusText = a._object.statusText;
+    } catch (u) {}
+  }
+  function e(a) {
+    a._object.onreadystatechange = new window.Function();
+  }
+  var f = window.XMLHttpRequest,
+    g = !!window.controllers,
+    h = window.document.all && !window.opera,
+    k = h && window.navigator.userAgent.match(/MSIE 7.0/);
+  b.prototype = a.prototype;
+  g && f.wrapped && (b.wrapped = f.wrapped);
+  b.UNSENT = 0;
+  b.OPENED = 1;
+  b.HEADERS_RECEIVED = 2;
+  b.LOADING = 3;
+  b.DONE = 4;
+  b.prototype.readyState = b.UNSENT;
+  b.prototype.responseText = "";
+  b.prototype.responseXML = null;
+  b.prototype.status = 0;
+  b.prototype.statusText = "";
+  b.prototype.priority = "NORMAL";
+  b.prototype.onreadystatechange = null;
+  b.onreadystatechange = null;
+  b.onopen = null;
+  b.onsend = null;
+  b.onabort = null;
+  b.prototype.open = function (a, f, k, p, q) {
+    delete this._headers;
+    3 > arguments.length && (k = !0);
+    this._async = k;
+    var r = this,
+      s = this.readyState,
+      t;
+    h &&
+      k &&
+      ((t = function () {
+        s != b.DONE && (e(r), r.abort());
+      }),
+      window.attachEvent("onunload", t));
+    b.onopen && b.onopen.apply(this, arguments);
+    4 < arguments.length
+      ? this._object.open(a, f, k, p, q)
+      : 3 < arguments.length
+      ? this._object.open(a, f, k, p)
+      : this._object.open(a, f, k);
+    this.readyState = b.OPENED;
+    c(this);
+    this._object.onreadystatechange = function () {
+      if (!g || k)
+        (r.readyState = r._object.readyState),
+          d(r),
+          r._aborted
+            ? (r.readyState = b.UNSENT)
+            : (r.readyState == b.DONE &&
+                (delete r._data, e(r), h && k && window.detachEvent("onunload", t)),
+              s != r.readyState && c(r),
+              (s = r.readyState));
+    };
+  };
+  b.prototype.send = function (a) {
+    b.onsend && b.onsend.apply(this, arguments);
+    arguments.length || (a = null);
+    a &&
+      a.nodeType &&
+      ((a = window.XMLSerializer ? new window.XMLSerializer().serializeToString(a) : a.xml),
+      this._headers["Content-Type"] ||
+        this._object.setRequestHeader("Content-Type", "application/xml"));
+    this._data = a;
+    a: if ((this._object.send(this._data), g && !this._async))
+      for (this.readyState = b.OPENED, d(this); this.readyState < b.DONE; )
+        if ((this.readyState++, c(this), this._aborted)) break a;
+  };
+  b.prototype.abort = function () {
+    b.onabort && b.onabort.apply(this, arguments);
+    this.readyState > b.UNSENT && (this._aborted = !0);
+    this._object.abort();
+    e(this);
+    this.readyState = b.UNSENT;
+    delete this._data;
+  };
+  b.prototype.getAllResponseHeaders = function () {
+    return this._object.getAllResponseHeaders();
+  };
+  b.prototype.getResponseHeader = function (a) {
+    return this._object.getResponseHeader(a);
+  };
+  b.prototype.setRequestHeader = function (a, b) {
+    this._headers || (this._headers = {});
+    this._headers[a] = b;
+    return this._object.setRequestHeader(a, b);
+  };
+  b.prototype.addEventListener = function (a, b, c) {
+    for (var d = 0, e; (e = this._listeners[d]); d++)
+      if (e[0] == a && e[1] == b && e[2] == c) return;
+    this._listeners.push([a, b, c]);
+  };
+  b.prototype.removeEventListener = function (a, b, c) {
+    for (var d = 0, e; (e = this._listeners[d]) && (e[0] != a || e[1] != b || e[2] != c); d++);
+    e && this._listeners.splice(d, 1);
+  };
+  b.prototype.dispatchEvent = function (a) {
+    a = {
+      type: a.type,
+      target: this,
+      currentTarget: this,
+      eventPhase: 2,
+      bubbles: a.bubbles,
+      cancelable: a.cancelable,
+      timeStamp: a.timeStamp,
+      stopPropagation: function () {},
+      preventDefault: function () {},
+      initEvent: function () {},
+    };
+    "readystatechange" == a.type &&
+      this.onreadystatechange &&
+      (this.onreadystatechange.handleEvent || this.onreadystatechange).apply(this, [a]);
+    for (var b = 0, c; (c = this._listeners[b]); b++)
+      c[0] != a.type || c[2] || (c[1].handleEvent || c[1]).apply(this, [a]);
+  };
+  b.prototype.toString = function () {
+    return "[object XMLHttpRequest]";
+  };
+  b.toString = function () {
+    return "[XMLHttpRequest]";
+  };
+  window.Function.prototype.apply ||
+    (window.Function.prototype.apply = function (a, b) {
+      b || (b = []);
+      a.__func = this;
+      a.__func(b[0], b[1], b[2], b[3], b[4]);
+      delete a.__func;
+    });
+  OpenLayers.Request || (OpenLayers.Request = {});
+  OpenLayers.Request.XMLHttpRequest = b;
+})();
+OpenLayers.ProxyHost = "";
+OpenLayers.Request || (OpenLayers.Request = {});
+OpenLayers.Util.extend(OpenLayers.Request, {
+  DEFAULT_CONFIG: {
+    method: "GET",
+    url: window.location.href,
+    async: !0,
+    user: void 0,
+    password: void 0,
+    params: null,
+    proxy: OpenLayers.ProxyHost,
+    headers: {},
+    data: null,
+    callback: function () {},
+    success: null,
+    failure: null,
+    scope: null,
+  },
+  URL_SPLIT_REGEX: /([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/,
+  events: new OpenLayers.Events(this),
+  makeSameOrigin: function (a, b) {
+    var c = 0 !== a.indexOf("http"),
+      d = !c && a.match(this.URL_SPLIT_REGEX);
+    if (d) {
+      var e = window.location,
+        c = d[1] == e.protocol && d[3] == e.hostname,
+        d = d[4],
+        e = e.port;
+      if ((80 != d && "" != d) || ("80" != e && "" != e)) c = c && d == e;
+    }
+    c || (b && (a = "function" == typeof b ? b(a) : b + encodeURIComponent(a)));
+    return a;
+  },
+  issue: function (a) {
+    var b = OpenLayers.Util.extend(this.DEFAULT_CONFIG, { proxy: OpenLayers.ProxyHost });
+    a = a || {};
+    a.headers = a.headers || {};
+    a = OpenLayers.Util.applyDefaults(a, b);
+    a.headers = OpenLayers.Util.applyDefaults(a.headers, b.headers);
+    var b = !1,
+      c;
+    for (c in a.headers)
+      a.headers.hasOwnProperty(c) && "x-requested-with" === c.toLowerCase() && (b = !0);
+    !1 === b && (a.headers["X-Requested-With"] = "XMLHttpRequest");
+    var d = new OpenLayers.Request.XMLHttpRequest(),
+      e = OpenLayers.Util.urlAppend(a.url, OpenLayers.Util.getParameterString(a.params || {})),
+      e = OpenLayers.Request.makeSameOrigin(e, a.proxy);
+    d.open(a.method, e, a.async, a.user, a.password);
+    for (var f in a.headers) d.setRequestHeader(f, a.headers[f]);
+    var g = this.events,
+      h = this;
+    d.onreadystatechange = function () {
+      d.readyState == OpenLayers.Request.XMLHttpRequest.DONE &&
+        !1 !== g.triggerEvent("complete", { request: d, config: a, requestUrl: e }) &&
+        h.runCallbacks({ request: d, config: a, requestUrl: e });
+    };
+    !1 === a.async
+      ? d.send(a.data)
+      : window.setTimeout(function () {
+          0 !== d.readyState && d.send(a.data);
+        }, 0);
+    return d;
+  },
+  runCallbacks: function (a) {
+    var b = a.request,
+      c = a.config,
+      d = c.scope ? OpenLayers.Function.bind(c.callback, c.scope) : c.callback,
+      e;
+    c.success && (e = c.scope ? OpenLayers.Function.bind(c.success, c.scope) : c.success);
+    var f;
+    c.failure && (f = c.scope ? OpenLayers.Function.bind(c.failure, c.scope) : c.failure);
+    "file:" == OpenLayers.Util.createUrlObject(c.url).protocol &&
+      b.responseText &&
+      (b.status = 200);
+    d(b);
+    if (!b.status || (200 <= b.status && 300 > b.status))
+      this.events.triggerEvent("success", a), e && e(b);
+    b.status &&
+      (200 > b.status || 300 <= b.status) &&
+      (this.events.triggerEvent("failure", a), f && f(b));
+  },
+  GET: function (a) {
+    a = OpenLayers.Util.extend(a, { method: "GET" });
+    return OpenLayers.Request.issue(a);
+  },
+  POST: function (a) {
+    a = OpenLayers.Util.extend(a, { method: "POST" });
+    a.headers = a.headers ? a.headers : {};
+    "CONTENT-TYPE" in OpenLayers.Util.upperCaseObject(a.headers) ||
+      (a.headers["Content-Type"] = "application/xml");
+    return OpenLayers.Request.issue(a);
+  },
+  PUT: function (a) {
+    a = OpenLayers.Util.extend(a, { method: "PUT" });
+    a.headers = a.headers ? a.headers : {};
+    "CONTENT-TYPE" in OpenLayers.Util.upperCaseObject(a.headers) ||
+      (a.headers["Content-Type"] = "application/xml");
+    return OpenLayers.Request.issue(a);
+  },
+  DELETE: function (a) {
+    a = OpenLayers.Util.extend(a, { method: "DELETE" });
+    return OpenLayers.Request.issue(a);
+  },
+  HEAD: function (a) {
+    a = OpenLayers.Util.extend(a, { method: "HEAD" });
+    return OpenLayers.Request.issue(a);
+  },
+  OPTIONS: function (a) {
+    a = OpenLayers.Util.extend(a, { method: "OPTIONS" });
+    return OpenLayers.Request.issue(a);
+  },
+});
+OpenLayers.Layer.ArcIMS = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  DEFAULT_PARAMS: { ClientVersion: "9.2", ServiceName: "" },
+  featureCoordSys: "4326",
+  filterCoordSys: "4326",
+  layers: null,
+  async: !0,
+  name: "ArcIMS",
+  isBaseLayer: !0,
+  DEFAULT_OPTIONS: {
+    tileSize: new OpenLayers.Size(512, 512),
+    featureCoordSys: "4326",
+    filterCoordSys: "4326",
+    layers: null,
+    isBaseLayer: !0,
+    async: !0,
+    name: "ArcIMS",
+  },
+  initialize: function (a, b, c) {
+    this.tileSize = new OpenLayers.Size(512, 512);
+    this.params = OpenLayers.Util.applyDefaults(
+      { ServiceName: c.serviceName },
+      this.DEFAULT_PARAMS
+    );
+    this.options = OpenLayers.Util.applyDefaults(c, this.DEFAULT_OPTIONS);
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, [a, b, this.params, c]);
+    this.transparent &&
+      (this.isBaseLayer || (this.isBaseLayer = !1),
+      "image/jpeg" == this.format &&
+        (this.format = OpenLayers.Util.alphaHack() ? "image/gif" : "image/png"));
+    null === this.options.layers && (this.options.layers = []);
+  },
+  getURL: function (a) {
+    var b = "";
+    a = this.adjustBounds(a);
+    a = new OpenLayers.Format.ArcXML(
+      OpenLayers.Util.extend(this.options, {
+        requesttype: "image",
+        envelope: a.toArray(),
+        tileSize: this.tileSize,
+      })
+    );
+    a = new OpenLayers.Request.POST({
+      url: this.getFullRequestString(),
+      data: a.write(),
+      async: !1,
+    });
+    null != a &&
+      ((b = a.responseXML),
+      (b && b.documentElement) || (b = a.responseText),
+      (b = new OpenLayers.Format.ArcXML().read(b)),
+      (b = this.getUrlOrImage(b.image.output)));
+    return b;
+  },
+  getURLasync: function (a, b, c) {
+    a = this.adjustBounds(a);
+    a = new OpenLayers.Format.ArcXML(
+      OpenLayers.Util.extend(this.options, {
+        requesttype: "image",
+        envelope: a.toArray(),
+        tileSize: this.tileSize,
+      })
+    );
+    OpenLayers.Request.POST({
+      url: this.getFullRequestString(),
+      async: !0,
+      data: a.write(),
+      callback: function (a) {
+        var e = a.responseXML;
+        (e && e.documentElement) || (e = a.responseText);
+        a = new OpenLayers.Format.ArcXML().read(e);
+        b.call(c, this.getUrlOrImage(a.image.output));
+      },
+      scope: this,
+    });
+  },
+  getUrlOrImage: function (a) {
+    var b = "";
+    a.url ? (b = a.url) : a.data && (b = "data:image/" + a.type + ";base64," + a.data);
+    return b;
+  },
+  setLayerQuery: function (a, b) {
+    for (var c = 0; c < this.options.layers.length; c++)
+      if (a == this.options.layers[c].id) {
+        this.options.layers[c].query = b;
+        return;
+      }
+    this.options.layers.push({ id: a, visible: !0, query: b });
+  },
+  getFeatureInfo: function (a, b, c) {
+    var d = c.buffer || 1,
+      e = c.callback || function () {},
+      f = c.scope || window,
+      g = {};
+    OpenLayers.Util.extend(g, this.options);
+    g.requesttype = "feature";
+    a instanceof OpenLayers.LonLat
+      ? ((g.polygon = null), (g.envelope = [a.lon - d, a.lat - d, a.lon + d, a.lat + d]))
+      : a instanceof OpenLayers.Geometry.Polygon && ((g.envelope = null), (g.polygon = a));
+    var h = new OpenLayers.Format.ArcXML(g);
+    OpenLayers.Util.extend(h.request.get_feature, c);
+    h.request.get_feature.layer = b.id;
+    "number" == typeof b.query.accuracy
+      ? (h.request.get_feature.query.accuracy = b.query.accuracy)
+      : ((a = this.map.getCenter()),
+        (c = this.map.getViewPortPxFromLonLat(a)),
+        c.x++,
+        (c = this.map.getLonLatFromPixel(c)),
+        (h.request.get_feature.query.accuracy = c.lon - a.lon));
+    h.request.get_feature.query.where = b.query.where;
+    h.request.get_feature.query.spatialfilter.relation = "area_intersection";
+    OpenLayers.Request.POST({
+      url: this.getFullRequestString({ CustomService: "Query" }),
+      data: h.write(),
+      callback: function (a) {
+        a = h.parseResponse(a.responseText);
+        h.iserror() ? e.call(f, null) : e.call(f, a.features);
+      },
+    });
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.ArcIMS(this.name, this.url, this.getOptions()));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  CLASS_NAME: "OpenLayers.Layer.ArcIMS",
+});
+OpenLayers.Control.PanZoom = OpenLayers.Class(OpenLayers.Control, {
+  slideFactor: 50,
+  slideRatio: null,
+  buttons: null,
+  position: null,
+  initialize: function (a) {
+    this.position = new OpenLayers.Pixel(
+      OpenLayers.Control.PanZoom.X,
+      OpenLayers.Control.PanZoom.Y
+    );
+    OpenLayers.Control.prototype.initialize.apply(this, arguments);
+  },
+  destroy: function () {
+    this.map && this.map.events.unregister("buttonclick", this, this.onButtonClick);
+    this.removeButtons();
+    this.position = this.buttons = null;
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  setMap: function (a) {
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+    this.map.events.register("buttonclick", this, this.onButtonClick);
+  },
+  draw: function (a) {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    a = this.position;
+    this.buttons = [];
+    var b = { w: 18, h: 18 },
+      c = new OpenLayers.Pixel(a.x + b.w / 2, a.y);
+    this._addButton("panup", "north-mini.png", c, b);
+    a.y = c.y + b.h;
+    this._addButton("panleft", "west-mini.png", a, b);
+    this._addButton("panright", "east-mini.png", a.add(b.w, 0), b);
+    this._addButton("pandown", "south-mini.png", c.add(0, 2 * b.h), b);
+    this._addButton("zoomin", "zoom-plus-mini.png", c.add(0, 3 * b.h + 5), b);
+    this._addButton("zoomworld", "zoom-world-mini.png", c.add(0, 4 * b.h + 5), b);
+    this._addButton("zoomout", "zoom-minus-mini.png", c.add(0, 5 * b.h + 5), b);
+    return this.div;
+  },
+  _addButton: function (a, b, c, d) {
+    b = OpenLayers.Util.getImageLocation(b);
+    c = OpenLayers.Util.createAlphaImageDiv(this.id + "_" + a, c, d, b, "absolute");
+    c.style.cursor = "pointer";
+    this.div.appendChild(c);
+    c.action = a;
+    c.className = "olButton";
+    this.buttons.push(c);
+    return c;
+  },
+  _removeButton: function (a) {
+    this.div.removeChild(a);
+    OpenLayers.Util.removeItem(this.buttons, a);
+  },
+  removeButtons: function () {
+    for (var a = this.buttons.length - 1; 0 <= a; --a) this._removeButton(this.buttons[a]);
+  },
+  onButtonClick: function (a) {
+    switch (a.buttonElement.action) {
+      case "panup":
+        this.map.pan(0, -this.getSlideFactor("h"));
+        break;
+      case "pandown":
+        this.map.pan(0, this.getSlideFactor("h"));
+        break;
+      case "panleft":
+        this.map.pan(-this.getSlideFactor("w"), 0);
+        break;
+      case "panright":
+        this.map.pan(this.getSlideFactor("w"), 0);
+        break;
+      case "zoomin":
+        this.map.zoomIn();
+        break;
+      case "zoomout":
+        this.map.zoomOut();
+        break;
+      case "zoomworld":
+        this.map.zoomToMaxExtent();
+    }
+  },
+  getSlideFactor: function (a) {
+    return this.slideRatio ? this.map.getSize()[a] * this.slideRatio : this.slideFactor;
+  },
+  CLASS_NAME: "OpenLayers.Control.PanZoom",
+});
+OpenLayers.Control.PanZoom.X = 4;
+OpenLayers.Control.PanZoom.Y = 4;
+OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, {
+  zoomStopWidth: 18,
+  zoomStopHeight: 11,
+  slider: null,
+  sliderEvents: null,
+  zoombarDiv: null,
+  zoomWorldIcon: !1,
+  panIcons: !0,
+  forceFixedZoomLevel: !1,
+  mouseDragStart: null,
+  deltaY: null,
+  zoomStart: null,
+  destroy: function () {
+    this._removeZoomBar();
+    this.map.events.un({ changebaselayer: this.redraw, updatesize: this.redraw, scope: this });
+    OpenLayers.Control.PanZoom.prototype.destroy.apply(this, arguments);
+    delete this.mouseDragStart;
+    delete this.zoomStart;
+  },
+  setMap: function (a) {
+    OpenLayers.Control.PanZoom.prototype.setMap.apply(this, arguments);
+    this.map.events.on({ changebaselayer: this.redraw, updatesize: this.redraw, scope: this });
+  },
+  redraw: function () {
+    null != this.div && (this.removeButtons(), this._removeZoomBar());
+    this.draw();
+  },
+  draw: function (a) {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    a = this.position.clone();
+    this.buttons = [];
+    var b = { w: 18, h: 18 };
+    if (this.panIcons) {
+      var c = new OpenLayers.Pixel(a.x + b.w / 2, a.y),
+        d = b.w;
+      this.zoomWorldIcon && (c = new OpenLayers.Pixel(a.x + b.w, a.y));
+      this._addButton("panup", "north-mini.png", c, b);
+      a.y = c.y + b.h;
+      this._addButton("panleft", "west-mini.png", a, b);
+      this.zoomWorldIcon &&
+        (this._addButton("zoomworld", "zoom-world-mini.png", a.add(b.w, 0), b), (d *= 2));
+      this._addButton("panright", "east-mini.png", a.add(d, 0), b);
+      this._addButton("pandown", "south-mini.png", c.add(0, 2 * b.h), b);
+      this._addButton("zoomin", "zoom-plus-mini.png", c.add(0, 3 * b.h + 5), b);
+      c = this._addZoomBar(c.add(0, 4 * b.h + 5));
+      this._addButton("zoomout", "zoom-minus-mini.png", c, b);
+    } else
+      this._addButton("zoomin", "zoom-plus-mini.png", a, b),
+        (c = this._addZoomBar(a.add(0, b.h))),
+        this._addButton("zoomout", "zoom-minus-mini.png", c, b),
+        this.zoomWorldIcon &&
+          ((c = c.add(0, b.h + 3)), this._addButton("zoomworld", "zoom-world-mini.png", c, b));
+    return this.div;
+  },
+  _addZoomBar: function (a) {
+    var b = OpenLayers.Util.getImageLocation("slider.png"),
+      c = this.id + "_" + this.map.id,
+      d = this.map.getMinZoom(),
+      e = this.map.getNumZoomLevels() - 1 - this.map.getZoom(),
+      e = OpenLayers.Util.createAlphaImageDiv(
+        c,
+        a.add(-1, e * this.zoomStopHeight),
+        { w: 20, h: 9 },
+        b,
+        "absolute"
+      );
+    e.style.cursor = "move";
+    this.slider = e;
+    this.sliderEvents = new OpenLayers.Events(this, e, null, !0, { includeXY: !0 });
+    this.sliderEvents.on({
+      touchstart: this.zoomBarDown,
+      touchmove: this.zoomBarDrag,
+      touchend: this.zoomBarUp,
+      mousedown: this.zoomBarDown,
+      mousemove: this.zoomBarDrag,
+      mouseup: this.zoomBarUp,
+    });
+    var f = { w: this.zoomStopWidth, h: this.zoomStopHeight * (this.map.getNumZoomLevels() - d) },
+      b = OpenLayers.Util.getImageLocation("zoombar.png"),
+      c = null;
+    OpenLayers.Util.alphaHack()
+      ? ((c = this.id + "_" + this.map.id),
+        (c = OpenLayers.Util.createAlphaImageDiv(
+          c,
+          a,
+          { w: f.w, h: this.zoomStopHeight },
+          b,
+          "absolute",
+          null,
+          "crop"
+        )),
+        (c.style.height = f.h + "px"))
+      : (c = OpenLayers.Util.createDiv(
+          "OpenLayers_Control_PanZoomBar_Zoombar" + this.map.id,
+          a,
+          f,
+          b
+        ));
+    c.style.cursor = "pointer";
+    c.className = "olButton";
+    this.zoombarDiv = c;
+    this.div.appendChild(c);
+    this.startTop = parseInt(c.style.top);
+    this.div.appendChild(e);
+    this.map.events.register("zoomend", this, this.moveZoomBar);
+    return (a = a.add(0, this.zoomStopHeight * (this.map.getNumZoomLevels() - d)));
+  },
+  _removeZoomBar: function () {
+    this.sliderEvents.un({
+      touchstart: this.zoomBarDown,
+      touchmove: this.zoomBarDrag,
+      touchend: this.zoomBarUp,
+      mousedown: this.zoomBarDown,
+      mousemove: this.zoomBarDrag,
+      mouseup: this.zoomBarUp,
+    });
+    this.sliderEvents.destroy();
+    this.div.removeChild(this.zoombarDiv);
+    this.zoombarDiv = null;
+    this.div.removeChild(this.slider);
+    this.slider = null;
+    this.map.events.unregister("zoomend", this, this.moveZoomBar);
+  },
+  onButtonClick: function (a) {
+    OpenLayers.Control.PanZoom.prototype.onButtonClick.apply(this, arguments);
+    if (a.buttonElement === this.zoombarDiv) {
+      var b = a.buttonXY.y / this.zoomStopHeight;
+      if (this.forceFixedZoomLevel || !this.map.fractionalZoom) b = Math.floor(b);
+      b = this.map.getNumZoomLevels() - 1 - b;
+      b = Math.min(Math.max(b, 0), this.map.getNumZoomLevels() - 1);
+      this.map.zoomTo(b);
+    }
+  },
+  passEventToSlider: function (a) {
+    this.sliderEvents.handleBrowserEvent(a);
+  },
+  zoomBarDown: function (a) {
+    if (OpenLayers.Event.isLeftClick(a) || OpenLayers.Event.isSingleTouch(a))
+      this.map.events.on({
+        touchmove: this.passEventToSlider,
+        mousemove: this.passEventToSlider,
+        mouseup: this.passEventToSlider,
+        scope: this,
+      }),
+        (this.mouseDragStart = a.xy.clone()),
+        (this.zoomStart = a.xy.clone()),
+        (this.div.style.cursor = "move"),
+        (this.zoombarDiv.offsets = null),
+        OpenLayers.Event.stop(a);
+  },
+  zoomBarDrag: function (a) {
+    if (null != this.mouseDragStart) {
+      var b = this.mouseDragStart.y - a.xy.y,
+        c = OpenLayers.Util.pagePosition(this.zoombarDiv);
+      0 < a.clientY - c[1] &&
+        a.clientY - c[1] < parseInt(this.zoombarDiv.style.height) - 2 &&
+        ((b = parseInt(this.slider.style.top) - b),
+        (this.slider.style.top = b + "px"),
+        (this.mouseDragStart = a.xy.clone()));
+      this.deltaY = this.zoomStart.y - a.xy.y;
+      OpenLayers.Event.stop(a);
+    }
+  },
+  zoomBarUp: function (a) {
+    if ((OpenLayers.Event.isLeftClick(a) || "touchend" === a.type) && this.mouseDragStart) {
+      this.div.style.cursor = "";
+      this.map.events.un({
+        touchmove: this.passEventToSlider,
+        mouseup: this.passEventToSlider,
+        mousemove: this.passEventToSlider,
+        scope: this,
+      });
+      var b = this.map.zoom;
+      !this.forceFixedZoomLevel && this.map.fractionalZoom
+        ? ((b += this.deltaY / this.zoomStopHeight),
+          (b = Math.min(Math.max(b, 0), this.map.getNumZoomLevels() - 1)))
+        : ((b += this.deltaY / this.zoomStopHeight), (b = Math.max(Math.round(b), 0)));
+      this.map.zoomTo(b);
+      this.zoomStart = this.mouseDragStart = null;
+      this.deltaY = 0;
+      OpenLayers.Event.stop(a);
+    }
+  },
+  moveZoomBar: function () {
+    var a =
+      (this.map.getNumZoomLevels() - 1 - this.map.getZoom()) * this.zoomStopHeight +
+      this.startTop +
+      1;
+    this.slider.style.top = a + "px";
+  },
+  CLASS_NAME: "OpenLayers.Control.PanZoomBar",
+});
+OpenLayers.Format.WFSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.1.0",
+  CLASS_NAME: "OpenLayers.Format.WFSCapabilities",
+});
+OpenLayers.Format.WFSCapabilities.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    wfs: "http://www.opengis.net/wfs",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+    ows: "http://www.opengis.net/ows",
+  },
+  errorProperty: "featureTypeList",
+  defaultPrefix: "wfs",
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    this.readNode(a, b);
+    return b;
+  },
+  readers: {
+    wfs: {
+      WFS_Capabilities: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      FeatureTypeList: function (a, b) {
+        b.featureTypeList = { featureTypes: [] };
+        this.readChildNodes(a, b.featureTypeList);
+      },
+      FeatureType: function (a, b) {
+        var c = {};
+        this.readChildNodes(a, c);
+        b.featureTypes.push(c);
+      },
+      Name: function (a, b) {
+        var c = this.getChildValue(a);
+        c &&
+          ((c = c.split(":")),
+          (b.name = c.pop()),
+          0 < c.length && (b.featureNS = this.lookupNamespaceURI(a, c[0])));
+      },
+      Title: function (a, b) {
+        var c = this.getChildValue(a);
+        c && (b.title = c);
+      },
+      Abstract: function (a, b) {
+        var c = this.getChildValue(a);
+        c && (b["abstract"] = c);
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.WFSCapabilities.v1",
+});
+OpenLayers.Format.WFSCapabilities.v1_1_0 = OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1, {
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  readers: {
+    wfs: OpenLayers.Util.applyDefaults(
+      {
+        DefaultSRS: function (a, b) {
+          var c = this.getChildValue(a);
+          c && (b.srs = c);
+        },
+      },
+      OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs
+    ),
+    ows: OpenLayers.Format.OWSCommon.v1.prototype.readers.ows,
+  },
+  CLASS_NAME: "OpenLayers.Format.WFSCapabilities.v1_1_0",
+});
+OpenLayers.Layer.Image = OpenLayers.Class(OpenLayers.Layer, {
+  isBaseLayer: !0,
+  url: null,
+  extent: null,
+  size: null,
+  tile: null,
+  aspectRatio: null,
+  initialize: function (a, b, c, d, e) {
+    this.url = b;
+    this.maxExtent = this.extent = c;
+    this.size = d;
+    OpenLayers.Layer.prototype.initialize.apply(this, [a, e]);
+    this.aspectRatio =
+      this.extent.getHeight() / this.size.h / (this.extent.getWidth() / this.size.w);
+  },
+  destroy: function () {
+    this.tile &&
+      (this.removeTileMonitoringHooks(this.tile), this.tile.destroy(), (this.tile = null));
+    OpenLayers.Layer.prototype.destroy.apply(this, arguments);
+  },
+  clone: function (a) {
+    null == a &&
+      (a = new OpenLayers.Layer.Image(
+        this.name,
+        this.url,
+        this.extent,
+        this.size,
+        this.getOptions()
+      ));
+    return (a = OpenLayers.Layer.prototype.clone.apply(this, [a]));
+  },
+  setMap: function (a) {
+    null == this.options.maxResolution &&
+      (this.options.maxResolution = (this.aspectRatio * this.extent.getWidth()) / this.size.w);
+    OpenLayers.Layer.prototype.setMap.apply(this, arguments);
+  },
+  moveTo: function (a, b, c) {
+    OpenLayers.Layer.prototype.moveTo.apply(this, arguments);
+    var d = null == this.tile;
+    if (b || d) {
+      this.setTileSize();
+      var e = this.map.getLayerPxFromLonLat({ lon: this.extent.left, lat: this.extent.top });
+      d
+        ? ((this.tile = new OpenLayers.Tile.Image(this, e, this.extent, null, this.tileSize)),
+          this.addTileMonitoringHooks(this.tile))
+        : ((this.tile.size = this.tileSize.clone()), (this.tile.position = e.clone()));
+      this.tile.draw();
+    }
+  },
+  setTileSize: function () {
+    var a = this.extent.getWidth() / this.map.getResolution(),
+      b = this.extent.getHeight() / this.map.getResolution();
+    this.tileSize = new OpenLayers.Size(a, b);
+  },
+  addTileMonitoringHooks: function (a) {
+    a.onLoadStart = function () {
+      this.events.triggerEvent("loadstart");
+    };
+    a.events.register("loadstart", this, a.onLoadStart);
+    a.onLoadEnd = function () {
+      this.events.triggerEvent("loadend");
+    };
+    a.events.register("loadend", this, a.onLoadEnd);
+    a.events.register("unload", this, a.onLoadEnd);
+  },
+  removeTileMonitoringHooks: function (a) {
+    a.unload();
+    a.events.un({
+      loadstart: a.onLoadStart,
+      loadend: a.onLoadEnd,
+      unload: a.onLoadEnd,
+      scope: this,
+    });
+  },
+  setUrl: function (a) {
+    this.url = a;
+    this.tile.draw();
+  },
+  getURL: function (a) {
+    return this.url;
+  },
+  CLASS_NAME: "OpenLayers.Layer.Image",
+});
+OpenLayers.Strategy = OpenLayers.Class({
+  layer: null,
+  options: null,
+  active: null,
+  autoActivate: !0,
+  autoDestroy: !0,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+    this.options = a;
+    this.active = !1;
+  },
+  destroy: function () {
+    this.deactivate();
+    this.options = this.layer = null;
+  },
+  setLayer: function (a) {
+    this.layer = a;
+  },
+  activate: function () {
+    return this.active ? !1 : (this.active = !0);
+  },
+  deactivate: function () {
+    return this.active ? ((this.active = !1), !0) : !1;
+  },
+  CLASS_NAME: "OpenLayers.Strategy",
+});
+OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, {
+  events: null,
+  auto: !1,
+  timer: null,
+  initialize: function (a) {
+    OpenLayers.Strategy.prototype.initialize.apply(this, [a]);
+    this.events = new OpenLayers.Events(this);
+  },
+  activate: function () {
+    var a = OpenLayers.Strategy.prototype.activate.call(this);
+    if (a && this.auto)
+      if ("number" === typeof this.auto)
+        this.timer = window.setInterval(OpenLayers.Function.bind(this.save, this), 1e3 * this.auto);
+      else
+        this.layer.events.on({
+          featureadded: this.triggerSave,
+          afterfeaturemodified: this.triggerSave,
+          scope: this,
+        });
+    return a;
+  },
+  deactivate: function () {
+    var a = OpenLayers.Strategy.prototype.deactivate.call(this);
+    a &&
+      this.auto &&
+      ("number" === typeof this.auto
+        ? window.clearInterval(this.timer)
+        : this.layer.events.un({
+            featureadded: this.triggerSave,
+            afterfeaturemodified: this.triggerSave,
+            scope: this,
+          }));
+    return a;
+  },
+  triggerSave: function (a) {
+    var b = a.feature;
+    (b.state !== OpenLayers.State.INSERT &&
+      b.state !== OpenLayers.State.UPDATE &&
+      b.state !== OpenLayers.State.DELETE) ||
+      this.save([a.feature]);
+  },
+  save: function (a) {
+    a || (a = this.layer.features);
+    this.events.triggerEvent("start", { features: a });
+    var b = this.layer.projection,
+      c = this.layer.map.getProjectionObject();
+    if (!c.equals(b)) {
+      for (var d = a.length, e = Array(d), f, g, h = 0; h < d; ++h)
+        (f = a[h]),
+          (g = f.clone()),
+          (g.fid = f.fid),
+          (g.state = f.state),
+          f.url && (g.url = f.url),
+          (g._original = f),
+          g.geometry.transform(c, b),
+          (e[h] = g);
+      a = e;
+    }
+    this.layer.protocol.commit(a, { callback: this.onCommit, scope: this });
+  },
+  onCommit: function (a) {
+    var b = { response: a };
+    if (a.success()) {
+      for (
+        var c = a.reqFeatures, d, e = [], f = a.insertIds || [], g = 0, h = 0, k = c.length;
+        h < k;
+        ++h
+      )
+        if (((d = c[h]), (d = d._original || d), (a = d.state)))
+          a == OpenLayers.State.DELETE
+            ? e.push(d)
+            : a == OpenLayers.State.INSERT && ((d.fid = f[g]), ++g),
+            (d.state = null);
+      0 < e.length && this.layer.destroyFeatures(e);
+      this.events.triggerEvent("success", b);
+    } else this.events.triggerEvent("fail", b);
+  },
+  CLASS_NAME: "OpenLayers.Strategy.Save",
+});
+OpenLayers.Events.featureclick = OpenLayers.Class({
+  cache: null,
+  map: null,
+  provides: ["featureclick", "nofeatureclick", "featureover", "featureout"],
+  initialize: function (a) {
+    this.target = a;
+    if (a.object instanceof OpenLayers.Map) this.setMap(a.object);
+    else if (a.object instanceof OpenLayers.Layer.Vector)
+      a.object.map
+        ? this.setMap(a.object.map)
+        : a.object.events.register("added", this, function (b) {
+            this.setMap(a.object.map);
+          });
+    else
+      throw (
+        "Listeners for '" +
+        this.provides.join("', '") +
+        "' events can only be registered for OpenLayers.Layer.Vector or OpenLayers.Map instances"
+      );
+    for (var b = this.provides.length - 1; 0 <= b; --b) a.extensions[this.provides[b]] = !0;
+  },
+  setMap: function (a) {
+    this.map = a;
+    this.cache = {};
+    a.events.register("mousedown", this, this.start, { extension: !0 });
+    a.events.register("mouseup", this, this.onClick, { extension: !0 });
+    a.events.register("touchstart", this, this.start, { extension: !0 });
+    a.events.register("touchmove", this, this.cancel, { extension: !0 });
+    a.events.register("touchend", this, this.onClick, { extension: !0 });
+    a.events.register("mousemove", this, this.onMousemove, { extension: !0 });
+  },
+  start: function (a) {
+    this.startEvt = a;
+  },
+  cancel: function (a) {
+    delete this.startEvt;
+  },
+  onClick: function (a) {
+    if (this.startEvt && ("touchend" === a.type || OpenLayers.Event.isLeftClick(a))) {
+      a = this.getFeatures(this.startEvt);
+      delete this.startEvt;
+      for (
+        var b, c, d = {}, e = 0, f = a.length;
+        e < f &&
+        ((b = a[e]),
+        (c = b.layer),
+        (d[c.id] = !0),
+        (b = this.triggerEvent("featureclick", { feature: b })),
+        !1 !== b);
+        ++e
+      );
+      e = 0;
+      for (f = this.map.layers.length; e < f; ++e)
+        (c = this.map.layers[e]),
+          c instanceof OpenLayers.Layer.Vector &&
+            !d[c.id] &&
+            this.triggerEvent("nofeatureclick", { layer: c });
+    }
+  },
+  onMousemove: function (a) {
+    delete this.startEvt;
+    var b = this.getFeatures(a),
+      c = {};
+    a = [];
+    for (var d, e = 0, f = b.length; e < f; ++e)
+      (d = b[e]), (c[d.id] = d), this.cache[d.id] || a.push(d);
+    var b = [],
+      g;
+    for (g in this.cache)
+      (d = this.cache[g]), d.layer && d.layer.map ? c[d.id] || b.push(d) : delete this.cache[g];
+    e = 0;
+    for (
+      f = a.length;
+      e < f &&
+      ((d = a[e]),
+      (this.cache[d.id] = d),
+      (g = this.triggerEvent("featureover", { feature: d })),
+      !1 !== g);
+      ++e
+    );
+    e = 0;
+    for (
+      f = b.length;
+      e < f &&
+      ((d = b[e]),
+      delete this.cache[d.id],
+      (g = this.triggerEvent("featureout", { feature: d })),
+      !1 !== g);
+      ++e
+    );
+  },
+  triggerEvent: function (a, b) {
+    var c = b.feature ? b.feature.layer : b.layer,
+      d = this.target.object;
+    if (d instanceof OpenLayers.Map || d === c) return this.target.triggerEvent(a, b);
+  },
+  getFeatures: function (a) {
+    var b = a.clientX,
+      c = a.clientY,
+      d = [],
+      e = [],
+      f = [],
+      g,
+      h,
+      k,
+      l;
+    for (l = this.map.layers.length - 1; 0 <= l; --l)
+      if (((g = this.map.layers[l]), "none" !== g.div.style.display))
+        if (g.renderer instanceof OpenLayers.Renderer.Elements) {
+          if (g instanceof OpenLayers.Layer.Vector)
+            for (h = document.elementFromPoint(b, c); h && h._featureId; )
+              (k = g.getFeatureById(h._featureId))
+                ? (d.push(k),
+                  (h.style.display = "none"),
+                  e.push(h),
+                  (h = document.elementFromPoint(b, c)))
+                : (h = !1);
+          f.push(g);
+          g.div.style.display = "none";
+        } else
+          g.renderer instanceof OpenLayers.Renderer.Canvas &&
+            (k = g.renderer.getFeatureIdFromEvent(a)) &&
+            (d.push(k), f.push(g));
+    l = 0;
+    for (a = e.length; l < a; ++l) e[l].style.display = "";
+    for (l = f.length - 1; 0 <= l; --l) f[l].div.style.display = "block";
+    return d;
+  },
+  destroy: function () {
+    for (var a = this.provides.length - 1; 0 <= a; --a)
+      delete this.target.extensions[this.provides[a]];
+    this.map.events.un({
+      mousemove: this.onMousemove,
+      mousedown: this.start,
+      mouseup: this.onClick,
+      touchstart: this.start,
+      touchmove: this.cancel,
+      touchend: this.onClick,
+      scope: this,
+    });
+    delete this.cache;
+    delete this.map;
+    delete this.target;
+  },
+});
+OpenLayers.Events.nofeatureclick = OpenLayers.Events.featureclick;
+OpenLayers.Events.featureover = OpenLayers.Events.featureclick;
+OpenLayers.Events.featureout = OpenLayers.Events.featureclick;
+OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
+  defaultDesc: "No description available",
+  extractWaypoints: !0,
+  extractTracks: !0,
+  extractRoutes: !0,
+  extractAttributes: !0,
+  namespaces: {
+    gpx: "http://www.topografix.com/GPX/1/1",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  schemaLocation: "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd",
+  creator: "OpenLayers",
+  initialize: function (a) {
+    this.externalProjection = new OpenLayers.Projection("EPSG:4326");
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    var b = [];
+    if (this.extractTracks)
+      for (var c = a.getElementsByTagName("trk"), d = 0, e = c.length; d < e; d++) {
+        var f = {};
+        this.extractAttributes && (f = this.parseAttributes(c[d]));
+        for (
+          var g = this.getElementsByTagNameNS(c[d], c[d].namespaceURI, "trkseg"),
+            h = 0,
+            k = g.length;
+          h < k;
+          h++
+        ) {
+          var l = this.extractSegment(g[h], "trkpt");
+          b.push(new OpenLayers.Feature.Vector(l, f));
+        }
+      }
+    if (this.extractRoutes)
+      for (e = a.getElementsByTagName("rte"), c = 0, d = e.length; c < d; c++)
+        (f = {}),
+          this.extractAttributes && (f = this.parseAttributes(e[c])),
+          (g = this.extractSegment(e[c], "rtept")),
+          b.push(new OpenLayers.Feature.Vector(g, f));
+    if (this.extractWaypoints)
+      for (a = a.getElementsByTagName("wpt"), c = 0, e = a.length; c < e; c++)
+        (f = {}),
+          this.extractAttributes && (f = this.parseAttributes(a[c])),
+          (d = new OpenLayers.Geometry.Point(a[c].getAttribute("lon"), a[c].getAttribute("lat"))),
+          b.push(new OpenLayers.Feature.Vector(d, f));
+    if (this.internalProjection && this.externalProjection)
+      for (f = 0, a = b.length; f < a; f++)
+        b[f].geometry.transform(this.externalProjection, this.internalProjection);
+    return b;
+  },
+  extractSegment: function (a, b) {
+    for (
+      var c = this.getElementsByTagNameNS(a, a.namespaceURI, b), d = [], e = 0, f = c.length;
+      e < f;
+      e++
+    )
+      d.push(new OpenLayers.Geometry.Point(c[e].getAttribute("lon"), c[e].getAttribute("lat")));
+    return new OpenLayers.Geometry.LineString(d);
+  },
+  parseAttributes: function (a) {
+    var b = {};
+    a = a.firstChild;
+    for (var c, d; a; )
+      1 == a.nodeType &&
+        a.firstChild &&
+        ((c = a.firstChild), 3 == c.nodeType || 4 == c.nodeType) &&
+        ((d = a.prefix ? a.nodeName.split(":")[1] : a.nodeName),
+        "trkseg" != d && "rtept" != d && (b[d] = c.nodeValue)),
+        (a = a.nextSibling);
+    return b;
+  },
+  write: function (a, b) {
+    a = OpenLayers.Util.isArray(a) ? a : [a];
+    var c = this.createElementNS(this.namespaces.gpx, "gpx");
+    c.setAttribute("version", "1.1");
+    c.setAttribute("creator", this.creator);
+    this.setAttributes(c, { "xsi:schemaLocation": this.schemaLocation });
+    b && "object" == typeof b && c.appendChild(this.buildMetadataNode(b));
+    for (var d = 0, e = a.length; d < e; d++) c.appendChild(this.buildFeatureNode(a[d]));
+    return OpenLayers.Format.XML.prototype.write.apply(this, [c]);
+  },
+  buildMetadataNode: function (a) {
+    for (
+      var b = ["name", "desc", "author"],
+        c = this.createElementNS(this.namespaces.gpx, "metadata"),
+        d = 0;
+      d < b.length;
+      d++
+    ) {
+      var e = b[d];
+      if (a[e]) {
+        var f = this.createElementNS(this.namespaces.gpx, e);
+        f.appendChild(this.createTextNode(a[e]));
+        c.appendChild(f);
+      }
+    }
+    return c;
+  },
+  buildFeatureNode: function (a) {
+    var b = a.geometry,
+      b = b.clone();
+    this.internalProjection &&
+      this.externalProjection &&
+      b.transform(this.internalProjection, this.externalProjection);
+    if ("OpenLayers.Geometry.Point" == b.CLASS_NAME) {
+      var c = this.buildWptNode(b);
+      this.appendAttributesNode(c, a);
+      return c;
+    }
+    c = this.createElementNS(this.namespaces.gpx, "trk");
+    this.appendAttributesNode(c, a);
+    a = this.buildTrkSegNode(b);
+    a = OpenLayers.Util.isArray(a) ? a : [a];
+    for (var b = 0, d = a.length; b < d; b++) c.appendChild(a[b]);
+    return c;
+  },
+  buildTrkSegNode: function (a) {
+    var b, c, d, e;
+    if (
+      "OpenLayers.Geometry.LineString" == a.CLASS_NAME ||
+      "OpenLayers.Geometry.LinearRing" == a.CLASS_NAME
+    ) {
+      b = this.createElementNS(this.namespaces.gpx, "trkseg");
+      c = 0;
+      for (d = a.components.length; c < d; c++)
+        (e = a.components[c]), b.appendChild(this.buildTrkPtNode(e));
+      return b;
+    }
+    b = [];
+    c = 0;
+    for (d = a.components.length; c < d; c++) b.push(this.buildTrkSegNode(a.components[c]));
+    return b;
+  },
+  buildTrkPtNode: function (a) {
+    var b = this.createElementNS(this.namespaces.gpx, "trkpt");
+    b.setAttribute("lon", a.x);
+    b.setAttribute("lat", a.y);
+    return b;
+  },
+  buildWptNode: function (a) {
+    var b = this.createElementNS(this.namespaces.gpx, "wpt");
+    b.setAttribute("lon", a.x);
+    b.setAttribute("lat", a.y);
+    return b;
+  },
+  appendAttributesNode: function (a, b) {
+    var c = this.createElementNS(this.namespaces.gpx, "name");
+    c.appendChild(this.createTextNode(b.attributes.name || b.id));
+    a.appendChild(c);
+    c = this.createElementNS(this.namespaces.gpx, "desc");
+    c.appendChild(this.createTextNode(b.attributes.description || this.defaultDesc));
+    a.appendChild(c);
+  },
+  CLASS_NAME: "OpenLayers.Format.GPX",
+});
+OpenLayers.Format.WMSDescribeLayer = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.1.1",
+  CLASS_NAME: "OpenLayers.Format.WMSDescribeLayer",
+});
+OpenLayers.Format.WMSDescribeLayer.v1_1_1 = OpenLayers.Class(OpenLayers.Format.WMSDescribeLayer, {
+  initialize: function (a) {
+    OpenLayers.Format.WMSDescribeLayer.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    for (
+      var b = a.documentElement.childNodes, c = { layerDescriptions: [] }, d, e, f = 0;
+      f < b.length;
+      ++f
+    )
+      if (((d = b[f]), (e = d.nodeName), "LayerDescription" == e)) {
+        e = d.getAttribute("name");
+        var g = "",
+          h = "",
+          k = "";
+        d.getAttribute("owsType")
+          ? ((g = d.getAttribute("owsType")), (h = d.getAttribute("owsURL")))
+          : "" != d.getAttribute("wfs")
+          ? ((g = "WFS"), (h = d.getAttribute("wfs")))
+          : "" != d.getAttribute("wcs") && ((g = "WCS"), (h = d.getAttribute("wcs")));
+        d = d.getElementsByTagName("Query");
+        0 < d.length &&
+          ((k = d[0].getAttribute("typeName")) || (k = d[0].getAttribute("typename")));
+        d = { layerName: e, owsType: g, owsURL: h, typeName: k };
+        c.layerDescriptions.push(d);
+        c.length = c.layerDescriptions.length;
+        c[c.length - 1] = d;
+      } else if ("ServiceException" == e)
+        return { error: new OpenLayers.Format.OGCExceptionReport().read(a) };
+    return c;
+  },
+  CLASS_NAME: "OpenLayers.Format.WMSDescribeLayer.v1_1_1",
+});
+OpenLayers.Format.WMSDescribeLayer.v1_1_0 = OpenLayers.Format.WMSDescribeLayer.v1_1_1;
+OpenLayers.Layer.XYZ = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  isBaseLayer: !0,
+  sphericalMercator: !1,
+  zoomOffset: 0,
+  serverResolutions: null,
+  initialize: function (a, b, c) {
+    if ((c && c.sphericalMercator) || this.sphericalMercator)
+      c = OpenLayers.Util.extend({ projection: "EPSG:900913", numZoomLevels: 19 }, c);
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, [a || this.name, b || this.url, {}, c]);
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.XYZ(this.name, this.url, this.getOptions()));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  getURL: function (a) {
+    a = this.getXYZ(a);
+    var b = this.url;
+    OpenLayers.Util.isArray(b) && (b = this.selectUrl("" + a.x + a.y + a.z, b));
+    return OpenLayers.String.format(b, a);
+  },
+  getXYZ: function (a) {
+    var b = this.getServerResolution(),
+      c = Math.round((a.left - this.maxExtent.left) / (b * this.tileSize.w));
+    a = Math.round((this.maxExtent.top - a.top) / (b * this.tileSize.h));
+    b = this.getServerZoom();
+    if (this.wrapDateLine)
+      var d = Math.pow(2, b),
+        c = ((c % d) + d) % d;
+    return { x: c, y: a, z: b };
+  },
+  setMap: function (a) {
+    OpenLayers.Layer.Grid.prototype.setMap.apply(this, arguments);
+    this.tileOrigin ||
+      (this.tileOrigin = new OpenLayers.LonLat(this.maxExtent.left, this.maxExtent.bottom));
+  },
+  CLASS_NAME: "OpenLayers.Layer.XYZ",
+});
+OpenLayers.Layer.OSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
+  name: "OpenStreetMap",
+  url: [
+    "http://a.tile.openstreetmap.org/${z}/${x}/${y}.png",
+    "http://b.tile.openstreetmap.org/${z}/${x}/${y}.png",
+    "http://c.tile.openstreetmap.org/${z}/${x}/${y}.png",
+  ],
+  attribution:
+    "&copy; <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors",
+  sphericalMercator: !0,
+  wrapDateLine: !0,
+  tileOptions: null,
+  initialize: function (a, b, c) {
+    OpenLayers.Layer.XYZ.prototype.initialize.apply(this, arguments);
+    this.tileOptions = OpenLayers.Util.extend(
+      { crossOriginKeyword: "anonymous" },
+      this.options && this.options.tileOptions
+    );
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.OSM(this.name, this.url, this.getOptions()));
+    return (a = OpenLayers.Layer.XYZ.prototype.clone.apply(this, [a]));
+  },
+  CLASS_NAME: "OpenLayers.Layer.OSM",
+});
+OpenLayers.Renderer = OpenLayers.Class({
+  container: null,
+  root: null,
+  extent: null,
+  locked: !1,
+  size: null,
+  resolution: null,
+  map: null,
+  featureDx: 0,
+  initialize: function (a, b) {
+    this.container = OpenLayers.Util.getElement(a);
+    OpenLayers.Util.extend(this, b);
+  },
+  destroy: function () {
+    this.map = this.resolution = this.size = this.extent = this.container = null;
+  },
+  supported: function () {
+    return !1;
+  },
+  setExtent: function (a, b) {
+    this.extent = a.clone();
+    if (this.map.baseLayer && this.map.baseLayer.wrapDateLine) {
+      var c = a.getWidth() / this.map.getExtent().getWidth();
+      a = a.scale(1 / c);
+      this.extent = a.wrapDateLine(this.map.getMaxExtent()).scale(c);
+    }
+    b && (this.resolution = null);
+    return !0;
+  },
+  setSize: function (a) {
+    this.size = a.clone();
+    this.resolution = null;
+  },
+  getResolution: function () {
+    return (this.resolution = this.resolution || this.map.getResolution());
+  },
+  drawFeature: function (a, b) {
+    null == b && (b = a.style);
+    if (a.geometry) {
+      var c = a.geometry.getBounds();
+      if (c) {
+        var d;
+        this.map.baseLayer && this.map.baseLayer.wrapDateLine && (d = this.map.getMaxExtent());
+        c.intersectsBounds(this.extent, { worldBounds: d })
+          ? this.calculateFeatureDx(c, d)
+          : (b = { display: "none" });
+        c = this.drawGeometry(a.geometry, b, a.id);
+        if ("none" != b.display && b.label && !1 !== c) {
+          d = a.geometry.getCentroid();
+          if (b.labelXOffset || b.labelYOffset) {
+            var e = isNaN(b.labelXOffset) ? 0 : b.labelXOffset,
+              f = isNaN(b.labelYOffset) ? 0 : b.labelYOffset,
+              g = this.getResolution();
+            d.move(e * g, f * g);
+          }
+          this.drawText(a.id, b, d);
+        } else this.removeText(a.id);
+        return c;
+      }
+    }
+  },
+  calculateFeatureDx: function (a, b) {
+    this.featureDx = 0;
+    if (b) {
+      var c = b.getWidth();
+      this.featureDx =
+        Math.round(((a.left + a.right) / 2 - (this.extent.left + this.extent.right) / 2) / c) * c;
+    }
+  },
+  drawGeometry: function (a, b, c) {},
+  drawText: function (a, b, c) {},
+  removeText: function (a) {},
+  clear: function () {},
+  getFeatureIdFromEvent: function (a) {},
+  eraseFeatures: function (a) {
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    for (var b = 0, c = a.length; b < c; ++b) {
+      var d = a[b];
+      this.eraseGeometry(d.geometry, d.id);
+      this.removeText(d.id);
+    }
+  },
+  eraseGeometry: function (a, b) {},
+  moveRoot: function (a) {},
+  getRenderLayerId: function () {
+    return this.container.id;
+  },
+  applyDefaultSymbolizer: function (a) {
+    var b = OpenLayers.Util.extend({}, OpenLayers.Renderer.defaultSymbolizer);
+    !1 === a.stroke && (delete b.strokeWidth, delete b.strokeColor);
+    !1 === a.fill && delete b.fillColor;
+    OpenLayers.Util.extend(b, a);
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Renderer",
+});
+OpenLayers.Renderer.defaultSymbolizer = {
+  fillColor: "#000000",
+  strokeColor: "#000000",
+  strokeWidth: 2,
+  fillOpacity: 1,
+  strokeOpacity: 1,
+  pointRadius: 0,
+  labelAlign: "cm",
+};
+OpenLayers.Renderer.symbol = {
+  star: [
+    350,
+    75,
+    379,
+    161,
+    469,
+    161,
+    397,
+    215,
+    423,
+    301,
+    350,
+    250,
+    277,
+    301,
+    303,
+    215,
+    231,
+    161,
+    321,
+    161,
+    350,
+    75,
+  ],
+  cross: [4, 0, 6, 0, 6, 4, 10, 4, 10, 6, 6, 6, 6, 10, 4, 10, 4, 6, 0, 6, 0, 4, 4, 4, 4, 0],
+  x: [
+    0,
+    0,
+    25,
+    0,
+    50,
+    35,
+    75,
+    0,
+    100,
+    0,
+    65,
+    50,
+    100,
+    100,
+    75,
+    100,
+    50,
+    65,
+    25,
+    100,
+    0,
+    100,
+    35,
+    50,
+    0,
+    0,
+  ],
+  square: [0, 0, 0, 1, 1, 1, 1, 0, 0, 0],
+  triangle: [0, 10, 10, 10, 5, 0, 0, 10],
+};
+OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, {
+  hitDetection: !0,
+  hitOverflow: 0,
+  canvas: null,
+  features: null,
+  pendingRedraw: !1,
+  cachedSymbolBounds: {},
+  initialize: function (a, b) {
+    OpenLayers.Renderer.prototype.initialize.apply(this, arguments);
+    this.root = document.createElement("canvas");
+    this.container.appendChild(this.root);
+    this.canvas = this.root.getContext("2d");
+    this.features = {};
+    this.hitDetection &&
+      ((this.hitCanvas = document.createElement("canvas")),
+      (this.hitContext = this.hitCanvas.getContext("2d")));
+  },
+  setExtent: function () {
+    OpenLayers.Renderer.prototype.setExtent.apply(this, arguments);
+    return !1;
+  },
+  eraseGeometry: function (a, b) {
+    this.eraseFeatures(this.features[b][0]);
+  },
+  supported: function () {
+    return OpenLayers.CANVAS_SUPPORTED;
+  },
+  setSize: function (a) {
+    this.size = a.clone();
+    var b = this.root;
+    b.style.width = a.w + "px";
+    b.style.height = a.h + "px";
+    b.width = a.w;
+    b.height = a.h;
+    this.resolution = null;
+    this.hitDetection &&
+      ((b = this.hitCanvas),
+      (b.style.width = a.w + "px"),
+      (b.style.height = a.h + "px"),
+      (b.width = a.w),
+      (b.height = a.h));
+  },
+  drawFeature: function (a, b) {
+    var c;
+    if (a.geometry) {
+      b = this.applyDefaultSymbolizer(b || a.style);
+      c = a.geometry.getBounds();
+      var d;
+      this.map.baseLayer && this.map.baseLayer.wrapDateLine && (d = this.map.getMaxExtent());
+      d = c && c.intersectsBounds(this.extent, { worldBounds: d });
+      (c = "none" !== b.display && !!c && d)
+        ? (this.features[a.id] = [a, b])
+        : delete this.features[a.id];
+      this.pendingRedraw = !0;
+    }
+    this.pendingRedraw && !this.locked && (this.redraw(), (this.pendingRedraw = !1));
+    return c;
+  },
+  drawGeometry: function (a, b, c) {
+    var d = a.CLASS_NAME;
+    if (
+      "OpenLayers.Geometry.Collection" == d ||
+      "OpenLayers.Geometry.MultiPoint" == d ||
+      "OpenLayers.Geometry.MultiLineString" == d ||
+      "OpenLayers.Geometry.MultiPolygon" == d
+    )
+      for (d = 0; d < a.components.length; d++) this.drawGeometry(a.components[d], b, c);
+    else
+      switch (a.CLASS_NAME) {
+        case "OpenLayers.Geometry.Point":
+          this.drawPoint(a, b, c);
+          break;
+        case "OpenLayers.Geometry.LineString":
+          this.drawLineString(a, b, c);
+          break;
+        case "OpenLayers.Geometry.LinearRing":
+          this.drawLinearRing(a, b, c);
+          break;
+        case "OpenLayers.Geometry.Polygon":
+          this.drawPolygon(a, b, c);
+      }
+  },
+  drawExternalGraphic: function (a, b, c) {
+    var d = new Image(),
+      e = b.title || b.graphicTitle;
+    e && (d.title = e);
+    var f = b.graphicWidth || b.graphicHeight,
+      g = b.graphicHeight || b.graphicWidth,
+      f = f ? f : 2 * b.pointRadius,
+      g = g ? g : 2 * b.pointRadius,
+      h = void 0 != b.graphicXOffset ? b.graphicXOffset : -(0.5 * f),
+      k = void 0 != b.graphicYOffset ? b.graphicYOffset : -(0.5 * g),
+      l = b.graphicOpacity || b.fillOpacity;
+    d.onload = OpenLayers.Function.bind(function () {
+      if (this.features[c]) {
+        var b = this.getLocalXY(a),
+          e = b[0],
+          b = b[1];
+        if (!isNaN(e) && !isNaN(b)) {
+          var e = (e + h) | 0,
+            b = (b + k) | 0,
+            p = this.canvas;
+          p.globalAlpha = l;
+          var q =
+            OpenLayers.Renderer.Canvas.drawImageScaleFactor ||
+            (OpenLayers.Renderer.Canvas.drawImageScaleFactor = /android 2.1/.test(
+              navigator.userAgent.toLowerCase()
+            )
+              ? 320 / window.screen.width
+              : 1);
+          p.drawImage(d, e * q, b * q, f * q, g * q);
+          this.hitDetection &&
+            (this.setHitContextStyle("fill", c), this.hitContext.fillRect(e, b, f, g));
+        }
+      }
+    }, this);
+    d.src = b.externalGraphic;
+  },
+  drawNamedSymbol: function (a, b, c) {
+    var d, e, f, g;
+    f = Math.PI / 180;
+    var h = OpenLayers.Renderer.symbol[b.graphicName];
+    if (!h) throw Error(b.graphicName + " is not a valid symbol name");
+    if (
+      !(
+        !h.length ||
+        2 > h.length ||
+        ((a = this.getLocalXY(a)), (e = a[0]), (g = a[1]), isNaN(e) || isNaN(g))
+      )
+    ) {
+      this.canvas.lineCap = "round";
+      this.canvas.lineJoin = "round";
+      this.hitDetection &&
+        ((this.hitContext.lineCap = "round"), (this.hitContext.lineJoin = "round"));
+      if (b.graphicName in this.cachedSymbolBounds) d = this.cachedSymbolBounds[b.graphicName];
+      else {
+        d = new OpenLayers.Bounds();
+        for (a = 0; a < h.length; a += 2) d.extend(new OpenLayers.LonLat(h[a], h[a + 1]));
+        this.cachedSymbolBounds[b.graphicName] = d;
+      }
+      this.canvas.save();
+      this.hitDetection && this.hitContext.save();
+      this.canvas.translate(e, g);
+      this.hitDetection && this.hitContext.translate(e, g);
+      a = f * b.rotation;
+      isNaN(a) || (this.canvas.rotate(a), this.hitDetection && this.hitContext.rotate(a));
+      f = (2 * b.pointRadius) / Math.max(d.getWidth(), d.getHeight());
+      this.canvas.scale(f, f);
+      this.hitDetection && this.hitContext.scale(f, f);
+      a = d.getCenterLonLat().lon;
+      d = d.getCenterLonLat().lat;
+      this.canvas.translate(-a, -d);
+      this.hitDetection && this.hitContext.translate(-a, -d);
+      g = b.strokeWidth;
+      b.strokeWidth = g / f;
+      if (!1 !== b.fill) {
+        this.setCanvasStyle("fill", b);
+        this.canvas.beginPath();
+        for (a = 0; a < h.length; a += 2)
+          (d = h[a]), (e = h[a + 1]), 0 == a && this.canvas.moveTo(d, e), this.canvas.lineTo(d, e);
+        this.canvas.closePath();
+        this.canvas.fill();
+        if (this.hitDetection) {
+          this.setHitContextStyle("fill", c, b);
+          this.hitContext.beginPath();
+          for (a = 0; a < h.length; a += 2)
+            (d = h[a]),
+              (e = h[a + 1]),
+              0 == a && this.canvas.moveTo(d, e),
+              this.hitContext.lineTo(d, e);
+          this.hitContext.closePath();
+          this.hitContext.fill();
+        }
+      }
+      if (!1 !== b.stroke) {
+        this.setCanvasStyle("stroke", b);
+        this.canvas.beginPath();
+        for (a = 0; a < h.length; a += 2)
+          (d = h[a]), (e = h[a + 1]), 0 == a && this.canvas.moveTo(d, e), this.canvas.lineTo(d, e);
+        this.canvas.closePath();
+        this.canvas.stroke();
+        if (this.hitDetection) {
+          this.setHitContextStyle("stroke", c, b, f);
+          this.hitContext.beginPath();
+          for (a = 0; a < h.length; a += 2)
+            (d = h[a]),
+              (e = h[a + 1]),
+              0 == a && this.hitContext.moveTo(d, e),
+              this.hitContext.lineTo(d, e);
+          this.hitContext.closePath();
+          this.hitContext.stroke();
+        }
+      }
+      b.strokeWidth = g;
+      this.canvas.restore();
+      this.hitDetection && this.hitContext.restore();
+      this.setCanvasStyle("reset");
+    }
+  },
+  setCanvasStyle: function (a, b) {
+    "fill" === a
+      ? ((this.canvas.globalAlpha = b.fillOpacity), (this.canvas.fillStyle = b.fillColor))
+      : "stroke" === a
+      ? ((this.canvas.globalAlpha = b.strokeOpacity),
+        (this.canvas.strokeStyle = b.strokeColor),
+        (this.canvas.lineWidth = b.strokeWidth))
+      : ((this.canvas.globalAlpha = 0), (this.canvas.lineWidth = 1));
+  },
+  featureIdToHex: function (a) {
+    a = Number(a.split("_").pop()) + 1;
+    16777216 <= a && ((this.hitOverflow = a - 16777215), (a = (a % 16777216) + 1));
+    a = "000000" + a.toString(16);
+    var b = a.length;
+    return (a = "#" + a.substring(b - 6, b));
+  },
+  setHitContextStyle: function (a, b, c, d) {
+    b = this.featureIdToHex(b);
+    "fill" == a
+      ? ((this.hitContext.globalAlpha = 1), (this.hitContext.fillStyle = b))
+      : "stroke" == a
+      ? ((this.hitContext.globalAlpha = 1),
+        (this.hitContext.strokeStyle = b),
+        "undefined" === typeof d
+          ? (this.hitContext.lineWidth = c.strokeWidth + 2)
+          : isNaN(d) || (this.hitContext.lineWidth = c.strokeWidth + 2 / d))
+      : ((this.hitContext.globalAlpha = 0), (this.hitContext.lineWidth = 1));
+  },
+  drawPoint: function (a, b, c) {
+    if (!1 !== b.graphic)
+      if (b.externalGraphic) this.drawExternalGraphic(a, b, c);
+      else if (b.graphicName && "circle" != b.graphicName) this.drawNamedSymbol(a, b, c);
+      else {
+        var d = this.getLocalXY(a);
+        a = d[0];
+        d = d[1];
+        if (!isNaN(a) && !isNaN(d)) {
+          var e = 2 * Math.PI,
+            f = b.pointRadius;
+          !1 !== b.fill &&
+            (this.setCanvasStyle("fill", b),
+            this.canvas.beginPath(),
+            this.canvas.arc(a, d, f, 0, e, !0),
+            this.canvas.fill(),
+            this.hitDetection &&
+              (this.setHitContextStyle("fill", c, b),
+              this.hitContext.beginPath(),
+              this.hitContext.arc(a, d, f, 0, e, !0),
+              this.hitContext.fill()));
+          !1 !== b.stroke &&
+            (this.setCanvasStyle("stroke", b),
+            this.canvas.beginPath(),
+            this.canvas.arc(a, d, f, 0, e, !0),
+            this.canvas.stroke(),
+            this.hitDetection &&
+              (this.setHitContextStyle("stroke", c, b),
+              this.hitContext.beginPath(),
+              this.hitContext.arc(a, d, f, 0, e, !0),
+              this.hitContext.stroke()),
+            this.setCanvasStyle("reset"));
+        }
+      }
+  },
+  drawLineString: function (a, b, c) {
+    b = OpenLayers.Util.applyDefaults({ fill: !1 }, b);
+    this.drawLinearRing(a, b, c);
+  },
+  drawLinearRing: function (a, b, c) {
+    !1 !== b.fill &&
+      (this.setCanvasStyle("fill", b),
+      this.renderPath(this.canvas, a, b, c, "fill"),
+      this.hitDetection &&
+        (this.setHitContextStyle("fill", c, b), this.renderPath(this.hitContext, a, b, c, "fill")));
+    !1 !== b.stroke &&
+      (this.setCanvasStyle("stroke", b),
+      this.renderPath(this.canvas, a, b, c, "stroke"),
+      this.hitDetection &&
+        (this.setHitContextStyle("stroke", c, b),
+        this.renderPath(this.hitContext, a, b, c, "stroke")));
+    this.setCanvasStyle("reset");
+  },
+  renderPath: function (a, b, c, d, e) {
+    b = b.components;
+    c = b.length;
+    a.beginPath();
+    d = this.getLocalXY(b[0]);
+    var f = d[1];
+    if (!isNaN(d[0]) && !isNaN(f)) {
+      a.moveTo(d[0], d[1]);
+      for (d = 1; d < c; ++d) (f = this.getLocalXY(b[d])), a.lineTo(f[0], f[1]);
+      "fill" === e ? a.fill() : a.stroke();
+    }
+  },
+  drawPolygon: function (a, b, c) {
+    a = a.components;
+    var d = a.length;
+    this.drawLinearRing(a[0], b, c);
+    for (var e = 1; e < d; ++e)
+      (this.canvas.globalCompositeOperation = "destination-out"),
+        this.hitDetection && (this.hitContext.globalCompositeOperation = "destination-out"),
+        this.drawLinearRing(
+          a[e],
+          OpenLayers.Util.applyDefaults({ stroke: !1, fillOpacity: 1 }, b),
+          c
+        ),
+        (this.canvas.globalCompositeOperation = "source-over"),
+        this.hitDetection && (this.hitContext.globalCompositeOperation = "source-over"),
+        this.drawLinearRing(a[e], OpenLayers.Util.applyDefaults({ fill: !1 }, b), c);
+  },
+  drawText: function (a, b) {
+    var c = this.getLocalXY(a);
+    this.setCanvasStyle("reset");
+    this.canvas.fillStyle = b.fontColor;
+    this.canvas.globalAlpha = b.fontOpacity || 1;
+    var d = [
+        b.fontStyle ? b.fontStyle : "normal",
+        "normal",
+        b.fontWeight ? b.fontWeight : "normal",
+        b.fontSize ? b.fontSize : "1em",
+        b.fontFamily ? b.fontFamily : "sans-serif",
+      ].join(" "),
+      e = b.label.split("\n"),
+      f = e.length;
+    if (this.canvas.fillText) {
+      this.canvas.font = d;
+      this.canvas.textAlign = OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[0]] || "center";
+      this.canvas.textBaseline =
+        OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[1]] || "middle";
+      var g = OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];
+      null == g && (g = -0.5);
+      d = this.canvas.measureText("Mg").height || this.canvas.measureText("xx").width;
+      c[1] += d * g * (f - 1);
+      for (g = 0; g < f; g++)
+        b.labelOutlineWidth &&
+          (this.canvas.save(),
+          (this.canvas.globalAlpha = b.labelOutlineOpacity || b.fontOpacity || 1),
+          (this.canvas.strokeStyle = b.labelOutlineColor),
+          (this.canvas.lineWidth = b.labelOutlineWidth),
+          this.canvas.strokeText(e[g], c[0], c[1] + d * g + 1),
+          this.canvas.restore()),
+          this.canvas.fillText(e[g], c[0], c[1] + d * g);
+    } else if (this.canvas.mozDrawText) {
+      this.canvas.mozTextStyle = d;
+      var h = OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[0]];
+      null == h && (h = -0.5);
+      g = OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];
+      null == g && (g = -0.5);
+      d = this.canvas.mozMeasureText("xx");
+      c[1] += d * (1 + g * f);
+      for (g = 0; g < f; g++) {
+        var k = c[0] + h * this.canvas.mozMeasureText(e[g]),
+          l = c[1] + g * d;
+        this.canvas.translate(k, l);
+        this.canvas.mozDrawText(e[g]);
+        this.canvas.translate(-k, -l);
+      }
+    }
+    this.setCanvasStyle("reset");
+  },
+  getLocalXY: function (a) {
+    var b = this.getResolution(),
+      c = this.extent;
+    return [(a.x - this.featureDx) / b + -c.left / b, c.top / b - a.y / b];
+  },
+  clear: function () {
+    var a = this.root.height,
+      b = this.root.width;
+    this.canvas.clearRect(0, 0, b, a);
+    this.features = {};
+    this.hitDetection && this.hitContext.clearRect(0, 0, b, a);
+  },
+  getFeatureIdFromEvent: function (a) {
+    var b;
+    if (
+      this.hitDetection &&
+      "none" !== this.root.style.display &&
+      !this.map.dragging &&
+      ((a = a.xy),
+      (a = this.hitContext.getImageData(a.x | 0, a.y | 0, 1, 1).data),
+      255 === a[3] && (a = a[2] + 256 * (a[1] + 256 * a[0])))
+    ) {
+      a = "OpenLayers_Feature_Vector_" + (a - 1 + this.hitOverflow);
+      try {
+        b = this.features[a][0];
+      } catch (c) {}
+    }
+    return b;
+  },
+  eraseFeatures: function (a) {
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    for (var b = 0; b < a.length; ++b) delete this.features[a[b].id];
+    this.redraw();
+  },
+  redraw: function () {
+    if (!this.locked) {
+      var a = this.root.height,
+        b = this.root.width;
+      this.canvas.clearRect(0, 0, b, a);
+      this.hitDetection && this.hitContext.clearRect(0, 0, b, a);
+      var a = [],
+        c,
+        d,
+        e = this.map.baseLayer && this.map.baseLayer.wrapDateLine && this.map.getMaxExtent(),
+        f;
+      for (f in this.features)
+        this.features.hasOwnProperty(f) &&
+          ((b = this.features[f][0]),
+          (c = b.geometry),
+          this.calculateFeatureDx(c.getBounds(), e),
+          (d = this.features[f][1]),
+          this.drawGeometry(c, d, b.id),
+          d.label && a.push([b, d]));
+      b = 0;
+      for (c = a.length; b < c; ++b) (f = a[b]), this.drawText(f[0].geometry.getCentroid(), f[1]);
+    }
+  },
+  CLASS_NAME: "OpenLayers.Renderer.Canvas",
+});
+OpenLayers.Renderer.Canvas.LABEL_ALIGN = { l: "left", r: "right", t: "top", b: "bottom" };
+OpenLayers.Renderer.Canvas.LABEL_FACTOR = { l: 0, r: -1, t: 0, b: -1 };
+OpenLayers.Renderer.Canvas.drawImageScaleFactor = null;
+OpenLayers.Format.OSM = OpenLayers.Class(OpenLayers.Format.XML, {
+  checkTags: !1,
+  interestingTagsExclude: null,
+  areaTags: null,
+  initialize: function (a) {
+    var b = {
+        interestingTagsExclude: "source source_ref source:ref history attribution created_by".split(
+          " "
+        ),
+        areaTags: "area building leisure tourism ruins historic landuse military natural sport".split(
+          " "
+        ),
+      },
+      b = OpenLayers.Util.extend(b, a),
+      c = {};
+    for (a = 0; a < b.interestingTagsExclude.length; a++) c[b.interestingTagsExclude[a]] = !0;
+    b.interestingTagsExclude = c;
+    c = {};
+    for (a = 0; a < b.areaTags.length; a++) c[b.areaTags[a]] = !0;
+    b.areaTags = c;
+    this.externalProjection = new OpenLayers.Projection("EPSG:4326");
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [b]);
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    var b = this.getNodes(a),
+      c = this.getWays(a);
+    a = Array(c.length);
+    for (var d = 0; d < c.length; d++) {
+      for (
+        var e = Array(c[d].nodes.length), f = this.isWayArea(c[d]) ? 1 : 0, g = 0;
+        g < c[d].nodes.length;
+        g++
+      ) {
+        var h = b[c[d].nodes[g]],
+          k = new OpenLayers.Geometry.Point(h.lon, h.lat);
+        k.osm_id = parseInt(c[d].nodes[g]);
+        e[g] = k;
+        h.used = !0;
+      }
+      h = null;
+      h = f
+        ? new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(e))
+        : new OpenLayers.Geometry.LineString(e);
+      this.internalProjection &&
+        this.externalProjection &&
+        h.transform(this.externalProjection, this.internalProjection);
+      e = new OpenLayers.Feature.Vector(h, c[d].tags);
+      e.osm_id = parseInt(c[d].id);
+      e.fid = "way." + e.osm_id;
+      a[d] = e;
+    }
+    for (var l in b) {
+      h = b[l];
+      if (!h.used || this.checkTags) {
+        c = null;
+        if (this.checkTags) {
+          c = this.getTags(h.node, !0);
+          if (h.used && !c[1]) continue;
+          c = c[0];
+        } else c = this.getTags(h.node);
+        e = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(h.lon, h.lat), c);
+        this.internalProjection &&
+          this.externalProjection &&
+          e.geometry.transform(this.externalProjection, this.internalProjection);
+        e.osm_id = parseInt(l);
+        e.fid = "node." + e.osm_id;
+        a.push(e);
+      }
+      h.node = null;
+    }
+    return a;
+  },
+  getNodes: function (a) {
+    a = a.getElementsByTagName("node");
+    for (var b = {}, c = 0; c < a.length; c++) {
+      var d = a[c],
+        e = d.getAttribute("id");
+      b[e] = { lat: d.getAttribute("lat"), lon: d.getAttribute("lon"), node: d };
+    }
+    return b;
+  },
+  getWays: function (a) {
+    a = a.getElementsByTagName("way");
+    for (var b = [], c = 0; c < a.length; c++) {
+      var d = a[c],
+        e = { id: d.getAttribute("id") };
+      e.tags = this.getTags(d);
+      d = d.getElementsByTagName("nd");
+      e.nodes = Array(d.length);
+      for (var f = 0; f < d.length; f++) e.nodes[f] = d[f].getAttribute("ref");
+      b.push(e);
+    }
+    return b;
+  },
+  getTags: function (a, b) {
+    for (var c = a.getElementsByTagName("tag"), d = {}, e = !1, f = 0; f < c.length; f++) {
+      var g = c[f].getAttribute("k");
+      d[g] = c[f].getAttribute("v");
+      b && (this.interestingTagsExclude[g] || (e = !0));
+    }
+    return b ? [d, e] : d;
+  },
+  isWayArea: function (a) {
+    var b = !1,
+      c = !1;
+    a.nodes[0] == a.nodes[a.nodes.length - 1] && (b = !0);
+    if (this.checkTags)
+      for (var d in a.tags)
+        if (this.areaTags[d]) {
+          c = !0;
+          break;
+        }
+    return b && (this.checkTags ? c : !0);
+  },
+  write: function (a) {
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    this.osm_id = 1;
+    this.created_nodes = {};
+    var b = this.createElementNS(null, "osm");
+    b.setAttribute("version", "0.5");
+    b.setAttribute("generator", "OpenLayers " + OpenLayers.VERSION_NUMBER);
+    for (var c = a.length - 1; 0 <= c; c--)
+      for (var d = this.createFeatureNodes(a[c]), e = 0; e < d.length; e++) b.appendChild(d[e]);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [b]);
+  },
+  createFeatureNodes: function (a) {
+    var b = [],
+      c = a.geometry.CLASS_NAME,
+      c = c.substring(c.lastIndexOf(".") + 1),
+      c = c.toLowerCase();
+    (c = this.createXML[c]) && (b = c.apply(this, [a]));
+    return b;
+  },
+  createXML: {
+    point: function (a) {
+      var b = null,
+        c = a.geometry ? a.geometry : a;
+      this.internalProjection &&
+        this.externalProjection &&
+        ((c = c.clone()), c.transform(this.internalProjection, this.externalProjection));
+      var d = !1;
+      a.osm_id
+        ? ((b = a.osm_id), this.created_nodes[b] && (d = !0))
+        : ((b = -this.osm_id), this.osm_id++);
+      var e = d ? this.created_nodes[b] : this.createElementNS(null, "node");
+      this.created_nodes[b] = e;
+      e.setAttribute("id", b);
+      e.setAttribute("lon", c.x);
+      e.setAttribute("lat", c.y);
+      a.attributes && this.serializeTags(a, e);
+      this.setState(a, e);
+      return d ? [] : [e];
+    },
+    linestring: function (a) {
+      var b,
+        c = [],
+        d = a.geometry;
+      a.osm_id ? (b = a.osm_id) : ((b = -this.osm_id), this.osm_id++);
+      var e = this.createElementNS(null, "way");
+      e.setAttribute("id", b);
+      for (b = 0; b < d.components.length; b++) {
+        var f = this.createXML.point.apply(this, [d.components[b]]);
+        if (f.length) {
+          var f = f[0],
+            g = f.getAttribute("id");
+          c.push(f);
+        } else (g = d.components[b].osm_id), (f = this.created_nodes[g]);
+        this.setState(a, f);
+        f = this.createElementNS(null, "nd");
+        f.setAttribute("ref", g);
+        e.appendChild(f);
+      }
+      this.serializeTags(a, e);
+      c.push(e);
+      return c;
+    },
+    polygon: function (a) {
+      var b = OpenLayers.Util.extend({ area: "yes" }, a.attributes),
+        b = new OpenLayers.Feature.Vector(a.geometry.components[0], b);
+      b.osm_id = a.osm_id;
+      return this.createXML.linestring.apply(this, [b]);
+    },
+  },
+  serializeTags: function (a, b) {
+    for (var c in a.attributes) {
+      var d = this.createElementNS(null, "tag");
+      d.setAttribute("k", c);
+      d.setAttribute("v", a.attributes[c]);
+      b.appendChild(d);
+    }
+  },
+  setState: function (a, b) {
+    if (a.state) {
+      var c = null;
+      switch (a.state) {
+        case OpenLayers.State.UPDATE:
+        case OpenLayers.State.DELETE:
+          c = "delete";
+      }
+      c && b.setAttribute("action", c);
+    }
+  },
+  CLASS_NAME: "OpenLayers.Format.OSM",
+});
+OpenLayers.Handler.Keyboard = OpenLayers.Class(OpenLayers.Handler, {
+  KEY_EVENTS: ["keydown", "keyup"],
+  eventListener: null,
+  observeElement: null,
+  initialize: function (a, b, c) {
+    OpenLayers.Handler.prototype.initialize.apply(this, arguments);
+    this.eventListener = OpenLayers.Function.bindAsEventListener(this.handleKeyEvent, this);
+  },
+  destroy: function () {
+    this.deactivate();
+    this.eventListener = null;
+    OpenLayers.Handler.prototype.destroy.apply(this, arguments);
+  },
+  activate: function () {
+    if (OpenLayers.Handler.prototype.activate.apply(this, arguments)) {
+      this.observeElement = this.observeElement || document;
+      for (var a = 0, b = this.KEY_EVENTS.length; a < b; a++)
+        OpenLayers.Event.observe(this.observeElement, this.KEY_EVENTS[a], this.eventListener);
+      return !0;
+    }
+    return !1;
+  },
+  deactivate: function () {
+    var a = !1;
+    if (OpenLayers.Handler.prototype.deactivate.apply(this, arguments)) {
+      for (var a = 0, b = this.KEY_EVENTS.length; a < b; a++)
+        OpenLayers.Event.stopObserving(this.observeElement, this.KEY_EVENTS[a], this.eventListener);
+      a = !0;
+    }
+    return a;
+  },
+  handleKeyEvent: function (a) {
+    this.checkModifiers(a) && this.callback(a.type, [a]);
+  },
+  CLASS_NAME: "OpenLayers.Handler.Keyboard",
+});
+OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
+  documentDrag: !1,
+  geometryTypes: null,
+  clickout: !0,
+  toggle: !0,
+  standalone: !1,
+  layer: null,
+  feature: null,
+  vertex: null,
+  vertices: null,
+  virtualVertices: null,
+  handlers: null,
+  deleteCodes: null,
+  virtualStyle: null,
+  vertexRenderIntent: null,
+  mode: null,
+  createVertices: !0,
+  modified: !1,
+  radiusHandle: null,
+  dragHandle: null,
+  onModificationStart: function () {},
+  onModification: function () {},
+  onModificationEnd: function () {},
+  initialize: function (a, b) {
+    b = b || {};
+    this.layer = a;
+    this.vertices = [];
+    this.virtualVertices = [];
+    this.virtualStyle = OpenLayers.Util.extend(
+      {},
+      this.layer.style || this.layer.styleMap.createSymbolizer(null, b.vertexRenderIntent)
+    );
+    this.virtualStyle.fillOpacity = 0.3;
+    this.virtualStyle.strokeOpacity = 0.3;
+    this.deleteCodes = [46, 68];
+    this.mode = OpenLayers.Control.ModifyFeature.RESHAPE;
+    OpenLayers.Control.prototype.initialize.apply(this, [b]);
+    OpenLayers.Util.isArray(this.deleteCodes) || (this.deleteCodes = [this.deleteCodes]);
+    var c = { documentDrag: this.documentDrag, stopDown: !1 };
+    this.handlers = {
+      keyboard: new OpenLayers.Handler.Keyboard(this, { keydown: this.handleKeypress }),
+      drag: new OpenLayers.Handler.Drag(
+        this,
+        {
+          down: function (a) {
+            this.vertex = null;
+            (a = this.layer.getFeatureFromEvent(this.handlers.drag.evt))
+              ? this.dragStart(a)
+              : this.clickout && (this._unselect = this.feature);
+          },
+          move: function (a) {
+            delete this._unselect;
+            this.vertex && this.dragVertex(this.vertex, a);
+          },
+          up: function () {
+            this.handlers.drag.stopDown = !1;
+            this._unselect && (this.unselectFeature(this._unselect), delete this._unselect);
+          },
+          done: function (a) {
+            this.vertex && this.dragComplete(this.vertex);
+          },
+        },
+        c
+      ),
+    };
+  },
+  destroy: function () {
+    this.map &&
+      this.map.events.un({
+        removelayer: this.handleMapEvents,
+        changelayer: this.handleMapEvents,
+        scope: this,
+      });
+    this.layer = null;
+    OpenLayers.Control.prototype.destroy.apply(this, []);
+  },
+  activate: function () {
+    this.moveLayerToTop();
+    this.map.events.on({
+      removelayer: this.handleMapEvents,
+      changelayer: this.handleMapEvents,
+      scope: this,
+    });
+    return (
+      this.handlers.keyboard.activate() &&
+      this.handlers.drag.activate() &&
+      OpenLayers.Control.prototype.activate.apply(this, arguments)
+    );
+  },
+  deactivate: function () {
+    var a = !1;
+    OpenLayers.Control.prototype.deactivate.apply(this, arguments) &&
+      (this.moveLayerBack(),
+      this.map.events.un({
+        removelayer: this.handleMapEvents,
+        changelayer: this.handleMapEvents,
+        scope: this,
+      }),
+      this.layer.removeFeatures(this.vertices, { silent: !0 }),
+      this.layer.removeFeatures(this.virtualVertices, { silent: !0 }),
+      (this.vertices = []),
+      this.handlers.drag.deactivate(),
+      this.handlers.keyboard.deactivate(),
+      (a = this.feature) && a.geometry && a.layer && this.unselectFeature(a),
+      (a = !0));
+    return a;
+  },
+  beforeSelectFeature: function (a) {
+    return this.layer.events.triggerEvent("beforefeaturemodified", { feature: a });
+  },
+  selectFeature: function (a) {
+    if (
+      !(
+        this.feature === a ||
+        (this.geometryTypes &&
+          -1 == OpenLayers.Util.indexOf(this.geometryTypes, a.geometry.CLASS_NAME))
+      )
+    ) {
+      !1 !== this.beforeSelectFeature(a) &&
+        (this.feature && this.unselectFeature(this.feature),
+        (this.feature = a),
+        this.layer.selectedFeatures.push(a),
+        this.layer.drawFeature(a, "select"),
+        (this.modified = !1),
+        this.resetVertices(),
+        this.onModificationStart(this.feature));
+      var b = a.modified;
+      !a.geometry || (b && b.geometry) || (this._originalGeometry = a.geometry.clone());
+    }
+  },
+  unselectFeature: function (a) {
+    this.layer.removeFeatures(this.vertices, { silent: !0 });
+    this.vertices = [];
+    this.layer.destroyFeatures(this.virtualVertices, { silent: !0 });
+    this.virtualVertices = [];
+    this.dragHandle &&
+      (this.layer.destroyFeatures([this.dragHandle], { silent: !0 }), delete this.dragHandle);
+    this.radiusHandle &&
+      (this.layer.destroyFeatures([this.radiusHandle], { silent: !0 }), delete this.radiusHandle);
+    this.layer.drawFeature(this.feature, "default");
+    this.feature = null;
+    OpenLayers.Util.removeItem(this.layer.selectedFeatures, a);
+    this.onModificationEnd(a);
+    this.layer.events.triggerEvent("afterfeaturemodified", { feature: a, modified: this.modified });
+    this.modified = !1;
+  },
+  dragStart: function (a) {
+    var b = "OpenLayers.Geometry.Point" == a.geometry.CLASS_NAME;
+    this.standalone ||
+      ((a._sketch || !b) && a._sketch) ||
+      (this.toggle && this.feature === a && (this._unselect = a), this.selectFeature(a));
+    if (a._sketch || b) (this.vertex = a), (this.handlers.drag.stopDown = !0);
+  },
+  dragVertex: function (a, b) {
+    var c = this.map.getLonLatFromViewPortPx(b),
+      d = a.geometry;
+    d.move(c.lon - d.x, c.lat - d.y);
+    this.modified = !0;
+    "OpenLayers.Geometry.Point" == this.feature.geometry.CLASS_NAME
+      ? this.layer.events.triggerEvent("vertexmodified", {
+          vertex: a.geometry,
+          feature: this.feature,
+          pixel: b,
+        })
+      : (a._index
+          ? (a.geometry.parent.addComponent(a.geometry, a._index),
+            delete a._index,
+            OpenLayers.Util.removeItem(this.virtualVertices, a),
+            this.vertices.push(a))
+          : a == this.dragHandle
+          ? (this.layer.removeFeatures(this.vertices, { silent: !0 }),
+            (this.vertices = []),
+            this.radiusHandle &&
+              (this.layer.destroyFeatures([this.radiusHandle], { silent: !0 }),
+              (this.radiusHandle = null)))
+          : a !== this.radiusHandle &&
+            this.layer.events.triggerEvent("vertexmodified", {
+              vertex: a.geometry,
+              feature: this.feature,
+              pixel: b,
+            }),
+        0 < this.virtualVertices.length &&
+          (this.layer.destroyFeatures(this.virtualVertices, { silent: !0 }),
+          (this.virtualVertices = [])),
+        this.layer.drawFeature(this.feature, this.standalone ? void 0 : "select"));
+    this.layer.drawFeature(a);
+  },
+  dragComplete: function (a) {
+    this.resetVertices();
+    this.setFeatureState();
+    this.onModification(this.feature);
+    this.layer.events.triggerEvent("featuremodified", { feature: this.feature });
+  },
+  setFeatureState: function () {
+    if (
+      this.feature.state != OpenLayers.State.INSERT &&
+      this.feature.state != OpenLayers.State.DELETE &&
+      ((this.feature.state = OpenLayers.State.UPDATE), this.modified && this._originalGeometry)
+    ) {
+      var a = this.feature;
+      a.modified = OpenLayers.Util.extend(a.modified, { geometry: this._originalGeometry });
+      delete this._originalGeometry;
+    }
+  },
+  resetVertices: function () {
+    0 < this.vertices.length &&
+      (this.layer.removeFeatures(this.vertices, { silent: !0 }), (this.vertices = []));
+    0 < this.virtualVertices.length &&
+      (this.layer.removeFeatures(this.virtualVertices, { silent: !0 }),
+      (this.virtualVertices = []));
+    this.dragHandle &&
+      (this.layer.destroyFeatures([this.dragHandle], { silent: !0 }), (this.dragHandle = null));
+    this.radiusHandle &&
+      (this.layer.destroyFeatures([this.radiusHandle], { silent: !0 }), (this.radiusHandle = null));
+    this.feature &&
+      "OpenLayers.Geometry.Point" != this.feature.geometry.CLASS_NAME &&
+      (this.mode & OpenLayers.Control.ModifyFeature.DRAG && this.collectDragHandle(),
+      this.mode &
+        (OpenLayers.Control.ModifyFeature.ROTATE | OpenLayers.Control.ModifyFeature.RESIZE) &&
+        this.collectRadiusHandle(),
+      this.mode & OpenLayers.Control.ModifyFeature.RESHAPE &&
+        (this.mode & OpenLayers.Control.ModifyFeature.RESIZE || this.collectVertices()));
+  },
+  handleKeypress: function (a) {
+    var b = a.keyCode;
+    this.feature &&
+      -1 != OpenLayers.Util.indexOf(this.deleteCodes, b) &&
+      (b = this.layer.getFeatureFromEvent(this.handlers.drag.evt)) &&
+      -1 != OpenLayers.Util.indexOf(this.vertices, b) &&
+      !this.handlers.drag.dragging &&
+      b.geometry.parent &&
+      (b.geometry.parent.removeComponent(b.geometry),
+      this.layer.events.triggerEvent("vertexremoved", {
+        vertex: b.geometry,
+        feature: this.feature,
+        pixel: a.xy,
+      }),
+      this.layer.drawFeature(this.feature, this.standalone ? void 0 : "select"),
+      (this.modified = !0),
+      this.resetVertices(),
+      this.setFeatureState(),
+      this.onModification(this.feature),
+      this.layer.events.triggerEvent("featuremodified", { feature: this.feature }));
+  },
+  collectVertices: function () {
+    function a(c) {
+      var d, e, f;
+      if ("OpenLayers.Geometry.Point" == c.CLASS_NAME)
+        (e = new OpenLayers.Feature.Vector(c)),
+          (e._sketch = !0),
+          (e.renderIntent = b.vertexRenderIntent),
+          b.vertices.push(e);
+      else {
+        f = c.components.length;
+        "OpenLayers.Geometry.LinearRing" == c.CLASS_NAME && (f -= 1);
+        for (d = 0; d < f; ++d)
+          (e = c.components[d]),
+            "OpenLayers.Geometry.Point" == e.CLASS_NAME
+              ? ((e = new OpenLayers.Feature.Vector(e)),
+                (e._sketch = !0),
+                (e.renderIntent = b.vertexRenderIntent),
+                b.vertices.push(e))
+              : a(e);
+        if (b.createVertices && "OpenLayers.Geometry.MultiPoint" != c.CLASS_NAME)
+          for (d = 0, f = c.components.length; d < f - 1; ++d) {
+            e = c.components[d];
+            var g = c.components[d + 1];
+            "OpenLayers.Geometry.Point" == e.CLASS_NAME &&
+              "OpenLayers.Geometry.Point" == g.CLASS_NAME &&
+              ((e = new OpenLayers.Feature.Vector(
+                new OpenLayers.Geometry.Point((e.x + g.x) / 2, (e.y + g.y) / 2),
+                null,
+                b.virtualStyle
+              )),
+              (e.geometry.parent = c),
+              (e._index = d + 1),
+              (e._sketch = !0),
+              b.virtualVertices.push(e));
+          }
+      }
+    }
+    this.vertices = [];
+    this.virtualVertices = [];
+    var b = this;
+    a.call(this, this.feature.geometry);
+    this.layer.addFeatures(this.virtualVertices, { silent: !0 });
+    this.layer.addFeatures(this.vertices, { silent: !0 });
+  },
+  collectDragHandle: function () {
+    var a = this.feature.geometry,
+      b = a.getBounds().getCenterLonLat(),
+      b = new OpenLayers.Geometry.Point(b.lon, b.lat),
+      c = new OpenLayers.Feature.Vector(b);
+    b.move = function (b, c) {
+      OpenLayers.Geometry.Point.prototype.move.call(this, b, c);
+      a.move(b, c);
+    };
+    c._sketch = !0;
+    this.dragHandle = c;
+    this.dragHandle.renderIntent = this.vertexRenderIntent;
+    this.layer.addFeatures([this.dragHandle], { silent: !0 });
+  },
+  collectRadiusHandle: function () {
+    var a = this.feature.geometry,
+      b = a.getBounds(),
+      c = b.getCenterLonLat(),
+      d = new OpenLayers.Geometry.Point(c.lon, c.lat),
+      b = new OpenLayers.Geometry.Point(b.right, b.bottom),
+      c = new OpenLayers.Feature.Vector(b),
+      e = this.mode & OpenLayers.Control.ModifyFeature.RESIZE,
+      f = this.mode & OpenLayers.Control.ModifyFeature.RESHAPE,
+      g = this.mode & OpenLayers.Control.ModifyFeature.ROTATE;
+    b.move = function (b, c) {
+      OpenLayers.Geometry.Point.prototype.move.call(this, b, c);
+      var l = this.x - d.x,
+        m = this.y - d.y,
+        n = l - b,
+        p = m - c;
+      if (g) {
+        var q = Math.atan2(p, n),
+          q = Math.atan2(m, l) - q,
+          q = q * (180 / Math.PI);
+        a.rotate(q, d);
+      }
+      if (e) {
+        var r;
+        f
+          ? ((m /= p), (r = l / n / m))
+          : ((n = Math.sqrt(n * n + p * p)), (m = Math.sqrt(l * l + m * m) / n));
+        a.resize(m, d, r);
+      }
+    };
+    c._sketch = !0;
+    this.radiusHandle = c;
+    this.radiusHandle.renderIntent = this.vertexRenderIntent;
+    this.layer.addFeatures([this.radiusHandle], { silent: !0 });
+  },
+  setMap: function (a) {
+    this.handlers.drag.setMap(a);
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+  },
+  handleMapEvents: function (a) {
+    ("removelayer" != a.type && "order" != a.property) || this.moveLayerToTop();
+  },
+  moveLayerToTop: function () {
+    var a = Math.max(this.map.Z_INDEX_BASE.Feature - 1, this.layer.getZIndex()) + 1;
+    this.layer.setZIndex(a);
+  },
+  moveLayerBack: function () {
+    var a = this.layer.getZIndex() - 1;
+    a >= this.map.Z_INDEX_BASE.Feature
+      ? this.layer.setZIndex(a)
+      : this.map.setLayerZIndex(this.layer, this.map.getLayerIndex(this.layer));
+  },
+  CLASS_NAME: "OpenLayers.Control.ModifyFeature",
+});
+OpenLayers.Control.ModifyFeature.RESHAPE = 1;
+OpenLayers.Control.ModifyFeature.RESIZE = 2;
+OpenLayers.Control.ModifyFeature.ROTATE = 4;
+OpenLayers.Control.ModifyFeature.DRAG = 8;
+OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, {
+  key: null,
+  serverResolutions: [
+    156543.03390625,
+    78271.516953125,
+    39135.7584765625,
+    19567.87923828125,
+    9783.939619140625,
+    4891.9698095703125,
+    2445.9849047851562,
+    1222.9924523925781,
+    611.4962261962891,
+    305.74811309814453,
+    152.87405654907226,
+    76.43702827453613,
+    38.218514137268066,
+    19.109257068634033,
+    9.554628534317017,
+    4.777314267158508,
+    2.388657133579254,
+    1.194328566789627,
+    0.5971642833948135,
+    0.29858214169740677,
+    0.14929107084870338,
+    0.07464553542435169,
+  ],
+  attributionTemplate:
+    '<span class="olBingAttribution ${type}"><div><a target="_blank" href="http://www.bing.com/maps/"><img src="${logo}" /></a></div>${copyrights}<a style="white-space: nowrap" target="_blank" href="http://www.microsoft.com/maps/product/terms.html">Terms of Use</a></span>',
+  metadata: null,
+  protocolRegex: /^http:/i,
+  type: "Road",
+  culture: "en-US",
+  metadataParams: null,
+  tileOptions: null,
+  protocol: ~window.location.href.indexOf("http") ? "" : "http:",
+  initialize: function (a) {
+    a = OpenLayers.Util.applyDefaults({ sphericalMercator: !0 }, a);
+    OpenLayers.Layer.XYZ.prototype.initialize.apply(this, [
+      a.name || "Bing " + (a.type || this.type),
+      null,
+      a,
+    ]);
+    this.tileOptions = OpenLayers.Util.extend(
+      { crossOriginKeyword: "anonymous" },
+      this.options.tileOptions
+    );
+    this.loadMetadata();
+  },
+  loadMetadata: function () {
+    this._callbackId = "_callback_" + this.id.replace(/\./g, "_");
+    window[this._callbackId] = OpenLayers.Function.bind(
+      OpenLayers.Layer.Bing.processMetadata,
+      this
+    );
+    var a = OpenLayers.Util.applyDefaults(
+        { key: this.key, jsonp: this._callbackId, include: "ImageryProviders" },
+        this.metadataParams
+      ),
+      a =
+        this.protocol +
+        "//dev.virtualearth.net/REST/v1/Imagery/Metadata/" +
+        this.type +
+        "?" +
+        OpenLayers.Util.getParameterString(a),
+      b = document.createElement("script");
+    b.type = "text/javascript";
+    b.src = a;
+    b.id = this._callbackId;
+    document.getElementsByTagName("head")[0].appendChild(b);
+  },
+  initLayer: function () {
+    var a = this.metadata.resourceSets[0].resources[0],
+      b = a.imageUrl.replace("{quadkey}", "${quadkey}"),
+      b = b.replace("{culture}", this.culture),
+      b = b.replace(this.protocolRegex, this.protocol);
+    this.url = [];
+    for (var c = 0; c < a.imageUrlSubdomains.length; ++c)
+      this.url.push(b.replace("{subdomain}", a.imageUrlSubdomains[c]));
+    this.addOptions(
+      {
+        maxResolution: Math.min(
+          this.serverResolutions[a.zoomMin],
+          this.maxResolution || Number.POSITIVE_INFINITY
+        ),
+        numZoomLevels: Math.min(a.zoomMax + 1 - a.zoomMin, this.numZoomLevels),
+      },
+      !0
+    );
+    this.isBaseLayer || this.redraw();
+    this.updateAttribution();
+  },
+  getURL: function (a) {
+    if (this.url) {
+      var b = this.getXYZ(a);
+      a = b.x;
+      for (var c = b.y, b = b.z, d = [], e = b; 0 < e; --e) {
+        var f = "0",
+          g = 1 << (e - 1);
+        0 != (a & g) && f++;
+        0 != (c & g) && (f++, f++);
+        d.push(f);
+      }
+      d = d.join("");
+      a = this.selectUrl("" + a + c + b, this.url);
+      return OpenLayers.String.format(a, { quadkey: d });
+    }
+  },
+  updateAttribution: function () {
+    var a = this.metadata;
+    if (a.resourceSets && this.map && this.map.center) {
+      var b = a.resourceSets[0].resources[0],
+        c = this.map
+          .getExtent()
+          .transform(this.map.getProjectionObject(), new OpenLayers.Projection("EPSG:4326")),
+        d = b.imageryProviders || [],
+        e = OpenLayers.Util.indexOf(this.serverResolutions, this.getServerResolution()),
+        b = "",
+        f,
+        g,
+        h,
+        k,
+        l,
+        m,
+        n;
+      g = 0;
+      for (h = d.length; g < h; ++g)
+        for (f = d[g], k = 0, l = f.coverageAreas.length; k < l; ++k)
+          (n = f.coverageAreas[k]),
+            (m = OpenLayers.Bounds.fromArray(n.bbox, !0)),
+            c.intersectsBounds(m) && e <= n.zoomMax && e >= n.zoomMin && (b += f.attribution + " ");
+      a = a.brandLogoUri.replace(this.protocolRegex, this.protocol);
+      this.attribution = OpenLayers.String.format(this.attributionTemplate, {
+        type: this.type.toLowerCase(),
+        logo: a,
+        copyrights: b,
+      });
+      this.map &&
+        this.map.events.triggerEvent("changelayer", { layer: this, property: "attribution" });
+    }
+  },
+  setMap: function () {
+    OpenLayers.Layer.XYZ.prototype.setMap.apply(this, arguments);
+    this.map.events.register("moveend", this, this.updateAttribution);
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.Bing(this.options));
+    return (a = OpenLayers.Layer.XYZ.prototype.clone.apply(this, [a]));
+  },
+  destroy: function () {
+    this.map && this.map.events.unregister("moveend", this, this.updateAttribution);
+    OpenLayers.Layer.XYZ.prototype.destroy.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Layer.Bing",
+});
+OpenLayers.Layer.Bing.processMetadata = function (a) {
+  this.metadata = a;
+  this.initLayer();
+  a = document.getElementById(this._callbackId);
+  a.parentNode.removeChild(a);
+  window[this._callbackId] = void 0;
+  delete this._callbackId;
+};
+OpenLayers.StyleMap = OpenLayers.Class({
+  styles: null,
+  extendDefault: !0,
+  initialize: function (a, b) {
+    this.styles = {
+      default: new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),
+      select: new OpenLayers.Style(OpenLayers.Feature.Vector.style.select),
+      temporary: new OpenLayers.Style(OpenLayers.Feature.Vector.style.temporary),
+      delete: new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"]),
+    };
+    if (a instanceof OpenLayers.Style)
+      (this.styles["default"] = a),
+        (this.styles.select = a),
+        (this.styles.temporary = a),
+        (this.styles["delete"] = a);
+    else if ("object" == typeof a)
+      for (var c in a)
+        if (a[c] instanceof OpenLayers.Style) this.styles[c] = a[c];
+        else if ("object" == typeof a[c]) this.styles[c] = new OpenLayers.Style(a[c]);
+        else {
+          this.styles["default"] = new OpenLayers.Style(a);
+          this.styles.select = new OpenLayers.Style(a);
+          this.styles.temporary = new OpenLayers.Style(a);
+          this.styles["delete"] = new OpenLayers.Style(a);
+          break;
+        }
+    OpenLayers.Util.extend(this, b);
+  },
+  destroy: function () {
+    for (var a in this.styles) this.styles[a].destroy();
+    this.styles = null;
+  },
+  createSymbolizer: function (a, b) {
+    a || (a = new OpenLayers.Feature.Vector());
+    this.styles[b] || (b = "default");
+    a.renderIntent = b;
+    var c = {};
+    this.extendDefault && "default" != b && (c = this.styles["default"].createSymbolizer(a));
+    return OpenLayers.Util.extend(c, this.styles[b].createSymbolizer(a));
+  },
+  addUniqueValueRules: function (a, b, c, d) {
+    var e = [],
+      f;
+    for (f in c)
+      e.push(
+        new OpenLayers.Rule({
+          symbolizer: c[f],
+          context: d,
+          filter: new OpenLayers.Filter.Comparison({
+            type: OpenLayers.Filter.Comparison.EQUAL_TO,
+            property: b,
+            value: f,
+          }),
+        })
+      );
+    this.styles[a].addRules(e);
+  },
+  CLASS_NAME: "OpenLayers.StyleMap",
+});
+OpenLayers.Layer.Vector = OpenLayers.Class(OpenLayers.Layer, {
+  isBaseLayer: !1,
+  isFixed: !1,
+  features: null,
+  filter: null,
+  selectedFeatures: null,
+  unrenderedFeatures: null,
+  reportError: !0,
+  style: null,
+  styleMap: null,
+  strategies: null,
+  protocol: null,
+  renderers: ["SVG", "VML", "Canvas"],
+  renderer: null,
+  rendererOptions: null,
+  geometryType: null,
+  drawn: !1,
+  ratio: 1,
+  initialize: function (a, b) {
+    OpenLayers.Layer.prototype.initialize.apply(this, arguments);
+    (this.renderer && this.renderer.supported()) || this.assignRenderer();
+    (this.renderer && this.renderer.supported()) || ((this.renderer = null), this.displayError());
+    this.styleMap || (this.styleMap = new OpenLayers.StyleMap());
+    this.features = [];
+    this.selectedFeatures = [];
+    this.unrenderedFeatures = {};
+    if (this.strategies)
+      for (var c = 0, d = this.strategies.length; c < d; c++) this.strategies[c].setLayer(this);
+  },
+  destroy: function () {
+    if (this.strategies) {
+      var a, b, c;
+      b = 0;
+      for (c = this.strategies.length; b < c; b++)
+        (a = this.strategies[b]), a.autoDestroy && a.destroy();
+      this.strategies = null;
+    }
+    this.protocol && (this.protocol.autoDestroy && this.protocol.destroy(), (this.protocol = null));
+    this.destroyFeatures();
+    this.unrenderedFeatures = this.selectedFeatures = this.features = null;
+    this.renderer && this.renderer.destroy();
+    this.drawn = this.geometryType = this.renderer = null;
+    OpenLayers.Layer.prototype.destroy.apply(this, arguments);
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.Vector(this.name, this.getOptions()));
+    a = OpenLayers.Layer.prototype.clone.apply(this, [a]);
+    for (var b = this.features, c = b.length, d = Array(c), e = 0; e < c; ++e) d[e] = b[e].clone();
+    a.features = d;
+    return a;
+  },
+  refresh: function (a) {
+    this.calculateInRange() && this.visibility && this.events.triggerEvent("refresh", a);
+  },
+  assignRenderer: function () {
+    for (var a = 0, b = this.renderers.length; a < b; a++) {
+      var c = this.renderers[a];
+      if ((c = "function" == typeof c ? c : OpenLayers.Renderer[c]) && c.prototype.supported()) {
+        this.renderer = new c(this.div, this.rendererOptions);
+        break;
+      }
+    }
+  },
+  displayError: function () {
+    this.reportError &&
+      OpenLayers.Console.userError(
+        OpenLayers.i18n("browserNotSupported", { renderers: this.renderers.join("\n") })
+      );
+  },
+  setMap: function (a) {
+    OpenLayers.Layer.prototype.setMap.apply(this, arguments);
+    if (this.renderer) {
+      this.renderer.map = this.map;
+      var b = this.map.getSize();
+      b.w *= this.ratio;
+      b.h *= this.ratio;
+      this.renderer.setSize(b);
+    } else this.map.removeLayer(this);
+  },
+  afterAdd: function () {
+    if (this.strategies) {
+      var a, b, c;
+      b = 0;
+      for (c = this.strategies.length; b < c; b++)
+        (a = this.strategies[b]), a.autoActivate && a.activate();
+    }
+  },
+  removeMap: function (a) {
+    this.drawn = !1;
+    if (this.strategies) {
+      var b, c;
+      b = 0;
+      for (c = this.strategies.length; b < c; b++)
+        (a = this.strategies[b]), a.autoActivate && a.deactivate();
+    }
+  },
+  onMapResize: function () {
+    OpenLayers.Layer.prototype.onMapResize.apply(this, arguments);
+    var a = this.map.getSize();
+    a.w *= this.ratio;
+    a.h *= this.ratio;
+    this.renderer.setSize(a);
+  },
+  moveTo: function (a, b, c) {
+    OpenLayers.Layer.prototype.moveTo.apply(this, arguments);
+    var d = !0;
+    if (!c) {
+      this.renderer.root.style.visibility = "hidden";
+      var d = this.map.getSize(),
+        e = d.w,
+        d = d.h,
+        e = (e / 2) * this.ratio - e / 2,
+        d = (d / 2) * this.ratio - d / 2,
+        e = e + this.map.layerContainerOriginPx.x,
+        e = -Math.round(e),
+        d = d + this.map.layerContainerOriginPx.y,
+        d = -Math.round(d);
+      this.div.style.left = e + "px";
+      this.div.style.top = d + "px";
+      e = this.map.getExtent().scale(this.ratio);
+      d = this.renderer.setExtent(e, b);
+      this.renderer.root.style.visibility = "visible";
+      !0 === OpenLayers.IS_GECKO && (this.div.scrollLeft = this.div.scrollLeft);
+      if (!b && d)
+        for (var f in this.unrenderedFeatures)
+          (e = this.unrenderedFeatures[f]), this.drawFeature(e);
+    }
+    if (!this.drawn || b || !d)
+      for (this.drawn = !0, f = 0, d = this.features.length; f < d; f++)
+        (this.renderer.locked = f !== d - 1), (e = this.features[f]), this.drawFeature(e);
+  },
+  display: function (a) {
+    OpenLayers.Layer.prototype.display.apply(this, arguments);
+    var b = this.div.style.display;
+    b != this.renderer.root.style.display && (this.renderer.root.style.display = b);
+  },
+  addFeatures: function (a, b) {
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    var c = !b || !b.silent;
+    if (c) {
+      var d = { features: a };
+      if (!1 === this.events.triggerEvent("beforefeaturesadded", d)) return;
+      a = d.features;
+    }
+    for (var d = [], e = 0, f = a.length; e < f; e++) {
+      this.renderer.locked = e != a.length - 1 ? !0 : !1;
+      var g = a[e];
+      if (this.geometryType && !(g.geometry instanceof this.geometryType))
+        throw new TypeError(
+          "addFeatures: component should be an " + this.geometryType.prototype.CLASS_NAME
+        );
+      g.layer = this;
+      !g.style && this.style && (g.style = OpenLayers.Util.extend({}, this.style));
+      if (c) {
+        if (!1 === this.events.triggerEvent("beforefeatureadded", { feature: g })) continue;
+        this.preFeatureInsert(g);
+      }
+      d.push(g);
+      this.features.push(g);
+      this.drawFeature(g);
+      c && (this.events.triggerEvent("featureadded", { feature: g }), this.onFeatureInsert(g));
+    }
+    c && this.events.triggerEvent("featuresadded", { features: d });
+  },
+  removeFeatures: function (a, b) {
+    if (a && 0 !== a.length) {
+      if (a === this.features) return this.removeAllFeatures(b);
+      OpenLayers.Util.isArray(a) || (a = [a]);
+      a === this.selectedFeatures && (a = a.slice());
+      var c = !b || !b.silent;
+      c && this.events.triggerEvent("beforefeaturesremoved", { features: a });
+      for (var d = a.length - 1; 0 <= d; d--) {
+        this.renderer.locked = 0 != d && a[d - 1].geometry ? !0 : !1;
+        var e = a[d];
+        delete this.unrenderedFeatures[e.id];
+        c && this.events.triggerEvent("beforefeatureremoved", { feature: e });
+        this.features = OpenLayers.Util.removeItem(this.features, e);
+        e.layer = null;
+        e.geometry && this.renderer.eraseFeatures(e);
+        -1 != OpenLayers.Util.indexOf(this.selectedFeatures, e) &&
+          OpenLayers.Util.removeItem(this.selectedFeatures, e);
+        c && this.events.triggerEvent("featureremoved", { feature: e });
+      }
+      c && this.events.triggerEvent("featuresremoved", { features: a });
+    }
+  },
+  removeAllFeatures: function (a) {
+    a = !a || !a.silent;
+    var b = this.features;
+    a && this.events.triggerEvent("beforefeaturesremoved", { features: b });
+    for (var c, d = b.length - 1; 0 <= d; d--)
+      (c = b[d]),
+        a && this.events.triggerEvent("beforefeatureremoved", { feature: c }),
+        (c.layer = null),
+        a && this.events.triggerEvent("featureremoved", { feature: c });
+    this.renderer.clear();
+    this.features = [];
+    this.unrenderedFeatures = {};
+    this.selectedFeatures = [];
+    a && this.events.triggerEvent("featuresremoved", { features: b });
+  },
+  destroyFeatures: function (a, b) {
+    void 0 == a && (a = this.features);
+    if (a) {
+      this.removeFeatures(a, b);
+      for (var c = a.length - 1; 0 <= c; c--) a[c].destroy();
+    }
+  },
+  drawFeature: function (a, b) {
+    if (this.drawn) {
+      if ("object" != typeof b) {
+        b || a.state !== OpenLayers.State.DELETE || (b = "delete");
+        var c = b || a.renderIntent;
+        (b = a.style || this.style) || (b = this.styleMap.createSymbolizer(a, c));
+      }
+      c = this.renderer.drawFeature(a, b);
+      !1 === c || null === c
+        ? (this.unrenderedFeatures[a.id] = a)
+        : delete this.unrenderedFeatures[a.id];
+    }
+  },
+  eraseFeatures: function (a) {
+    this.renderer.eraseFeatures(a);
+  },
+  getFeatureFromEvent: function (a) {
+    if (!this.renderer)
+      throw Error(
+        "getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it."
+      );
+    var b = null;
+    (a = this.renderer.getFeatureIdFromEvent(a)) &&
+      (b = "string" === typeof a ? this.getFeatureById(a) : a);
+    return b;
+  },
+  getFeatureBy: function (a, b) {
+    for (var c = null, d = 0, e = this.features.length; d < e; ++d)
+      if (this.features[d][a] == b) {
+        c = this.features[d];
+        break;
+      }
+    return c;
+  },
+  getFeatureById: function (a) {
+    return this.getFeatureBy("id", a);
+  },
+  getFeatureByFid: function (a) {
+    return this.getFeatureBy("fid", a);
+  },
+  getFeaturesByAttribute: function (a, b) {
+    var c,
+      d,
+      e = this.features.length,
+      f = [];
+    for (c = 0; c < e; c++)
+      (d = this.features[c]) && d.attributes && d.attributes[a] === b && f.push(d);
+    return f;
+  },
+  onFeatureInsert: function (a) {},
+  preFeatureInsert: function (a) {},
+  getDataExtent: function () {
+    var a = null,
+      b = this.features;
+    if (b && 0 < b.length)
+      for (var c = null, d = 0, e = b.length; d < e; d++)
+        if ((c = b[d].geometry))
+          null === a && (a = new OpenLayers.Bounds()), a.extend(c.getBounds());
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Layer.Vector",
+});
+OpenLayers.Layer.PointGrid = OpenLayers.Class(OpenLayers.Layer.Vector, {
+  dx: null,
+  dy: null,
+  ratio: 1.5,
+  maxFeatures: 250,
+  rotation: 0,
+  origin: null,
+  gridBounds: null,
+  initialize: function (a) {
+    a = a || {};
+    OpenLayers.Layer.Vector.prototype.initialize.apply(this, [a.name, a]);
+  },
+  setMap: function (a) {
+    OpenLayers.Layer.Vector.prototype.setMap.apply(this, arguments);
+    a.events.register("moveend", this, this.onMoveEnd);
+  },
+  removeMap: function (a) {
+    a.events.unregister("moveend", this, this.onMoveEnd);
+    OpenLayers.Layer.Vector.prototype.removeMap.apply(this, arguments);
+  },
+  setRatio: function (a) {
+    this.ratio = a;
+    this.updateGrid(!0);
+  },
+  setMaxFeatures: function (a) {
+    this.maxFeatures = a;
+    this.updateGrid(!0);
+  },
+  setSpacing: function (a, b) {
+    this.dx = a;
+    this.dy = b || a;
+    this.updateGrid(!0);
+  },
+  setOrigin: function (a) {
+    this.origin = a;
+    this.updateGrid(!0);
+  },
+  getOrigin: function () {
+    this.origin || (this.origin = this.map.getExtent().getCenterLonLat());
+    return this.origin;
+  },
+  setRotation: function (a) {
+    this.rotation = a;
+    this.updateGrid(!0);
+  },
+  onMoveEnd: function () {
+    this.updateGrid();
+  },
+  getViewBounds: function () {
+    var a = this.map.getExtent();
+    if (this.rotation) {
+      var b = this.getOrigin(),
+        b = new OpenLayers.Geometry.Point(b.lon, b.lat),
+        a = a.toGeometry();
+      a.rotate(-this.rotation, b);
+      a = a.getBounds();
+    }
+    return a;
+  },
+  updateGrid: function (a) {
+    if (a || this.invalidBounds()) {
+      var b = this.getViewBounds(),
+        c = this.getOrigin();
+      a = new OpenLayers.Geometry.Point(c.lon, c.lat);
+      var d = b.getWidth(),
+        e = b.getHeight(),
+        f = d / e,
+        g = Math.sqrt((this.dx * this.dy * this.maxFeatures) / f),
+        d = Math.min(d * this.ratio, g * f),
+        e = Math.min(e * this.ratio, g),
+        b = b.getCenterLonLat();
+      this.gridBounds = new OpenLayers.Bounds(
+        b.lon - d / 2,
+        b.lat - e / 2,
+        b.lon + d / 2,
+        b.lat + e / 2
+      );
+      for (
+        var b = Math.floor(e / this.dy),
+          d = Math.floor(d / this.dx),
+          e = c.lon + this.dx * Math.ceil((this.gridBounds.left - c.lon) / this.dx),
+          c = c.lat + this.dy * Math.ceil((this.gridBounds.bottom - c.lat) / this.dy),
+          g = Array(b * d),
+          h,
+          k = 0;
+        k < d;
+        ++k
+      )
+        for (var f = e + k * this.dx, l = 0; l < b; ++l)
+          (h = c + l * this.dy),
+            (h = new OpenLayers.Geometry.Point(f, h)),
+            this.rotation && h.rotate(this.rotation, a),
+            (g[k * b + l] = new OpenLayers.Feature.Vector(h));
+      this.destroyFeatures(this.features, { silent: !0 });
+      this.addFeatures(g, { silent: !0 });
+    }
+  },
+  invalidBounds: function () {
+    return !this.gridBounds || !this.gridBounds.containsBounds(this.getViewBounds());
+  },
+  CLASS_NAME: "OpenLayers.Layer.PointGrid",
+});
+OpenLayers.Handler.MouseWheel = OpenLayers.Class(OpenLayers.Handler, {
+  wheelListener: null,
+  interval: 0,
+  maxDelta: Number.POSITIVE_INFINITY,
+  delta: 0,
+  cumulative: !0,
+  initialize: function (a, b, c) {
+    OpenLayers.Handler.prototype.initialize.apply(this, arguments);
+    this.wheelListener = OpenLayers.Function.bindAsEventListener(this.onWheelEvent, this);
+  },
+  destroy: function () {
+    OpenLayers.Handler.prototype.destroy.apply(this, arguments);
+    this.wheelListener = null;
+  },
+  onWheelEvent: function (a) {
+    if (this.map && this.checkModifiers(a)) {
+      for (var b = !1, c = !1, d = !1, e = OpenLayers.Event.element(a); null != e && !d && !b; ) {
+        if (!b)
+          try {
+            var f,
+              b =
+                ((f = e.currentStyle
+                  ? e.currentStyle.overflow
+                  : document.defaultView.getComputedStyle(e, null).getPropertyValue("overflow")) &&
+                  "auto" == f) ||
+                "scroll" == f;
+          } catch (g) {}
+        if (!c && ((c = OpenLayers.Element.hasClass(e, "olScrollable")), !c))
+          for (var d = 0, h = this.map.layers.length; d < h; d++) {
+            var k = this.map.layers[d];
+            if (e == k.div || e == k.pane) {
+              c = !0;
+              break;
+            }
+          }
+        d = e == this.map.div;
+        e = e.parentNode;
+      }
+      if (!b && d) {
+        if (c)
+          if (
+            ((b = 0),
+            a.wheelDelta
+              ? ((b = a.wheelDelta), 0 === b % 160 && (b *= 0.75), (b /= 120))
+              : a.detail && (b = -(a.detail / Math.abs(a.detail))),
+            (this.delta += b),
+            window.clearTimeout(this._timeoutId),
+            this.interval && Math.abs(this.delta) < this.maxDelta)
+          ) {
+            var l = OpenLayers.Util.extend({}, a);
+            this._timeoutId = window.setTimeout(
+              OpenLayers.Function.bind(function () {
+                this.wheelZoom(l);
+              }, this),
+              this.interval
+            );
+          } else this.wheelZoom(a);
+        OpenLayers.Event.stop(a);
+      }
+    }
+  },
+  wheelZoom: function (a) {
+    var b = this.delta;
+    this.delta = 0;
+    b &&
+      ((a.xy = this.map.events.getMousePosition(a)),
+      0 > b
+        ? this.callback("down", [a, this.cumulative ? Math.max(-this.maxDelta, b) : -1])
+        : this.callback("up", [a, this.cumulative ? Math.min(this.maxDelta, b) : 1]));
+  },
+  activate: function (a) {
+    if (OpenLayers.Handler.prototype.activate.apply(this, arguments)) {
+      var b = this.wheelListener;
+      OpenLayers.Event.observe(window, "DOMMouseScroll", b);
+      OpenLayers.Event.observe(window, "mousewheel", b);
+      OpenLayers.Event.observe(document, "mousewheel", b);
+      return !0;
+    }
+    return !1;
+  },
+  deactivate: function (a) {
+    if (OpenLayers.Handler.prototype.deactivate.apply(this, arguments)) {
+      var b = this.wheelListener;
+      OpenLayers.Event.stopObserving(window, "DOMMouseScroll", b);
+      OpenLayers.Event.stopObserving(window, "mousewheel", b);
+      OpenLayers.Event.stopObserving(document, "mousewheel", b);
+      return !0;
+    }
+    return !1;
+  },
+  CLASS_NAME: "OpenLayers.Handler.MouseWheel",
+});
+OpenLayers.Symbolizer = OpenLayers.Class({
+  zIndex: 0,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+  },
+  clone: function () {
+    return new (eval(this.CLASS_NAME))(OpenLayers.Util.extend({}, this));
+  },
+  CLASS_NAME: "OpenLayers.Symbolizer",
+});
+OpenLayers.Symbolizer.Raster = OpenLayers.Class(OpenLayers.Symbolizer, {
+  initialize: function (a) {
+    OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Symbolizer.Raster",
+});
+OpenLayers.Rule = OpenLayers.Class({
+  id: null,
+  name: null,
+  title: null,
+  description: null,
+  context: null,
+  filter: null,
+  elseFilter: !1,
+  symbolizer: null,
+  symbolizers: null,
+  minScaleDenominator: null,
+  maxScaleDenominator: null,
+  initialize: function (a) {
+    this.symbolizer = {};
+    OpenLayers.Util.extend(this, a);
+    this.symbolizers && delete this.symbolizer;
+    this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
+  },
+  destroy: function () {
+    for (var a in this.symbolizer) this.symbolizer[a] = null;
+    this.symbolizer = null;
+    delete this.symbolizers;
+  },
+  evaluate: function (a) {
+    var b = this.getContext(a),
+      c = !0;
+    if (this.minScaleDenominator || this.maxScaleDenominator) var d = a.layer.map.getScale();
+    this.minScaleDenominator &&
+      (c = d >= OpenLayers.Style.createLiteral(this.minScaleDenominator, b));
+    c &&
+      this.maxScaleDenominator &&
+      (c = d < OpenLayers.Style.createLiteral(this.maxScaleDenominator, b));
+    c &&
+      this.filter &&
+      (c =
+        "OpenLayers.Filter.FeatureId" == this.filter.CLASS_NAME
+          ? this.filter.evaluate(a)
+          : this.filter.evaluate(b));
+    return c;
+  },
+  getContext: function (a) {
+    var b = this.context;
+    b || (b = a.attributes || a.data);
+    "function" == typeof this.context && (b = this.context(a));
+    return b;
+  },
+  clone: function () {
+    var a = OpenLayers.Util.extend({}, this);
+    if (this.symbolizers) {
+      var b = this.symbolizers.length;
+      a.symbolizers = Array(b);
+      for (var c = 0; c < b; ++c) a.symbolizers[c] = this.symbolizers[c].clone();
+    } else {
+      a.symbolizer = {};
+      for (var d in this.symbolizer)
+        (b = this.symbolizer[d]),
+          (c = typeof b),
+          "object" === c
+            ? (a.symbolizer[d] = OpenLayers.Util.extend({}, b))
+            : "string" === c && (a.symbolizer[d] = b);
+    }
+    a.filter = this.filter && this.filter.clone();
+    a.context = this.context && OpenLayers.Util.extend({}, this.context);
+    return new OpenLayers.Rule(a);
+  },
+  CLASS_NAME: "OpenLayers.Rule",
+});
+OpenLayers.Format.SLD = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  profile: null,
+  defaultVersion: "1.0.0",
+  stringifyOutput: !0,
+  namedLayersAsArray: !1,
+  CLASS_NAME: "OpenLayers.Format.SLD",
+});
+OpenLayers.Symbolizer.Polygon = OpenLayers.Class(OpenLayers.Symbolizer, {
+  initialize: function (a) {
+    OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Symbolizer.Polygon",
+});
+OpenLayers.Format.GML.v2 = OpenLayers.Class(OpenLayers.Format.GML.Base, {
+  schemaLocation: "http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd",
+  initialize: function (a) {
+    OpenLayers.Format.GML.Base.prototype.initialize.apply(this, [a]);
+  },
+  readers: {
+    gml: OpenLayers.Util.applyDefaults(
+      {
+        outerBoundaryIs: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          b.outer = c.components[0];
+        },
+        innerBoundaryIs: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          b.inner.push(c.components[0]);
+        },
+        Box: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          b.components || (b.components = []);
+          var d = c.points[0],
+            c = c.points[1];
+          b.components.push(new OpenLayers.Bounds(d.x, d.y, c.x, c.y));
+        },
+      },
+      OpenLayers.Format.GML.Base.prototype.readers.gml
+    ),
+    feature: OpenLayers.Format.GML.Base.prototype.readers.feature,
+    wfs: OpenLayers.Format.GML.Base.prototype.readers.wfs,
+  },
+  write: function (a) {
+    var b;
+    b = OpenLayers.Util.isArray(a) ? "wfs:FeatureCollection" : "gml:featureMember";
+    a = this.writeNode(b, a);
+    this.setAttributeNS(a, this.namespaces.xsi, "xsi:schemaLocation", this.schemaLocation);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [a]);
+  },
+  writers: {
+    gml: OpenLayers.Util.applyDefaults(
+      {
+        Point: function (a) {
+          var b = this.createElementNSPlus("gml:Point");
+          this.writeNode("coordinates", [a], b);
+          return b;
+        },
+        coordinates: function (a) {
+          for (var b = a.length, c = Array(b), d, e = 0; e < b; ++e)
+            (d = a[e]),
+              (c[e] = this.xy ? d.x + "," + d.y : d.y + "," + d.x),
+              void 0 != d.z && (c[e] += "," + d.z);
+          return this.createElementNSPlus("gml:coordinates", {
+            attributes: { decimal: ".", cs: ",", ts: " " },
+            value: 1 == b ? c[0] : c.join(" "),
+          });
+        },
+        LineString: function (a) {
+          var b = this.createElementNSPlus("gml:LineString");
+          this.writeNode("coordinates", a.components, b);
+          return b;
+        },
+        Polygon: function (a) {
+          var b = this.createElementNSPlus("gml:Polygon");
+          this.writeNode("outerBoundaryIs", a.components[0], b);
+          for (var c = 1; c < a.components.length; ++c)
+            this.writeNode("innerBoundaryIs", a.components[c], b);
+          return b;
+        },
+        outerBoundaryIs: function (a) {
+          var b = this.createElementNSPlus("gml:outerBoundaryIs");
+          this.writeNode("LinearRing", a, b);
+          return b;
+        },
+        innerBoundaryIs: function (a) {
+          var b = this.createElementNSPlus("gml:innerBoundaryIs");
+          this.writeNode("LinearRing", a, b);
+          return b;
+        },
+        LinearRing: function (a) {
+          var b = this.createElementNSPlus("gml:LinearRing");
+          this.writeNode("coordinates", a.components, b);
+          return b;
+        },
+        Box: function (a) {
+          var b = this.createElementNSPlus("gml:Box");
+          this.writeNode(
+            "coordinates",
+            [
+              { x: a.left, y: a.bottom },
+              { x: a.right, y: a.top },
+            ],
+            b
+          );
+          this.srsName && b.setAttribute("srsName", this.srsName);
+          return b;
+        },
+      },
+      OpenLayers.Format.GML.Base.prototype.writers.gml
+    ),
+    feature: OpenLayers.Format.GML.Base.prototype.writers.feature,
+    wfs: OpenLayers.Format.GML.Base.prototype.writers.wfs,
+  },
+  CLASS_NAME: "OpenLayers.Format.GML.v2",
+});
+OpenLayers.Format.Filter.v1_0_0 = OpenLayers.Class(
+  OpenLayers.Format.GML.v2,
+  OpenLayers.Format.Filter.v1,
+  {
+    VERSION: "1.0.0",
+    schemaLocation: "http://www.opengis.net/ogc/filter/1.0.0/filter.xsd",
+    initialize: function (a) {
+      OpenLayers.Format.GML.v2.prototype.initialize.apply(this, [a]);
+    },
+    readers: {
+      ogc: OpenLayers.Util.applyDefaults(
+        {
+          PropertyIsEqualTo: function (a, b) {
+            var c = new OpenLayers.Filter.Comparison({
+              type: OpenLayers.Filter.Comparison.EQUAL_TO,
+            });
+            this.readChildNodes(a, c);
+            b.filters.push(c);
+          },
+          PropertyIsNotEqualTo: function (a, b) {
+            var c = new OpenLayers.Filter.Comparison({
+              type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
+            });
+            this.readChildNodes(a, c);
+            b.filters.push(c);
+          },
+          PropertyIsLike: function (a, b) {
+            var c = new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.LIKE });
+            this.readChildNodes(a, c);
+            var d = a.getAttribute("wildCard"),
+              e = a.getAttribute("singleChar"),
+              f = a.getAttribute("escape");
+            c.value2regex(d, e, f);
+            b.filters.push(c);
+          },
+        },
+        OpenLayers.Format.Filter.v1.prototype.readers.ogc
+      ),
+      gml: OpenLayers.Format.GML.v2.prototype.readers.gml,
+      feature: OpenLayers.Format.GML.v2.prototype.readers.feature,
+    },
+    writers: {
+      ogc: OpenLayers.Util.applyDefaults(
+        {
+          PropertyIsEqualTo: function (a) {
+            var b = this.createElementNSPlus("ogc:PropertyIsEqualTo");
+            this.writeNode("PropertyName", a, b);
+            this.writeOgcExpression(a.value, b);
+            return b;
+          },
+          PropertyIsNotEqualTo: function (a) {
+            var b = this.createElementNSPlus("ogc:PropertyIsNotEqualTo");
+            this.writeNode("PropertyName", a, b);
+            this.writeOgcExpression(a.value, b);
+            return b;
+          },
+          PropertyIsLike: function (a) {
+            var b = this.createElementNSPlus("ogc:PropertyIsLike", {
+              attributes: { wildCard: "*", singleChar: ".", escape: "!" },
+            });
+            this.writeNode("PropertyName", a, b);
+            this.writeNode("Literal", a.regex2value(), b);
+            return b;
+          },
+          BBOX: function (a) {
+            var b = this.createElementNSPlus("ogc:BBOX");
+            a.property && this.writeNode("PropertyName", a, b);
+            var c = this.writeNode("gml:Box", a.value, b);
+            a.projection && c.setAttribute("srsName", a.projection);
+            return b;
+          },
+        },
+        OpenLayers.Format.Filter.v1.prototype.writers.ogc
+      ),
+      gml: OpenLayers.Format.GML.v2.prototype.writers.gml,
+      feature: OpenLayers.Format.GML.v2.prototype.writers.feature,
+    },
+    writeSpatial: function (a, b) {
+      var c = this.createElementNSPlus("ogc:" + b);
+      this.writeNode("PropertyName", a, c);
+      if (a.value instanceof OpenLayers.Filter.Function) this.writeNode("Function", a.value, c);
+      else {
+        var d;
+        d =
+          a.value instanceof OpenLayers.Geometry
+            ? this.writeNode("feature:_geometry", a.value).firstChild
+            : this.writeNode("gml:Box", a.value);
+        a.projection && d.setAttribute("srsName", a.projection);
+        c.appendChild(d);
+      }
+      return c;
+    },
+    CLASS_NAME: "OpenLayers.Format.Filter.v1_0_0",
+  }
+);
+OpenLayers.Format.WFST.v1_0_0 = OpenLayers.Class(
+  OpenLayers.Format.Filter.v1_0_0,
+  OpenLayers.Format.WFST.v1,
+  {
+    version: "1.0.0",
+    srsNameInQuery: !1,
+    schemaLocations: { wfs: "http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd" },
+    initialize: function (a) {
+      OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this, [a]);
+      OpenLayers.Format.WFST.v1.prototype.initialize.apply(this, [a]);
+    },
+    readNode: function (a, b, c) {
+      return OpenLayers.Format.GML.v2.prototype.readNode.apply(this, arguments);
+    },
+    readers: {
+      wfs: OpenLayers.Util.applyDefaults(
+        {
+          WFS_TransactionResponse: function (a, b) {
+            b.insertIds = [];
+            b.success = !1;
+            this.readChildNodes(a, b);
+          },
+          InsertResult: function (a, b) {
+            var c = { fids: [] };
+            this.readChildNodes(a, c);
+            b.insertIds = b.insertIds.concat(c.fids);
+          },
+          TransactionResult: function (a, b) {
+            this.readChildNodes(a, b);
+          },
+          Status: function (a, b) {
+            this.readChildNodes(a, b);
+          },
+          SUCCESS: function (a, b) {
+            b.success = !0;
+          },
+        },
+        OpenLayers.Format.WFST.v1.prototype.readers.wfs
+      ),
+      gml: OpenLayers.Format.GML.v2.prototype.readers.gml,
+      feature: OpenLayers.Format.GML.v2.prototype.readers.feature,
+      ogc: OpenLayers.Format.Filter.v1_0_0.prototype.readers.ogc,
+    },
+    writers: {
+      wfs: OpenLayers.Util.applyDefaults(
+        {
+          Query: function (a) {
+            a = OpenLayers.Util.extend(
+              {
+                featureNS: this.featureNS,
+                featurePrefix: this.featurePrefix,
+                featureType: this.featureType,
+                srsName: this.srsName,
+                srsNameInQuery: this.srsNameInQuery,
+              },
+              a
+            );
+            var b = a.featurePrefix,
+              c = this.createElementNSPlus("wfs:Query", {
+                attributes: { typeName: (b ? b + ":" : "") + a.featureType },
+              });
+            a.srsNameInQuery && a.srsName && c.setAttribute("srsName", a.srsName);
+            a.featureNS && c.setAttribute("xmlns:" + b, a.featureNS);
+            if (a.propertyNames)
+              for (var b = 0, d = a.propertyNames.length; b < d; b++)
+                this.writeNode("ogc:PropertyName", { property: a.propertyNames[b] }, c);
+            a.filter &&
+              (this.setFilterProperty(a.filter), this.writeNode("ogc:Filter", a.filter, c));
+            return c;
+          },
+        },
+        OpenLayers.Format.WFST.v1.prototype.writers.wfs
+      ),
+      gml: OpenLayers.Format.GML.v2.prototype.writers.gml,
+      feature: OpenLayers.Format.GML.v2.prototype.writers.feature,
+      ogc: OpenLayers.Format.Filter.v1_0_0.prototype.writers.ogc,
+    },
+    CLASS_NAME: "OpenLayers.Format.WFST.v1_0_0",
+  }
+);
+OpenLayers.ElementsIndexer = OpenLayers.Class({
+  maxZIndex: null,
+  order: null,
+  indices: null,
+  compare: null,
+  initialize: function (a) {
+    this.compare = a
+      ? OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER
+      : OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;
+    this.clear();
+  },
+  insert: function (a) {
+    this.exists(a) && this.remove(a);
+    var b = a.id;
+    this.determineZIndex(a);
+    for (var c = -1, d = this.order.length, e; 1 < d - c; )
+      (e = parseInt((c + d) / 2)),
+        0 < this.compare(this, a, OpenLayers.Util.getElement(this.order[e])) ? (c = e) : (d = e);
+    this.order.splice(d, 0, b);
+    this.indices[b] = this.getZIndex(a);
+    return this.getNextElement(d);
+  },
+  remove: function (a) {
+    a = a.id;
+    var b = OpenLayers.Util.indexOf(this.order, a);
+    0 <= b &&
+      (this.order.splice(b, 1),
+      delete this.indices[a],
+      (this.maxZIndex =
+        0 < this.order.length ? this.indices[this.order[this.order.length - 1]] : 0));
+  },
+  clear: function () {
+    this.order = [];
+    this.indices = {};
+    this.maxZIndex = 0;
+  },
+  exists: function (a) {
+    return null != this.indices[a.id];
+  },
+  getZIndex: function (a) {
+    return a._style.graphicZIndex;
+  },
+  determineZIndex: function (a) {
+    var b = a._style.graphicZIndex;
+    null == b
+      ? ((b = this.maxZIndex), (a._style.graphicZIndex = b))
+      : b > this.maxZIndex && (this.maxZIndex = b);
+  },
+  getNextElement: function (a) {
+    a += 1;
+    if (a < this.order.length) {
+      var b = OpenLayers.Util.getElement(this.order[a]);
+      void 0 == b && (b = this.getNextElement(a));
+      return b;
+    }
+    return null;
+  },
+  CLASS_NAME: "OpenLayers.ElementsIndexer",
+});
+OpenLayers.ElementsIndexer.IndexingMethods = {
+  Z_ORDER: function (a, b, c) {
+    b = a.getZIndex(b);
+    var d = 0;
+    c && ((a = a.getZIndex(c)), (d = b - a));
+    return d;
+  },
+  Z_ORDER_DRAWING_ORDER: function (a, b, c) {
+    a = OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a, b, c);
+    c && 0 == a && (a = 1);
+    return a;
+  },
+  Z_ORDER_Y_ORDER: function (a, b, c) {
+    a = OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a, b, c);
+    c && 0 === a && ((b = c._boundsBottom - b._boundsBottom), (a = 0 === b ? 1 : b));
+    return a;
+  },
+};
+OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
+  rendererRoot: null,
+  root: null,
+  vectorRoot: null,
+  textRoot: null,
+  xmlns: null,
+  xOffset: 0,
+  indexer: null,
+  BACKGROUND_ID_SUFFIX: "_background",
+  LABEL_ID_SUFFIX: "_label",
+  LABEL_OUTLINE_SUFFIX: "_outline",
+  initialize: function (a, b) {
+    OpenLayers.Renderer.prototype.initialize.apply(this, arguments);
+    this.rendererRoot = this.createRenderRoot();
+    this.root = this.createRoot("_root");
+    this.vectorRoot = this.createRoot("_vroot");
+    this.textRoot = this.createRoot("_troot");
+    this.root.appendChild(this.vectorRoot);
+    this.root.appendChild(this.textRoot);
+    this.rendererRoot.appendChild(this.root);
+    this.container.appendChild(this.rendererRoot);
+    b &&
+      (b.zIndexing || b.yOrdering) &&
+      (this.indexer = new OpenLayers.ElementsIndexer(b.yOrdering));
+  },
+  destroy: function () {
+    this.clear();
+    this.xmlns = this.root = this.rendererRoot = null;
+    OpenLayers.Renderer.prototype.destroy.apply(this, arguments);
+  },
+  clear: function () {
+    var a,
+      b = this.vectorRoot;
+    if (b) for (; (a = b.firstChild); ) b.removeChild(a);
+    if ((b = this.textRoot)) for (; (a = b.firstChild); ) b.removeChild(a);
+    this.indexer && this.indexer.clear();
+  },
+  setExtent: function (a, b) {
+    var c = OpenLayers.Renderer.prototype.setExtent.apply(this, arguments),
+      d = this.getResolution();
+    if (this.map.baseLayer && this.map.baseLayer.wrapDateLine) {
+      var e,
+        f = a.getWidth() / this.map.getExtent().getWidth();
+      a = a.scale(1 / f);
+      f = this.map.getMaxExtent();
+      f.right > a.left && f.right < a.right
+        ? (e = !0)
+        : f.left > a.left && f.left < a.right && (e = !1);
+      if (e !== this.rightOfDateLine || b)
+        (c = !1), (this.xOffset = !0 === e ? f.getWidth() / d : 0);
+      this.rightOfDateLine = e;
+    }
+    return c;
+  },
+  getNodeType: function (a, b) {},
+  drawGeometry: function (a, b, c) {
+    var d = a.CLASS_NAME,
+      e = !0;
+    if (
+      "OpenLayers.Geometry.Collection" == d ||
+      "OpenLayers.Geometry.MultiPoint" == d ||
+      "OpenLayers.Geometry.MultiLineString" == d ||
+      "OpenLayers.Geometry.MultiPolygon" == d
+    ) {
+      for (var d = 0, f = a.components.length; d < f; d++)
+        e = this.drawGeometry(a.components[d], b, c) && e;
+      return e;
+    }
+    d = e = !1;
+    "none" != b.display &&
+      (b.backgroundGraphic ? this.redrawBackgroundNode(a.id, a, b, c) : (d = !0),
+      (e = this.redrawNode(a.id, a, b, c)));
+    !1 == e &&
+      (b = document.getElementById(a.id)) &&
+      (b._style.backgroundGraphic && (d = !0), b.parentNode.removeChild(b));
+    d &&
+      (b = document.getElementById(a.id + this.BACKGROUND_ID_SUFFIX)) &&
+      b.parentNode.removeChild(b);
+    return e;
+  },
+  redrawNode: function (a, b, c, d) {
+    c = this.applyDefaultSymbolizer(c);
+    a = this.nodeFactory(a, this.getNodeType(b, c));
+    a._featureId = d;
+    a._boundsBottom = b.getBounds().bottom;
+    a._geometryClass = b.CLASS_NAME;
+    a._style = c;
+    b = this.drawGeometryNode(a, b, c);
+    if (!1 === b) return !1;
+    a = b.node;
+    this.indexer
+      ? (c = this.indexer.insert(a))
+        ? this.vectorRoot.insertBefore(a, c)
+        : this.vectorRoot.appendChild(a)
+      : a.parentNode !== this.vectorRoot && this.vectorRoot.appendChild(a);
+    this.postDraw(a);
+    return b.complete;
+  },
+  redrawBackgroundNode: function (a, b, c, d) {
+    c = OpenLayers.Util.extend({}, c);
+    c.externalGraphic = c.backgroundGraphic;
+    c.graphicXOffset = c.backgroundXOffset;
+    c.graphicYOffset = c.backgroundYOffset;
+    c.graphicZIndex = c.backgroundGraphicZIndex;
+    c.graphicWidth = c.backgroundWidth || c.graphicWidth;
+    c.graphicHeight = c.backgroundHeight || c.graphicHeight;
+    c.backgroundGraphic = null;
+    c.backgroundXOffset = null;
+    c.backgroundYOffset = null;
+    c.backgroundGraphicZIndex = null;
+    return this.redrawNode(a + this.BACKGROUND_ID_SUFFIX, b, c, null);
+  },
+  drawGeometryNode: function (a, b, c) {
+    c = c || a._style;
+    var d = {
+        isFilled: void 0 === c.fill ? !0 : c.fill,
+        isStroked: void 0 === c.stroke ? !!c.strokeWidth : c.stroke,
+      },
+      e;
+    switch (b.CLASS_NAME) {
+      case "OpenLayers.Geometry.Point":
+        !1 === c.graphic && ((d.isFilled = !1), (d.isStroked = !1));
+        e = this.drawPoint(a, b);
+        break;
+      case "OpenLayers.Geometry.LineString":
+        d.isFilled = !1;
+        e = this.drawLineString(a, b);
+        break;
+      case "OpenLayers.Geometry.LinearRing":
+        e = this.drawLinearRing(a, b);
+        break;
+      case "OpenLayers.Geometry.Polygon":
+        e = this.drawPolygon(a, b);
+        break;
+      case "OpenLayers.Geometry.Rectangle":
+        e = this.drawRectangle(a, b);
+    }
+    a._options = d;
+    return !1 != e ? { node: this.setStyle(a, c, d, b), complete: e } : !1;
+  },
+  postDraw: function (a) {},
+  drawPoint: function (a, b) {},
+  drawLineString: function (a, b) {},
+  drawLinearRing: function (a, b) {},
+  drawPolygon: function (a, b) {},
+  drawRectangle: function (a, b) {},
+  drawCircle: function (a, b) {},
+  removeText: function (a) {
+    var b = document.getElementById(a + this.LABEL_ID_SUFFIX);
+    b && this.textRoot.removeChild(b);
+    (a = document.getElementById(a + this.LABEL_OUTLINE_SUFFIX)) && this.textRoot.removeChild(a);
+  },
+  getFeatureIdFromEvent: function (a) {
+    var b = a.target,
+      c = b && b.correspondingUseElement;
+    return (c ? c : b || a.srcElement)._featureId;
+  },
+  eraseGeometry: function (a, b) {
+    if (
+      "OpenLayers.Geometry.MultiPoint" == a.CLASS_NAME ||
+      "OpenLayers.Geometry.MultiLineString" == a.CLASS_NAME ||
+      "OpenLayers.Geometry.MultiPolygon" == a.CLASS_NAME ||
+      "OpenLayers.Geometry.Collection" == a.CLASS_NAME
+    )
+      for (var c = 0, d = a.components.length; c < d; c++) this.eraseGeometry(a.components[c], b);
+    else
+      (c = OpenLayers.Util.getElement(a.id)) &&
+        c.parentNode &&
+        (c.geometry && (c.geometry.destroy(), (c.geometry = null)),
+        c.parentNode.removeChild(c),
+        this.indexer && this.indexer.remove(c),
+        c._style.backgroundGraphic &&
+          (c = OpenLayers.Util.getElement(a.id + this.BACKGROUND_ID_SUFFIX)) &&
+          c.parentNode &&
+          c.parentNode.removeChild(c));
+  },
+  nodeFactory: function (a, b) {
+    var c = OpenLayers.Util.getElement(a);
+    c
+      ? this.nodeTypeCompare(c, b) || (c.parentNode.removeChild(c), (c = this.nodeFactory(a, b)))
+      : (c = this.createNode(b, a));
+    return c;
+  },
+  nodeTypeCompare: function (a, b) {},
+  createNode: function (a, b) {},
+  moveRoot: function (a) {
+    var b = this.root;
+    a.root.parentNode == this.rendererRoot && (b = a.root);
+    b.parentNode.removeChild(b);
+    a.rendererRoot.appendChild(b);
+  },
+  getRenderLayerId: function () {
+    return this.root.parentNode.parentNode.id;
+  },
+  isComplexSymbol: function (a) {
+    return "circle" != a && !!a;
+  },
+  CLASS_NAME: "OpenLayers.Renderer.Elements",
+});
+OpenLayers.Control.ArgParser = OpenLayers.Class(OpenLayers.Control, {
+  center: null,
+  zoom: null,
+  layers: null,
+  displayProjection: null,
+  getParameters: function (a) {
+    a = a || window.location.href;
+    var b = OpenLayers.Util.getParameters(a),
+      c = a.indexOf("#");
+    0 < c &&
+      ((a = "?" + a.substring(c + 1, a.length)),
+      OpenLayers.Util.extend(b, OpenLayers.Util.getParameters(a)));
+    return b;
+  },
+  setMap: function (a) {
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+    for (var b = 0, c = this.map.controls.length; b < c; b++) {
+      var d = this.map.controls[b];
+      if (d != this && "OpenLayers.Control.ArgParser" == d.CLASS_NAME) {
+        d.displayProjection != this.displayProjection &&
+          (this.displayProjection = d.displayProjection);
+        break;
+      }
+    }
+    b == this.map.controls.length &&
+      ((b = this.getParameters()),
+      b.layers &&
+        ((this.layers = b.layers),
+        this.map.events.register("addlayer", this, this.configureLayers),
+        this.configureLayers()),
+      b.lat &&
+        b.lon &&
+        ((this.center = new OpenLayers.LonLat(parseFloat(b.lon), parseFloat(b.lat))),
+        b.zoom && (this.zoom = parseFloat(b.zoom)),
+        this.map.events.register("changebaselayer", this, this.setCenter),
+        this.setCenter()));
+  },
+  setCenter: function () {
+    this.map.baseLayer &&
+      (this.map.events.unregister("changebaselayer", this, this.setCenter),
+      this.displayProjection &&
+        this.center.transform(this.displayProjection, this.map.getProjectionObject()),
+      this.map.setCenter(this.center, this.zoom));
+  },
+  configureLayers: function () {
+    if (this.layers.length == this.map.layers.length) {
+      this.map.events.unregister("addlayer", this, this.configureLayers);
+      for (var a = 0, b = this.layers.length; a < b; a++) {
+        var c = this.map.layers[a],
+          d = this.layers.charAt(a);
+        "B" == d ? this.map.setBaseLayer(c) : ("T" != d && "F" != d) || c.setVisibility("T" == d);
+      }
+    }
+  },
+  CLASS_NAME: "OpenLayers.Control.ArgParser",
+});
+OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, {
+  argParserClass: OpenLayers.Control.ArgParser,
+  element: null,
+  anchor: !1,
+  base: "",
+  displayProjection: null,
+  initialize: function (a, b, c) {
+    null === a || "object" != typeof a || OpenLayers.Util.isElement(a)
+      ? (OpenLayers.Control.prototype.initialize.apply(this, [c]),
+        (this.element = OpenLayers.Util.getElement(a)),
+        (this.base = b || document.location.href))
+      : ((this.base = document.location.href),
+        OpenLayers.Control.prototype.initialize.apply(this, [a]),
+        null != this.element && (this.element = OpenLayers.Util.getElement(this.element)));
+  },
+  destroy: function () {
+    this.element &&
+      this.element.parentNode == this.div &&
+      (this.div.removeChild(this.element), (this.element = null));
+    this.map && this.map.events.unregister("moveend", this, this.updateLink);
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  setMap: function (a) {
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+    for (var b = 0, c = this.map.controls.length; b < c; b++) {
+      var d = this.map.controls[b];
+      if (d.CLASS_NAME == this.argParserClass.CLASS_NAME) {
+        d.displayProjection != this.displayProjection &&
+          (this.displayProjection = d.displayProjection);
+        break;
+      }
+    }
+    b == this.map.controls.length &&
+      this.map.addControl(new this.argParserClass({ displayProjection: this.displayProjection }));
+  },
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    this.element ||
+      this.anchor ||
+      ((this.element = document.createElement("a")),
+      (this.element.innerHTML = OpenLayers.i18n("Permalink")),
+      (this.element.href = ""),
+      this.div.appendChild(this.element));
+    this.map.events.on({
+      moveend: this.updateLink,
+      changelayer: this.updateLink,
+      changebaselayer: this.updateLink,
+      scope: this,
+    });
+    this.updateLink();
+    return this.div;
+  },
+  updateLink: function () {
+    var a = this.anchor ? "#" : "?",
+      b = this.base,
+      c = null;
+    -1 != b.indexOf("#") && !1 == this.anchor && (c = b.substring(b.indexOf("#"), b.length));
+    -1 != b.indexOf(a) && (b = b.substring(0, b.indexOf(a)));
+    b = b.split("#")[0] + a + OpenLayers.Util.getParameterString(this.createParams());
+    c && (b += c);
+    this.anchor && !this.element ? (window.location.href = b) : (this.element.href = b);
+  },
+  createParams: function (a, b, c) {
+    a = a || this.map.getCenter();
+    var d = OpenLayers.Util.getParameters(this.base);
+    if (a)
+      for (
+        d.zoom = b || this.map.getZoom(),
+          b = a.lat,
+          a = a.lon,
+          this.displayProjection &&
+            ((b = OpenLayers.Projection.transform(
+              { x: a, y: b },
+              this.map.getProjectionObject(),
+              this.displayProjection
+            )),
+            (a = b.x),
+            (b = b.y)),
+          d.lat = Math.round(1e5 * b) / 1e5,
+          d.lon = Math.round(1e5 * a) / 1e5,
+          c = c || this.map.layers,
+          d.layers = "",
+          a = 0,
+          b = c.length;
+        a < b;
+        a++
+      ) {
+        var e = c[a];
+        d.layers = e.isBaseLayer
+          ? d.layers + (e == this.map.baseLayer ? "B" : "0")
+          : d.layers + (e.getVisibility() ? "T" : "F");
+      }
+    return d;
+  },
+  CLASS_NAME: "OpenLayers.Control.Permalink",
+});
+OpenLayers.Layer.TMS = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  serviceVersion: "1.0.0",
+  layername: null,
+  type: null,
+  isBaseLayer: !0,
+  tileOrigin: null,
+  serverResolutions: null,
+  zoomOffset: 0,
+  initialize: function (a, b, c) {
+    var d = [];
+    d.push(a, b, {}, c);
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, d);
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.TMS(this.name, this.url, this.getOptions()));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  getURL: function (a) {
+    a = this.adjustBounds(a);
+    var b = this.getServerResolution(),
+      c = Math.round((a.left - this.tileOrigin.lon) / (b * this.tileSize.w));
+    a = Math.round((a.bottom - this.tileOrigin.lat) / (b * this.tileSize.h));
+    b = this.getServerZoom();
+    c = this.serviceVersion + "/" + this.layername + "/" + b + "/" + c + "/" + a + "." + this.type;
+    a = this.url;
+    OpenLayers.Util.isArray(a) && (a = this.selectUrl(c, a));
+    return a + c;
+  },
+  setMap: function (a) {
+    OpenLayers.Layer.Grid.prototype.setMap.apply(this, arguments);
+    this.tileOrigin ||
+      (this.tileOrigin = new OpenLayers.LonLat(this.map.maxExtent.left, this.map.maxExtent.bottom));
+  },
+  CLASS_NAME: "OpenLayers.Layer.TMS",
+});
+OpenLayers.Format.WCSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.1.0",
+  CLASS_NAME: "OpenLayers.Format.WCSCapabilities",
+});
+OpenLayers.Format.WCSCapabilities.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
+  regExes: { trimSpace: /^\s*|\s*$/g, splitSpace: /\s+/ },
+  defaultPrefix: "wcs",
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    this.readNode(a, b);
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Format.WCSCapabilities.v1",
+});
+OpenLayers.Format.WCSCapabilities.v1_0_0 = OpenLayers.Class(OpenLayers.Format.WCSCapabilities.v1, {
+  namespaces: {
+    wcs: "http://www.opengis.net/wcs",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+    ows: "http://www.opengis.net/ows",
+  },
+  errorProperty: "service",
+  readers: {
+    wcs: {
+      WCS_Capabilities: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      Service: function (a, b) {
+        b.service = {};
+        this.readChildNodes(a, b.service);
+      },
+      name: function (a, b) {
+        b.name = this.getChildValue(a);
+      },
+      label: function (a, b) {
+        b.label = this.getChildValue(a);
+      },
+      keywords: function (a, b) {
+        b.keywords = [];
+        this.readChildNodes(a, b.keywords);
+      },
+      keyword: function (a, b) {
+        b.push(this.getChildValue(a));
+      },
+      responsibleParty: function (a, b) {
+        b.responsibleParty = {};
+        this.readChildNodes(a, b.responsibleParty);
+      },
+      individualName: function (a, b) {
+        b.individualName = this.getChildValue(a);
+      },
+      organisationName: function (a, b) {
+        b.organisationName = this.getChildValue(a);
+      },
+      positionName: function (a, b) {
+        b.positionName = this.getChildValue(a);
+      },
+      contactInfo: function (a, b) {
+        b.contactInfo = {};
+        this.readChildNodes(a, b.contactInfo);
+      },
+      phone: function (a, b) {
+        b.phone = {};
+        this.readChildNodes(a, b.phone);
+      },
+      voice: function (a, b) {
+        b.voice = this.getChildValue(a);
+      },
+      facsimile: function (a, b) {
+        b.facsimile = this.getChildValue(a);
+      },
+      address: function (a, b) {
+        b.address = {};
+        this.readChildNodes(a, b.address);
+      },
+      deliveryPoint: function (a, b) {
+        b.deliveryPoint = this.getChildValue(a);
+      },
+      city: function (a, b) {
+        b.city = this.getChildValue(a);
+      },
+      postalCode: function (a, b) {
+        b.postalCode = this.getChildValue(a);
+      },
+      country: function (a, b) {
+        b.country = this.getChildValue(a);
+      },
+      electronicMailAddress: function (a, b) {
+        b.electronicMailAddress = this.getChildValue(a);
+      },
+      fees: function (a, b) {
+        b.fees = this.getChildValue(a);
+      },
+      accessConstraints: function (a, b) {
+        b.accessConstraints = this.getChildValue(a);
+      },
+      ContentMetadata: function (a, b) {
+        b.contentMetadata = [];
+        this.readChildNodes(a, b.contentMetadata);
+      },
+      CoverageOfferingBrief: function (a, b) {
+        var c = {};
+        this.readChildNodes(a, c);
+        b.push(c);
+      },
+      name: function (a, b) {
+        b.name = this.getChildValue(a);
+      },
+      label: function (a, b) {
+        b.label = this.getChildValue(a);
+      },
+      lonLatEnvelope: function (a, b) {
+        var c = this.getElementsByTagNameNS(a, "http://www.opengis.net/gml", "pos");
+        if (2 == c.length) {
+          var d = {},
+            e = {};
+          OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this, [c[0], d]);
+          OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this, [c[1], e]);
+          b.lonLatEnvelope = {};
+          b.lonLatEnvelope.srsName = a.getAttribute("srsName");
+          b.lonLatEnvelope.min = d.points[0];
+          b.lonLatEnvelope.max = e.points[0];
+        }
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.WCSCapabilities.v1_0_0",
+});
+OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, {
+  preload: !1,
+  activate: function () {
+    var a = OpenLayers.Strategy.prototype.activate.apply(this, arguments);
+    if (a)
+      if (
+        (this.layer.events.on({ refresh: this.load, scope: this }),
+        !0 == this.layer.visibility || this.preload)
+      )
+        this.load();
+      else this.layer.events.on({ visibilitychanged: this.load, scope: this });
+    return a;
+  },
+  deactivate: function () {
+    var a = OpenLayers.Strategy.prototype.deactivate.call(this);
+    a && this.layer.events.un({ refresh: this.load, visibilitychanged: this.load, scope: this });
+    return a;
+  },
+  load: function (a) {
+    var b = this.layer;
+    b.events.triggerEvent("loadstart", { filter: b.filter });
+    b.protocol.read(
+      OpenLayers.Util.applyDefaults({ callback: this.merge, filter: b.filter, scope: this }, a)
+    );
+    b.events.un({ visibilitychanged: this.load, scope: this });
+  },
+  merge: function (a) {
+    var b = this.layer;
+    b.destroyFeatures();
+    var c = a.features;
+    if (c && 0 < c.length) {
+      var d = b.projection,
+        e = b.map.getProjectionObject();
+      if (!e.equals(d))
+        for (var f, g = 0, h = c.length; g < h; ++g) (f = c[g].geometry) && f.transform(d, e);
+      b.addFeatures(c);
+    }
+    b.events.triggerEvent("loadend", { response: a });
+  },
+  CLASS_NAME: "OpenLayers.Strategy.Fixed",
+});
+OpenLayers.Control.Zoom = OpenLayers.Class(OpenLayers.Control, {
+  zoomInText: "+",
+  zoomInId: "olZoomInLink",
+  zoomOutText: "\u2212",
+  zoomOutId: "olZoomOutLink",
+  draw: function () {
+    var a = OpenLayers.Control.prototype.draw.apply(this),
+      b = this.getOrCreateLinks(a),
+      c = b.zoomIn,
+      b = b.zoomOut,
+      d = this.map.events;
+    b.parentNode !== a && ((d = this.events), d.attachToElement(b.parentNode));
+    d.register("buttonclick", this, this.onZoomClick);
+    this.zoomInLink = c;
+    this.zoomOutLink = b;
+    return a;
+  },
+  getOrCreateLinks: function (a) {
+    var b = document.getElementById(this.zoomInId),
+      c = document.getElementById(this.zoomOutId);
+    b ||
+      ((b = document.createElement("a")),
+      (b.href = "#zoomIn"),
+      b.appendChild(document.createTextNode(this.zoomInText)),
+      (b.className = "olControlZoomIn"),
+      a.appendChild(b));
+    OpenLayers.Element.addClass(b, "olButton");
+    c ||
+      ((c = document.createElement("a")),
+      (c.href = "#zoomOut"),
+      c.appendChild(document.createTextNode(this.zoomOutText)),
+      (c.className = "olControlZoomOut"),
+      a.appendChild(c));
+    OpenLayers.Element.addClass(c, "olButton");
+    return { zoomIn: b, zoomOut: c };
+  },
+  onZoomClick: function (a) {
+    a = a.buttonElement;
+    a === this.zoomInLink ? this.map.zoomIn() : a === this.zoomOutLink && this.map.zoomOut();
+  },
+  destroy: function () {
+    this.map && this.map.events.unregister("buttonclick", this, this.onZoomClick);
+    delete this.zoomInLink;
+    delete this.zoomOutLink;
+    OpenLayers.Control.prototype.destroy.apply(this);
+  },
+  CLASS_NAME: "OpenLayers.Control.Zoom",
+});
+OpenLayers.Layer.PointTrack = OpenLayers.Class(OpenLayers.Layer.Vector, {
+  dataFrom: null,
+  styleFrom: null,
+  addNodes: function (a, b) {
+    if (2 > a.length)
+      throw Error("At least two point features have to be added to create a line from");
+    for (var c = Array(a.length - 1), d, e, f, g = 0, h = a.length; g < h; g++) {
+      d = a[g];
+      f = d.geometry;
+      if (!f) (f = d.lonlat), (f = new OpenLayers.Geometry.Point(f.lon, f.lat));
+      else if ("OpenLayers.Geometry.Point" != f.CLASS_NAME)
+        throw new TypeError("Only features with point geometries are supported.");
+      if (0 < g) {
+        d =
+          null != this.dataFrom
+            ? a[g + this.dataFrom].data || a[g + this.dataFrom].attributes
+            : null;
+        var k = null != this.styleFrom ? a[g + this.styleFrom].style : null;
+        e = new OpenLayers.Geometry.LineString([e, f]);
+        c[g - 1] = new OpenLayers.Feature.Vector(e, d, k);
+      }
+      e = f;
+    }
+    this.addFeatures(c, b);
+  },
+  CLASS_NAME: "OpenLayers.Layer.PointTrack",
+});
+OpenLayers.Layer.PointTrack.SOURCE_NODE = -1;
+OpenLayers.Layer.PointTrack.TARGET_NODE = 0;
+OpenLayers.Layer.PointTrack.dataFrom = { SOURCE_NODE: -1, TARGET_NODE: 0 };
+OpenLayers.Protocol.WFS = function (a) {
+  a = OpenLayers.Util.applyDefaults(a, OpenLayers.Protocol.WFS.DEFAULTS);
+  var b = OpenLayers.Protocol.WFS["v" + a.version.replace(/\./g, "_")];
+  if (!b) throw "Unsupported WFS version: " + a.version;
+  return new b(a);
+};
+OpenLayers.Protocol.WFS.fromWMSLayer = function (a, b) {
+  var c, d;
+  c = a.params.LAYERS;
+  c = (OpenLayers.Util.isArray(c) ? c[0] : c).split(":");
+  1 < c.length && (d = c[0]);
+  c = c.pop();
+  d = {
+    url: a.url,
+    featureType: c,
+    featurePrefix: d,
+    srsName:
+      (a.projection && a.projection.getCode()) || (a.map && a.map.getProjectionObject().getCode()),
+    version: "1.1.0",
+  };
+  return new OpenLayers.Protocol.WFS(OpenLayers.Util.applyDefaults(b, d));
+};
+OpenLayers.Protocol.WFS.DEFAULTS = { version: "1.0.0" };
+OpenLayers.Layer.Markers = OpenLayers.Class(OpenLayers.Layer, {
+  isBaseLayer: !1,
+  markers: null,
+  drawn: !1,
+  initialize: function (a, b) {
+    OpenLayers.Layer.prototype.initialize.apply(this, arguments);
+    this.markers = [];
+  },
+  destroy: function () {
+    this.clearMarkers();
+    this.markers = null;
+    OpenLayers.Layer.prototype.destroy.apply(this, arguments);
+  },
+  setOpacity: function (a) {
+    if (a != this.opacity) {
+      this.opacity = a;
+      a = 0;
+      for (var b = this.markers.length; a < b; a++) this.markers[a].setOpacity(this.opacity);
+    }
+  },
+  moveTo: function (a, b, c) {
+    OpenLayers.Layer.prototype.moveTo.apply(this, arguments);
+    if (b || !this.drawn) {
+      for (var d = 0, e = this.markers.length; d < e; d++) this.drawMarker(this.markers[d]);
+      this.drawn = !0;
+    }
+  },
+  addMarker: function (a) {
+    this.markers.push(a);
+    1 > this.opacity && a.setOpacity(this.opacity);
+    this.map && this.map.getExtent() && ((a.map = this.map), this.drawMarker(a));
+  },
+  removeMarker: function (a) {
+    this.markers && this.markers.length && (OpenLayers.Util.removeItem(this.markers, a), a.erase());
+  },
+  clearMarkers: function () {
+    if (null != this.markers) for (; 0 < this.markers.length; ) this.removeMarker(this.markers[0]);
+  },
+  drawMarker: function (a) {
+    var b = this.map.getLayerPxFromLonLat(a.lonlat);
+    null == b
+      ? a.display(!1)
+      : a.isDrawn()
+      ? a.icon && a.icon.moveTo(b)
+      : ((a = a.draw(b)), this.div.appendChild(a));
+  },
+  getDataExtent: function () {
+    var a = null;
+    if (this.markers && 0 < this.markers.length)
+      for (var a = new OpenLayers.Bounds(), b = 0, c = this.markers.length; b < c; b++)
+        a.extend(this.markers[b].lonlat);
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Layer.Markers",
+});
+OpenLayers.Control.Pan = OpenLayers.Class(OpenLayers.Control.Button, {
+  slideFactor: 50,
+  slideRatio: null,
+  direction: null,
+  initialize: function (a, b) {
+    this.direction = a;
+    this.CLASS_NAME += this.direction;
+    OpenLayers.Control.prototype.initialize.apply(this, [b]);
+  },
+  trigger: function () {
+    if (this.map) {
+      var a = OpenLayers.Function.bind(function (a) {
+        return this.slideRatio ? this.map.getSize()[a] * this.slideRatio : this.slideFactor;
+      }, this);
+      switch (this.direction) {
+        case OpenLayers.Control.Pan.NORTH:
+          this.map.pan(0, -a("h"));
+          break;
+        case OpenLayers.Control.Pan.SOUTH:
+          this.map.pan(0, a("h"));
+          break;
+        case OpenLayers.Control.Pan.WEST:
+          this.map.pan(-a("w"), 0);
+          break;
+        case OpenLayers.Control.Pan.EAST:
+          this.map.pan(a("w"), 0);
+      }
+    }
+  },
+  CLASS_NAME: "OpenLayers.Control.Pan",
+});
+OpenLayers.Control.Pan.NORTH = "North";
+OpenLayers.Control.Pan.SOUTH = "South";
+OpenLayers.Control.Pan.EAST = "East";
+OpenLayers.Control.Pan.WEST = "West";
+OpenLayers.Format.CSWGetDomain = function (a) {
+  a = OpenLayers.Util.applyDefaults(a, OpenLayers.Format.CSWGetDomain.DEFAULTS);
+  var b = OpenLayers.Format.CSWGetDomain["v" + a.version.replace(/\./g, "_")];
+  if (!b) throw "Unsupported CSWGetDomain version: " + a.version;
+  return new b(a);
+};
+OpenLayers.Format.CSWGetDomain.DEFAULTS = { version: "2.0.2" };
+OpenLayers.Format.CSWGetDomain.v2_0_2 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+    csw: "http://www.opengis.net/cat/csw/2.0.2",
+  },
+  defaultPrefix: "csw",
+  version: "2.0.2",
+  schemaLocation:
+    "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",
+  PropertyName: null,
+  ParameterName: null,
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    this.readNode(a, b);
+    return b;
+  },
+  readers: {
+    csw: {
+      GetDomainResponse: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      DomainValues: function (a, b) {
+        OpenLayers.Util.isArray(b.DomainValues) || (b.DomainValues = []);
+        for (var c = a.attributes, d = {}, e = 0, f = c.length; e < f; ++e)
+          d[c[e].name] = c[e].nodeValue;
+        this.readChildNodes(a, d);
+        b.DomainValues.push(d);
+      },
+      PropertyName: function (a, b) {
+        b.PropertyName = this.getChildValue(a);
+      },
+      ParameterName: function (a, b) {
+        b.ParameterName = this.getChildValue(a);
+      },
+      ListOfValues: function (a, b) {
+        OpenLayers.Util.isArray(b.ListOfValues) || (b.ListOfValues = []);
+        this.readChildNodes(a, b.ListOfValues);
+      },
+      Value: function (a, b) {
+        for (var c = a.attributes, d = {}, e = 0, f = c.length; e < f; ++e)
+          d[c[e].name] = c[e].nodeValue;
+        d.value = this.getChildValue(a);
+        b.push({ Value: d });
+      },
+      ConceptualScheme: function (a, b) {
+        b.ConceptualScheme = {};
+        this.readChildNodes(a, b.ConceptualScheme);
+      },
+      Name: function (a, b) {
+        b.Name = this.getChildValue(a);
+      },
+      Document: function (a, b) {
+        b.Document = this.getChildValue(a);
+      },
+      Authority: function (a, b) {
+        b.Authority = this.getChildValue(a);
+      },
+      RangeOfValues: function (a, b) {
+        b.RangeOfValues = {};
+        this.readChildNodes(a, b.RangeOfValues);
+      },
+      MinValue: function (a, b) {
+        for (var c = a.attributes, d = {}, e = 0, f = c.length; e < f; ++e)
+          d[c[e].name] = c[e].nodeValue;
+        d.value = this.getChildValue(a);
+        b.MinValue = d;
+      },
+      MaxValue: function (a, b) {
+        for (var c = a.attributes, d = {}, e = 0, f = c.length; e < f; ++e)
+          d[c[e].name] = c[e].nodeValue;
+        d.value = this.getChildValue(a);
+        b.MaxValue = d;
+      },
+    },
+  },
+  write: function (a) {
+    a = this.writeNode("csw:GetDomain", a);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [a]);
+  },
+  writers: {
+    csw: {
+      GetDomain: function (a) {
+        var b = this.createElementNSPlus("csw:GetDomain", {
+          attributes: { service: "CSW", version: this.version },
+        });
+        a.PropertyName || this.PropertyName
+          ? this.writeNode("csw:PropertyName", a.PropertyName || this.PropertyName, b)
+          : (a.ParameterName || this.ParameterName) &&
+            this.writeNode("csw:ParameterName", a.ParameterName || this.ParameterName, b);
+        this.readChildNodes(b, a);
+        return b;
+      },
+      PropertyName: function (a) {
+        return this.createElementNSPlus("csw:PropertyName", { value: a });
+      },
+      ParameterName: function (a) {
+        return this.createElementNSPlus("csw:ParameterName", { value: a });
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.CSWGetDomain.v2_0_2",
+});
+OpenLayers.Format.ArcXML.Features = OpenLayers.Class(OpenLayers.Format.XML, {
+  read: function (a) {
+    return new OpenLayers.Format.ArcXML().read(a).features.feature;
+  },
+});
+OpenLayers.Control.Snapping = OpenLayers.Class(OpenLayers.Control, {
+  DEFAULTS: { tolerance: 10, node: !0, edge: !0, vertex: !0 },
+  greedy: !0,
+  precedence: ["node", "vertex", "edge"],
+  resolution: null,
+  geoToleranceCache: null,
+  layer: null,
+  feature: null,
+  point: null,
+  initialize: function (a) {
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+    this.options = a || {};
+    this.options.layer && this.setLayer(this.options.layer);
+    a = OpenLayers.Util.extend({}, this.options.defaults);
+    this.defaults = OpenLayers.Util.applyDefaults(a, this.DEFAULTS);
+    this.setTargets(this.options.targets);
+    0 === this.targets.length && this.layer && this.addTargetLayer(this.layer);
+    this.geoToleranceCache = {};
+  },
+  setLayer: function (a) {
+    this.active ? (this.deactivate(), (this.layer = a), this.activate()) : (this.layer = a);
+  },
+  setTargets: function (a) {
+    this.targets = [];
+    if (a && a.length)
+      for (var b, c = 0, d = a.length; c < d; ++c)
+        (b = a[c]),
+          b instanceof OpenLayers.Layer.Vector ? this.addTargetLayer(b) : this.addTarget(b);
+  },
+  addTargetLayer: function (a) {
+    this.addTarget({ layer: a });
+  },
+  addTarget: function (a) {
+    a = OpenLayers.Util.applyDefaults(a, this.defaults);
+    a.nodeTolerance = a.nodeTolerance || a.tolerance;
+    a.vertexTolerance = a.vertexTolerance || a.tolerance;
+    a.edgeTolerance = a.edgeTolerance || a.tolerance;
+    this.targets.push(a);
+  },
+  removeTargetLayer: function (a) {
+    for (var b, c = this.targets.length - 1; 0 <= c; --c)
+      (b = this.targets[c]), b.layer === a && this.removeTarget(b);
+  },
+  removeTarget: function (a) {
+    return OpenLayers.Util.removeItem(this.targets, a);
+  },
+  activate: function () {
+    var a = OpenLayers.Control.prototype.activate.call(this);
+    if (a && this.layer && this.layer.events)
+      this.layer.events.on({
+        sketchstarted: this.onSketchModified,
+        sketchmodified: this.onSketchModified,
+        vertexmodified: this.onVertexModified,
+        scope: this,
+      });
+    return a;
+  },
+  deactivate: function () {
+    var a = OpenLayers.Control.prototype.deactivate.call(this);
+    a &&
+      this.layer &&
+      this.layer.events &&
+      this.layer.events.un({
+        sketchstarted: this.onSketchModified,
+        sketchmodified: this.onSketchModified,
+        vertexmodified: this.onVertexModified,
+        scope: this,
+      });
+    this.point = this.feature = null;
+    return a;
+  },
+  onSketchModified: function (a) {
+    this.feature = a.feature;
+    this.considerSnapping(a.vertex, a.vertex);
+  },
+  onVertexModified: function (a) {
+    this.feature = a.feature;
+    var b = this.layer.map.getLonLatFromViewPortPx(a.pixel);
+    this.considerSnapping(a.vertex, new OpenLayers.Geometry.Point(b.lon, b.lat));
+  },
+  considerSnapping: function (a, b) {
+    for (
+      var c = { rank: Number.POSITIVE_INFINITY, dist: Number.POSITIVE_INFINITY, x: null, y: null },
+        d = !1,
+        e,
+        f,
+        g = 0,
+        h = this.targets.length;
+      g < h;
+      ++g
+    )
+      if (((f = this.targets[g]), (e = this.testTarget(f, b))))
+        if (this.greedy) {
+          c = e;
+          c.target = f;
+          d = !0;
+          break;
+        } else if (e.rank < c.rank || (e.rank === c.rank && e.dist < c.dist))
+          (c = e), (c.target = f), (d = !0);
+    d &&
+      (!1 !==
+      this.events.triggerEvent("beforesnap", {
+        point: a,
+        x: c.x,
+        y: c.y,
+        distance: c.dist,
+        layer: c.target.layer,
+        snapType: this.precedence[c.rank],
+      })
+        ? ((a.x = c.x),
+          (a.y = c.y),
+          (this.point = a),
+          this.events.triggerEvent("snap", {
+            point: a,
+            snapType: this.precedence[c.rank],
+            layer: c.target.layer,
+            distance: c.dist,
+          }))
+        : (d = !1));
+    this.point &&
+      !d &&
+      ((a.x = b.x),
+      (a.y = b.y),
+      (this.point = null),
+      this.events.triggerEvent("unsnap", { point: a }));
+  },
+  testTarget: function (a, b) {
+    var c = this.layer.map.getResolution();
+    if (
+      ("minResolution" in a && c < a.minResolution) ||
+      ("maxResolution" in a && c >= a.maxResolution)
+    )
+      return null;
+    for (
+      var c = {
+          node: this.getGeoTolerance(a.nodeTolerance, c),
+          vertex: this.getGeoTolerance(a.vertexTolerance, c),
+          edge: this.getGeoTolerance(a.edgeTolerance, c),
+        },
+        d = Math.max(c.node, c.vertex, c.edge),
+        e = { rank: Number.POSITIVE_INFINITY, dist: Number.POSITIVE_INFINITY },
+        f = !1,
+        g = a.layer.features,
+        h,
+        k,
+        l,
+        m,
+        n,
+        p,
+        q = this.precedence.length,
+        r = new OpenLayers.LonLat(b.x, b.y),
+        s = 0,
+        t = g.length;
+      s < t;
+      ++s
+    )
+      if (
+        ((h = g[s]),
+        h !== this.feature &&
+          !h._sketch &&
+          h.state !== OpenLayers.State.DELETE &&
+          (!a.filter || a.filter.evaluate(h)) &&
+          h.atPoint(r, d, d))
+      )
+        for (var u = 0, v = Math.min(e.rank + 1, q); u < v; ++u)
+          if (((k = this.precedence[u]), a[k]))
+            if ("edge" === k) {
+              if (
+                ((l = h.geometry.distanceTo(b, { details: !0 })),
+                (n = l.distance),
+                n <= c[k] && n < e.dist)
+              ) {
+                e = { rank: u, dist: n, x: l.x0, y: l.y0 };
+                f = !0;
+                break;
+              }
+            } else {
+              l = h.geometry.getVertices("node" === k);
+              p = !1;
+              for (var w = 0, x = l.length; w < x; ++w)
+                (m = l[w]),
+                  (n = m.distanceTo(b)),
+                  n <= c[k] &&
+                    (u < e.rank || (u === e.rank && n < e.dist)) &&
+                    ((e = { rank: u, dist: n, x: m.x, y: m.y }), (p = f = !0));
+              if (p) break;
+            }
+    return f ? e : null;
+  },
+  getGeoTolerance: function (a, b) {
+    b !== this.resolution && ((this.resolution = b), (this.geoToleranceCache = {}));
+    var c = this.geoToleranceCache[a];
+    void 0 === c && ((c = a * b), (this.geoToleranceCache[a] = c));
+    return c;
+  },
+  destroy: function () {
+    this.active && this.deactivate();
+    delete this.layer;
+    delete this.targets;
+    OpenLayers.Control.prototype.destroy.call(this);
+  },
+  CLASS_NAME: "OpenLayers.Control.Snapping",
+});
+OpenLayers.Format.OWSCommon.v1_1_0 = OpenLayers.Class(OpenLayers.Format.OWSCommon.v1, {
+  namespaces: { ows: "http://www.opengis.net/ows/1.1", xlink: "http://www.w3.org/1999/xlink" },
+  readers: {
+    ows: OpenLayers.Util.applyDefaults(
+      {
+        ExceptionReport: function (a, b) {
+          b.exceptionReport = {
+            version: a.getAttribute("version"),
+            language: a.getAttribute("xml:lang"),
+            exceptions: [],
+          };
+          this.readChildNodes(a, b.exceptionReport);
+        },
+        AllowedValues: function (a, b) {
+          b.allowedValues = {};
+          this.readChildNodes(a, b.allowedValues);
+        },
+        AnyValue: function (a, b) {
+          b.anyValue = !0;
+        },
+        DataType: function (a, b) {
+          b.dataType = this.getChildValue(a);
+        },
+        Range: function (a, b) {
+          b.range = {};
+          this.readChildNodes(a, b.range);
+        },
+        MinimumValue: function (a, b) {
+          b.minValue = this.getChildValue(a);
+        },
+        MaximumValue: function (a, b) {
+          b.maxValue = this.getChildValue(a);
+        },
+        Identifier: function (a, b) {
+          b.identifier = this.getChildValue(a);
+        },
+        SupportedCRS: function (a, b) {
+          b.supportedCRS = this.getChildValue(a);
+        },
+      },
+      OpenLayers.Format.OWSCommon.v1.prototype.readers.ows
+    ),
+  },
+  writers: {
+    ows: OpenLayers.Util.applyDefaults(
+      {
+        Range: function (a) {
+          var b = this.createElementNSPlus("ows:Range", {
+            attributes: { "ows:rangeClosure": a.closure },
+          });
+          this.writeNode("ows:MinimumValue", a.minValue, b);
+          this.writeNode("ows:MaximumValue", a.maxValue, b);
+          return b;
+        },
+        MinimumValue: function (a) {
+          return this.createElementNSPlus("ows:MinimumValue", { value: a });
+        },
+        MaximumValue: function (a) {
+          return this.createElementNSPlus("ows:MaximumValue", { value: a });
+        },
+        Value: function (a) {
+          return this.createElementNSPlus("ows:Value", { value: a });
+        },
+      },
+      OpenLayers.Format.OWSCommon.v1.prototype.writers.ows
+    ),
+  },
+  CLASS_NAME: "OpenLayers.Format.OWSCommon.v1_1_0",
+});
+OpenLayers.Format.WCSGetCoverage = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    ows: "http://www.opengis.net/ows/1.1",
+    wcs: "http://www.opengis.net/wcs/1.1",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  VERSION: "1.1.2",
+  schemaLocation:
+    "http://www.opengis.net/wcs/1.1 http://schemas.opengis.net/wcs/1.1/wcsGetCoverage.xsd",
+  write: function (a) {
+    a = this.writeNode("wcs:GetCoverage", a);
+    this.setAttributeNS(a, this.namespaces.xsi, "xsi:schemaLocation", this.schemaLocation);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [a]);
+  },
+  writers: {
+    wcs: {
+      GetCoverage: function (a) {
+        var b = this.createElementNSPlus("wcs:GetCoverage", {
+          attributes: { version: a.version || this.VERSION, service: "WCS" },
+        });
+        this.writeNode("ows:Identifier", a.identifier, b);
+        this.writeNode("wcs:DomainSubset", a.domainSubset, b);
+        this.writeNode("wcs:Output", a.output, b);
+        return b;
+      },
+      DomainSubset: function (a) {
+        var b = this.createElementNSPlus("wcs:DomainSubset", {});
+        this.writeNode("ows:BoundingBox", a.boundingBox, b);
+        a.temporalSubset && this.writeNode("wcs:TemporalSubset", a.temporalSubset, b);
+        return b;
+      },
+      TemporalSubset: function (a) {
+        for (
+          var b = this.createElementNSPlus("wcs:TemporalSubset", {}),
+            c = 0,
+            d = a.timePeriods.length;
+          c < d;
+          ++c
+        )
+          this.writeNode("wcs:TimePeriod", a.timePeriods[c], b);
+        return b;
+      },
+      TimePeriod: function (a) {
+        var b = this.createElementNSPlus("wcs:TimePeriod", {});
+        this.writeNode("wcs:BeginPosition", a.begin, b);
+        this.writeNode("wcs:EndPosition", a.end, b);
+        a.resolution && this.writeNode("wcs:TimeResolution", a.resolution, b);
+        return b;
+      },
+      BeginPosition: function (a) {
+        return this.createElementNSPlus("wcs:BeginPosition", { value: a });
+      },
+      EndPosition: function (a) {
+        return this.createElementNSPlus("wcs:EndPosition", { value: a });
+      },
+      TimeResolution: function (a) {
+        return this.createElementNSPlus("wcs:TimeResolution", { value: a });
+      },
+      Output: function (a) {
+        var b = this.createElementNSPlus("wcs:Output", {
+          attributes: { format: a.format, store: a.store },
+        });
+        a.gridCRS && this.writeNode("wcs:GridCRS", a.gridCRS, b);
+        return b;
+      },
+      GridCRS: function (a) {
+        var b = this.createElementNSPlus("wcs:GridCRS", {});
+        this.writeNode("wcs:GridBaseCRS", a.baseCRS, b);
+        a.type && this.writeNode("wcs:GridType", a.type, b);
+        a.origin && this.writeNode("wcs:GridOrigin", a.origin, b);
+        this.writeNode("wcs:GridOffsets", a.offsets, b);
+        a.CS && this.writeNode("wcs:GridCS", a.CS, b);
+        return b;
+      },
+      GridBaseCRS: function (a) {
+        return this.createElementNSPlus("wcs:GridBaseCRS", { value: a });
+      },
+      GridOrigin: function (a) {
+        return this.createElementNSPlus("wcs:GridOrigin", { value: a });
+      },
+      GridType: function (a) {
+        return this.createElementNSPlus("wcs:GridType", { value: a });
+      },
+      GridOffsets: function (a) {
+        return this.createElementNSPlus("wcs:GridOffsets", { value: a });
+      },
+      GridCS: function (a) {
+        return this.createElementNSPlus("wcs:GridCS", { value: a });
+      },
+    },
+    ows: OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows,
+  },
+  CLASS_NAME: "OpenLayers.Format.WCSGetCoverage",
+});
+OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: { kml: "http://www.opengis.net/kml/2.2", gx: "http://www.google.com/kml/ext/2.2" },
+  kmlns: "http://earth.google.com/kml/2.0",
+  placemarksDesc: "No description available",
+  foldersName: "OpenLayers export",
+  foldersDesc: "Exported on " + new Date(),
+  extractAttributes: !0,
+  kvpAttributes: !1,
+  extractStyles: !1,
+  extractTracks: !1,
+  trackAttributes: null,
+  internalns: null,
+  features: null,
+  styles: null,
+  styleBaseUrl: "",
+  fetched: null,
+  maxDepth: 0,
+  initialize: function (a) {
+    this.regExes = {
+      trimSpace: /^\s*|\s*$/g,
+      removeSpace: /\s*/g,
+      splitSpace: /\s+/,
+      trimComma: /\s*,\s*/g,
+      kmlColor: /(\w{2})(\w{2})(\w{2})(\w{2})/,
+      kmlIconPalette: /root:\/\/icons\/palette-(\d+)(\.\w+)/,
+      straightBracket: /\$\[(.*?)\]/g,
+    };
+    this.externalProjection = new OpenLayers.Projection("EPSG:4326");
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    this.features = [];
+    this.styles = {};
+    this.fetched = {};
+    return this.parseData(a, { depth: 0, styleBaseUrl: this.styleBaseUrl });
+  },
+  parseData: function (a, b) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    for (
+      var c = ["Link", "NetworkLink", "Style", "StyleMap", "Placemark"], d = 0, e = c.length;
+      d < e;
+      ++d
+    ) {
+      var f = c[d],
+        g = this.getElementsByTagNameNS(a, "*", f);
+      if (0 != g.length)
+        switch (f.toLowerCase()) {
+          case "link":
+          case "networklink":
+            this.parseLinks(g, b);
+            break;
+          case "style":
+            this.extractStyles && this.parseStyles(g, b);
+            break;
+          case "stylemap":
+            this.extractStyles && this.parseStyleMaps(g, b);
+            break;
+          case "placemark":
+            this.parseFeatures(g, b);
+        }
+    }
+    return this.features;
+  },
+  parseLinks: function (a, b) {
+    if (b.depth >= this.maxDepth) return !1;
+    var c = OpenLayers.Util.extend({}, b);
+    c.depth++;
+    for (var d = 0, e = a.length; d < e; d++) {
+      var f = this.parseProperty(a[d], "*", "href");
+      f &&
+        !this.fetched[f] &&
+        ((this.fetched[f] = !0), (f = this.fetchLink(f)) && this.parseData(f, c));
+    }
+  },
+  fetchLink: function (a) {
+    if ((a = OpenLayers.Request.GET({ url: a, async: !1 }))) return a.responseText;
+  },
+  parseStyles: function (a, b) {
+    for (var c = 0, d = a.length; c < d; c++) {
+      var e = this.parseStyle(a[c]);
+      e && (this.styles[(b.styleBaseUrl || "") + "#" + e.id] = e);
+    }
+  },
+  parseKmlColor: function (a) {
+    var b = null;
+    a &&
+      (a = a.match(this.regExes.kmlColor)) &&
+      (b = { color: "#" + a[4] + a[3] + a[2], opacity: parseInt(a[1], 16) / 255 });
+    return b;
+  },
+  parseStyle: function (a) {
+    for (
+      var b = {},
+        c = ["LineStyle", "PolyStyle", "IconStyle", "BalloonStyle", "LabelStyle"],
+        d,
+        e,
+        f = 0,
+        g = c.length;
+      f < g;
+      ++f
+    )
+      if (((d = c[f]), (e = this.getElementsByTagNameNS(a, "*", d)[0])))
+        switch (d.toLowerCase()) {
+          case "linestyle":
+            d = this.parseProperty(e, "*", "color");
+            if ((d = this.parseKmlColor(d)))
+              (b.strokeColor = d.color), (b.strokeOpacity = d.opacity);
+            (d = this.parseProperty(e, "*", "width")) && (b.strokeWidth = d);
+            break;
+          case "polystyle":
+            d = this.parseProperty(e, "*", "color");
+            if ((d = this.parseKmlColor(d))) (b.fillOpacity = d.opacity), (b.fillColor = d.color);
+            "0" == this.parseProperty(e, "*", "fill") && (b.fillColor = "none");
+            "0" == this.parseProperty(e, "*", "outline") && (b.strokeWidth = "0");
+            break;
+          case "iconstyle":
+            var h = parseFloat(this.parseProperty(e, "*", "scale") || 1);
+            d = 32 * h;
+            var k = 32 * h,
+              l = this.getElementsByTagNameNS(e, "*", "Icon")[0];
+            if (l) {
+              var m = this.parseProperty(l, "*", "href");
+              if (m) {
+                var n = this.parseProperty(l, "*", "w"),
+                  p = this.parseProperty(l, "*", "h");
+                !OpenLayers.String.startsWith(m, "http://maps.google.com/mapfiles/kml") ||
+                  n ||
+                  p ||
+                  ((p = n = 64), (h /= 2));
+                n = n || p;
+                p = p || n;
+                n && (d = parseInt(n) * h);
+                p && (k = parseInt(p) * h);
+                if ((p = m.match(this.regExes.kmlIconPalette)))
+                  (n = p[1]),
+                    (p = p[2]),
+                    (m = this.parseProperty(l, "*", "x")),
+                    (l = this.parseProperty(l, "*", "y")),
+                    (m =
+                      "http://maps.google.com/mapfiles/kml/pal" +
+                      n +
+                      "/icon" +
+                      (8 * (l ? 7 - l / 32 : 7) + (m ? m / 32 : 0)) +
+                      p);
+                b.graphicOpacity = 1;
+                b.externalGraphic = m;
+              }
+            }
+            if ((e = this.getElementsByTagNameNS(e, "*", "hotSpot")[0]))
+              (m = parseFloat(e.getAttribute("x"))),
+                (l = parseFloat(e.getAttribute("y"))),
+                (n = e.getAttribute("xunits")),
+                "pixels" == n
+                  ? (b.graphicXOffset = -m * h)
+                  : "insetPixels" == n
+                  ? (b.graphicXOffset = -d + m * h)
+                  : "fraction" == n && (b.graphicXOffset = -d * m),
+                (e = e.getAttribute("yunits")),
+                "pixels" == e
+                  ? (b.graphicYOffset = -k + l * h + 1)
+                  : "insetPixels" == e
+                  ? (b.graphicYOffset = -(l * h) + 1)
+                  : "fraction" == e && (b.graphicYOffset = -k * (1 - l) + 1);
+            b.graphicWidth = d;
+            b.graphicHeight = k;
+            break;
+          case "balloonstyle":
+            (e = OpenLayers.Util.getXmlNodeValue(e)) &&
+              (b.balloonStyle = e.replace(this.regExes.straightBracket, "${$1}"));
+            break;
+          case "labelstyle":
+            if (((d = this.parseProperty(e, "*", "color")), (d = this.parseKmlColor(d))))
+              (b.fontColor = d.color), (b.fontOpacity = d.opacity);
+        }
+    !b.strokeColor && b.fillColor && (b.strokeColor = b.fillColor);
+    (a = a.getAttribute("id")) && b && (b.id = a);
+    return b;
+  },
+  parseStyleMaps: function (a, b) {
+    for (var c = 0, d = a.length; c < d; c++)
+      for (
+        var e = a[c],
+          f = this.getElementsByTagNameNS(e, "*", "Pair"),
+          e = e.getAttribute("id"),
+          g = 0,
+          h = f.length;
+        g < h;
+        g++
+      ) {
+        var k = f[g],
+          l = this.parseProperty(k, "*", "key");
+        (k = this.parseProperty(k, "*", "styleUrl")) &&
+          "normal" == l &&
+          (this.styles[(b.styleBaseUrl || "") + "#" + e] = this.styles[(b.styleBaseUrl || "") + k]);
+      }
+  },
+  parseFeatures: function (a, b) {
+    for (var c = [], d = 0, e = a.length; d < e; d++) {
+      var f = a[d],
+        g = this.parseFeature.apply(this, [f]);
+      if (g) {
+        this.extractStyles &&
+          g.attributes &&
+          g.attributes.styleUrl &&
+          (g.style = this.getStyle(g.attributes.styleUrl, b));
+        if (this.extractStyles) {
+          var h = this.getElementsByTagNameNS(f, "*", "Style")[0];
+          h && (h = this.parseStyle(h)) && (g.style = OpenLayers.Util.extend(g.style, h));
+        }
+        this.extractTracks
+          ? (f = this.getElementsByTagNameNS(f, this.namespaces.gx, "Track")) &&
+            0 < f.length &&
+            ((g = { features: [], feature: g }),
+            this.readNode(f[0], g),
+            0 < g.features.length && c.push.apply(c, g.features))
+          : c.push(g);
+      } else throw "Bad Placemark: " + d;
+    }
+    this.features = this.features.concat(c);
+  },
+  readers: {
+    kml: {
+      when: function (a, b) {
+        b.whens.push(OpenLayers.Date.parse(this.getChildValue(a)));
+      },
+      _trackPointAttribute: function (a, b) {
+        var c = a.nodeName.split(":").pop();
+        b.attributes[c].push(this.getChildValue(a));
+      },
+    },
+    gx: {
+      Track: function (a, b) {
+        var c = { whens: [], points: [], angles: [] };
+        if (this.trackAttributes) {
+          var d;
+          c.attributes = {};
+          for (var e = 0, f = this.trackAttributes.length; e < f; ++e)
+            (d = this.trackAttributes[e]),
+              (c.attributes[d] = []),
+              d in this.readers.kml ||
+                (this.readers.kml[d] = this.readers.kml._trackPointAttribute);
+        }
+        this.readChildNodes(a, c);
+        if (c.whens.length !== c.points.length)
+          throw Error(
+            "gx:Track with unequal number of when (" +
+              c.whens.length +
+              ") and gx:coord (" +
+              c.points.length +
+              ") elements."
+          );
+        var g = 0 < c.angles.length;
+        if (g && c.whens.length !== c.angles.length)
+          throw Error(
+            "gx:Track with unequal number of when (" +
+              c.whens.length +
+              ") and gx:angles (" +
+              c.angles.length +
+              ") elements."
+          );
+        for (var h, e = 0, f = c.whens.length; e < f; ++e) {
+          h = b.feature.clone();
+          h.fid = b.feature.fid || b.feature.id;
+          d = c.points[e];
+          h.geometry = d;
+          "z" in d && (h.attributes.altitude = d.z);
+          this.internalProjection &&
+            this.externalProjection &&
+            h.geometry.transform(this.externalProjection, this.internalProjection);
+          if (this.trackAttributes)
+            for (var k = 0, l = this.trackAttributes.length; k < l; ++k)
+              (d = this.trackAttributes[k]), (h.attributes[d] = c.attributes[d][e]);
+          h.attributes.when = c.whens[e];
+          h.attributes.trackId = b.feature.id;
+          g &&
+            ((d = c.angles[e]),
+            (h.attributes.heading = parseFloat(d[0])),
+            (h.attributes.tilt = parseFloat(d[1])),
+            (h.attributes.roll = parseFloat(d[2])));
+          b.features.push(h);
+        }
+      },
+      coord: function (a, b) {
+        var c = this.getChildValue(a).replace(this.regExes.trimSpace, "").split(/\s+/),
+          d = new OpenLayers.Geometry.Point(c[0], c[1]);
+        2 < c.length && (d.z = parseFloat(c[2]));
+        b.points.push(d);
+      },
+      angles: function (a, b) {
+        var c = this.getChildValue(a).replace(this.regExes.trimSpace, "").split(/\s+/);
+        b.angles.push(c);
+      },
+    },
+  },
+  parseFeature: function (a) {
+    for (
+      var b = ["MultiGeometry", "Polygon", "LineString", "Point"], c, d, e, f = 0, g = b.length;
+      f < g;
+      ++f
+    )
+      if (
+        ((c = b[f]),
+        (this.internalns = a.namespaceURI ? a.namespaceURI : this.kmlns),
+        (d = this.getElementsByTagNameNS(a, this.internalns, c)),
+        0 < d.length)
+      ) {
+        if ((b = this.parseGeometry[c.toLowerCase()]))
+          (e = b.apply(this, [d[0]])),
+            this.internalProjection &&
+              this.externalProjection &&
+              e.transform(this.externalProjection, this.internalProjection);
+        else throw new TypeError("Unsupported geometry type: " + c);
+        break;
+      }
+    var h;
+    this.extractAttributes && (h = this.parseAttributes(a));
+    c = new OpenLayers.Feature.Vector(e, h);
+    a = a.getAttribute("id") || a.getAttribute("name");
+    null != a && (c.fid = a);
+    return c;
+  },
+  getStyle: function (a, b) {
+    var c = OpenLayers.Util.removeTail(a),
+      d = OpenLayers.Util.extend({}, b);
+    d.depth++;
+    d.styleBaseUrl = c;
+    !this.styles[a] &&
+      !OpenLayers.String.startsWith(a, "#") &&
+      d.depth <= this.maxDepth &&
+      !this.fetched[c] &&
+      (c = this.fetchLink(c)) &&
+      this.parseData(c, d);
+    return OpenLayers.Util.extend({}, this.styles[a]);
+  },
+  parseGeometry: {
+    point: function (a) {
+      var b = this.getElementsByTagNameNS(a, this.internalns, "coordinates");
+      a = [];
+      if (0 < b.length) {
+        var c = b[0].firstChild.nodeValue,
+          c = c.replace(this.regExes.removeSpace, "");
+        a = c.split(",");
+      }
+      b = null;
+      if (1 < a.length)
+        2 == a.length && (a[2] = null), (b = new OpenLayers.Geometry.Point(a[0], a[1], a[2]));
+      else throw "Bad coordinate string: " + c;
+      return b;
+    },
+    linestring: function (a, b) {
+      var c = this.getElementsByTagNameNS(a, this.internalns, "coordinates"),
+        d = null;
+      if (0 < c.length) {
+        for (
+          var c = this.getChildValue(c[0]),
+            c = c.replace(this.regExes.trimSpace, ""),
+            c = c.replace(this.regExes.trimComma, ","),
+            d = c.split(this.regExes.splitSpace),
+            e = d.length,
+            f = Array(e),
+            g,
+            h,
+            k = 0;
+          k < e;
+          ++k
+        )
+          if (((g = d[k].split(",")), (h = g.length), 1 < h))
+            2 == g.length && (g[2] = null),
+              (f[k] = new OpenLayers.Geometry.Point(g[0], g[1], g[2]));
+          else throw "Bad LineString point coordinates: " + d[k];
+        if (e)
+          d = b ? new OpenLayers.Geometry.LinearRing(f) : new OpenLayers.Geometry.LineString(f);
+        else throw "Bad LineString coordinates: " + c;
+      }
+      return d;
+    },
+    polygon: function (a) {
+      a = this.getElementsByTagNameNS(a, this.internalns, "LinearRing");
+      var b = a.length,
+        c = Array(b);
+      if (0 < b)
+        for (var d = 0, e = a.length; d < e; ++d)
+          if ((b = this.parseGeometry.linestring.apply(this, [a[d], !0]))) c[d] = b;
+          else throw "Bad LinearRing geometry: " + d;
+      return new OpenLayers.Geometry.Polygon(c);
+    },
+    multigeometry: function (a) {
+      for (var b, c = [], d = a.childNodes, e = 0, f = d.length; e < f; ++e)
+        (a = d[e]),
+          1 == a.nodeType &&
+            ((b = a.prefix ? a.nodeName.split(":")[1] : a.nodeName),
+            (b = this.parseGeometry[b.toLowerCase()]) && c.push(b.apply(this, [a])));
+      return new OpenLayers.Geometry.Collection(c);
+    },
+  },
+  parseAttributes: function (a) {
+    var b = {},
+      c = a.getElementsByTagName("ExtendedData");
+    c.length && (b = this.parseExtendedData(c[0]));
+    var d, e, f;
+    a = a.childNodes;
+    for (var c = 0, g = a.length; c < g; ++c)
+      if (((d = a[c]), 1 == d.nodeType && ((e = d.childNodes), 1 <= e.length && 3 >= e.length))) {
+        switch (e.length) {
+          case 1:
+            f = e[0];
+            break;
+          case 2:
+            f = e[0];
+            e = e[1];
+            f = 3 == f.nodeType || 4 == f.nodeType ? f : e;
+            break;
+          default:
+            f = e[1];
+        }
+        if (3 == f.nodeType || 4 == f.nodeType)
+          if (
+            ((d = d.prefix ? d.nodeName.split(":")[1] : d.nodeName),
+            (f = OpenLayers.Util.getXmlNodeValue(f)))
+          )
+            (f = f.replace(this.regExes.trimSpace, "")), (b[d] = f);
+      }
+    return b;
+  },
+  parseExtendedData: function (a) {
+    var b = {},
+      c,
+      d,
+      e,
+      f,
+      g = a.getElementsByTagName("Data");
+    c = 0;
+    for (d = g.length; c < d; c++) {
+      e = g[c];
+      f = e.getAttribute("name");
+      var h = {},
+        k = e.getElementsByTagName("value");
+      k.length && (h.value = this.getChildValue(k[0]));
+      this.kvpAttributes
+        ? (b[f] = h.value)
+        : ((e = e.getElementsByTagName("displayName")),
+          e.length && (h.displayName = this.getChildValue(e[0])),
+          (b[f] = h));
+    }
+    a = a.getElementsByTagName("SimpleData");
+    c = 0;
+    for (d = a.length; c < d; c++)
+      (h = {}),
+        (e = a[c]),
+        (f = e.getAttribute("name")),
+        (h.value = this.getChildValue(e)),
+        this.kvpAttributes ? (b[f] = h.value) : ((h.displayName = f), (b[f] = h));
+    return b;
+  },
+  parseProperty: function (a, b, c) {
+    var d;
+    a = this.getElementsByTagNameNS(a, b, c);
+    try {
+      d = OpenLayers.Util.getXmlNodeValue(a[0]);
+    } catch (e) {
+      d = null;
+    }
+    return d;
+  },
+  write: function (a) {
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    for (
+      var b = this.createElementNS(this.kmlns, "kml"),
+        c = this.createFolderXML(),
+        d = 0,
+        e = a.length;
+      d < e;
+      ++d
+    )
+      c.appendChild(this.createPlacemarkXML(a[d]));
+    b.appendChild(c);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [b]);
+  },
+  createFolderXML: function () {
+    var a = this.createElementNS(this.kmlns, "Folder");
+    if (this.foldersName) {
+      var b = this.createElementNS(this.kmlns, "name"),
+        c = this.createTextNode(this.foldersName);
+      b.appendChild(c);
+      a.appendChild(b);
+    }
+    this.foldersDesc &&
+      ((b = this.createElementNS(this.kmlns, "description")),
+      (c = this.createTextNode(this.foldersDesc)),
+      b.appendChild(c),
+      a.appendChild(b));
+    return a;
+  },
+  createPlacemarkXML: function (a) {
+    var b = this.createElementNS(this.kmlns, "name"),
+      c = a.style && a.style.label ? a.style.label : a.id;
+    b.appendChild(this.createTextNode(a.attributes.name || c));
+    var d = this.createElementNS(this.kmlns, "description");
+    d.appendChild(this.createTextNode(a.attributes.description || this.placemarksDesc));
+    c = this.createElementNS(this.kmlns, "Placemark");
+    null != a.fid && c.setAttribute("id", a.fid);
+    c.appendChild(b);
+    c.appendChild(d);
+    b = this.buildGeometryNode(a.geometry);
+    c.appendChild(b);
+    a.attributes && (a = this.buildExtendedData(a.attributes)) && c.appendChild(a);
+    return c;
+  },
+  buildGeometryNode: function (a) {
+    var b = a.CLASS_NAME,
+      b = b.substring(b.lastIndexOf(".") + 1),
+      b = this.buildGeometry[b.toLowerCase()],
+      c = null;
+    b && (c = b.apply(this, [a]));
+    return c;
+  },
+  buildGeometry: {
+    point: function (a) {
+      var b = this.createElementNS(this.kmlns, "Point");
+      b.appendChild(this.buildCoordinatesNode(a));
+      return b;
+    },
+    multipoint: function (a) {
+      return this.buildGeometry.collection.apply(this, [a]);
+    },
+    linestring: function (a) {
+      var b = this.createElementNS(this.kmlns, "LineString");
+      b.appendChild(this.buildCoordinatesNode(a));
+      return b;
+    },
+    multilinestring: function (a) {
+      return this.buildGeometry.collection.apply(this, [a]);
+    },
+    linearring: function (a) {
+      var b = this.createElementNS(this.kmlns, "LinearRing");
+      b.appendChild(this.buildCoordinatesNode(a));
+      return b;
+    },
+    polygon: function (a) {
+      var b = this.createElementNS(this.kmlns, "Polygon");
+      a = a.components;
+      for (var c, d, e = 0, f = a.length; e < f; ++e)
+        (c = 0 == e ? "outerBoundaryIs" : "innerBoundaryIs"),
+          (c = this.createElementNS(this.kmlns, c)),
+          (d = this.buildGeometry.linearring.apply(this, [a[e]])),
+          c.appendChild(d),
+          b.appendChild(c);
+      return b;
+    },
+    multipolygon: function (a) {
+      return this.buildGeometry.collection.apply(this, [a]);
+    },
+    collection: function (a) {
+      for (
+        var b = this.createElementNS(this.kmlns, "MultiGeometry"),
+          c,
+          d = 0,
+          e = a.components.length;
+        d < e;
+        ++d
+      )
+        (c = this.buildGeometryNode.apply(this, [a.components[d]])) && b.appendChild(c);
+      return b;
+    },
+  },
+  buildCoordinatesNode: function (a) {
+    var b = this.createElementNS(this.kmlns, "coordinates"),
+      c;
+    if ((c = a.components)) {
+      for (var d = c.length, e = Array(d), f = 0; f < d; ++f)
+        (a = c[f]), (e[f] = this.buildCoordinates(a));
+      c = e.join(" ");
+    } else c = this.buildCoordinates(a);
+    c = this.createTextNode(c);
+    b.appendChild(c);
+    return b;
+  },
+  buildCoordinates: function (a) {
+    this.internalProjection &&
+      this.externalProjection &&
+      ((a = a.clone()), a.transform(this.internalProjection, this.externalProjection));
+    return a.x + "," + a.y;
+  },
+  buildExtendedData: function (a) {
+    var b = this.createElementNS(this.kmlns, "ExtendedData"),
+      c;
+    for (c in a)
+      if (a[c] && "name" != c && "description" != c && "styleUrl" != c) {
+        var d = this.createElementNS(this.kmlns, "Data");
+        d.setAttribute("name", c);
+        var e = this.createElementNS(this.kmlns, "value");
+        if ("object" == typeof a[c]) {
+          if ((a[c].value && e.appendChild(this.createTextNode(a[c].value)), a[c].displayName)) {
+            var f = this.createElementNS(this.kmlns, "displayName");
+            f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));
+            d.appendChild(f);
+          }
+        } else e.appendChild(this.createTextNode(a[c]));
+        d.appendChild(e);
+        b.appendChild(d);
+      }
+    return this.isSimpleContent(b) ? null : b;
+  },
+  CLASS_NAME: "OpenLayers.Format.KML",
+});
+OpenLayers.Format.WMSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.1.1",
+  profile: null,
+  CLASS_NAME: "OpenLayers.Format.WMSCapabilities",
+});
+OpenLayers.Format.WMSCapabilities.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    wms: "http://www.opengis.net/wms",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  defaultPrefix: "wms",
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    var b = a;
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var c = {};
+    this.readNode(a, c);
+    void 0 === c.service &&
+      ((a = new OpenLayers.Format.OGCExceptionReport()), (c.error = a.read(b)));
+    return c;
+  },
+  readers: {
+    wms: {
+      Service: function (a, b) {
+        b.service = {};
+        this.readChildNodes(a, b.service);
+      },
+      Name: function (a, b) {
+        b.name = this.getChildValue(a);
+      },
+      Title: function (a, b) {
+        b.title = this.getChildValue(a);
+      },
+      Abstract: function (a, b) {
+        b["abstract"] = this.getChildValue(a);
+      },
+      BoundingBox: function (a, b) {
+        var c = {};
+        c.bbox = [
+          parseFloat(a.getAttribute("minx")),
+          parseFloat(a.getAttribute("miny")),
+          parseFloat(a.getAttribute("maxx")),
+          parseFloat(a.getAttribute("maxy")),
+        ];
+        var d = { x: parseFloat(a.getAttribute("resx")), y: parseFloat(a.getAttribute("resy")) };
+        (isNaN(d.x) && isNaN(d.y)) || (c.res = d);
+        return c;
+      },
+      OnlineResource: function (a, b) {
+        b.href = this.getAttributeNS(a, this.namespaces.xlink, "href");
+      },
+      ContactInformation: function (a, b) {
+        b.contactInformation = {};
+        this.readChildNodes(a, b.contactInformation);
+      },
+      ContactPersonPrimary: function (a, b) {
+        b.personPrimary = {};
+        this.readChildNodes(a, b.personPrimary);
+      },
+      ContactPerson: function (a, b) {
+        b.person = this.getChildValue(a);
+      },
+      ContactOrganization: function (a, b) {
+        b.organization = this.getChildValue(a);
+      },
+      ContactPosition: function (a, b) {
+        b.position = this.getChildValue(a);
+      },
+      ContactAddress: function (a, b) {
+        b.contactAddress = {};
+        this.readChildNodes(a, b.contactAddress);
+      },
+      AddressType: function (a, b) {
+        b.type = this.getChildValue(a);
+      },
+      Address: function (a, b) {
+        b.address = this.getChildValue(a);
+      },
+      City: function (a, b) {
+        b.city = this.getChildValue(a);
+      },
+      StateOrProvince: function (a, b) {
+        b.stateOrProvince = this.getChildValue(a);
+      },
+      PostCode: function (a, b) {
+        b.postcode = this.getChildValue(a);
+      },
+      Country: function (a, b) {
+        b.country = this.getChildValue(a);
+      },
+      ContactVoiceTelephone: function (a, b) {
+        b.phone = this.getChildValue(a);
+      },
+      ContactFacsimileTelephone: function (a, b) {
+        b.fax = this.getChildValue(a);
+      },
+      ContactElectronicMailAddress: function (a, b) {
+        b.email = this.getChildValue(a);
+      },
+      Fees: function (a, b) {
+        var c = this.getChildValue(a);
+        c && "none" != c.toLowerCase() && (b.fees = c);
+      },
+      AccessConstraints: function (a, b) {
+        var c = this.getChildValue(a);
+        c && "none" != c.toLowerCase() && (b.accessConstraints = c);
+      },
+      Capability: function (a, b) {
+        b.capability = { nestedLayers: [], layers: [] };
+        this.readChildNodes(a, b.capability);
+      },
+      Request: function (a, b) {
+        b.request = {};
+        this.readChildNodes(a, b.request);
+      },
+      GetCapabilities: function (a, b) {
+        b.getcapabilities = { formats: [] };
+        this.readChildNodes(a, b.getcapabilities);
+      },
+      Format: function (a, b) {
+        OpenLayers.Util.isArray(b.formats)
+          ? b.formats.push(this.getChildValue(a))
+          : (b.format = this.getChildValue(a));
+      },
+      DCPType: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      HTTP: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      Get: function (a, b) {
+        b.get = {};
+        this.readChildNodes(a, b.get);
+        b.href || (b.href = b.get.href);
+      },
+      Post: function (a, b) {
+        b.post = {};
+        this.readChildNodes(a, b.post);
+        b.href || (b.href = b.get.href);
+      },
+      GetMap: function (a, b) {
+        b.getmap = { formats: [] };
+        this.readChildNodes(a, b.getmap);
+      },
+      GetFeatureInfo: function (a, b) {
+        b.getfeatureinfo = { formats: [] };
+        this.readChildNodes(a, b.getfeatureinfo);
+      },
+      Exception: function (a, b) {
+        b.exception = { formats: [] };
+        this.readChildNodes(a, b.exception);
+      },
+      Layer: function (a, b) {
+        var c, d;
+        b.capability ? ((d = b.capability), (c = b)) : (d = b);
+        var e = a.getAttributeNode("queryable"),
+          f = e && e.specified ? a.getAttribute("queryable") : null,
+          g =
+            (e = a.getAttributeNode("cascaded")) && e.specified ? a.getAttribute("cascaded") : null,
+          e = (e = a.getAttributeNode("opaque")) && e.specified ? a.getAttribute("opaque") : null,
+          h = a.getAttribute("noSubsets"),
+          k = a.getAttribute("fixedWidth"),
+          l = a.getAttribute("fixedHeight"),
+          m = c || {},
+          n = OpenLayers.Util.extend;
+        c = {
+          nestedLayers: [],
+          styles: c ? [].concat(c.styles) : [],
+          srs: c ? n({}, m.srs) : {},
+          metadataURLs: [],
+          bbox: c ? n({}, m.bbox) : {},
+          llbbox: m.llbbox,
+          dimensions: c ? n({}, m.dimensions) : {},
+          authorityURLs: c ? n({}, m.authorityURLs) : {},
+          identifiers: {},
+          keywords: [],
+          queryable: f && "" !== f ? "1" === f || "true" === f : m.queryable || !1,
+          cascaded: null !== g ? parseInt(g) : m.cascaded || 0,
+          opaque: e ? "1" === e || "true" === e : m.opaque || !1,
+          noSubsets: null !== h ? "1" === h || "true" === h : m.noSubsets || !1,
+          fixedWidth: null != k ? parseInt(k) : m.fixedWidth || 0,
+          fixedHeight: null != l ? parseInt(l) : m.fixedHeight || 0,
+          minScale: m.minScale,
+          maxScale: m.maxScale,
+          attribution: m.attribution,
+        };
+        b.nestedLayers.push(c);
+        c.capability = d;
+        this.readChildNodes(a, c);
+        delete c.capability;
+        c.name &&
+          ((f = c.name.split(":")),
+          (g = d.request),
+          (e = g.getfeatureinfo),
+          0 < f.length && (c.prefix = f[0]),
+          d.layers.push(c),
+          void 0 === c.formats && (c.formats = g.getmap.formats),
+          void 0 === c.infoFormats && e && (c.infoFormats = e.formats));
+      },
+      Attribution: function (a, b) {
+        b.attribution = {};
+        this.readChildNodes(a, b.attribution);
+      },
+      LogoURL: function (a, b) {
+        b.logo = { width: a.getAttribute("width"), height: a.getAttribute("height") };
+        this.readChildNodes(a, b.logo);
+      },
+      Style: function (a, b) {
+        var c = {};
+        b.styles.push(c);
+        this.readChildNodes(a, c);
+      },
+      LegendURL: function (a, b) {
+        var c = { width: a.getAttribute("width"), height: a.getAttribute("height") };
+        b.legend = c;
+        this.readChildNodes(a, c);
+      },
+      MetadataURL: function (a, b) {
+        var c = { type: a.getAttribute("type") };
+        b.metadataURLs.push(c);
+        this.readChildNodes(a, c);
+      },
+      DataURL: function (a, b) {
+        b.dataURL = {};
+        this.readChildNodes(a, b.dataURL);
+      },
+      FeatureListURL: function (a, b) {
+        b.featureListURL = {};
+        this.readChildNodes(a, b.featureListURL);
+      },
+      AuthorityURL: function (a, b) {
+        var c = a.getAttribute("name"),
+          d = {};
+        this.readChildNodes(a, d);
+        b.authorityURLs[c] = d.href;
+      },
+      Identifier: function (a, b) {
+        var c = a.getAttribute("authority");
+        b.identifiers[c] = this.getChildValue(a);
+      },
+      KeywordList: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      SRS: function (a, b) {
+        b.srs[this.getChildValue(a)] = !0;
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1",
+});
+OpenLayers.Format.WMSCapabilities.v1_1 = OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1, {
+  readers: {
+    wms: OpenLayers.Util.applyDefaults(
+      {
+        WMT_MS_Capabilities: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        Keyword: function (a, b) {
+          b.keywords && b.keywords.push(this.getChildValue(a));
+        },
+        DescribeLayer: function (a, b) {
+          b.describelayer = { formats: [] };
+          this.readChildNodes(a, b.describelayer);
+        },
+        GetLegendGraphic: function (a, b) {
+          b.getlegendgraphic = { formats: [] };
+          this.readChildNodes(a, b.getlegendgraphic);
+        },
+        GetStyles: function (a, b) {
+          b.getstyles = { formats: [] };
+          this.readChildNodes(a, b.getstyles);
+        },
+        PutStyles: function (a, b) {
+          b.putstyles = { formats: [] };
+          this.readChildNodes(a, b.putstyles);
+        },
+        UserDefinedSymbolization: function (a, b) {
+          var c = {
+            supportSLD: 1 == parseInt(a.getAttribute("SupportSLD")),
+            userLayer: 1 == parseInt(a.getAttribute("UserLayer")),
+            userStyle: 1 == parseInt(a.getAttribute("UserStyle")),
+            remoteWFS: 1 == parseInt(a.getAttribute("RemoteWFS")),
+          };
+          b.userSymbols = c;
+        },
+        LatLonBoundingBox: function (a, b) {
+          b.llbbox = [
+            parseFloat(a.getAttribute("minx")),
+            parseFloat(a.getAttribute("miny")),
+            parseFloat(a.getAttribute("maxx")),
+            parseFloat(a.getAttribute("maxy")),
+          ];
+        },
+        BoundingBox: function (a, b) {
+          var c = OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(
+            this,
+            [a, b]
+          );
+          c.srs = a.getAttribute("SRS");
+          b.bbox[c.srs] = c;
+        },
+        ScaleHint: function (a, b) {
+          var c = a.getAttribute("min"),
+            d = a.getAttribute("max"),
+            e = Math.pow(2, 0.5),
+            f = OpenLayers.INCHES_PER_UNIT.m;
+          0 != c &&
+            (b.maxScale = parseFloat(((c / e) * f * OpenLayers.DOTS_PER_INCH).toPrecision(13)));
+          d != Number.POSITIVE_INFINITY &&
+            (b.minScale = parseFloat(((d / e) * f * OpenLayers.DOTS_PER_INCH).toPrecision(13)));
+        },
+        Dimension: function (a, b) {
+          var c = {
+            name: a.getAttribute("name").toLowerCase(),
+            units: a.getAttribute("units"),
+            unitsymbol: a.getAttribute("unitSymbol"),
+          };
+          b.dimensions[c.name] = c;
+        },
+        Extent: function (a, b) {
+          var c = a.getAttribute("name").toLowerCase();
+          if (c in b.dimensions) {
+            c = b.dimensions[c];
+            c.nearestVal = "1" === a.getAttribute("nearestValue");
+            c.multipleVal = "1" === a.getAttribute("multipleValues");
+            c.current = "1" === a.getAttribute("current");
+            c["default"] = a.getAttribute("default") || "";
+            var d = this.getChildValue(a);
+            c.values = d.split(",");
+          }
+        },
+      },
+      OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms
+    ),
+  },
+  CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1_1",
+});
+OpenLayers.Format.WMSCapabilities.v1_1_0 = OpenLayers.Class(
+  OpenLayers.Format.WMSCapabilities.v1_1,
+  {
+    version: "1.1.0",
+    readers: {
+      wms: OpenLayers.Util.applyDefaults(
+        {
+          SRS: function (a, b) {
+            for (var c = this.getChildValue(a).split(/ +/), d = 0, e = c.length; d < e; d++)
+              b.srs[c[d]] = !0;
+          },
+        },
+        OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms
+      ),
+    },
+    CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1_1_0",
+  }
+);
+OpenLayers.Protocol.WFS.v1 = OpenLayers.Class(OpenLayers.Protocol, {
+  version: null,
+  srsName: "EPSG:4326",
+  featureType: null,
+  featureNS: null,
+  geometryName: "the_geom",
+  schema: null,
+  featurePrefix: "feature",
+  formatOptions: null,
+  readFormat: null,
+  readOptions: null,
+  initialize: function (a) {
+    OpenLayers.Protocol.prototype.initialize.apply(this, [a]);
+    a.format ||
+      (this.format = OpenLayers.Format.WFST(
+        OpenLayers.Util.extend(
+          {
+            version: this.version,
+            featureType: this.featureType,
+            featureNS: this.featureNS,
+            featurePrefix: this.featurePrefix,
+            geometryName: this.geometryName,
+            srsName: this.srsName,
+            schema: this.schema,
+          },
+          this.formatOptions
+        )
+      ));
+    !a.geometryName && 1 < parseFloat(this.format.version) && this.setGeometryName(null);
+  },
+  destroy: function () {
+    this.options && !this.options.format && this.format.destroy();
+    this.format = null;
+    OpenLayers.Protocol.prototype.destroy.apply(this);
+  },
+  read: function (a) {
+    OpenLayers.Protocol.prototype.read.apply(this, arguments);
+    a = OpenLayers.Util.extend({}, a);
+    OpenLayers.Util.applyDefaults(a, this.options || {});
+    var b = new OpenLayers.Protocol.Response({ requestType: "read" }),
+      c = OpenLayers.Format.XML.prototype.write.apply(this.format, [
+        this.format.writeNode("wfs:GetFeature", a),
+      ]);
+    b.priv = OpenLayers.Request.POST({
+      url: a.url,
+      callback: this.createCallback(this.handleRead, b, a),
+      params: a.params,
+      headers: a.headers,
+      data: c,
+    });
+    return b;
+  },
+  setFeatureType: function (a) {
+    this.featureType = a;
+    this.format.featureType = a;
+  },
+  setGeometryName: function (a) {
+    this.geometryName = a;
+    this.format.geometryName = a;
+  },
+  handleRead: function (a, b) {
+    b = OpenLayers.Util.extend({}, b);
+    OpenLayers.Util.applyDefaults(b, this.options);
+    if (b.callback) {
+      var c = a.priv;
+      200 <= c.status && 300 > c.status
+        ? (c = this.parseResponse(c, b.readOptions)) && !1 !== c.success
+          ? (b.readOptions && "object" == b.readOptions.output
+              ? OpenLayers.Util.extend(a, c)
+              : (a.features = c),
+            (a.code = OpenLayers.Protocol.Response.SUCCESS))
+          : ((a.code = OpenLayers.Protocol.Response.FAILURE), (a.error = c))
+        : (a.code = OpenLayers.Protocol.Response.FAILURE);
+      b.callback.call(b.scope, a);
+    }
+  },
+  parseResponse: function (a, b) {
+    var c = a.responseXML;
+    (c && c.documentElement) || (c = a.responseText);
+    if (!c || 0 >= c.length) return null;
+    c = null !== this.readFormat ? this.readFormat.read(c) : this.format.read(c, b);
+    if (!this.featureNS) {
+      var d = this.readFormat || this.format;
+      this.featureNS = d.featureNS;
+      d.autoConfig = !1;
+      this.geometryName || this.setGeometryName(d.geometryName);
+    }
+    return c;
+  },
+  commit: function (a, b) {
+    b = OpenLayers.Util.extend({}, b);
+    OpenLayers.Util.applyDefaults(b, this.options);
+    var c = new OpenLayers.Protocol.Response({ requestType: "commit", reqFeatures: a });
+    c.priv = OpenLayers.Request.POST({
+      url: b.url,
+      headers: b.headers,
+      data: this.format.write(a, b),
+      callback: this.createCallback(this.handleCommit, c, b),
+    });
+    return c;
+  },
+  handleCommit: function (a, b) {
+    if (b.callback) {
+      var c = a.priv,
+        d = c.responseXML;
+      (d && d.documentElement) || (d = c.responseText);
+      c = this.format.read(d) || {};
+      a.insertIds = c.insertIds || [];
+      c.success
+        ? (a.code = OpenLayers.Protocol.Response.SUCCESS)
+        : ((a.code = OpenLayers.Protocol.Response.FAILURE), (a.error = c));
+      b.callback.call(b.scope, a);
+    }
+  },
+  filterDelete: function (a, b) {
+    b = OpenLayers.Util.extend({}, b);
+    OpenLayers.Util.applyDefaults(b, this.options);
+    new OpenLayers.Protocol.Response({ requestType: "commit" });
+    var c = this.format.createElementNSPlus("wfs:Transaction", {
+        attributes: { service: "WFS", version: this.version },
+      }),
+      d = this.format.createElementNSPlus("wfs:Delete", {
+        attributes: { typeName: (b.featureNS ? this.featurePrefix + ":" : "") + b.featureType },
+      });
+    b.featureNS && d.setAttribute("xmlns:" + this.featurePrefix, b.featureNS);
+    var e = this.format.writeNode("ogc:Filter", a);
+    d.appendChild(e);
+    c.appendChild(d);
+    c = OpenLayers.Format.XML.prototype.write.apply(this.format, [c]);
+    return OpenLayers.Request.POST({
+      url: this.url,
+      callback: b.callback || function () {},
+      data: c,
+    });
+  },
+  abort: function (a) {
+    a && a.priv.abort();
+  },
+  CLASS_NAME: "OpenLayers.Protocol.WFS.v1",
+});
+OpenLayers.Handler.Feature = OpenLayers.Class(OpenLayers.Handler, {
+  EVENTMAP: {
+    click: { in: "click", out: "clickout" },
+    mousemove: { in: "over", out: "out" },
+    dblclick: { in: "dblclick", out: null },
+    mousedown: { in: null, out: null },
+    mouseup: { in: null, out: null },
+    touchstart: { in: "click", out: "clickout" },
+  },
+  feature: null,
+  lastFeature: null,
+  down: null,
+  up: null,
+  clickTolerance: 4,
+  geometryTypes: null,
+  stopClick: !0,
+  stopDown: !0,
+  stopUp: !1,
+  initialize: function (a, b, c, d) {
+    OpenLayers.Handler.prototype.initialize.apply(this, [a, c, d]);
+    this.layer = b;
+  },
+  touchstart: function (a) {
+    this.startTouch();
+    return OpenLayers.Event.isMultiTouch(a) ? !0 : this.mousedown(a);
+  },
+  touchmove: function (a) {
+    OpenLayers.Event.preventDefault(a);
+  },
+  mousedown: function (a) {
+    if (OpenLayers.Event.isLeftClick(a) || OpenLayers.Event.isSingleTouch(a)) this.down = a.xy;
+    return this.handle(a) ? !this.stopDown : !0;
+  },
+  mouseup: function (a) {
+    this.up = a.xy;
+    return this.handle(a) ? !this.stopUp : !0;
+  },
+  click: function (a) {
+    return this.handle(a) ? !this.stopClick : !0;
+  },
+  mousemove: function (a) {
+    if (!this.callbacks.over && !this.callbacks.out) return !0;
+    this.handle(a);
+    return !0;
+  },
+  dblclick: function (a) {
+    return !this.handle(a);
+  },
+  geometryTypeMatches: function (a) {
+    return (
+      null == this.geometryTypes ||
+      -1 < OpenLayers.Util.indexOf(this.geometryTypes, a.geometry.CLASS_NAME)
+    );
+  },
+  handle: function (a) {
+    this.feature && !this.feature.layer && (this.feature = null);
+    var b = a.type,
+      c = !1,
+      d = !!this.feature,
+      e = "click" == b || "dblclick" == b || "touchstart" == b;
+    (this.feature = this.layer.getFeatureFromEvent(a)) &&
+      !this.feature.layer &&
+      (this.feature = null);
+    this.lastFeature && !this.lastFeature.layer && (this.lastFeature = null);
+    this.feature
+      ? ("touchstart" === b && OpenLayers.Event.preventDefault(a),
+        (a = this.feature != this.lastFeature),
+        this.geometryTypeMatches(this.feature)
+          ? (d && a
+              ? (this.lastFeature && this.triggerCallback(b, "out", [this.lastFeature]),
+                this.triggerCallback(b, "in", [this.feature]))
+              : (d && !e) || this.triggerCallback(b, "in", [this.feature]),
+            (this.lastFeature = this.feature),
+            (c = !0))
+          : (this.lastFeature &&
+              ((d && a) || e) &&
+              this.triggerCallback(b, "out", [this.lastFeature]),
+            (this.feature = null)))
+      : this.lastFeature && (d || e) && this.triggerCallback(b, "out", [this.lastFeature]);
+    return c;
+  },
+  triggerCallback: function (a, b, c) {
+    if ((b = this.EVENTMAP[a][b]))
+      "click" == a && this.up && this.down
+        ? (Math.sqrt(Math.pow(this.up.x - this.down.x, 2) + Math.pow(this.up.y - this.down.y, 2)) <=
+            this.clickTolerance && this.callback(b, c),
+          (this.up = this.down = null))
+        : this.callback(b, c);
+  },
+  activate: function () {
+    var a = !1;
+    OpenLayers.Handler.prototype.activate.apply(this, arguments) &&
+      (this.moveLayerToTop(),
+      this.map.events.on({
+        removelayer: this.handleMapEvents,
+        changelayer: this.handleMapEvents,
+        scope: this,
+      }),
+      (a = !0));
+    return a;
+  },
+  deactivate: function () {
+    var a = !1;
+    OpenLayers.Handler.prototype.deactivate.apply(this, arguments) &&
+      (this.moveLayerBack(),
+      (this.up = this.down = this.lastFeature = this.feature = null),
+      this.map.events.un({
+        removelayer: this.handleMapEvents,
+        changelayer: this.handleMapEvents,
+        scope: this,
+      }),
+      (a = !0));
+    return a;
+  },
+  handleMapEvents: function (a) {
+    ("removelayer" != a.type && "order" != a.property) || this.moveLayerToTop();
+  },
+  moveLayerToTop: function () {
+    var a = Math.max(this.map.Z_INDEX_BASE.Feature - 1, this.layer.getZIndex()) + 1;
+    this.layer.setZIndex(a);
+  },
+  moveLayerBack: function () {
+    var a = this.layer.getZIndex() - 1;
+    a >= this.map.Z_INDEX_BASE.Feature
+      ? this.layer.setZIndex(a)
+      : this.map.setLayerZIndex(this.layer, this.map.getLayerIndex(this.layer));
+  },
+  CLASS_NAME: "OpenLayers.Handler.Feature",
+});
+OpenLayers.Layer.Vector.RootContainer = OpenLayers.Class(OpenLayers.Layer.Vector, {
+  displayInLayerSwitcher: !1,
+  layers: null,
+  display: function () {},
+  getFeatureFromEvent: function (a) {
+    for (var b = this.layers, c, d = 0; d < b.length; d++)
+      if ((c = b[d].getFeatureFromEvent(a))) return c;
+  },
+  setMap: function (a) {
+    OpenLayers.Layer.Vector.prototype.setMap.apply(this, arguments);
+    this.collectRoots();
+    a.events.register("changelayer", this, this.handleChangeLayer);
+  },
+  removeMap: function (a) {
+    a.events.unregister("changelayer", this, this.handleChangeLayer);
+    this.resetRoots();
+    OpenLayers.Layer.Vector.prototype.removeMap.apply(this, arguments);
+  },
+  collectRoots: function () {
+    for (var a, b = 0; b < this.map.layers.length; ++b)
+      (a = this.map.layers[b]),
+        -1 != OpenLayers.Util.indexOf(this.layers, a) && a.renderer.moveRoot(this.renderer);
+  },
+  resetRoots: function () {
+    for (var a, b = 0; b < this.layers.length; ++b)
+      (a = this.layers[b]),
+        this.renderer &&
+          a.renderer.getRenderLayerId() == this.id &&
+          this.renderer.moveRoot(a.renderer);
+  },
+  handleChangeLayer: function (a) {
+    var b = a.layer;
+    "order" == a.property &&
+      -1 != OpenLayers.Util.indexOf(this.layers, b) &&
+      (this.resetRoots(), this.collectRoots());
+  },
+  CLASS_NAME: "OpenLayers.Layer.Vector.RootContainer",
+});
+OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, {
+  multipleKey: null,
+  toggleKey: null,
+  multiple: !1,
+  clickout: !0,
+  toggle: !1,
+  hover: !1,
+  highlightOnly: !1,
+  box: !1,
+  onBeforeSelect: function () {},
+  onSelect: function () {},
+  onUnselect: function () {},
+  scope: null,
+  geometryTypes: null,
+  layer: null,
+  layers: null,
+  callbacks: null,
+  selectStyle: null,
+  renderIntent: "select",
+  handlers: null,
+  initialize: function (a, b) {
+    OpenLayers.Control.prototype.initialize.apply(this, [b]);
+    null === this.scope && (this.scope = this);
+    this.initLayer(a);
+    var c = { click: this.clickFeature, clickout: this.clickoutFeature };
+    this.hover && ((c.over = this.overFeature), (c.out = this.outFeature));
+    this.callbacks = OpenLayers.Util.extend(c, this.callbacks);
+    this.handlers = {
+      feature: new OpenLayers.Handler.Feature(this, this.layer, this.callbacks, {
+        geometryTypes: this.geometryTypes,
+      }),
+    };
+    this.box &&
+      (this.handlers.box = new OpenLayers.Handler.Box(
+        this,
+        { done: this.selectBox },
+        { boxDivClassName: "olHandlerBoxSelectFeature" }
+      ));
+  },
+  initLayer: function (a) {
+    OpenLayers.Util.isArray(a)
+      ? ((this.layers = a),
+        (this.layer = new OpenLayers.Layer.Vector.RootContainer(this.id + "_container", {
+          layers: a,
+        })))
+      : (this.layer = a);
+  },
+  destroy: function () {
+    this.active && this.layers && this.map.removeLayer(this.layer);
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+    this.layers && this.layer.destroy();
+  },
+  activate: function () {
+    this.active ||
+      (this.layers && this.map.addLayer(this.layer),
+      this.handlers.feature.activate(),
+      this.box && this.handlers.box && this.handlers.box.activate());
+    return OpenLayers.Control.prototype.activate.apply(this, arguments);
+  },
+  deactivate: function () {
+    this.active &&
+      (this.handlers.feature.deactivate(),
+      this.handlers.box && this.handlers.box.deactivate(),
+      this.layers && this.map.removeLayer(this.layer));
+    return OpenLayers.Control.prototype.deactivate.apply(this, arguments);
+  },
+  unselectAll: function (a) {
+    var b = this.layers || [this.layer],
+      c,
+      d,
+      e,
+      f;
+    for (e = 0; e < b.length; ++e)
+      if (((c = b[e]), (f = 0), null != c.selectedFeatures))
+        for (; c.selectedFeatures.length > f; )
+          (d = c.selectedFeatures[f]), a && a.except == d ? ++f : this.unselect(d);
+  },
+  clickFeature: function (a) {
+    this.hover ||
+      (-1 < OpenLayers.Util.indexOf(a.layer.selectedFeatures, a)
+        ? this.toggleSelect()
+          ? this.unselect(a)
+          : this.multipleSelect() || this.unselectAll({ except: a })
+        : (this.multipleSelect() || this.unselectAll({ except: a }), this.select(a)));
+  },
+  multipleSelect: function () {
+    return (
+      this.multiple || (this.handlers.feature.evt && this.handlers.feature.evt[this.multipleKey])
+    );
+  },
+  toggleSelect: function () {
+    return this.toggle || (this.handlers.feature.evt && this.handlers.feature.evt[this.toggleKey]);
+  },
+  clickoutFeature: function (a) {
+    !this.hover && this.clickout && this.unselectAll();
+  },
+  overFeature: function (a) {
+    var b = a.layer;
+    this.hover &&
+      (this.highlightOnly
+        ? this.highlight(a)
+        : -1 == OpenLayers.Util.indexOf(b.selectedFeatures, a) && this.select(a));
+  },
+  outFeature: function (a) {
+    if (this.hover)
+      if (this.highlightOnly) {
+        if (a._lastHighlighter == this.id)
+          if (a._prevHighlighter && a._prevHighlighter != this.id) {
+            delete a._lastHighlighter;
+            var b = this.map.getControl(a._prevHighlighter);
+            b && b.highlight(a);
+          } else this.unhighlight(a);
+      } else this.unselect(a);
+  },
+  highlight: function (a) {
+    var b = a.layer;
+    !1 !== this.events.triggerEvent("beforefeaturehighlighted", { feature: a }) &&
+      ((a._prevHighlighter = a._lastHighlighter),
+      (a._lastHighlighter = this.id),
+      b.drawFeature(a, this.selectStyle || this.renderIntent),
+      this.events.triggerEvent("featurehighlighted", { feature: a }));
+  },
+  unhighlight: function (a) {
+    var b = a.layer;
+    void 0 == a._prevHighlighter
+      ? delete a._lastHighlighter
+      : (a._prevHighlighter != this.id && (a._lastHighlighter = a._prevHighlighter),
+        delete a._prevHighlighter);
+    b.drawFeature(a, a.style || a.layer.style || "default");
+    this.events.triggerEvent("featureunhighlighted", { feature: a });
+  },
+  select: function (a) {
+    var b = this.onBeforeSelect.call(this.scope, a),
+      c = a.layer;
+    !1 !== b &&
+      ((b = c.events.triggerEvent("beforefeatureselected", { feature: a })),
+      !1 !== b &&
+        (c.selectedFeatures.push(a),
+        this.highlight(a),
+        this.handlers.feature.lastFeature ||
+          (this.handlers.feature.lastFeature = c.selectedFeatures[0]),
+        c.events.triggerEvent("featureselected", { feature: a }),
+        this.onSelect.call(this.scope, a)));
+  },
+  unselect: function (a) {
+    var b = a.layer;
+    this.unhighlight(a);
+    OpenLayers.Util.removeItem(b.selectedFeatures, a);
+    b.events.triggerEvent("featureunselected", { feature: a });
+    this.onUnselect.call(this.scope, a);
+  },
+  selectBox: function (a) {
+    if (a instanceof OpenLayers.Bounds) {
+      var b = this.map.getLonLatFromPixel({ x: a.left, y: a.bottom });
+      a = this.map.getLonLatFromPixel({ x: a.right, y: a.top });
+      b = new OpenLayers.Bounds(b.lon, b.lat, a.lon, a.lat);
+      this.multipleSelect() || this.unselectAll();
+      a = this.multiple;
+      this.multiple = !0;
+      var c = this.layers || [this.layer];
+      this.events.triggerEvent("boxselectionstart", { layers: c });
+      for (var d, e = 0; e < c.length; ++e) {
+        d = c[e];
+        for (var f = 0, g = d.features.length; f < g; ++f) {
+          var h = d.features[f];
+          h.getVisibility() &&
+            (null == this.geometryTypes ||
+              -1 < OpenLayers.Util.indexOf(this.geometryTypes, h.geometry.CLASS_NAME)) &&
+            b.toGeometry().intersects(h.geometry) &&
+            -1 == OpenLayers.Util.indexOf(d.selectedFeatures, h) &&
+            this.select(h);
+        }
+      }
+      this.multiple = a;
+      this.events.triggerEvent("boxselectionend", { layers: c });
+    }
+  },
+  setMap: function (a) {
+    this.handlers.feature.setMap(a);
+    this.box && this.handlers.box.setMap(a);
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+  },
+  setLayer: function (a) {
+    var b = this.active;
+    this.unselectAll();
+    this.deactivate();
+    this.layers && (this.layer.destroy(), (this.layers = null));
+    this.initLayer(a);
+    this.handlers.feature.layer = this.layer;
+    b && this.activate();
+  },
+  CLASS_NAME: "OpenLayers.Control.SelectFeature",
+});
+OpenLayers.Handler.Point = OpenLayers.Class(OpenLayers.Handler, {
+  point: null,
+  layer: null,
+  multi: !1,
+  citeCompliant: !1,
+  mouseDown: !1,
+  stoppedDown: null,
+  lastDown: null,
+  lastUp: null,
+  persist: !1,
+  stopDown: !1,
+  stopUp: !1,
+  layerOptions: null,
+  pixelTolerance: 5,
+  lastTouchPx: null,
+  initialize: function (a, b, c) {
+    (c && c.layerOptions && c.layerOptions.styleMap) ||
+      (this.style = OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"], {}));
+    OpenLayers.Handler.prototype.initialize.apply(this, arguments);
+  },
+  activate: function () {
+    if (!OpenLayers.Handler.prototype.activate.apply(this, arguments)) return !1;
+    var a = OpenLayers.Util.extend(
+      {
+        displayInLayerSwitcher: !1,
+        calculateInRange: OpenLayers.Function.True,
+        wrapDateLine: this.citeCompliant,
+      },
+      this.layerOptions
+    );
+    this.layer = new OpenLayers.Layer.Vector(this.CLASS_NAME, a);
+    this.map.addLayer(this.layer);
+    return !0;
+  },
+  createFeature: function (a) {
+    a = this.layer.getLonLatFromViewPortPx(a);
+    a = new OpenLayers.Geometry.Point(a.lon, a.lat);
+    this.point = new OpenLayers.Feature.Vector(a);
+    this.callback("create", [this.point.geometry, this.point]);
+    this.point.geometry.clearBounds();
+    this.layer.addFeatures([this.point], { silent: !0 });
+  },
+  deactivate: function () {
+    if (!OpenLayers.Handler.prototype.deactivate.apply(this, arguments)) return !1;
+    this.cancel();
+    null != this.layer.map && (this.destroyFeature(!0), this.layer.destroy(!1));
+    this.layer = null;
+    return !0;
+  },
+  destroyFeature: function (a) {
+    !this.layer || (!a && this.persist) || this.layer.destroyFeatures();
+    this.point = null;
+  },
+  destroyPersistedFeature: function () {
+    var a = this.layer;
+    a && 1 < a.features.length && this.layer.features[0].destroy();
+  },
+  finalize: function (a) {
+    this.mouseDown = !1;
+    this.lastTouchPx = this.lastUp = this.lastDown = null;
+    this.callback(a ? "cancel" : "done", [this.geometryClone()]);
+    this.destroyFeature(a);
+  },
+  cancel: function () {
+    this.finalize(!0);
+  },
+  click: function (a) {
+    OpenLayers.Event.stop(a);
+    return !1;
+  },
+  dblclick: function (a) {
+    OpenLayers.Event.stop(a);
+    return !1;
+  },
+  modifyFeature: function (a) {
+    this.point || this.createFeature(a);
+    a = this.layer.getLonLatFromViewPortPx(a);
+    this.point.geometry.x = a.lon;
+    this.point.geometry.y = a.lat;
+    this.callback("modify", [this.point.geometry, this.point, !1]);
+    this.point.geometry.clearBounds();
+    this.drawFeature();
+  },
+  drawFeature: function () {
+    this.layer.drawFeature(this.point, this.style);
+  },
+  getGeometry: function () {
+    var a = this.point && this.point.geometry;
+    a && this.multi && (a = new OpenLayers.Geometry.MultiPoint([a]));
+    return a;
+  },
+  geometryClone: function () {
+    var a = this.getGeometry();
+    return a && a.clone();
+  },
+  mousedown: function (a) {
+    return this.down(a);
+  },
+  touchstart: function (a) {
+    this.startTouch();
+    this.lastTouchPx = a.xy;
+    return this.down(a);
+  },
+  mousemove: function (a) {
+    return this.move(a);
+  },
+  touchmove: function (a) {
+    this.lastTouchPx = a.xy;
+    return this.move(a);
+  },
+  mouseup: function (a) {
+    return this.up(a);
+  },
+  touchend: function (a) {
+    a.xy = this.lastTouchPx;
+    return this.up(a);
+  },
+  down: function (a) {
+    this.mouseDown = !0;
+    this.lastDown = a.xy;
+    this.touch || this.modifyFeature(a.xy);
+    this.stoppedDown = this.stopDown;
+    return !this.stopDown;
+  },
+  move: function (a) {
+    this.touch || (this.mouseDown && !this.stoppedDown) || this.modifyFeature(a.xy);
+    return !0;
+  },
+  up: function (a) {
+    this.mouseDown = !1;
+    this.stoppedDown = this.stopDown;
+    if (
+      !this.checkModifiers(a) ||
+      (this.lastUp && this.lastUp.equals(a.xy)) ||
+      !this.lastDown ||
+      !this.passesTolerance(this.lastDown, a.xy, this.pixelTolerance)
+    )
+      return !0;
+    this.touch && this.modifyFeature(a.xy);
+    this.persist && this.destroyPersistedFeature();
+    this.lastUp = a.xy;
+    this.finalize();
+    return !this.stopUp;
+  },
+  mouseout: function (a) {
+    OpenLayers.Util.mouseLeft(a, this.map.viewPortDiv) &&
+      ((this.stoppedDown = this.stopDown), (this.mouseDown = !1));
+  },
+  passesTolerance: function (a, b, c) {
+    var d = !0;
+    null != c && a && b && a.distanceTo(b) > c && (d = !1);
+    return d;
+  },
+  CLASS_NAME: "OpenLayers.Handler.Point",
+});
+OpenLayers.Handler.Path = OpenLayers.Class(OpenLayers.Handler.Point, {
+  line: null,
+  maxVertices: null,
+  doubleTouchTolerance: 20,
+  freehand: !1,
+  freehandToggle: "shiftKey",
+  timerId: null,
+  redoStack: null,
+  createFeature: function (a) {
+    a = this.layer.getLonLatFromViewPortPx(a);
+    a = new OpenLayers.Geometry.Point(a.lon, a.lat);
+    this.point = new OpenLayers.Feature.Vector(a);
+    this.line = new OpenLayers.Feature.Vector(
+      new OpenLayers.Geometry.LineString([this.point.geometry])
+    );
+    this.callback("create", [this.point.geometry, this.getSketch()]);
+    this.point.geometry.clearBounds();
+    this.layer.addFeatures([this.line, this.point], { silent: !0 });
+  },
+  destroyFeature: function (a) {
+    OpenLayers.Handler.Point.prototype.destroyFeature.call(this, a);
+    this.line = null;
+  },
+  destroyPersistedFeature: function () {
+    var a = this.layer;
+    a && 2 < a.features.length && this.layer.features[0].destroy();
+  },
+  removePoint: function () {
+    this.point && this.layer.removeFeatures([this.point]);
+  },
+  addPoint: function (a) {
+    this.layer.removeFeatures([this.point]);
+    a = this.layer.getLonLatFromViewPortPx(a);
+    this.point = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a.lon, a.lat));
+    this.line.geometry.addComponent(this.point.geometry, this.line.geometry.components.length);
+    this.layer.addFeatures([this.point]);
+    this.callback("point", [this.point.geometry, this.getGeometry()]);
+    this.callback("modify", [this.point.geometry, this.getSketch()]);
+    this.drawFeature();
+    delete this.redoStack;
+  },
+  insertXY: function (a, b) {
+    this.line.geometry.addComponent(
+      new OpenLayers.Geometry.Point(a, b),
+      this.getCurrentPointIndex()
+    );
+    this.drawFeature();
+    delete this.redoStack;
+  },
+  insertDeltaXY: function (a, b) {
+    var c = this.getCurrentPointIndex() - 1,
+      c = this.line.geometry.components[c];
+    !c || isNaN(c.x) || isNaN(c.y) || this.insertXY(c.x + a, c.y + b);
+  },
+  insertDirectionLength: function (a, b) {
+    a *= Math.PI / 180;
+    var c = b * Math.cos(a),
+      d = b * Math.sin(a);
+    this.insertDeltaXY(c, d);
+  },
+  insertDeflectionLength: function (a, b) {
+    var c = this.getCurrentPointIndex() - 1;
+    if (0 < c) {
+      var d = this.line.geometry.components[c],
+        c = this.line.geometry.components[c - 1],
+        d = Math.atan2(d.y - c.y, d.x - c.x);
+      this.insertDirectionLength((180 * d) / Math.PI + a, b);
+    }
+  },
+  getCurrentPointIndex: function () {
+    return this.line.geometry.components.length - 1;
+  },
+  undo: function () {
+    var a = this.line.geometry,
+      b = a.components,
+      c = this.getCurrentPointIndex() - 1,
+      d = b[c],
+      e = a.removeComponent(d);
+    e &&
+      (this.touch &&
+        0 < c &&
+        ((b = a.components),
+        (a = b[c - 1]),
+        (c = this.getCurrentPointIndex()),
+        (b = b[c]),
+        (b.x = a.x),
+        (b.y = a.y)),
+      this.redoStack || (this.redoStack = []),
+      this.redoStack.push(d),
+      this.drawFeature());
+    return e;
+  },
+  redo: function () {
+    var a = this.redoStack && this.redoStack.pop();
+    a && (this.line.geometry.addComponent(a, this.getCurrentPointIndex()), this.drawFeature());
+    return !!a;
+  },
+  freehandMode: function (a) {
+    return this.freehandToggle && a[this.freehandToggle] ? !this.freehand : this.freehand;
+  },
+  modifyFeature: function (a, b) {
+    this.line || this.createFeature(a);
+    var c = this.layer.getLonLatFromViewPortPx(a);
+    this.point.geometry.x = c.lon;
+    this.point.geometry.y = c.lat;
+    this.callback("modify", [this.point.geometry, this.getSketch(), b]);
+    this.point.geometry.clearBounds();
+    this.drawFeature();
+  },
+  drawFeature: function () {
+    this.layer.drawFeature(this.line, this.style);
+    this.layer.drawFeature(this.point, this.style);
+  },
+  getSketch: function () {
+    return this.line;
+  },
+  getGeometry: function () {
+    var a = this.line && this.line.geometry;
+    a && this.multi && (a = new OpenLayers.Geometry.MultiLineString([a]));
+    return a;
+  },
+  touchstart: function (a) {
+    if (this.timerId && this.passesTolerance(this.lastTouchPx, a.xy, this.doubleTouchTolerance))
+      return this.finishGeometry(), window.clearTimeout(this.timerId), (this.timerId = null), !1;
+    this.timerId && (window.clearTimeout(this.timerId), (this.timerId = null));
+    this.timerId = window.setTimeout(
+      OpenLayers.Function.bind(function () {
+        this.timerId = null;
+      }, this),
+      300
+    );
+    return OpenLayers.Handler.Point.prototype.touchstart.call(this, a);
+  },
+  down: function (a) {
+    var b = this.stopDown;
+    this.freehandMode(a) &&
+      ((b = !0), this.touch && (this.modifyFeature(a.xy, !!this.lastUp), OpenLayers.Event.stop(a)));
+    this.touch ||
+      (this.lastDown && this.passesTolerance(this.lastDown, a.xy, this.pixelTolerance)) ||
+      this.modifyFeature(a.xy, !!this.lastUp);
+    this.mouseDown = !0;
+    this.lastDown = a.xy;
+    this.stoppedDown = b;
+    return !b;
+  },
+  move: function (a) {
+    if (this.stoppedDown && this.freehandMode(a))
+      return (
+        this.persist && this.destroyPersistedFeature(),
+        this.maxVertices && this.line && this.line.geometry.components.length === this.maxVertices
+          ? (this.removePoint(), this.finalize())
+          : this.addPoint(a.xy),
+        !1
+      );
+    this.touch || (this.mouseDown && !this.stoppedDown) || this.modifyFeature(a.xy, !!this.lastUp);
+    return !0;
+  },
+  up: function (a) {
+    !this.mouseDown ||
+      (this.lastUp && this.lastUp.equals(a.xy)) ||
+      (this.stoppedDown && this.freehandMode(a)
+        ? (this.persist && this.destroyPersistedFeature(), this.removePoint(), this.finalize())
+        : this.passesTolerance(this.lastDown, a.xy, this.pixelTolerance) &&
+          (this.touch && this.modifyFeature(a.xy),
+          null == this.lastUp && this.persist && this.destroyPersistedFeature(),
+          this.addPoint(a.xy),
+          (this.lastUp = a.xy),
+          this.line.geometry.components.length === this.maxVertices + 1 && this.finishGeometry()));
+    this.stoppedDown = this.stopDown;
+    this.mouseDown = !1;
+    return !this.stopUp;
+  },
+  finishGeometry: function () {
+    this.line.geometry.removeComponent(
+      this.line.geometry.components[this.line.geometry.components.length - 1]
+    );
+    this.removePoint();
+    this.finalize();
+  },
+  dblclick: function (a) {
+    this.freehandMode(a) || this.finishGeometry();
+    return !1;
+  },
+  CLASS_NAME: "OpenLayers.Handler.Path",
+});
+OpenLayers.Spherical = OpenLayers.Spherical || {};
+OpenLayers.Spherical.DEFAULT_RADIUS = 6378137;
+OpenLayers.Spherical.computeDistanceBetween = function (a, b, c) {
+  c = c || OpenLayers.Spherical.DEFAULT_RADIUS;
+  var d = Math.sin((Math.PI * (b.lon - a.lon)) / 360),
+    e = Math.sin((Math.PI * (b.lat - a.lat)) / 360);
+  a = e * e + d * d * Math.cos((Math.PI * a.lat) / 180) * Math.cos((Math.PI * b.lat) / 180);
+  return 2 * c * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+};
+OpenLayers.Spherical.computeHeading = function (a, b) {
+  var c = Math.sin((Math.PI * (a.lon - b.lon)) / 180) * Math.cos((Math.PI * b.lat) / 180),
+    d =
+      Math.cos((Math.PI * a.lat) / 180) * Math.sin((Math.PI * b.lat) / 180) -
+      Math.sin((Math.PI * a.lat) / 180) *
+        Math.cos((Math.PI * b.lat) / 180) *
+        Math.cos((Math.PI * (a.lon - b.lon)) / 180);
+  return (180 * Math.atan2(c, d)) / Math.PI;
+};
+OpenLayers.Control.CacheWrite = OpenLayers.Class(OpenLayers.Control, {
+  layers: null,
+  imageFormat: "image/png",
+  quotaRegEx: /quota/i,
+  setMap: function (a) {
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+    var b,
+      c = this.layers || a.layers;
+    for (b = c.length - 1; 0 <= b; --b) this.addLayer({ layer: c[b] });
+    if (!this.layers)
+      a.events.on({ addlayer: this.addLayer, removeLayer: this.removeLayer, scope: this });
+  },
+  addLayer: function (a) {
+    a.layer.events.on({
+      tileloadstart: this.makeSameOrigin,
+      tileloaded: this.onTileLoaded,
+      scope: this,
+    });
+  },
+  removeLayer: function (a) {
+    a.layer.events.un({
+      tileloadstart: this.makeSameOrigin,
+      tileloaded: this.onTileLoaded,
+      scope: this,
+    });
+  },
+  makeSameOrigin: function (a) {
+    if (
+      this.active &&
+      ((a = a.tile),
+      a instanceof OpenLayers.Tile.Image && !a.crossOriginKeyword && "data:" !== a.url.substr(0, 5))
+    ) {
+      var b = OpenLayers.Request.makeSameOrigin(a.url, OpenLayers.ProxyHost);
+      OpenLayers.Control.CacheWrite.urlMap[b] = a.url;
+      a.url = b;
+    }
+  },
+  onTileLoaded: function (a) {
+    this.active &&
+      !a.aborted &&
+      a.tile instanceof OpenLayers.Tile.Image &&
+      "data:" !== a.tile.url.substr(0, 5) &&
+      (this.cache({ tile: a.tile }), delete OpenLayers.Control.CacheWrite.urlMap[a.tile.url]);
+  },
+  cache: function (a) {
+    if (window.localStorage) {
+      a = a.tile;
+      try {
+        var b = a.getCanvasContext();
+        b &&
+          window.localStorage.setItem(
+            "olCache_" + (OpenLayers.Control.CacheWrite.urlMap[a.url] || a.url),
+            b.canvas.toDataURL(this.imageFormat)
+          );
+      } catch (c) {
+        (b = c.name || c.message) && this.quotaRegEx.test(b)
+          ? this.events.triggerEvent("cachefull", { tile: a })
+          : OpenLayers.Console.error(c.toString());
+      }
+    }
+  },
+  destroy: function () {
+    if (this.layers || this.map) {
+      var a,
+        b = this.layers || this.map.layers;
+      for (a = b.length - 1; 0 <= a; --a) this.removeLayer({ layer: b[a] });
+    }
+    this.map &&
+      this.map.events.un({ addlayer: this.addLayer, removeLayer: this.removeLayer, scope: this });
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Control.CacheWrite",
+});
+OpenLayers.Control.CacheWrite.clearCache = function () {
+  if (window.localStorage) {
+    var a, b;
+    for (a = window.localStorage.length - 1; 0 <= a; --a)
+      (b = window.localStorage.key(a)),
+        "olCache_" === b.substr(0, 8) && window.localStorage.removeItem(b);
+  }
+};
+OpenLayers.Control.CacheWrite.urlMap = {};
+OpenLayers.Format.Context = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  layerOptions: null,
+  layerParams: null,
+  read: function (a, b) {
+    var c = OpenLayers.Format.XML.VersionedOGC.prototype.read.apply(this, arguments);
+    if (b && b.map)
+      if (((this.context = c), b.map instanceof OpenLayers.Map))
+        c = this.mergeContextToMap(c, b.map);
+      else {
+        var d = b.map;
+        if (OpenLayers.Util.isElement(d) || "string" == typeof d) d = { div: d };
+        c = this.contextToMap(c, d);
+      }
+    return c;
+  },
+  getLayerFromContext: function (a) {
+    var b,
+      c,
+      d = {
+        queryable: a.queryable,
+        visibility: a.visibility,
+        maxExtent: a.maxExtent,
+        metadata: OpenLayers.Util.applyDefaults(a.metadata, {
+          styles: a.styles,
+          formats: a.formats,
+          abstract: a["abstract"],
+          dataURL: a.dataURL,
+        }),
+        numZoomLevels: a.numZoomLevels,
+        units: a.units,
+        isBaseLayer: a.isBaseLayer,
+        opacity: a.opacity,
+        displayInLayerSwitcher: a.displayInLayerSwitcher,
+        singleTile: a.singleTile,
+        tileSize: a.tileSize ? new OpenLayers.Size(a.tileSize.width, a.tileSize.height) : void 0,
+        minScale: a.minScale || a.maxScaleDenominator,
+        maxScale: a.maxScale || a.minScaleDenominator,
+        srs: a.srs,
+        dimensions: a.dimensions,
+        metadataURL: a.metadataURL,
+      };
+    this.layerOptions && OpenLayers.Util.applyDefaults(d, this.layerOptions);
+    var e = { layers: a.name, transparent: a.transparent, version: a.version };
+    if (a.formats && 0 < a.formats.length)
+      for (e.format = a.formats[0].value, b = 0, c = a.formats.length; b < c; b++) {
+        var f = a.formats[b];
+        if (!0 == f.current) {
+          e.format = f.value;
+          break;
+        }
+      }
+    if (a.styles && 0 < a.styles.length)
+      for (b = 0, c = a.styles.length; b < c; b++)
+        if (((f = a.styles[b]), !0 == f.current)) {
+          f.href ? (e.sld = f.href) : f.body ? (e.sld_body = f.body) : (e.styles = f.name);
+          break;
+        }
+    this.layerParams && OpenLayers.Util.applyDefaults(e, this.layerParams);
+    b = null;
+    c = a.service;
+    c == OpenLayers.Format.Context.serviceTypes.WFS
+      ? ((d.strategies = [new OpenLayers.Strategy.BBOX()]),
+        (d.protocol = new OpenLayers.Protocol.WFS({
+          url: a.url,
+          featurePrefix: a.name.split(":")[0],
+          featureType: a.name.split(":").pop(),
+        })),
+        (b = new OpenLayers.Layer.Vector(a.title || a.name, d)))
+      : c == OpenLayers.Format.Context.serviceTypes.KML
+      ? ((d.strategies = [new OpenLayers.Strategy.Fixed()]),
+        (d.protocol = new OpenLayers.Protocol.HTTP({
+          url: a.url,
+          format: new OpenLayers.Format.KML(),
+        })),
+        (b = new OpenLayers.Layer.Vector(a.title || a.name, d)))
+      : c == OpenLayers.Format.Context.serviceTypes.GML
+      ? ((d.strategies = [new OpenLayers.Strategy.Fixed()]),
+        (d.protocol = new OpenLayers.Protocol.HTTP({
+          url: a.url,
+          format: new OpenLayers.Format.GML(),
+        })),
+        (b = new OpenLayers.Layer.Vector(a.title || a.name, d)))
+      : a.features
+      ? ((b = new OpenLayers.Layer.Vector(a.title || a.name, d)), b.addFeatures(a.features))
+      : !0 !== a.categoryLayer && (b = new OpenLayers.Layer.WMS(a.title || a.name, a.url, e, d));
+    return b;
+  },
+  getLayersFromContext: function (a) {
+    for (var b = [], c = 0, d = a.length; c < d; c++) {
+      var e = this.getLayerFromContext(a[c]);
+      null !== e && b.push(e);
+    }
+    return b;
+  },
+  contextToMap: function (a, b) {
+    b = OpenLayers.Util.applyDefaults(
+      { maxExtent: a.maxExtent, projection: a.projection, units: a.units },
+      b
+    );
+    b.maxExtent && (b.maxResolution = b.maxExtent.getWidth() / OpenLayers.Map.TILE_WIDTH);
+    b.metadata = {
+      contactInformation: a.contactInformation,
+      abstract: a["abstract"],
+      keywords: a.keywords,
+      logo: a.logo,
+      descriptionURL: a.descriptionURL,
+    };
+    var c = new OpenLayers.Map(b);
+    c.addLayers(this.getLayersFromContext(a.layersContext));
+    c.setCenter(a.bounds.getCenterLonLat(), c.getZoomForExtent(a.bounds, !0));
+    return c;
+  },
+  mergeContextToMap: function (a, b) {
+    b.addLayers(this.getLayersFromContext(a.layersContext));
+    return b;
+  },
+  write: function (a, b) {
+    a = this.toContext(a);
+    return OpenLayers.Format.XML.VersionedOGC.prototype.write.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Format.Context",
+});
+OpenLayers.Format.Context.serviceTypes = {
+  WMS: "urn:ogc:serviceType:WMS",
+  WFS: "urn:ogc:serviceType:WFS",
+  WCS: "urn:ogc:serviceType:WCS",
+  GML: "urn:ogc:serviceType:GML",
+  SLD: "urn:ogc:serviceType:SLD",
+  FES: "urn:ogc:serviceType:FES",
+  KML: "urn:ogc:serviceType:KML",
+};
+OpenLayers.Format.WMC = OpenLayers.Class(OpenLayers.Format.Context, {
+  defaultVersion: "1.1.0",
+  layerToContext: function (a) {
+    var b = this.getParser(),
+      c = {
+        queryable: a.queryable,
+        visibility: a.visibility,
+        name: a.params.LAYERS,
+        title: a.name,
+        abstract: a.metadata["abstract"],
+        dataURL: a.metadata.dataURL,
+        metadataURL: a.metadataURL,
+        server: { version: a.params.VERSION, url: a.url },
+        maxExtent: a.maxExtent,
+        transparent: a.params.TRANSPARENT,
+        numZoomLevels: a.numZoomLevels,
+        units: a.units,
+        isBaseLayer: a.isBaseLayer,
+        opacity: 1 == a.opacity ? void 0 : a.opacity,
+        displayInLayerSwitcher: a.displayInLayerSwitcher,
+        singleTile: a.singleTile,
+        tileSize:
+          a.singleTile || !a.tileSize ? void 0 : { width: a.tileSize.w, height: a.tileSize.h },
+        minScale:
+          a.options.resolutions || a.options.scales || a.options.maxResolution || a.options.minScale
+            ? a.minScale
+            : void 0,
+        maxScale:
+          a.options.resolutions || a.options.scales || a.options.minResolution || a.options.maxScale
+            ? a.maxScale
+            : void 0,
+        formats: [],
+        styles: [],
+        srs: a.srs,
+        dimensions: a.dimensions,
+      };
+    a.metadata.servertitle && (c.server.title = a.metadata.servertitle);
+    if (a.metadata.formats && 0 < a.metadata.formats.length)
+      for (var d = 0, e = a.metadata.formats.length; d < e; d++) {
+        var f = a.metadata.formats[d];
+        c.formats.push({ value: f.value, current: f.value == a.params.FORMAT });
+      }
+    else c.formats.push({ value: a.params.FORMAT, current: !0 });
+    if (a.metadata.styles && 0 < a.metadata.styles.length)
+      for (d = 0, e = a.metadata.styles.length; d < e; d++)
+        (b = a.metadata.styles[d]),
+          (b.current =
+            b.href == a.params.SLD || b.body == a.params.SLD_BODY || b.name == a.params.STYLES
+              ? !0
+              : !1),
+          c.styles.push(b);
+    else
+      c.styles.push({
+        href: a.params.SLD,
+        body: a.params.SLD_BODY,
+        name: a.params.STYLES || b.defaultStyleName,
+        title: b.defaultStyleTitle,
+        current: !0,
+      });
+    return c;
+  },
+  toContext: function (a) {
+    var b = {},
+      c = a.layers;
+    if ("OpenLayers.Map" == a.CLASS_NAME) {
+      var d = a.metadata || {};
+      b.size = a.getSize();
+      b.bounds = a.getExtent();
+      b.projection = a.projection;
+      b.title = a.title;
+      b.keywords = d.keywords;
+      b["abstract"] = d["abstract"];
+      b.logo = d.logo;
+      b.descriptionURL = d.descriptionURL;
+      b.contactInformation = d.contactInformation;
+      b.maxExtent = a.maxExtent;
+    } else OpenLayers.Util.applyDefaults(b, a), void 0 != b.layers && delete b.layers;
+    void 0 == b.layersContext && (b.layersContext = []);
+    if (void 0 != c && OpenLayers.Util.isArray(c))
+      for (a = 0, d = c.length; a < d; a++) {
+        var e = c[a];
+        e instanceof OpenLayers.Layer.WMS && b.layersContext.push(this.layerToContext(e));
+      }
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Format.WMC",
+});
+OpenLayers.Format.WMC.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    ol: "http://openlayers.org/context",
+    wmc: "http://www.opengis.net/context",
+    sld: "http://www.opengis.net/sld",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  schemaLocation: "",
+  getNamespacePrefix: function (a) {
+    var b = null;
+    if (null == a) b = this.namespaces[this.defaultPrefix];
+    else for (b in this.namespaces) if (this.namespaces[b] == a) break;
+    return b;
+  },
+  defaultPrefix: "wmc",
+  rootPrefix: null,
+  defaultStyleName: "",
+  defaultStyleTitle: "Default",
+  initialize: function (a) {
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a = a.documentElement;
+    this.rootPrefix = a.prefix;
+    var b = { version: a.getAttribute("version") };
+    this.runChildNodes(b, a);
+    return b;
+  },
+  runChildNodes: function (a, b) {
+    for (var c = b.childNodes, d, e, f, g = 0, h = c.length; g < h; ++g)
+      (d = c[g]),
+        1 == d.nodeType &&
+          ((e = this.getNamespacePrefix(d.namespaceURI)),
+          (f = d.nodeName.split(":").pop()),
+          (e = this["read_" + e + "_" + f]) && e.apply(this, [a, d]));
+  },
+  read_wmc_General: function (a, b) {
+    this.runChildNodes(a, b);
+  },
+  read_wmc_BoundingBox: function (a, b) {
+    a.projection = b.getAttribute("SRS");
+    a.bounds = new OpenLayers.Bounds(
+      b.getAttribute("minx"),
+      b.getAttribute("miny"),
+      b.getAttribute("maxx"),
+      b.getAttribute("maxy")
+    );
+  },
+  read_wmc_LayerList: function (a, b) {
+    a.layersContext = [];
+    this.runChildNodes(a, b);
+  },
+  read_wmc_Layer: function (a, b) {
+    var c = {
+      visibility: "1" != b.getAttribute("hidden"),
+      queryable: "1" == b.getAttribute("queryable"),
+      formats: [],
+      styles: [],
+      metadata: {},
+    };
+    this.runChildNodes(c, b);
+    a.layersContext.push(c);
+  },
+  read_wmc_Extension: function (a, b) {
+    this.runChildNodes(a, b);
+  },
+  read_ol_units: function (a, b) {
+    a.units = this.getChildValue(b);
+  },
+  read_ol_maxExtent: function (a, b) {
+    var c = new OpenLayers.Bounds(
+      b.getAttribute("minx"),
+      b.getAttribute("miny"),
+      b.getAttribute("maxx"),
+      b.getAttribute("maxy")
+    );
+    a.maxExtent = c;
+  },
+  read_ol_transparent: function (a, b) {
+    a.transparent = this.getChildValue(b);
+  },
+  read_ol_numZoomLevels: function (a, b) {
+    a.numZoomLevels = parseInt(this.getChildValue(b));
+  },
+  read_ol_opacity: function (a, b) {
+    a.opacity = parseFloat(this.getChildValue(b));
+  },
+  read_ol_singleTile: function (a, b) {
+    a.singleTile = "true" == this.getChildValue(b);
+  },
+  read_ol_tileSize: function (a, b) {
+    var c = { width: b.getAttribute("width"), height: b.getAttribute("height") };
+    a.tileSize = c;
+  },
+  read_ol_isBaseLayer: function (a, b) {
+    a.isBaseLayer = "true" == this.getChildValue(b);
+  },
+  read_ol_displayInLayerSwitcher: function (a, b) {
+    a.displayInLayerSwitcher = "true" == this.getChildValue(b);
+  },
+  read_wmc_Server: function (a, b) {
+    a.version = b.getAttribute("version");
+    a.url = this.getOnlineResource_href(b);
+    a.metadata.servertitle = b.getAttribute("title");
+  },
+  read_wmc_FormatList: function (a, b) {
+    this.runChildNodes(a, b);
+  },
+  read_wmc_Format: function (a, b) {
+    var c = { value: this.getChildValue(b) };
+    "1" == b.getAttribute("current") && (c.current = !0);
+    a.formats.push(c);
+  },
+  read_wmc_StyleList: function (a, b) {
+    this.runChildNodes(a, b);
+  },
+  read_wmc_Style: function (a, b) {
+    var c = {};
+    this.runChildNodes(c, b);
+    "1" == b.getAttribute("current") && (c.current = !0);
+    a.styles.push(c);
+  },
+  read_wmc_SLD: function (a, b) {
+    this.runChildNodes(a, b);
+  },
+  read_sld_StyledLayerDescriptor: function (a, b) {
+    var c = OpenLayers.Format.XML.prototype.write.apply(this, [b]);
+    a.body = c;
+  },
+  read_sld_FeatureTypeStyle: function (a, b) {
+    var c = OpenLayers.Format.XML.prototype.write.apply(this, [b]);
+    a.body = c;
+  },
+  read_wmc_OnlineResource: function (a, b) {
+    a.href = this.getAttributeNS(b, this.namespaces.xlink, "href");
+  },
+  read_wmc_Name: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.name = c);
+  },
+  read_wmc_Title: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.title = c);
+  },
+  read_wmc_MetadataURL: function (a, b) {
+    a.metadataURL = this.getOnlineResource_href(b);
+  },
+  read_wmc_KeywordList: function (a, b) {
+    a.keywords = [];
+    this.runChildNodes(a.keywords, b);
+  },
+  read_wmc_Keyword: function (a, b) {
+    a.push(this.getChildValue(b));
+  },
+  read_wmc_Abstract: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a["abstract"] = c);
+  },
+  read_wmc_LogoURL: function (a, b) {
+    a.logo = {
+      width: b.getAttribute("width"),
+      height: b.getAttribute("height"),
+      format: b.getAttribute("format"),
+      href: this.getOnlineResource_href(b),
+    };
+  },
+  read_wmc_DescriptionURL: function (a, b) {
+    a.descriptionURL = this.getOnlineResource_href(b);
+  },
+  read_wmc_ContactInformation: function (a, b) {
+    var c = {};
+    this.runChildNodes(c, b);
+    a.contactInformation = c;
+  },
+  read_wmc_ContactPersonPrimary: function (a, b) {
+    var c = {};
+    this.runChildNodes(c, b);
+    a.personPrimary = c;
+  },
+  read_wmc_ContactPerson: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.person = c);
+  },
+  read_wmc_ContactOrganization: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.organization = c);
+  },
+  read_wmc_ContactPosition: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.position = c);
+  },
+  read_wmc_ContactAddress: function (a, b) {
+    var c = {};
+    this.runChildNodes(c, b);
+    a.contactAddress = c;
+  },
+  read_wmc_AddressType: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.type = c);
+  },
+  read_wmc_Address: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.address = c);
+  },
+  read_wmc_City: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.city = c);
+  },
+  read_wmc_StateOrProvince: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.stateOrProvince = c);
+  },
+  read_wmc_PostCode: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.postcode = c);
+  },
+  read_wmc_Country: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.country = c);
+  },
+  read_wmc_ContactVoiceTelephone: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.phone = c);
+  },
+  read_wmc_ContactFacsimileTelephone: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.fax = c);
+  },
+  read_wmc_ContactElectronicMailAddress: function (a, b) {
+    var c = this.getChildValue(b);
+    c && (a.email = c);
+  },
+  read_wmc_DataURL: function (a, b) {
+    a.dataURL = this.getOnlineResource_href(b);
+  },
+  read_wmc_LegendURL: function (a, b) {
+    var c = {
+      width: b.getAttribute("width"),
+      height: b.getAttribute("height"),
+      format: b.getAttribute("format"),
+      href: this.getOnlineResource_href(b),
+    };
+    a.legend = c;
+  },
+  read_wmc_DimensionList: function (a, b) {
+    a.dimensions = {};
+    this.runChildNodes(a.dimensions, b);
+  },
+  read_wmc_Dimension: function (a, b) {
+    var c = {
+        name: b.getAttribute("name").toLowerCase(),
+        units: b.getAttribute("units") || "",
+        unitSymbol: b.getAttribute("unitSymbol") || "",
+        userValue: b.getAttribute("userValue") || "",
+        nearestValue: "1" === b.getAttribute("nearestValue"),
+        multipleValues: "1" === b.getAttribute("multipleValues"),
+        current: "1" === b.getAttribute("current"),
+        default: b.getAttribute("default") || "",
+      },
+      d = this.getChildValue(b);
+    c.values = d.split(",");
+    a[c.name] = c;
+  },
+  write: function (a, b) {
+    var c = this.createElementDefaultNS("ViewContext");
+    this.setAttributes(c, {
+      version: this.VERSION,
+      id:
+        b && "string" == typeof b.id ? b.id : OpenLayers.Util.createUniqueID("OpenLayers_Context_"),
+    });
+    this.setAttributeNS(c, this.namespaces.xsi, "xsi:schemaLocation", this.schemaLocation);
+    c.appendChild(this.write_wmc_General(a));
+    c.appendChild(this.write_wmc_LayerList(a));
+    return OpenLayers.Format.XML.prototype.write.apply(this, [c]);
+  },
+  createElementDefaultNS: function (a, b, c) {
+    a = this.createElementNS(this.namespaces[this.defaultPrefix], a);
+    b && a.appendChild(this.createTextNode(b));
+    c && this.setAttributes(a, c);
+    return a;
+  },
+  setAttributes: function (a, b) {
+    var c, d;
+    for (d in b)
+      (c = b[d].toString()),
+        c.match(/[A-Z]/) ? this.setAttributeNS(a, null, d, c) : a.setAttribute(d, c);
+  },
+  write_wmc_General: function (a) {
+    var b = this.createElementDefaultNS("General");
+    a.size &&
+      b.appendChild(
+        this.createElementDefaultNS("Window", null, { width: a.size.w, height: a.size.h })
+      );
+    var c = a.bounds;
+    b.appendChild(
+      this.createElementDefaultNS("BoundingBox", null, {
+        minx: c.left.toPrecision(18),
+        miny: c.bottom.toPrecision(18),
+        maxx: c.right.toPrecision(18),
+        maxy: c.top.toPrecision(18),
+        SRS: a.projection,
+      })
+    );
+    b.appendChild(this.createElementDefaultNS("Title", a.title));
+    a.keywords && b.appendChild(this.write_wmc_KeywordList(a.keywords));
+    a["abstract"] && b.appendChild(this.createElementDefaultNS("Abstract", a["abstract"]));
+    a.logo && b.appendChild(this.write_wmc_URLType("LogoURL", a.logo.href, a.logo));
+    a.descriptionURL && b.appendChild(this.write_wmc_URLType("DescriptionURL", a.descriptionURL));
+    a.contactInformation && b.appendChild(this.write_wmc_ContactInformation(a.contactInformation));
+    b.appendChild(this.write_ol_MapExtension(a));
+    return b;
+  },
+  write_wmc_KeywordList: function (a) {
+    for (var b = this.createElementDefaultNS("KeywordList"), c = 0, d = a.length; c < d; c++)
+      b.appendChild(this.createElementDefaultNS("Keyword", a[c]));
+    return b;
+  },
+  write_wmc_ContactInformation: function (a) {
+    var b = this.createElementDefaultNS("ContactInformation");
+    a.personPrimary && b.appendChild(this.write_wmc_ContactPersonPrimary(a.personPrimary));
+    a.position && b.appendChild(this.createElementDefaultNS("ContactPosition", a.position));
+    a.contactAddress && b.appendChild(this.write_wmc_ContactAddress(a.contactAddress));
+    a.phone && b.appendChild(this.createElementDefaultNS("ContactVoiceTelephone", a.phone));
+    a.fax && b.appendChild(this.createElementDefaultNS("ContactFacsimileTelephone", a.fax));
+    a.email && b.appendChild(this.createElementDefaultNS("ContactElectronicMailAddress", a.email));
+    return b;
+  },
+  write_wmc_ContactPersonPrimary: function (a) {
+    var b = this.createElementDefaultNS("ContactPersonPrimary");
+    a.person && b.appendChild(this.createElementDefaultNS("ContactPerson", a.person));
+    a.organization &&
+      b.appendChild(this.createElementDefaultNS("ContactOrganization", a.organization));
+    return b;
+  },
+  write_wmc_ContactAddress: function (a) {
+    var b = this.createElementDefaultNS("ContactAddress");
+    a.type && b.appendChild(this.createElementDefaultNS("AddressType", a.type));
+    a.address && b.appendChild(this.createElementDefaultNS("Address", a.address));
+    a.city && b.appendChild(this.createElementDefaultNS("City", a.city));
+    a.stateOrProvince &&
+      b.appendChild(this.createElementDefaultNS("StateOrProvince", a.stateOrProvince));
+    a.postcode && b.appendChild(this.createElementDefaultNS("PostCode", a.postcode));
+    a.country && b.appendChild(this.createElementDefaultNS("Country", a.country));
+    return b;
+  },
+  write_ol_MapExtension: function (a) {
+    var b = this.createElementDefaultNS("Extension");
+    if ((a = a.maxExtent)) {
+      var c = this.createElementNS(this.namespaces.ol, "ol:maxExtent");
+      this.setAttributes(c, {
+        minx: a.left.toPrecision(18),
+        miny: a.bottom.toPrecision(18),
+        maxx: a.right.toPrecision(18),
+        maxy: a.top.toPrecision(18),
+      });
+      b.appendChild(c);
+    }
+    return b;
+  },
+  write_wmc_LayerList: function (a) {
+    for (
+      var b = this.createElementDefaultNS("LayerList"), c = 0, d = a.layersContext.length;
+      c < d;
+      ++c
+    )
+      b.appendChild(this.write_wmc_Layer(a.layersContext[c]));
+    return b;
+  },
+  write_wmc_Layer: function (a) {
+    var b = this.createElementDefaultNS("Layer", null, {
+      queryable: a.queryable ? "1" : "0",
+      hidden: a.visibility ? "0" : "1",
+    });
+    b.appendChild(this.write_wmc_Server(a));
+    b.appendChild(this.createElementDefaultNS("Name", a.name));
+    b.appendChild(this.createElementDefaultNS("Title", a.title));
+    a["abstract"] && b.appendChild(this.createElementDefaultNS("Abstract", a["abstract"]));
+    a.dataURL && b.appendChild(this.write_wmc_URLType("DataURL", a.dataURL));
+    a.metadataURL && b.appendChild(this.write_wmc_URLType("MetadataURL", a.metadataURL));
+    return b;
+  },
+  write_wmc_LayerExtension: function (a) {
+    var b = this.createElementDefaultNS("Extension"),
+      c = a.maxExtent,
+      d = this.createElementNS(this.namespaces.ol, "ol:maxExtent");
+    this.setAttributes(d, {
+      minx: c.left.toPrecision(18),
+      miny: c.bottom.toPrecision(18),
+      maxx: c.right.toPrecision(18),
+      maxy: c.top.toPrecision(18),
+    });
+    b.appendChild(d);
+    a.tileSize &&
+      !a.singleTile &&
+      ((c = this.createElementNS(this.namespaces.ol, "ol:tileSize")),
+      this.setAttributes(c, a.tileSize),
+      b.appendChild(c));
+    for (
+      var c = "transparent numZoomLevels units isBaseLayer opacity displayInLayerSwitcher singleTile".split(
+          " "
+        ),
+        e = 0,
+        f = c.length;
+      e < f;
+      ++e
+    )
+      (d = this.createOLPropertyNode(a, c[e])) && b.appendChild(d);
+    return b;
+  },
+  createOLPropertyNode: function (a, b) {
+    var c = null;
+    null != a[b] &&
+      ((c = this.createElementNS(this.namespaces.ol, "ol:" + b)),
+      c.appendChild(this.createTextNode(a[b].toString())));
+    return c;
+  },
+  write_wmc_Server: function (a) {
+    a = a.server;
+    var b = this.createElementDefaultNS("Server"),
+      c = { service: "OGC:WMS", version: a.version };
+    a.title && (c.title = a.title);
+    this.setAttributes(b, c);
+    b.appendChild(this.write_wmc_OnlineResource(a.url));
+    return b;
+  },
+  write_wmc_URLType: function (a, b, c) {
+    a = this.createElementDefaultNS(a);
+    a.appendChild(this.write_wmc_OnlineResource(b));
+    if (c) {
+      b = ["width", "height", "format"];
+      for (var d = 0; d < b.length; d++) b[d] in c && a.setAttribute(b[d], c[b[d]]);
+    }
+    return a;
+  },
+  write_wmc_DimensionList: function (a) {
+    var b = this.createElementDefaultNS("DimensionList"),
+      c;
+    for (c in a.dimensions) {
+      var d = {},
+        e = a.dimensions[c],
+        f;
+      for (f in e) d[f] = "boolean" == typeof e[f] ? Number(e[f]) : e[f];
+      e = "";
+      d.values && ((e = d.values.join(",")), delete d.values);
+      b.appendChild(this.createElementDefaultNS("Dimension", e, d));
+    }
+    return b;
+  },
+  write_wmc_FormatList: function (a) {
+    for (
+      var b = this.createElementDefaultNS("FormatList"), c = 0, d = a.formats.length;
+      c < d;
+      c++
+    ) {
+      var e = a.formats[c];
+      b.appendChild(
+        this.createElementDefaultNS(
+          "Format",
+          e.value,
+          e.current && !0 == e.current ? { current: "1" } : null
+        )
+      );
+    }
+    return b;
+  },
+  write_wmc_StyleList: function (a) {
+    var b = this.createElementDefaultNS("StyleList");
+    if ((a = a.styles) && OpenLayers.Util.isArray(a))
+      for (var c, d = 0, e = a.length; d < e; d++) {
+        var f = a[d],
+          g = this.createElementDefaultNS(
+            "Style",
+            null,
+            f.current && !0 == f.current ? { current: "1" } : null
+          );
+        f.href
+          ? ((c = this.createElementDefaultNS("SLD")),
+            f.name && c.appendChild(this.createElementDefaultNS("Name", f.name)),
+            f.title && c.appendChild(this.createElementDefaultNS("Title", f.title)),
+            f.legend && c.appendChild(this.write_wmc_URLType("LegendURL", f.legend.href, f.legend)),
+            (f = this.write_wmc_OnlineResource(f.href)),
+            c.appendChild(f),
+            g.appendChild(c))
+          : f.body
+          ? ((c = this.createElementDefaultNS("SLD")),
+            f.name && c.appendChild(this.createElementDefaultNS("Name", f.name)),
+            f.title && c.appendChild(this.createElementDefaultNS("Title", f.title)),
+            f.legend && c.appendChild(this.write_wmc_URLType("LegendURL", f.legend.href, f.legend)),
+            (f = OpenLayers.Format.XML.prototype.read.apply(this, [f.body]).documentElement),
+            c.ownerDocument &&
+              c.ownerDocument.importNode &&
+              (f = c.ownerDocument.importNode(f, !0)),
+            c.appendChild(f),
+            g.appendChild(c))
+          : (g.appendChild(this.createElementDefaultNS("Name", f.name)),
+            g.appendChild(this.createElementDefaultNS("Title", f.title)),
+            f["abstract"] && g.appendChild(this.createElementDefaultNS("Abstract", f["abstract"])),
+            f.legend &&
+              g.appendChild(this.write_wmc_URLType("LegendURL", f.legend.href, f.legend)));
+        b.appendChild(g);
+      }
+    return b;
+  },
+  write_wmc_OnlineResource: function (a) {
+    var b = this.createElementDefaultNS("OnlineResource");
+    this.setAttributeNS(b, this.namespaces.xlink, "xlink:type", "simple");
+    this.setAttributeNS(b, this.namespaces.xlink, "xlink:href", a);
+    return b;
+  },
+  getOnlineResource_href: function (a) {
+    var b = {};
+    a = a.getElementsByTagName("OnlineResource");
+    0 < a.length && this.read_wmc_OnlineResource(b, a[0]);
+    return b.href;
+  },
+  CLASS_NAME: "OpenLayers.Format.WMC.v1",
+});
+OpenLayers.Control.PanPanel = OpenLayers.Class(OpenLayers.Control.Panel, {
+  slideFactor: 50,
+  slideRatio: null,
+  initialize: function (a) {
+    OpenLayers.Control.Panel.prototype.initialize.apply(this, [a]);
+    a = { slideFactor: this.slideFactor, slideRatio: this.slideRatio };
+    this.addControls([
+      new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH, a),
+      new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH, a),
+      new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST, a),
+      new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST, a),
+    ]);
+  },
+  CLASS_NAME: "OpenLayers.Control.PanPanel",
+});
+OpenLayers.Control.Attribution = OpenLayers.Class(OpenLayers.Control, {
+  separator: ", ",
+  template: "${layers}",
+  destroy: function () {
+    this.map.events.un({
+      removelayer: this.updateAttribution,
+      addlayer: this.updateAttribution,
+      changelayer: this.updateAttribution,
+      changebaselayer: this.updateAttribution,
+      scope: this,
+    });
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    this.map.events.on({
+      changebaselayer: this.updateAttribution,
+      changelayer: this.updateAttribution,
+      addlayer: this.updateAttribution,
+      removelayer: this.updateAttribution,
+      scope: this,
+    });
+    this.updateAttribution();
+    return this.div;
+  },
+  updateAttribution: function () {
+    var a = [];
+    if (this.map && this.map.layers) {
+      for (var b = 0, c = this.map.layers.length; b < c; b++) {
+        var d = this.map.layers[b];
+        d.attribution &&
+          d.getVisibility() &&
+          -1 === OpenLayers.Util.indexOf(a, d.attribution) &&
+          a.push(d.attribution);
+      }
+      this.div.innerHTML = OpenLayers.String.format(this.template, {
+        layers: a.join(this.separator),
+      });
+    }
+  },
+  CLASS_NAME: "OpenLayers.Control.Attribution",
+});
+OpenLayers.Kinetic = OpenLayers.Class({
+  threshold: 0,
+  deceleration: 0.0035,
+  nbPoints: 100,
+  delay: 200,
+  points: void 0,
+  timerId: void 0,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+  },
+  begin: function () {
+    OpenLayers.Animation.stop(this.timerId);
+    this.timerId = void 0;
+    this.points = [];
+  },
+  update: function (a) {
+    this.points.unshift({ xy: a, tick: new Date().getTime() });
+    this.points.length > this.nbPoints && this.points.pop();
+  },
+  end: function (a) {
+    for (var b, c = new Date().getTime(), d = 0, e = this.points.length, f; d < e; d++) {
+      f = this.points[d];
+      if (c - f.tick > this.delay) break;
+      b = f;
+    }
+    if (
+      b &&
+      ((d = new Date().getTime() - b.tick),
+      (c = Math.sqrt(Math.pow(a.x - b.xy.x, 2) + Math.pow(a.y - b.xy.y, 2))),
+      (d = c / d),
+      !(0 == d || d < this.threshold))
+    )
+      return (
+        (c = Math.asin((a.y - b.xy.y) / c)),
+        b.xy.x <= a.x && (c = Math.PI - c),
+        { speed: d, theta: c }
+      );
+  },
+  move: function (a, b) {
+    var c = a.speed,
+      d = Math.cos(a.theta),
+      e = -Math.sin(a.theta),
+      f = new Date().getTime(),
+      g = 0,
+      h = 0;
+    this.timerId = OpenLayers.Animation.start(
+      OpenLayers.Function.bind(function () {
+        if (null != this.timerId) {
+          var a = new Date().getTime() - f,
+            l = (-this.deceleration * Math.pow(a, 2)) / 2 + c * a,
+            m = l * d,
+            l = l * e,
+            n,
+            p;
+          n = !1;
+          0 >= -this.deceleration * a + c &&
+            (OpenLayers.Animation.stop(this.timerId), (this.timerId = null), (n = !0));
+          a = m - g;
+          p = l - h;
+          g = m;
+          h = l;
+          b(a, p, n);
+        }
+      }, this)
+    );
+  },
+  CLASS_NAME: "OpenLayers.Kinetic",
+});
+OpenLayers.Format.WPSExecute = OpenLayers.Class(
+  OpenLayers.Format.XML,
+  OpenLayers.Format.Filter.v1_1_0,
+  {
+    namespaces: {
+      ows: "http://www.opengis.net/ows/1.1",
+      gml: "http://www.opengis.net/gml",
+      wps: "http://www.opengis.net/wps/1.0.0",
+      wfs: "http://www.opengis.net/wfs",
+      ogc: "http://www.opengis.net/ogc",
+      wcs: "http://www.opengis.net/wcs",
+      xlink: "http://www.w3.org/1999/xlink",
+      xsi: "http://www.w3.org/2001/XMLSchema-instance",
+    },
+    regExes: {
+      trimSpace: /^\s*|\s*$/g,
+      removeSpace: /\s*/g,
+      splitSpace: /\s+/,
+      trimComma: /\s*,\s*/g,
+    },
+    VERSION: "1.0.0",
+    schemaLocation:
+      "http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",
+    schemaLocationAttr: function (a) {},
+    write: function (a) {
+      var b;
+      window.ActiveXObject
+        ? (this.xmldom = b = new ActiveXObject("Microsoft.XMLDOM"))
+        : (b = document.implementation.createDocument("", "", null));
+      a = this.writeNode("wps:Execute", a, b);
+      this.setAttributeNS(a, this.namespaces.xsi, "xsi:schemaLocation", this.schemaLocation);
+      return OpenLayers.Format.XML.prototype.write.apply(this, [a]);
+    },
+    read: function (a) {
+      "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+      a && 9 == a.nodeType && (a = a.documentElement);
+      var b = {};
+      this.readNode(a, b);
+      return b;
+    },
+    writers: {
+      wps: {
+        Execute: function (a) {
+          var b = this.createElementNSPlus("wps:Execute", {
+            attributes: { version: this.VERSION, service: "WPS" },
+          });
+          this.writeNode("ows:Identifier", a.identifier, b);
+          this.writeNode("wps:DataInputs", a.dataInputs, b);
+          this.writeNode("wps:ResponseForm", a.responseForm, b);
+          return b;
+        },
+        ResponseForm: function (a) {
+          var b = this.createElementNSPlus("wps:ResponseForm", {});
+          a.rawDataOutput && this.writeNode("wps:RawDataOutput", a.rawDataOutput, b);
+          a.responseDocument && this.writeNode("wps:ResponseDocument", a.responseDocument, b);
+          return b;
+        },
+        ResponseDocument: function (a) {
+          var b = this.createElementNSPlus("wps:ResponseDocument", {
+            attributes: {
+              storeExecuteResponse: a.storeExecuteResponse,
+              lineage: a.lineage,
+              status: a.status,
+            },
+          });
+          if (a.outputs)
+            for (var c = 0, d = a.outputs.length; c < d; c++)
+              this.writeNode("wps:Output", a.outputs[c], b);
+          return b;
+        },
+        Output: function (a) {
+          var b = this.createElementNSPlus("wps:Output", {
+            attributes: {
+              asReference: a.asReference,
+              mimeType: a.mimeType,
+              encoding: a.encoding,
+              schema: a.schema,
+            },
+          });
+          this.writeNode("ows:Identifier", a.identifier, b);
+          this.writeNode("ows:Title", a.title, b);
+          this.writeNode("ows:Abstract", a["abstract"], b);
+          return b;
+        },
+        RawDataOutput: function (a) {
+          var b = this.createElementNSPlus("wps:RawDataOutput", {
+            attributes: { mimeType: a.mimeType, encoding: a.encoding, schema: a.schema },
+          });
+          this.writeNode("ows:Identifier", a.identifier, b);
+          return b;
+        },
+        DataInputs: function (a) {
+          for (
+            var b = this.createElementNSPlus("wps:DataInputs", {}), c = 0, d = a.length;
+            c < d;
+            ++c
+          )
+            this.writeNode("wps:Input", a[c], b);
+          return b;
+        },
+        Input: function (a) {
+          var b = this.createElementNSPlus("wps:Input", {});
+          this.writeNode("ows:Identifier", a.identifier, b);
+          a.title && this.writeNode("ows:Title", a.title, b);
+          a.data && this.writeNode("wps:Data", a.data, b);
+          a.reference && this.writeNode("wps:Reference", a.reference, b);
+          a.boundingBoxData && this.writeNode("wps:BoundingBoxData", a.boundingBoxData, b);
+          return b;
+        },
+        Data: function (a) {
+          var b = this.createElementNSPlus("wps:Data", {});
+          a.literalData
+            ? this.writeNode("wps:LiteralData", a.literalData, b)
+            : a.complexData
+            ? this.writeNode("wps:ComplexData", a.complexData, b)
+            : a.boundingBoxData && this.writeNode("ows:BoundingBox", a.boundingBoxData, b);
+          return b;
+        },
+        LiteralData: function (a) {
+          return this.createElementNSPlus("wps:LiteralData", {
+            attributes: { uom: a.uom },
+            value: a.value,
+          });
+        },
+        ComplexData: function (a) {
+          var b = this.createElementNSPlus("wps:ComplexData", {
+              attributes: { mimeType: a.mimeType, encoding: a.encoding, schema: a.schema },
+            }),
+            c = a.value;
+          "string" === typeof c
+            ? b.appendChild(this.getXMLDoc().createCDATASection(a.value))
+            : b.appendChild(c);
+          return b;
+        },
+        Reference: function (a) {
+          var b = this.createElementNSPlus("wps:Reference", {
+            attributes: {
+              mimeType: a.mimeType,
+              "xlink:href": a.href,
+              method: a.method,
+              encoding: a.encoding,
+              schema: a.schema,
+            },
+          });
+          a.body && this.writeNode("wps:Body", a.body, b);
+          return b;
+        },
+        BoundingBoxData: function (a, b) {
+          this.writers.ows.BoundingBox.apply(this, [a, b, "wps:BoundingBoxData"]);
+        },
+        Body: function (a) {
+          var b = this.createElementNSPlus("wps:Body", {});
+          a.wcs
+            ? this.writeNode("wcs:GetCoverage", a.wcs, b)
+            : a.wfs
+            ? ((this.featureType = a.wfs.featureType),
+              (this.version = a.wfs.version),
+              this.writeNode("wfs:GetFeature", a.wfs, b))
+            : this.writeNode("wps:Execute", a, b);
+          return b;
+        },
+      },
+      wcs: OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,
+      wfs: OpenLayers.Format.WFST.v1_1_0.prototype.writers.wfs,
+      ogc: OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc,
+      ows: OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows,
+    },
+    readers: {
+      wps: {
+        ExecuteResponse: function (a, b) {
+          b.executeResponse = {
+            lang: a.getAttribute("lang"),
+            statusLocation: a.getAttribute("statusLocation"),
+            serviceInstance: a.getAttribute("serviceInstance"),
+            service: a.getAttribute("service"),
+          };
+          this.readChildNodes(a, b.executeResponse);
+        },
+        Process: function (a, b) {
+          b.process = {};
+          this.readChildNodes(a, b.process);
+        },
+        Status: function (a, b) {
+          b.status = { creationTime: a.getAttribute("creationTime") };
+          this.readChildNodes(a, b.status);
+        },
+        ProcessSucceeded: function (a, b) {
+          b.processSucceeded = !0;
+        },
+        ProcessOutputs: function (a, b) {
+          b.processOutputs = [];
+          this.readChildNodes(a, b.processOutputs);
+        },
+        Output: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          b.push(c);
+        },
+        Reference: function (a, b) {
+          b.reference = {
+            href: a.getAttribute("href"),
+            mimeType: a.getAttribute("mimeType"),
+            encoding: a.getAttribute("encoding"),
+            schema: a.getAttribute("schema"),
+          };
+        },
+        Data: function (a, b) {
+          b.data = {};
+          this.readChildNodes(a, b);
+        },
+        LiteralData: function (a, b) {
+          b.literalData = {
+            dataType: a.getAttribute("dataType"),
+            uom: a.getAttribute("uom"),
+            value: this.getChildValue(a),
+          };
+        },
+        ComplexData: function (a, b) {
+          b.complexData = {
+            mimeType: a.getAttribute("mimeType"),
+            schema: a.getAttribute("schema"),
+            encoding: a.getAttribute("encoding"),
+            value: "",
+          };
+          if (this.isSimpleContent(a)) {
+            var c;
+            for (c = a.firstChild; c; c = c.nextSibling)
+              switch (c.nodeType) {
+                case 3:
+                case 4:
+                  b.complexData.value += c.nodeValue;
+              }
+          } else
+            for (c = a.firstChild; c; c = c.nextSibling)
+              1 == c.nodeType && (b.complexData.value = c);
+        },
+        BoundingBox: function (a, b) {
+          b.boundingBoxData = {
+            dimensions: a.getAttribute("dimensions"),
+            crs: a.getAttribute("crs"),
+          };
+          this.readChildNodes(a, b.boundingBoxData);
+        },
+      },
+      ows: OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows,
+    },
+    CLASS_NAME: "OpenLayers.Format.WPSExecute",
+  }
+);
+OpenLayers.Layer.GeoRSS = OpenLayers.Class(OpenLayers.Layer.Markers, {
+  location: null,
+  features: null,
+  formatOptions: null,
+  selectedFeature: null,
+  icon: null,
+  popupSize: null,
+  useFeedTitle: !0,
+  initialize: function (a, b, c) {
+    OpenLayers.Layer.Markers.prototype.initialize.apply(this, [a, c]);
+    this.location = b;
+    this.features = [];
+  },
+  destroy: function () {
+    OpenLayers.Layer.Markers.prototype.destroy.apply(this, arguments);
+    this.clearFeatures();
+    this.features = null;
+  },
+  loadRSS: function () {
+    this.loaded ||
+      (this.events.triggerEvent("loadstart"),
+      OpenLayers.Request.GET({ url: this.location, success: this.parseData, scope: this }),
+      (this.loaded = !0));
+  },
+  moveTo: function (a, b, c) {
+    OpenLayers.Layer.Markers.prototype.moveTo.apply(this, arguments);
+    this.visibility && !this.loaded && this.loadRSS();
+  },
+  parseData: function (a) {
+    var b = a.responseXML;
+    (b && b.documentElement) || (b = OpenLayers.Format.XML.prototype.read(a.responseText));
+    if (this.useFeedTitle) {
+      a = null;
+      try {
+        a = b.getElementsByTagNameNS("*", "title")[0].firstChild.nodeValue;
+      } catch (c) {
+        a = b.getElementsByTagName("title")[0].firstChild.nodeValue;
+      }
+      a && this.setName(a);
+    }
+    a = {};
+    OpenLayers.Util.extend(a, this.formatOptions);
+    this.map &&
+      !this.projection.equals(this.map.getProjectionObject()) &&
+      ((a.externalProjection = this.projection),
+      (a.internalProjection = this.map.getProjectionObject()));
+    b = new OpenLayers.Format.GeoRSS(a).read(b);
+    a = 0;
+    for (var d = b.length; a < d; a++) {
+      var e = {},
+        f = b[a];
+      if (f.geometry) {
+        var g = f.attributes.title ? f.attributes.title : "Untitled",
+          h = f.attributes.description ? f.attributes.description : "No description.",
+          k = f.attributes.link ? f.attributes.link : "",
+          f = f.geometry.getBounds().getCenterLonLat();
+        e.icon = null == this.icon ? OpenLayers.Marker.defaultIcon() : this.icon.clone();
+        e.popupSize = this.popupSize ? this.popupSize.clone() : new OpenLayers.Size(250, 120);
+        if (g || h) {
+          e.title = g;
+          e.description = h;
+          var l = '<div class="olLayerGeoRSSClose">[x]</div>',
+            l = l + '<div class="olLayerGeoRSSTitle">';
+          k && (l += '<a class="link" href="' + k + '" target="_blank">');
+          l += g;
+          k && (l += "</a>");
+          l += "</div>";
+          l += '<div style="" class="olLayerGeoRSSDescription">';
+          l += h;
+          l += "</div>";
+          e.popupContentHTML = l;
+        }
+        f = new OpenLayers.Feature(this, f, e);
+        this.features.push(f);
+        e = f.createMarker();
+        e.events.register("click", f, this.markerClick);
+        this.addMarker(e);
+      }
+    }
+    this.events.triggerEvent("loadend");
+  },
+  markerClick: function (a) {
+    var b = this == this.layer.selectedFeature;
+    this.layer.selectedFeature = b ? null : this;
+    for (var c = 0, d = this.layer.map.popups.length; c < d; c++)
+      this.layer.map.removePopup(this.layer.map.popups[c]);
+    b ||
+      ((b = this.createPopup()),
+      OpenLayers.Event.observe(
+        b.div,
+        "click",
+        OpenLayers.Function.bind(function () {
+          for (var a = 0, b = this.layer.map.popups.length; a < b; a++)
+            this.layer.map.removePopup(this.layer.map.popups[a]);
+        }, this)
+      ),
+      this.layer.map.addPopup(b));
+    OpenLayers.Event.stop(a);
+  },
+  clearFeatures: function () {
+    if (null != this.features)
+      for (; 0 < this.features.length; ) {
+        var a = this.features[0];
+        OpenLayers.Util.removeItem(this.features, a);
+        a.destroy();
+      }
+  },
+  CLASS_NAME: "OpenLayers.Layer.GeoRSS",
+});
+OpenLayers.Symbolizer.Point = OpenLayers.Class(OpenLayers.Symbolizer, {
+  initialize: function (a) {
+    OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Symbolizer.Point",
+});
+OpenLayers.Symbolizer.Line = OpenLayers.Class(OpenLayers.Symbolizer, {
+  initialize: function (a) {
+    OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Symbolizer.Line",
+});
+OpenLayers.Symbolizer.Text = OpenLayers.Class(OpenLayers.Symbolizer, {
+  initialize: function (a) {
+    OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Symbolizer.Text",
+});
+OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
+  namespaces: {
+    sld: "http://www.opengis.net/sld",
+    ogc: "http://www.opengis.net/ogc",
+    gml: "http://www.opengis.net/gml",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  defaultPrefix: "sld",
+  schemaLocation: null,
+  multipleSymbolizers: !1,
+  featureTypeCounter: null,
+  defaultSymbolizer: {
+    fillColor: "#808080",
+    fillOpacity: 1,
+    strokeColor: "#000000",
+    strokeOpacity: 1,
+    strokeWidth: 1,
+    strokeDashstyle: "solid",
+    pointRadius: 3,
+    graphicName: "square",
+  },
+  read: function (a, b) {
+    b = OpenLayers.Util.applyDefaults(b, this.options);
+    var c = { namedLayers: !0 === b.namedLayersAsArray ? [] : {} };
+    this.readChildNodes(a, c);
+    return c;
+  },
+  readers: OpenLayers.Util.applyDefaults(
+    {
+      sld: {
+        StyledLayerDescriptor: function (a, b) {
+          b.version = a.getAttribute("version");
+          this.readChildNodes(a, b);
+        },
+        Name: function (a, b) {
+          b.name = this.getChildValue(a);
+        },
+        Title: function (a, b) {
+          b.title = this.getChildValue(a);
+        },
+        Abstract: function (a, b) {
+          b.description = this.getChildValue(a);
+        },
+        NamedLayer: function (a, b) {
+          var c = { userStyles: [], namedStyles: [] };
+          this.readChildNodes(a, c);
+          for (var d = 0, e = c.userStyles.length; d < e; ++d) c.userStyles[d].layerName = c.name;
+          OpenLayers.Util.isArray(b.namedLayers)
+            ? b.namedLayers.push(c)
+            : (b.namedLayers[c.name] = c);
+        },
+        NamedStyle: function (a, b) {
+          b.namedStyles.push(this.getChildName(a.firstChild));
+        },
+        UserStyle: function (a, b) {
+          var c = { defaultsPerSymbolizer: !0, rules: [] };
+          this.featureTypeCounter = -1;
+          this.readChildNodes(a, c);
+          this.multipleSymbolizers
+            ? (delete c.defaultsPerSymbolizer, (c = new OpenLayers.Style2(c)))
+            : (c = new OpenLayers.Style(this.defaultSymbolizer, c));
+          b.userStyles.push(c);
+        },
+        IsDefault: function (a, b) {
+          "1" == this.getChildValue(a) && (b.isDefault = !0);
+        },
+        FeatureTypeStyle: function (a, b) {
+          ++this.featureTypeCounter;
+          var c = { rules: this.multipleSymbolizers ? b.rules : [] };
+          this.readChildNodes(a, c);
+          this.multipleSymbolizers || (b.rules = c.rules);
+        },
+        Rule: function (a, b) {
+          var c;
+          this.multipleSymbolizers && (c = { symbolizers: [] });
+          c = new OpenLayers.Rule(c);
+          this.readChildNodes(a, c);
+          b.rules.push(c);
+        },
+        ElseFilter: function (a, b) {
+          b.elseFilter = !0;
+        },
+        MinScaleDenominator: function (a, b) {
+          b.minScaleDenominator = parseFloat(this.getChildValue(a));
+        },
+        MaxScaleDenominator: function (a, b) {
+          b.maxScaleDenominator = parseFloat(this.getChildValue(a));
+        },
+        TextSymbolizer: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          this.multipleSymbolizers
+            ? ((c.zIndex = this.featureTypeCounter),
+              b.symbolizers.push(new OpenLayers.Symbolizer.Text(c)))
+            : (b.symbolizer.Text = OpenLayers.Util.applyDefaults(c, b.symbolizer.Text));
+        },
+        LabelPlacement: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        PointPlacement: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          c.labelRotation = c.rotation;
+          delete c.rotation;
+          var d,
+            e = b.labelAnchorPointX,
+            f = b.labelAnchorPointY;
+          e <= 1 / 3 ? (d = "l") : e > 1 / 3 && e < 2 / 3 ? (d = "c") : e >= 2 / 3 && (d = "r");
+          f <= 1 / 3 ? (d += "b") : f > 1 / 3 && f < 2 / 3 ? (d += "m") : f >= 2 / 3 && (d += "t");
+          c.labelAlign = d;
+          OpenLayers.Util.applyDefaults(b, c);
+        },
+        AnchorPoint: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        AnchorPointX: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          c && (b.labelAnchorPointX = c);
+        },
+        AnchorPointY: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          c && (b.labelAnchorPointY = c);
+        },
+        Displacement: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        DisplacementX: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          c && (b.labelXOffset = c);
+        },
+        DisplacementY: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          c && (b.labelYOffset = c);
+        },
+        LinePlacement: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        PerpendicularOffset: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          c && (b.labelPerpendicularOffset = c);
+        },
+        Label: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          c && (b.label = c);
+        },
+        Font: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        Halo: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          b.haloRadius = c.haloRadius;
+          b.haloColor = c.fillColor;
+          b.haloOpacity = c.fillOpacity;
+        },
+        Radius: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          null != c && (b.haloRadius = c);
+        },
+        RasterSymbolizer: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          this.multipleSymbolizers
+            ? ((c.zIndex = this.featureTypeCounter),
+              b.symbolizers.push(new OpenLayers.Symbolizer.Raster(c)))
+            : (b.symbolizer.Raster = OpenLayers.Util.applyDefaults(c, b.symbolizer.Raster));
+        },
+        Geometry: function (a, b) {
+          b.geometry = {};
+          this.readChildNodes(a, b.geometry);
+        },
+        ColorMap: function (a, b) {
+          b.colorMap = [];
+          this.readChildNodes(a, b.colorMap);
+        },
+        ColorMapEntry: function (a, b) {
+          var c = a.getAttribute("quantity"),
+            d = a.getAttribute("opacity");
+          b.push({
+            color: a.getAttribute("color"),
+            quantity: null !== c ? parseFloat(c) : void 0,
+            label: a.getAttribute("label") || void 0,
+            opacity: null !== d ? parseFloat(d) : void 0,
+          });
+        },
+        LineSymbolizer: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          this.multipleSymbolizers
+            ? ((c.zIndex = this.featureTypeCounter),
+              b.symbolizers.push(new OpenLayers.Symbolizer.Line(c)))
+            : (b.symbolizer.Line = OpenLayers.Util.applyDefaults(c, b.symbolizer.Line));
+        },
+        PolygonSymbolizer: function (a, b) {
+          var c = { fill: !1, stroke: !1 };
+          this.multipleSymbolizers || (c = b.symbolizer.Polygon || c);
+          this.readChildNodes(a, c);
+          this.multipleSymbolizers
+            ? ((c.zIndex = this.featureTypeCounter),
+              b.symbolizers.push(new OpenLayers.Symbolizer.Polygon(c)))
+            : (b.symbolizer.Polygon = c);
+        },
+        PointSymbolizer: function (a, b) {
+          var c = { fill: !1, stroke: !1, graphic: !1 };
+          this.multipleSymbolizers || (c = b.symbolizer.Point || c);
+          this.readChildNodes(a, c);
+          this.multipleSymbolizers
+            ? ((c.zIndex = this.featureTypeCounter),
+              b.symbolizers.push(new OpenLayers.Symbolizer.Point(c)))
+            : (b.symbolizer.Point = c);
+        },
+        Stroke: function (a, b) {
+          b.stroke = !0;
+          this.readChildNodes(a, b);
+        },
+        Fill: function (a, b) {
+          b.fill = !0;
+          this.readChildNodes(a, b);
+        },
+        CssParameter: function (a, b) {
+          var c = a.getAttribute("name"),
+            d = this.cssMap[c];
+          b.label &&
+            ("fill" === c ? (d = "fontColor") : "fill-opacity" === c && (d = "fontOpacity"));
+          d && (c = this.readers.ogc._expression.call(this, a)) && (b[d] = c);
+        },
+        Graphic: function (a, b) {
+          b.graphic = !0;
+          var c = {};
+          this.readChildNodes(a, c);
+          for (
+            var d = "stroke strokeColor strokeWidth strokeOpacity strokeLinecap fill fillColor fillOpacity graphicName rotation graphicFormat".split(
+                " "
+              ),
+              e,
+              f,
+              g = 0,
+              h = d.length;
+            g < h;
+            ++g
+          )
+            (e = d[g]), (f = c[e]), void 0 != f && (b[e] = f);
+          void 0 != c.opacity && (b.graphicOpacity = c.opacity);
+          void 0 != c.size &&
+            (isNaN(c.size / 2) ? (b.graphicWidth = c.size) : (b.pointRadius = c.size / 2));
+          void 0 != c.href && (b.externalGraphic = c.href);
+          void 0 != c.rotation && (b.rotation = c.rotation);
+        },
+        ExternalGraphic: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        Mark: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        WellKnownName: function (a, b) {
+          b.graphicName = this.getChildValue(a);
+        },
+        Opacity: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          c && (b.opacity = c);
+        },
+        Size: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          c && (b.size = c);
+        },
+        Rotation: function (a, b) {
+          var c = this.readers.ogc._expression.call(this, a);
+          c && (b.rotation = c);
+        },
+        OnlineResource: function (a, b) {
+          b.href = this.getAttributeNS(a, this.namespaces.xlink, "href");
+        },
+        Format: function (a, b) {
+          b.graphicFormat = this.getChildValue(a);
+        },
+      },
+    },
+    OpenLayers.Format.Filter.v1_0_0.prototype.readers
+  ),
+  cssMap: {
+    stroke: "strokeColor",
+    "stroke-opacity": "strokeOpacity",
+    "stroke-width": "strokeWidth",
+    "stroke-linecap": "strokeLinecap",
+    "stroke-dasharray": "strokeDashstyle",
+    fill: "fillColor",
+    "fill-opacity": "fillOpacity",
+    "font-family": "fontFamily",
+    "font-size": "fontSize",
+    "font-weight": "fontWeight",
+    "font-style": "fontStyle",
+  },
+  getCssProperty: function (a) {
+    var b = null,
+      c;
+    for (c in this.cssMap)
+      if (this.cssMap[c] == a) {
+        b = c;
+        break;
+      }
+    return b;
+  },
+  getGraphicFormat: function (a) {
+    var b, c;
+    for (c in this.graphicFormats)
+      if (this.graphicFormats[c].test(a)) {
+        b = c;
+        break;
+      }
+    return b || this.defaultGraphicFormat;
+  },
+  defaultGraphicFormat: "image/png",
+  graphicFormats: { "image/jpeg": /\.jpe?g$/i, "image/gif": /\.gif$/i, "image/png": /\.png$/i },
+  write: function (a) {
+    return this.writers.sld.StyledLayerDescriptor.apply(this, [a]);
+  },
+  writers: OpenLayers.Util.applyDefaults(
+    {
+      sld: {
+        _OGCExpression: function (a, b) {
+          var c = this.createElementNSPlus(a),
+            d = "string" == typeof b ? b.split("${") : [b];
+          c.appendChild(this.createTextNode(d[0]));
+          for (var e, f, g = 1, h = d.length; g < h; g++)
+            (e = d[g]),
+              (f = e.indexOf("}")),
+              0 < f
+                ? (this.writeNode("ogc:PropertyName", { property: e.substring(0, f) }, c),
+                  c.appendChild(this.createTextNode(e.substring(++f))))
+                : c.appendChild(this.createTextNode("${" + e));
+          return c;
+        },
+        StyledLayerDescriptor: function (a) {
+          var b = this.createElementNSPlus("sld:StyledLayerDescriptor", {
+            attributes: { version: this.VERSION, "xsi:schemaLocation": this.schemaLocation },
+          });
+          b.setAttribute("xmlns:ogc", this.namespaces.ogc);
+          b.setAttribute("xmlns:gml", this.namespaces.gml);
+          a.name && this.writeNode("Name", a.name, b);
+          a.title && this.writeNode("Title", a.title, b);
+          a.description && this.writeNode("Abstract", a.description, b);
+          if (OpenLayers.Util.isArray(a.namedLayers))
+            for (var c = 0, d = a.namedLayers.length; c < d; ++c)
+              this.writeNode("NamedLayer", a.namedLayers[c], b);
+          else for (c in a.namedLayers) this.writeNode("NamedLayer", a.namedLayers[c], b);
+          return b;
+        },
+        Name: function (a) {
+          return this.createElementNSPlus("sld:Name", { value: a });
+        },
+        Title: function (a) {
+          return this.createElementNSPlus("sld:Title", { value: a });
+        },
+        Abstract: function (a) {
+          return this.createElementNSPlus("sld:Abstract", { value: a });
+        },
+        NamedLayer: function (a) {
+          var b = this.createElementNSPlus("sld:NamedLayer");
+          this.writeNode("Name", a.name, b);
+          if (a.namedStyles)
+            for (var c = 0, d = a.namedStyles.length; c < d; ++c)
+              this.writeNode("NamedStyle", a.namedStyles[c], b);
+          if (a.userStyles)
+            for (c = 0, d = a.userStyles.length; c < d; ++c)
+              this.writeNode("UserStyle", a.userStyles[c], b);
+          return b;
+        },
+        NamedStyle: function (a) {
+          var b = this.createElementNSPlus("sld:NamedStyle");
+          this.writeNode("Name", a, b);
+          return b;
+        },
+        UserStyle: function (a) {
+          var b = this.createElementNSPlus("sld:UserStyle");
+          a.name && this.writeNode("Name", a.name, b);
+          a.title && this.writeNode("Title", a.title, b);
+          a.description && this.writeNode("Abstract", a.description, b);
+          a.isDefault && this.writeNode("IsDefault", a.isDefault, b);
+          if (this.multipleSymbolizers && a.rules) {
+            for (var c = { 0: [] }, d = [0], e, f, g, h, k, l = 0, m = a.rules.length; l < m; ++l)
+              if (((e = a.rules[l]), e.symbolizers)) {
+                f = {};
+                for (var n = 0, p = e.symbolizers.length; n < p; ++n)
+                  (g = e.symbolizers[n]),
+                    (h = g.zIndex),
+                    h in f || ((k = e.clone()), (k.symbolizers = []), (f[h] = k)),
+                    f[h].symbolizers.push(g.clone());
+                for (h in f) h in c || (d.push(h), (c[h] = [])), c[h].push(f[h]);
+              } else c[0].push(e.clone());
+            d.sort();
+            l = 0;
+            for (m = d.length; l < m; ++l)
+              (e = c[d[l]]),
+                0 < e.length &&
+                  ((k = a.clone()), (k.rules = c[d[l]]), this.writeNode("FeatureTypeStyle", k, b));
+          } else this.writeNode("FeatureTypeStyle", a, b);
+          return b;
+        },
+        IsDefault: function (a) {
+          return this.createElementNSPlus("sld:IsDefault", { value: a ? "1" : "0" });
+        },
+        FeatureTypeStyle: function (a) {
+          for (
+            var b = this.createElementNSPlus("sld:FeatureTypeStyle"), c = 0, d = a.rules.length;
+            c < d;
+            ++c
+          )
+            this.writeNode("Rule", a.rules[c], b);
+          return b;
+        },
+        Rule: function (a) {
+          var b = this.createElementNSPlus("sld:Rule");
+          a.name && this.writeNode("Name", a.name, b);
+          a.title && this.writeNode("Title", a.title, b);
+          a.description && this.writeNode("Abstract", a.description, b);
+          a.elseFilter
+            ? this.writeNode("ElseFilter", null, b)
+            : a.filter && this.writeNode("ogc:Filter", a.filter, b);
+          void 0 != a.minScaleDenominator &&
+            this.writeNode("MinScaleDenominator", a.minScaleDenominator, b);
+          void 0 != a.maxScaleDenominator &&
+            this.writeNode("MaxScaleDenominator", a.maxScaleDenominator, b);
+          var c, d;
+          if (this.multipleSymbolizers && a.symbolizers)
+            for (var e = 0, f = a.symbolizers.length; e < f; ++e)
+              (d = a.symbolizers[e]),
+                (c = d.CLASS_NAME.split(".").pop()),
+                this.writeNode(c + "Symbolizer", d, b);
+          else
+            for (var f = OpenLayers.Style.SYMBOLIZER_PREFIXES, e = 0, g = f.length; e < g; ++e)
+              (c = f[e]), (d = a.symbolizer[c]) && this.writeNode(c + "Symbolizer", d, b);
+          return b;
+        },
+        ElseFilter: function () {
+          return this.createElementNSPlus("sld:ElseFilter");
+        },
+        MinScaleDenominator: function (a) {
+          return this.createElementNSPlus("sld:MinScaleDenominator", { value: a });
+        },
+        MaxScaleDenominator: function (a) {
+          return this.createElementNSPlus("sld:MaxScaleDenominator", { value: a });
+        },
+        LineSymbolizer: function (a) {
+          var b = this.createElementNSPlus("sld:LineSymbolizer");
+          this.writeNode("Stroke", a, b);
+          return b;
+        },
+        Stroke: function (a) {
+          var b = this.createElementNSPlus("sld:Stroke");
+          void 0 != a.strokeColor &&
+            this.writeNode("CssParameter", { symbolizer: a, key: "strokeColor" }, b);
+          void 0 != a.strokeOpacity &&
+            this.writeNode("CssParameter", { symbolizer: a, key: "strokeOpacity" }, b);
+          void 0 != a.strokeWidth &&
+            this.writeNode("CssParameter", { symbolizer: a, key: "strokeWidth" }, b);
+          void 0 != a.strokeDashstyle &&
+            "solid" !== a.strokeDashstyle &&
+            this.writeNode("CssParameter", { symbolizer: a, key: "strokeDashstyle" }, b);
+          void 0 != a.strokeLinecap &&
+            this.writeNode("CssParameter", { symbolizer: a, key: "strokeLinecap" }, b);
+          return b;
+        },
+        CssParameter: function (a) {
+          return this.createElementNSPlus("sld:CssParameter", {
+            attributes: { name: this.getCssProperty(a.key) },
+            value: a.symbolizer[a.key],
+          });
+        },
+        TextSymbolizer: function (a) {
+          var b = this.createElementNSPlus("sld:TextSymbolizer");
+          null != a.label && this.writeNode("Label", a.label, b);
+          (null == a.fontFamily &&
+            null == a.fontSize &&
+            null == a.fontWeight &&
+            null == a.fontStyle) ||
+            this.writeNode("Font", a, b);
+          (null == a.labelAnchorPointX &&
+            null == a.labelAnchorPointY &&
+            null == a.labelAlign &&
+            null == a.labelXOffset &&
+            null == a.labelYOffset &&
+            null == a.labelRotation &&
+            null == a.labelPerpendicularOffset) ||
+            this.writeNode("LabelPlacement", a, b);
+          (null == a.haloRadius && null == a.haloColor && null == a.haloOpacity) ||
+            this.writeNode("Halo", a, b);
+          (null == a.fontColor && null == a.fontOpacity) ||
+            this.writeNode("Fill", { fillColor: a.fontColor, fillOpacity: a.fontOpacity }, b);
+          return b;
+        },
+        LabelPlacement: function (a) {
+          var b = this.createElementNSPlus("sld:LabelPlacement");
+          (null == a.labelAnchorPointX &&
+            null == a.labelAnchorPointY &&
+            null == a.labelAlign &&
+            null == a.labelXOffset &&
+            null == a.labelYOffset &&
+            null == a.labelRotation) ||
+            null != a.labelPerpendicularOffset ||
+            this.writeNode("PointPlacement", a, b);
+          null != a.labelPerpendicularOffset && this.writeNode("LinePlacement", a, b);
+          return b;
+        },
+        LinePlacement: function (a) {
+          var b = this.createElementNSPlus("sld:LinePlacement");
+          this.writeNode("PerpendicularOffset", a.labelPerpendicularOffset, b);
+          return b;
+        },
+        PerpendicularOffset: function (a) {
+          return this.createElementNSPlus("sld:PerpendicularOffset", { value: a });
+        },
+        PointPlacement: function (a) {
+          var b = this.createElementNSPlus("sld:PointPlacement");
+          (null == a.labelAnchorPointX && null == a.labelAnchorPointY && null == a.labelAlign) ||
+            this.writeNode("AnchorPoint", a, b);
+          (null == a.labelXOffset && null == a.labelYOffset) ||
+            this.writeNode("Displacement", a, b);
+          null != a.labelRotation && this.writeNode("Rotation", a.labelRotation, b);
+          return b;
+        },
+        AnchorPoint: function (a) {
+          var b = this.createElementNSPlus("sld:AnchorPoint"),
+            c = a.labelAnchorPointX,
+            d = a.labelAnchorPointY;
+          null != c && this.writeNode("AnchorPointX", c, b);
+          null != d && this.writeNode("AnchorPointY", d, b);
+          if (null == c && null == d) {
+            var e = a.labelAlign.substr(0, 1);
+            a = a.labelAlign.substr(1, 1);
+            "l" === e ? (c = 0) : "c" === e ? (c = 0.5) : "r" === e && (c = 1);
+            "b" === a ? (d = 0) : "m" === a ? (d = 0.5) : "t" === a && (d = 1);
+            this.writeNode("AnchorPointX", c, b);
+            this.writeNode("AnchorPointY", d, b);
+          }
+          return b;
+        },
+        AnchorPointX: function (a) {
+          return this.createElementNSPlus("sld:AnchorPointX", { value: a });
+        },
+        AnchorPointY: function (a) {
+          return this.createElementNSPlus("sld:AnchorPointY", { value: a });
+        },
+        Displacement: function (a) {
+          var b = this.createElementNSPlus("sld:Displacement");
+          null != a.labelXOffset && this.writeNode("DisplacementX", a.labelXOffset, b);
+          null != a.labelYOffset && this.writeNode("DisplacementY", a.labelYOffset, b);
+          return b;
+        },
+        DisplacementX: function (a) {
+          return this.createElementNSPlus("sld:DisplacementX", { value: a });
+        },
+        DisplacementY: function (a) {
+          return this.createElementNSPlus("sld:DisplacementY", { value: a });
+        },
+        Font: function (a) {
+          var b = this.createElementNSPlus("sld:Font");
+          a.fontFamily && this.writeNode("CssParameter", { symbolizer: a, key: "fontFamily" }, b);
+          a.fontSize && this.writeNode("CssParameter", { symbolizer: a, key: "fontSize" }, b);
+          a.fontWeight && this.writeNode("CssParameter", { symbolizer: a, key: "fontWeight" }, b);
+          a.fontStyle && this.writeNode("CssParameter", { symbolizer: a, key: "fontStyle" }, b);
+          return b;
+        },
+        Label: function (a) {
+          return this.writers.sld._OGCExpression.call(this, "sld:Label", a);
+        },
+        Halo: function (a) {
+          var b = this.createElementNSPlus("sld:Halo");
+          a.haloRadius && this.writeNode("Radius", a.haloRadius, b);
+          (a.haloColor || a.haloOpacity) &&
+            this.writeNode("Fill", { fillColor: a.haloColor, fillOpacity: a.haloOpacity }, b);
+          return b;
+        },
+        Radius: function (a) {
+          return this.createElementNSPlus("sld:Radius", { value: a });
+        },
+        RasterSymbolizer: function (a) {
+          var b = this.createElementNSPlus("sld:RasterSymbolizer");
+          a.geometry && this.writeNode("Geometry", a.geometry, b);
+          a.opacity && this.writeNode("Opacity", a.opacity, b);
+          a.colorMap && this.writeNode("ColorMap", a.colorMap, b);
+          return b;
+        },
+        Geometry: function (a) {
+          var b = this.createElementNSPlus("sld:Geometry");
+          a.property && this.writeNode("ogc:PropertyName", a, b);
+          return b;
+        },
+        ColorMap: function (a) {
+          for (var b = this.createElementNSPlus("sld:ColorMap"), c = 0, d = a.length; c < d; ++c)
+            this.writeNode("ColorMapEntry", a[c], b);
+          return b;
+        },
+        ColorMapEntry: function (a) {
+          var b = this.createElementNSPlus("sld:ColorMapEntry");
+          b.setAttribute("color", a.color);
+          void 0 !== a.opacity && b.setAttribute("opacity", parseFloat(a.opacity));
+          void 0 !== a.quantity && b.setAttribute("quantity", parseFloat(a.quantity));
+          void 0 !== a.label && b.setAttribute("label", a.label);
+          return b;
+        },
+        PolygonSymbolizer: function (a) {
+          var b = this.createElementNSPlus("sld:PolygonSymbolizer");
+          !1 !== a.fill && this.writeNode("Fill", a, b);
+          !1 !== a.stroke && this.writeNode("Stroke", a, b);
+          return b;
+        },
+        Fill: function (a) {
+          var b = this.createElementNSPlus("sld:Fill");
+          a.fillColor && this.writeNode("CssParameter", { symbolizer: a, key: "fillColor" }, b);
+          null != a.fillOpacity &&
+            this.writeNode("CssParameter", { symbolizer: a, key: "fillOpacity" }, b);
+          return b;
+        },
+        PointSymbolizer: function (a) {
+          var b = this.createElementNSPlus("sld:PointSymbolizer");
+          this.writeNode("Graphic", a, b);
+          return b;
+        },
+        Graphic: function (a) {
+          var b = this.createElementNSPlus("sld:Graphic");
+          void 0 != a.externalGraphic
+            ? this.writeNode("ExternalGraphic", a, b)
+            : this.writeNode("Mark", a, b);
+          void 0 != a.graphicOpacity && this.writeNode("Opacity", a.graphicOpacity, b);
+          void 0 != a.pointRadius
+            ? this.writeNode("Size", 2 * a.pointRadius, b)
+            : void 0 != a.graphicWidth && this.writeNode("Size", a.graphicWidth, b);
+          void 0 != a.rotation && this.writeNode("Rotation", a.rotation, b);
+          return b;
+        },
+        ExternalGraphic: function (a) {
+          var b = this.createElementNSPlus("sld:ExternalGraphic");
+          this.writeNode("OnlineResource", a.externalGraphic, b);
+          a = a.graphicFormat || this.getGraphicFormat(a.externalGraphic);
+          this.writeNode("Format", a, b);
+          return b;
+        },
+        Mark: function (a) {
+          var b = this.createElementNSPlus("sld:Mark");
+          a.graphicName && this.writeNode("WellKnownName", a.graphicName, b);
+          !1 !== a.fill && this.writeNode("Fill", a, b);
+          !1 !== a.stroke && this.writeNode("Stroke", a, b);
+          return b;
+        },
+        WellKnownName: function (a) {
+          return this.createElementNSPlus("sld:WellKnownName", { value: a });
+        },
+        Opacity: function (a) {
+          return this.createElementNSPlus("sld:Opacity", { value: a });
+        },
+        Size: function (a) {
+          return this.writers.sld._OGCExpression.call(this, "sld:Size", a);
+        },
+        Rotation: function (a) {
+          return this.createElementNSPlus("sld:Rotation", { value: a });
+        },
+        OnlineResource: function (a) {
+          return this.createElementNSPlus("sld:OnlineResource", {
+            attributes: { "xlink:type": "simple", "xlink:href": a },
+          });
+        },
+        Format: function (a) {
+          return this.createElementNSPlus("sld:Format", { value: a });
+        },
+      },
+    },
+    OpenLayers.Format.Filter.v1_0_0.prototype.writers
+  ),
+  CLASS_NAME: "OpenLayers.Format.SLD.v1",
+});
+OpenLayers.Layer.WMS = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  DEFAULT_PARAMS: {
+    service: "WMS",
+    version: "1.1.1",
+    request: "GetMap",
+    styles: "",
+    format: "image/jpeg",
+  },
+  isBaseLayer: !0,
+  encodeBBOX: !1,
+  noMagic: !1,
+  yx: {},
+  initialize: function (a, b, c, d) {
+    var e = [];
+    c = OpenLayers.Util.upperCaseObject(c);
+    1.3 <= parseFloat(c.VERSION) && !c.EXCEPTIONS && (c.EXCEPTIONS = "INIMAGE");
+    e.push(a, b, c, d);
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, e);
+    OpenLayers.Util.applyDefaults(
+      this.params,
+      OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS)
+    );
+    !this.noMagic &&
+      this.params.TRANSPARENT &&
+      "true" == this.params.TRANSPARENT.toString().toLowerCase() &&
+      ((null != d && d.isBaseLayer) || (this.isBaseLayer = !1),
+      "image/jpeg" == this.params.FORMAT &&
+        (this.params.FORMAT = OpenLayers.Util.alphaHack() ? "image/gif" : "image/png"));
+  },
+  clone: function (a) {
+    null == a &&
+      (a = new OpenLayers.Layer.WMS(this.name, this.url, this.params, this.getOptions()));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  reverseAxisOrder: function () {
+    var a = this.projection.getCode();
+    return (
+      1.3 <= parseFloat(this.params.VERSION) &&
+      !!(this.yx[a] || (OpenLayers.Projection.defaults[a] && OpenLayers.Projection.defaults[a].yx))
+    );
+  },
+  getURL: function (a) {
+    a = this.adjustBounds(a);
+    var b = this.getImageSize(),
+      c = {},
+      d = this.reverseAxisOrder();
+    c.BBOX = this.encodeBBOX ? a.toBBOX(null, d) : a.toArray(d);
+    c.WIDTH = b.w;
+    c.HEIGHT = b.h;
+    return this.getFullRequestString(c);
+  },
+  mergeNewParams: function (a) {
+    a = [OpenLayers.Util.upperCaseObject(a)];
+    return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this, a);
+  },
+  getFullRequestString: function (a, b) {
+    var c = this.map.getProjectionObject(),
+      c = this.projection && this.projection.equals(c) ? this.projection.getCode() : c.getCode(),
+      c = "none" == c ? null : c;
+    1.3 <= parseFloat(this.params.VERSION) ? (this.params.CRS = c) : (this.params.SRS = c);
+    "boolean" == typeof this.params.TRANSPARENT &&
+      (a.TRANSPARENT = this.params.TRANSPARENT ? "TRUE" : "FALSE");
+    return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Layer.WMS",
+});
+OpenLayers.Layer.KaMap = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  isBaseLayer: !0,
+  DEFAULT_PARAMS: { i: "jpeg", map: "" },
+  initialize: function (a, b, c, d) {
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, arguments);
+    this.params = OpenLayers.Util.applyDefaults(this.params, this.DEFAULT_PARAMS);
+  },
+  getURL: function (a) {
+    a = this.adjustBounds(a);
+    var b = this.map.getResolution(),
+      c = Math.round(1e4 * this.map.getScale()) / 1e4,
+      d = Math.round(a.left / b);
+    a = -Math.round(a.top / b);
+    return this.getFullRequestString({ t: a, l: d, s: c });
+  },
+  calculateGridLayout: function (a, b, c) {
+    b = c * this.tileSize.w;
+    c *= this.tileSize.h;
+    return {
+      tilelon: b,
+      tilelat: c,
+      startcol: Math.floor(a.left / b) - this.buffer,
+      startrow: Math.floor(a.top / c) + this.buffer,
+    };
+  },
+  getTileBoundsForGridIndex: function (a, b) {
+    this.getTileOrigin();
+    var c = this.gridLayout,
+      d = c.tilelon,
+      e = c.tilelat,
+      f = (c.startcol + b) * d,
+      c = (c.startrow - a) * e;
+    return new OpenLayers.Bounds(f, c, f + d, c + e);
+  },
+  clone: function (a) {
+    null == a &&
+      (a = new OpenLayers.Layer.KaMap(this.name, this.url, this.params, this.getOptions()));
+    a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]);
+    null != this.tileSize && (a.tileSize = this.tileSize.clone());
+    a.grid = [];
+    return a;
+  },
+  getTileBounds: function (a) {
+    var b = this.getResolution(),
+      c = b * this.tileSize.w,
+      b = b * this.tileSize.h,
+      d = this.getLonLatFromViewPortPx(a);
+    a = c * Math.floor(d.lon / c);
+    d = b * Math.floor(d.lat / b);
+    return new OpenLayers.Bounds(a, d, a + c, d + b);
+  },
+  CLASS_NAME: "OpenLayers.Layer.KaMap",
+});
+OpenLayers.Format.WMC.v1_1_0 = OpenLayers.Class(OpenLayers.Format.WMC.v1, {
+  VERSION: "1.1.0",
+  schemaLocation:
+    "http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd",
+  initialize: function (a) {
+    OpenLayers.Format.WMC.v1.prototype.initialize.apply(this, [a]);
+  },
+  read_sld_MinScaleDenominator: function (a, b) {
+    var c = parseFloat(this.getChildValue(b));
+    0 < c && (a.maxScale = c);
+  },
+  read_sld_MaxScaleDenominator: function (a, b) {
+    a.minScale = parseFloat(this.getChildValue(b));
+  },
+  read_wmc_SRS: function (a, b) {
+    "srs" in a || (a.srs = {});
+    a.srs[this.getChildValue(b)] = !0;
+  },
+  write_wmc_Layer: function (a) {
+    var b = OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this, [a]);
+    if (a.maxScale) {
+      var c = this.createElementNS(this.namespaces.sld, "sld:MinScaleDenominator");
+      c.appendChild(this.createTextNode(a.maxScale.toPrecision(16)));
+      b.appendChild(c);
+    }
+    a.minScale &&
+      ((c = this.createElementNS(this.namespaces.sld, "sld:MaxScaleDenominator")),
+      c.appendChild(this.createTextNode(a.minScale.toPrecision(16))),
+      b.appendChild(c));
+    if (a.srs) for (var d in a.srs) b.appendChild(this.createElementDefaultNS("SRS", d));
+    b.appendChild(this.write_wmc_FormatList(a));
+    b.appendChild(this.write_wmc_StyleList(a));
+    a.dimensions && b.appendChild(this.write_wmc_DimensionList(a));
+    b.appendChild(this.write_wmc_LayerExtension(a));
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Format.WMC.v1_1_0",
+});
+OpenLayers.Format.XLS = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.1.0",
+  stringifyOutput: !0,
+  CLASS_NAME: "OpenLayers.Format.XLS",
+});
+OpenLayers.Format.XLS.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    xls: "http://www.opengis.net/xls",
+    gml: "http://www.opengis.net/gml",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  xy: !0,
+  defaultPrefix: "xls",
+  schemaLocation: null,
+  read: function (a, b) {
+    OpenLayers.Util.applyDefaults(b, this.options);
+    var c = {};
+    this.readChildNodes(a, c);
+    return c;
+  },
+  readers: {
+    xls: {
+      XLS: function (a, b) {
+        b.version = a.getAttribute("version");
+        this.readChildNodes(a, b);
+      },
+      Response: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      GeocodeResponse: function (a, b) {
+        b.responseLists = [];
+        this.readChildNodes(a, b);
+      },
+      GeocodeResponseList: function (a, b) {
+        var c = {
+          features: [],
+          numberOfGeocodedAddresses: parseInt(a.getAttribute("numberOfGeocodedAddresses")),
+        };
+        b.responseLists.push(c);
+        this.readChildNodes(a, c);
+      },
+      GeocodedAddress: function (a, b) {
+        var c = new OpenLayers.Feature.Vector();
+        b.features.push(c);
+        this.readChildNodes(a, c);
+        c.geometry = c.components[0];
+      },
+      GeocodeMatchCode: function (a, b) {
+        b.attributes.matchCode = {
+          accuracy: parseFloat(a.getAttribute("accuracy")),
+          matchType: a.getAttribute("matchType"),
+        };
+      },
+      Address: function (a, b) {
+        var c = {
+          countryCode: a.getAttribute("countryCode"),
+          addressee: a.getAttribute("addressee"),
+          street: [],
+          place: [],
+        };
+        b.attributes.address = c;
+        this.readChildNodes(a, c);
+      },
+      freeFormAddress: function (a, b) {
+        b.freeFormAddress = this.getChildValue(a);
+      },
+      StreetAddress: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      Building: function (a, b) {
+        b.building = {
+          number: a.getAttribute("number"),
+          subdivision: a.getAttribute("subdivision"),
+          buildingName: a.getAttribute("buildingName"),
+        };
+      },
+      Street: function (a, b) {
+        b.street.push(this.getChildValue(a));
+      },
+      Place: function (a, b) {
+        b.place[a.getAttribute("type")] = this.getChildValue(a);
+      },
+      PostalCode: function (a, b) {
+        b.postalCode = this.getChildValue(a);
+      },
+    },
+    gml: OpenLayers.Format.GML.v3.prototype.readers.gml,
+  },
+  write: function (a) {
+    return this.writers.xls.XLS.apply(this, [a]);
+  },
+  writers: {
+    xls: {
+      XLS: function (a) {
+        var b = this.createElementNSPlus("xls:XLS", {
+          attributes: { version: this.VERSION, "xsi:schemaLocation": this.schemaLocation },
+        });
+        this.writeNode("RequestHeader", a.header, b);
+        this.writeNode("Request", a, b);
+        return b;
+      },
+      RequestHeader: function (a) {
+        return this.createElementNSPlus("xls:RequestHeader");
+      },
+      Request: function (a) {
+        var b = this.createElementNSPlus("xls:Request", {
+          attributes: {
+            methodName: "GeocodeRequest",
+            requestID: a.requestID || "",
+            version: this.VERSION,
+          },
+        });
+        this.writeNode("GeocodeRequest", a.addresses, b);
+        return b;
+      },
+      GeocodeRequest: function (a) {
+        for (
+          var b = this.createElementNSPlus("xls:GeocodeRequest"), c = 0, d = a.length;
+          c < d;
+          c++
+        )
+          this.writeNode("Address", a[c], b);
+        return b;
+      },
+      Address: function (a) {
+        var b = this.createElementNSPlus("xls:Address", {
+          attributes: { countryCode: a.countryCode },
+        });
+        a.freeFormAddress
+          ? this.writeNode("freeFormAddress", a.freeFormAddress, b)
+          : (a.street && this.writeNode("StreetAddress", a, b),
+            a.municipality && this.writeNode("Municipality", a.municipality, b),
+            a.countrySubdivision && this.writeNode("CountrySubdivision", a.countrySubdivision, b),
+            a.postalCode && this.writeNode("PostalCode", a.postalCode, b));
+        return b;
+      },
+      freeFormAddress: function (a) {
+        return this.createElementNSPlus("freeFormAddress", { value: a });
+      },
+      StreetAddress: function (a) {
+        var b = this.createElementNSPlus("xls:StreetAddress");
+        a.building && this.writeNode(b, "Building", a.building);
+        a = a.street;
+        OpenLayers.Util.isArray(a) || (a = [a]);
+        for (var c = 0, d = a.length; c < d; c++) this.writeNode("Street", a[c], b);
+        return b;
+      },
+      Building: function (a) {
+        return this.createElementNSPlus("xls:Building", {
+          attributes: {
+            number: a.number,
+            subdivision: a.subdivision,
+            buildingName: a.buildingName,
+          },
+        });
+      },
+      Street: function (a) {
+        return this.createElementNSPlus("xls:Street", { value: a });
+      },
+      Municipality: function (a) {
+        return this.createElementNSPlus("xls:Place", {
+          attributes: { type: "Municipality" },
+          value: a,
+        });
+      },
+      CountrySubdivision: function (a) {
+        return this.createElementNSPlus("xls:Place", {
+          attributes: { type: "CountrySubdivision" },
+          value: a,
+        });
+      },
+      PostalCode: function (a) {
+        return this.createElementNSPlus("xls:PostalCode", { value: a });
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.XLS.v1",
+});
+OpenLayers.Format.XLS.v1_1_0 = OpenLayers.Class(OpenLayers.Format.XLS.v1, {
+  VERSION: "1.1",
+  schemaLocation:
+    "http://www.opengis.net/xls http://schemas.opengis.net/ols/1.1.0/LocationUtilityService.xsd",
+  CLASS_NAME: "OpenLayers.Format.XLS.v1_1_0",
+});
+OpenLayers.Format.XLS.v1_1 = OpenLayers.Format.XLS.v1_1_0;
+OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
+  xmlns: "http://www.w3.org/2000/svg",
+  xlinkns: "http://www.w3.org/1999/xlink",
+  MAX_PIXEL: 15e3,
+  translationParameters: null,
+  symbolMetrics: null,
+  initialize: function (a) {
+    this.supported() &&
+      (OpenLayers.Renderer.Elements.prototype.initialize.apply(this, arguments),
+      (this.translationParameters = { x: 0, y: 0 }),
+      (this.symbolMetrics = {}));
+  },
+  supported: function () {
+    return (
+      document.implementation &&
+      (document.implementation.hasFeature("org.w3c.svg", "1.0") ||
+        document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG", "1.1") ||
+        document.implementation.hasFeature(
+          "http://www.w3.org/TR/SVG11/feature#BasicStructure",
+          "1.1"
+        ))
+    );
+  },
+  inValidRange: function (a, b, c) {
+    a += c ? 0 : this.translationParameters.x;
+    b += c ? 0 : this.translationParameters.y;
+    return (
+      a >= -this.MAX_PIXEL && a <= this.MAX_PIXEL && b >= -this.MAX_PIXEL && b <= this.MAX_PIXEL
+    );
+  },
+  setExtent: function (a, b) {
+    var c = OpenLayers.Renderer.Elements.prototype.setExtent.apply(this, arguments),
+      d = this.getResolution(),
+      e = -a.left / d,
+      d = a.top / d;
+    if (b)
+      return (
+        (this.left = e),
+        (this.top = d),
+        this.rendererRoot.setAttributeNS(null, "viewBox", "0 0 " + this.size.w + " " + this.size.h),
+        this.translate(this.xOffset, 0),
+        !0
+      );
+    (e = this.translate(e - this.left + this.xOffset, d - this.top)) || this.setExtent(a, !0);
+    return c && e;
+  },
+  translate: function (a, b) {
+    if (this.inValidRange(a, b, !0)) {
+      var c = "";
+      if (a || b) c = "translate(" + a + "," + b + ")";
+      this.root.setAttributeNS(null, "transform", c);
+      this.translationParameters = { x: a, y: b };
+      return !0;
+    }
+    return !1;
+  },
+  setSize: function (a) {
+    OpenLayers.Renderer.prototype.setSize.apply(this, arguments);
+    this.rendererRoot.setAttributeNS(null, "width", this.size.w);
+    this.rendererRoot.setAttributeNS(null, "height", this.size.h);
+  },
+  getNodeType: function (a, b) {
+    var c = null;
+    switch (a.CLASS_NAME) {
+      case "OpenLayers.Geometry.Point":
+        c = b.externalGraphic ? "image" : this.isComplexSymbol(b.graphicName) ? "svg" : "circle";
+        break;
+      case "OpenLayers.Geometry.Rectangle":
+        c = "rect";
+        break;
+      case "OpenLayers.Geometry.LineString":
+        c = "polyline";
+        break;
+      case "OpenLayers.Geometry.LinearRing":
+        c = "polygon";
+        break;
+      case "OpenLayers.Geometry.Polygon":
+      case "OpenLayers.Geometry.Curve":
+        c = "path";
+    }
+    return c;
+  },
+  setStyle: function (a, b, c) {
+    b = b || a._style;
+    c = c || a._options;
+    var d = b.title || b.graphicTitle;
+    if (d) {
+      a.setAttributeNS(null, "title", d);
+      var e = a.getElementsByTagName("title");
+      0 < e.length
+        ? (e[0].firstChild.textContent = d)
+        : ((e = this.nodeFactory(null, "title")), (e.textContent = d), a.appendChild(e));
+    }
+    var e = parseFloat(a.getAttributeNS(null, "r")),
+      d = 1,
+      f;
+    if ("OpenLayers.Geometry.Point" == a._geometryClass && e) {
+      a.style.visibility = "";
+      if (!1 === b.graphic) a.style.visibility = "hidden";
+      else if (b.externalGraphic) {
+        f = this.getPosition(a);
+        b.graphicWidth && b.graphicHeight && a.setAttributeNS(null, "preserveAspectRatio", "none");
+        var e = b.graphicWidth || b.graphicHeight,
+          g = b.graphicHeight || b.graphicWidth,
+          e = e ? e : 2 * b.pointRadius,
+          g = g ? g : 2 * b.pointRadius,
+          h = void 0 != b.graphicYOffset ? b.graphicYOffset : -(0.5 * g),
+          k = b.graphicOpacity || b.fillOpacity;
+        a.setAttributeNS(
+          null,
+          "x",
+          (f.x + (void 0 != b.graphicXOffset ? b.graphicXOffset : -(0.5 * e))).toFixed()
+        );
+        a.setAttributeNS(null, "y", (f.y + h).toFixed());
+        a.setAttributeNS(null, "width", e);
+        a.setAttributeNS(null, "height", g);
+        a.setAttributeNS(this.xlinkns, "xlink:href", b.externalGraphic);
+        a.setAttributeNS(null, "style", "opacity: " + k);
+        a.onclick = OpenLayers.Event.preventDefault;
+      } else if (this.isComplexSymbol(b.graphicName)) {
+        var e = 3 * b.pointRadius,
+          g = 2 * e,
+          l = this.importSymbol(b.graphicName);
+        f = this.getPosition(a);
+        d = (3 * this.symbolMetrics[l.id][0]) / g;
+        h = a.parentNode;
+        k = a.nextSibling;
+        h && h.removeChild(a);
+        a.firstChild && a.removeChild(a.firstChild);
+        a.appendChild(l.firstChild.cloneNode(!0));
+        a.setAttributeNS(null, "viewBox", l.getAttributeNS(null, "viewBox"));
+        a.setAttributeNS(null, "width", g);
+        a.setAttributeNS(null, "height", g);
+        a.setAttributeNS(null, "x", f.x - e);
+        a.setAttributeNS(null, "y", f.y - e);
+        k ? h.insertBefore(a, k) : h && h.appendChild(a);
+      } else a.setAttributeNS(null, "r", b.pointRadius);
+      e = b.rotation;
+      (void 0 === e && void 0 === a._rotation) ||
+        !f ||
+        ((a._rotation = e),
+        (e |= 0),
+        "svg" !== a.nodeName
+          ? a.setAttributeNS(null, "transform", "rotate(" + e + " " + f.x + " " + f.y + ")")
+          : ((f = this.symbolMetrics[l.id]),
+            a.firstChild.setAttributeNS(
+              null,
+              "transform",
+              "rotate(" + e + " " + f[1] + " " + f[2] + ")"
+            )));
+    }
+    c.isFilled
+      ? (a.setAttributeNS(null, "fill", b.fillColor),
+        a.setAttributeNS(null, "fill-opacity", b.fillOpacity))
+      : a.setAttributeNS(null, "fill", "none");
+    c.isStroked
+      ? (a.setAttributeNS(null, "stroke", b.strokeColor),
+        a.setAttributeNS(null, "stroke-opacity", b.strokeOpacity),
+        a.setAttributeNS(null, "stroke-width", b.strokeWidth * d),
+        a.setAttributeNS(null, "stroke-linecap", b.strokeLinecap || "round"),
+        a.setAttributeNS(null, "stroke-linejoin", "round"),
+        b.strokeDashstyle && a.setAttributeNS(null, "stroke-dasharray", this.dashStyle(b, d)))
+      : a.setAttributeNS(null, "stroke", "none");
+    b.pointerEvents && a.setAttributeNS(null, "pointer-events", b.pointerEvents);
+    null != b.cursor && a.setAttributeNS(null, "cursor", b.cursor);
+    return a;
+  },
+  dashStyle: function (a, b) {
+    var c = a.strokeWidth * b,
+      d = a.strokeDashstyle;
+    switch (d) {
+      case "solid":
+        return "none";
+      case "dot":
+        return [1, 4 * c].join();
+      case "dash":
+        return [4 * c, 4 * c].join();
+      case "dashdot":
+        return [4 * c, 4 * c, 1, 4 * c].join();
+      case "longdash":
+        return [8 * c, 4 * c].join();
+      case "longdashdot":
+        return [8 * c, 4 * c, 1, 4 * c].join();
+      default:
+        return OpenLayers.String.trim(d).replace(/\s+/g, ",");
+    }
+  },
+  createNode: function (a, b) {
+    var c = document.createElementNS(this.xmlns, a);
+    b && c.setAttributeNS(null, "id", b);
+    return c;
+  },
+  nodeTypeCompare: function (a, b) {
+    return b == a.nodeName;
+  },
+  createRenderRoot: function () {
+    var a = this.nodeFactory(this.container.id + "_svgRoot", "svg");
+    a.style.display = "block";
+    return a;
+  },
+  createRoot: function (a) {
+    return this.nodeFactory(this.container.id + a, "g");
+  },
+  createDefs: function () {
+    var a = this.nodeFactory(this.container.id + "_defs", "defs");
+    this.rendererRoot.appendChild(a);
+    return a;
+  },
+  drawPoint: function (a, b) {
+    return this.drawCircle(a, b, 1);
+  },
+  drawCircle: function (a, b, c) {
+    var d = this.getResolution(),
+      e = (b.x - this.featureDx) / d + this.left;
+    b = this.top - b.y / d;
+    return this.inValidRange(e, b)
+      ? (a.setAttributeNS(null, "cx", e),
+        a.setAttributeNS(null, "cy", b),
+        a.setAttributeNS(null, "r", c),
+        a)
+      : !1;
+  },
+  drawLineString: function (a, b) {
+    var c = this.getComponentsString(b.components);
+    return c.path ? (a.setAttributeNS(null, "points", c.path), c.complete ? a : null) : !1;
+  },
+  drawLinearRing: function (a, b) {
+    var c = this.getComponentsString(b.components);
+    return c.path ? (a.setAttributeNS(null, "points", c.path), c.complete ? a : null) : !1;
+  },
+  drawPolygon: function (a, b) {
+    for (var c = "", d = !0, e = !0, f, g, h = 0, k = b.components.length; h < k; h++)
+      (c += " M"),
+        (f = this.getComponentsString(b.components[h].components, " ")),
+        (g = f.path) ? ((c += " " + g), (e = f.complete && e)) : (d = !1);
+    return d
+      ? (a.setAttributeNS(null, "d", c + " z"),
+        a.setAttributeNS(null, "fill-rule", "evenodd"),
+        e ? a : null)
+      : !1;
+  },
+  drawRectangle: function (a, b) {
+    var c = this.getResolution(),
+      d = (b.x - this.featureDx) / c + this.left,
+      e = this.top - b.y / c;
+    return this.inValidRange(d, e)
+      ? (a.setAttributeNS(null, "x", d),
+        a.setAttributeNS(null, "y", e),
+        a.setAttributeNS(null, "width", b.width / c),
+        a.setAttributeNS(null, "height", b.height / c),
+        a)
+      : !1;
+  },
+  drawText: function (a, b, c) {
+    var d = !!b.labelOutlineWidth;
+    if (d) {
+      var e = OpenLayers.Util.extend({}, b);
+      e.fontColor = e.labelOutlineColor;
+      e.fontStrokeColor = e.labelOutlineColor;
+      e.fontStrokeWidth = b.labelOutlineWidth;
+      b.labelOutlineOpacity && (e.fontOpacity = b.labelOutlineOpacity);
+      delete e.labelOutlineWidth;
+      this.drawText(a, e, c);
+    }
+    var f = this.getResolution(),
+      e = (c.x - this.featureDx) / f + this.left,
+      g = c.y / f - this.top,
+      d = d ? this.LABEL_OUTLINE_SUFFIX : this.LABEL_ID_SUFFIX,
+      f = this.nodeFactory(a + d, "text");
+    f.setAttributeNS(null, "x", e);
+    f.setAttributeNS(null, "y", -g);
+    b.fontColor && f.setAttributeNS(null, "fill", b.fontColor);
+    b.fontStrokeColor && f.setAttributeNS(null, "stroke", b.fontStrokeColor);
+    b.fontStrokeWidth && f.setAttributeNS(null, "stroke-width", b.fontStrokeWidth);
+    b.fontOpacity && f.setAttributeNS(null, "opacity", b.fontOpacity);
+    b.fontFamily && f.setAttributeNS(null, "font-family", b.fontFamily);
+    b.fontSize && f.setAttributeNS(null, "font-size", b.fontSize);
+    b.fontWeight && f.setAttributeNS(null, "font-weight", b.fontWeight);
+    b.fontStyle && f.setAttributeNS(null, "font-style", b.fontStyle);
+    !0 === b.labelSelect
+      ? (f.setAttributeNS(null, "pointer-events", "visible"), (f._featureId = a))
+      : f.setAttributeNS(null, "pointer-events", "none");
+    g = b.labelAlign || OpenLayers.Renderer.defaultSymbolizer.labelAlign;
+    f.setAttributeNS(null, "text-anchor", OpenLayers.Renderer.SVG.LABEL_ALIGN[g[0]] || "middle");
+    !0 === OpenLayers.IS_GECKO &&
+      f.setAttributeNS(
+        null,
+        "dominant-baseline",
+        OpenLayers.Renderer.SVG.LABEL_ALIGN[g[1]] || "central"
+      );
+    for (var h = b.label.split("\n"), k = h.length; f.childNodes.length > k; )
+      f.removeChild(f.lastChild);
+    for (var l = 0; l < k; l++) {
+      var m = this.nodeFactory(a + d + "_tspan_" + l, "tspan");
+      !0 === b.labelSelect &&
+        ((m._featureId = a), (m._geometry = c), (m._geometryClass = c.CLASS_NAME));
+      !1 === OpenLayers.IS_GECKO &&
+        m.setAttributeNS(
+          null,
+          "baseline-shift",
+          OpenLayers.Renderer.SVG.LABEL_VSHIFT[g[1]] || "-35%"
+        );
+      m.setAttribute("x", e);
+      if (0 == l) {
+        var n = OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]];
+        null == n && (n = -0.5);
+        m.setAttribute("dy", n * (k - 1) + "em");
+      } else m.setAttribute("dy", "1em");
+      m.textContent = "" === h[l] ? " " : h[l];
+      m.parentNode || f.appendChild(m);
+    }
+    f.parentNode || this.textRoot.appendChild(f);
+  },
+  getComponentsString: function (a, b) {
+    for (var c = [], d = !0, e = a.length, f = [], g, h = 0; h < e; h++)
+      (g = a[h]),
+        c.push(g),
+        (g = this.getShortString(g))
+          ? f.push(g)
+          : (0 < h && this.getShortString(a[h - 1]) && f.push(this.clipLine(a[h], a[h - 1])),
+            h < e - 1 && this.getShortString(a[h + 1]) && f.push(this.clipLine(a[h], a[h + 1])),
+            (d = !1));
+    return { path: f.join(b || ","), complete: d };
+  },
+  clipLine: function (a, b) {
+    if (b.equals(a)) return "";
+    var c = this.getResolution(),
+      d = this.MAX_PIXEL - this.translationParameters.x,
+      e = this.MAX_PIXEL - this.translationParameters.y,
+      f = (b.x - this.featureDx) / c + this.left,
+      g = this.top - b.y / c,
+      h = (a.x - this.featureDx) / c + this.left,
+      c = this.top - a.y / c,
+      k;
+    if (h < -d || h > d) (k = (c - g) / (h - f)), (h = 0 > h ? -d : d), (c = g + (h - f) * k);
+    if (c < -e || c > e) (k = (h - f) / (c - g)), (c = 0 > c ? -e : e), (h = f + (c - g) * k);
+    return h + "," + c;
+  },
+  getShortString: function (a) {
+    var b = this.getResolution(),
+      c = (a.x - this.featureDx) / b + this.left;
+    a = this.top - a.y / b;
+    return this.inValidRange(c, a) ? c + "," + a : !1;
+  },
+  getPosition: function (a) {
+    return {
+      x: parseFloat(a.getAttributeNS(null, "cx")),
+      y: parseFloat(a.getAttributeNS(null, "cy")),
+    };
+  },
+  importSymbol: function (a) {
+    this.defs || (this.defs = this.createDefs());
+    var b = this.container.id + "-" + a,
+      c = document.getElementById(b);
+    if (null != c) return c;
+    var d = OpenLayers.Renderer.symbol[a];
+    if (!d) throw Error(a + " is not a valid symbol name");
+    a = this.nodeFactory(b, "symbol");
+    var e = this.nodeFactory(null, "polygon");
+    a.appendChild(e);
+    for (
+      var c = new OpenLayers.Bounds(Number.MAX_VALUE, Number.MAX_VALUE, 0, 0), f = [], g, h, k = 0;
+      k < d.length;
+      k += 2
+    )
+      (g = d[k]),
+        (h = d[k + 1]),
+        (c.left = Math.min(c.left, g)),
+        (c.bottom = Math.min(c.bottom, h)),
+        (c.right = Math.max(c.right, g)),
+        (c.top = Math.max(c.top, h)),
+        f.push(g, ",", h);
+    e.setAttributeNS(null, "points", f.join(" "));
+    d = c.getWidth();
+    e = c.getHeight();
+    a.setAttributeNS(null, "viewBox", [c.left - d, c.bottom - e, 3 * d, 3 * e].join(" "));
+    this.symbolMetrics[b] = [Math.max(d, e), c.getCenterLonLat().lon, c.getCenterLonLat().lat];
+    this.defs.appendChild(a);
+    return a;
+  },
+  getFeatureIdFromEvent: function (a) {
+    var b = OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this, arguments);
+    b ||
+      ((b = a.target),
+      (b = b.parentNode && b != this.rendererRoot ? b.parentNode._featureId : void 0));
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Renderer.SVG",
+});
+OpenLayers.Renderer.SVG.LABEL_ALIGN = { l: "start", r: "end", b: "bottom", t: "hanging" };
+OpenLayers.Renderer.SVG.LABEL_VSHIFT = { t: "-70%", b: "0" };
+OpenLayers.Renderer.SVG.LABEL_VFACTOR = { t: 0, b: -1 };
+OpenLayers.Renderer.SVG.preventDefault = function (a) {
+  OpenLayers.Event.preventDefault(a);
+};
+OpenLayers.Format.SLD.v1_0_0 = OpenLayers.Class(OpenLayers.Format.SLD.v1, {
+  VERSION: "1.0.0",
+  schemaLocation:
+    "http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd",
+  CLASS_NAME: "OpenLayers.Format.SLD.v1_0_0",
+});
+OpenLayers.Format.OWSContext = OpenLayers.Class(OpenLayers.Format.Context, {
+  defaultVersion: "0.3.1",
+  getVersion: function (a, b) {
+    var c = OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this, arguments);
+    "0.3.0" === c && (c = this.defaultVersion);
+    return c;
+  },
+  toContext: function (a) {
+    var b = {};
+    "OpenLayers.Map" == a.CLASS_NAME &&
+      ((b.bounds = a.getExtent()),
+      (b.maxExtent = a.maxExtent),
+      (b.projection = a.projection),
+      (b.size = a.getSize()),
+      (b.layers = a.layers));
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Format.OWSContext",
+});
+OpenLayers.Format.OWSContext.v0_3_1 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    owc: "http://www.opengis.net/ows-context",
+    gml: "http://www.opengis.net/gml",
+    kml: "http://www.opengis.net/kml/2.2",
+    ogc: "http://www.opengis.net/ogc",
+    ows: "http://www.opengis.net/ows",
+    sld: "http://www.opengis.net/sld",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  VERSION: "0.3.1",
+  schemaLocation:
+    "http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd",
+  defaultPrefix: "owc",
+  extractAttributes: !0,
+  xy: !0,
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  featureNS: "http://mapserver.gis.umn.edu/mapserver",
+  featureType: "vector",
+  geometryName: "geometry",
+  nestingLayerLookup: null,
+  initialize: function (a) {
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+    OpenLayers.Format.GML.v2.prototype.setGeometryTypes.call(this);
+  },
+  setNestingPath: function (a) {
+    if (a.layersContext)
+      for (var b = 0, c = a.layersContext.length; b < c; b++) {
+        var d = a.layersContext[b],
+          e = [],
+          f = a.title || "";
+        a.metadata && a.metadata.nestingPath && (e = a.metadata.nestingPath.slice());
+        "" != f && e.push(f);
+        d.metadata.nestingPath = e;
+        d.layersContext && this.setNestingPath(d);
+      }
+  },
+  decomposeNestingPath: function (a) {
+    var b = [];
+    if (OpenLayers.Util.isArray(a)) {
+      for (a = a.slice(); 0 < a.length; ) b.push(a.slice()), a.pop();
+      b.reverse();
+    }
+    return b;
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    this.readNode(a, b);
+    this.setNestingPath({ layersContext: b.layersContext });
+    a = [];
+    this.processLayer(a, b);
+    delete b.layersContext;
+    b.layersContext = a;
+    return b;
+  },
+  processLayer: function (a, b) {
+    if (b.layersContext)
+      for (var c = 0, d = b.layersContext.length; c < d; c++) {
+        var e = b.layersContext[c];
+        a.push(e);
+        e.layersContext && this.processLayer(a, e);
+      }
+  },
+  write: function (a, b) {
+    this.nestingLayerLookup = {};
+    b = b || {};
+    OpenLayers.Util.applyDefaults(b, a);
+    var c = this.writeNode("OWSContext", b);
+    this.nestingLayerLookup = null;
+    this.setAttributeNS(c, this.namespaces.xsi, "xsi:schemaLocation", this.schemaLocation);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [c]);
+  },
+  readers: {
+    kml: {
+      Document: function (a, b) {
+        b.features = new OpenLayers.Format.KML({
+          kmlns: this.namespaces.kml,
+          extractStyles: !0,
+        }).read(a);
+      },
+    },
+    owc: {
+      OWSContext: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      General: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      ResourceList: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      Layer: function (a, b) {
+        var c = {
+          metadata: {},
+          visibility: "1" != a.getAttribute("hidden"),
+          queryable: "1" == a.getAttribute("queryable"),
+          opacity: null != a.getAttribute("opacity") ? parseFloat(a.getAttribute("opacity")) : null,
+          name: a.getAttribute("name"),
+          categoryLayer: null == a.getAttribute("name"),
+          formats: [],
+          styles: [],
+        };
+        b.layersContext || (b.layersContext = []);
+        b.layersContext.push(c);
+        this.readChildNodes(a, c);
+      },
+      InlineGeometry: function (a, b) {
+        b.features = [];
+        var c = this.getElementsByTagNameNS(a, this.namespaces.gml, "featureMember"),
+          d;
+        1 <= c.length && (d = c[0]);
+        d &&
+          d.firstChild &&
+          ((c = d.firstChild.nextSibling ? d.firstChild.nextSibling : d.firstChild),
+          this.setNamespace("feature", c.namespaceURI),
+          (this.featureType = c.localName || c.nodeName.split(":").pop()),
+          this.readChildNodes(a, b));
+      },
+      Server: function (a, b) {
+        if ((!b.service && !b.version) || b.service != OpenLayers.Format.Context.serviceTypes.WMS)
+          (b.service = a.getAttribute("service")),
+            (b.version = a.getAttribute("version")),
+            this.readChildNodes(a, b);
+      },
+      Name: function (a, b) {
+        b.name = this.getChildValue(a);
+        this.readChildNodes(a, b);
+      },
+      Title: function (a, b) {
+        b.title = this.getChildValue(a);
+        this.readChildNodes(a, b);
+      },
+      StyleList: function (a, b) {
+        this.readChildNodes(a, b.styles);
+      },
+      Style: function (a, b) {
+        var c = {};
+        b.push(c);
+        this.readChildNodes(a, c);
+      },
+      LegendURL: function (a, b) {
+        var c = {};
+        b.legend = c;
+        this.readChildNodes(a, c);
+      },
+      OnlineResource: function (a, b) {
+        b.url = this.getAttributeNS(a, this.namespaces.xlink, "href");
+        this.readChildNodes(a, b);
+      },
+    },
+    ows: OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows,
+    gml: OpenLayers.Format.GML.v2.prototype.readers.gml,
+    sld: OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld,
+    feature: OpenLayers.Format.GML.v2.prototype.readers.feature,
+  },
+  writers: {
+    owc: {
+      OWSContext: function (a) {
+        var b = this.createElementNSPlus("OWSContext", {
+          attributes: {
+            version: this.VERSION,
+            id: a.id || OpenLayers.Util.createUniqueID("OpenLayers_OWSContext_"),
+          },
+        });
+        this.writeNode("General", a, b);
+        this.writeNode("ResourceList", a, b);
+        return b;
+      },
+      General: function (a) {
+        var b = this.createElementNSPlus("General");
+        this.writeNode("ows:BoundingBox", a, b);
+        this.writeNode("ows:Title", a.title || "OpenLayers OWSContext", b);
+        return b;
+      },
+      ResourceList: function (a) {
+        for (
+          var b = this.createElementNSPlus("ResourceList"), c = 0, d = a.layers.length;
+          c < d;
+          c++
+        ) {
+          var e = a.layers[c],
+            f = this.decomposeNestingPath(e.metadata.nestingPath);
+          this.writeNode("_Layer", { layer: e, subPaths: f }, b);
+        }
+        return b;
+      },
+      Server: function (a) {
+        var b = this.createElementNSPlus("Server", {
+          attributes: { version: a.version, service: a.service },
+        });
+        this.writeNode("OnlineResource", a, b);
+        return b;
+      },
+      OnlineResource: function (a) {
+        return this.createElementNSPlus("OnlineResource", { attributes: { "xlink:href": a.url } });
+      },
+      InlineGeometry: function (a) {
+        var b = this.createElementNSPlus("InlineGeometry"),
+          c = a.getDataExtent();
+        null !== c && this.writeNode("gml:boundedBy", c, b);
+        for (var c = 0, d = a.features.length; c < d; c++)
+          this.writeNode("gml:featureMember", a.features[c], b);
+        return b;
+      },
+      StyleList: function (a) {
+        for (var b = this.createElementNSPlus("StyleList"), c = 0, d = a.length; c < d; c++)
+          this.writeNode("Style", a[c], b);
+        return b;
+      },
+      Style: function (a) {
+        var b = this.createElementNSPlus("Style");
+        this.writeNode("Name", a, b);
+        this.writeNode("Title", a, b);
+        a.legend && this.writeNode("LegendURL", a, b);
+        return b;
+      },
+      Name: function (a) {
+        return this.createElementNSPlus("Name", { value: a.name });
+      },
+      Title: function (a) {
+        return this.createElementNSPlus("Title", { value: a.title });
+      },
+      LegendURL: function (a) {
+        var b = this.createElementNSPlus("LegendURL");
+        this.writeNode("OnlineResource", a.legend, b);
+        return b;
+      },
+      _WMS: function (a) {
+        var b = this.createElementNSPlus("Layer", {
+          attributes: {
+            name: a.params.LAYERS,
+            queryable: a.queryable ? "1" : "0",
+            hidden: a.visibility ? "0" : "1",
+            opacity: a.hasOwnProperty("opacity") ? a.opacity : null,
+          },
+        });
+        this.writeNode("ows:Title", a.name, b);
+        this.writeNode("ows:OutputFormat", a.params.FORMAT, b);
+        this.writeNode(
+          "Server",
+          {
+            service: OpenLayers.Format.Context.serviceTypes.WMS,
+            version: a.params.VERSION,
+            url: a.url,
+          },
+          b
+        );
+        a.metadata.styles &&
+          0 < a.metadata.styles.length &&
+          this.writeNode("StyleList", a.metadata.styles, b);
+        return b;
+      },
+      _Layer: function (a) {
+        var b, c, d;
+        b = a.layer;
+        c = a.subPaths;
+        d = null;
+        0 < c.length
+          ? ((b = c[0].join("/")),
+            (c = b.lastIndexOf("/")),
+            (d = this.nestingLayerLookup[b]),
+            (c = 0 < c ? b.substring(c + 1, b.length) : b),
+            d ||
+              ((d = this.createElementNSPlus("Layer")),
+              this.writeNode("ows:Title", c, d),
+              (this.nestingLayerLookup[b] = d)),
+            a.subPaths.shift(),
+            this.writeNode("_Layer", a, d))
+          : (b instanceof OpenLayers.Layer.WMS
+              ? (d = this.writeNode("_WMS", b))
+              : b instanceof OpenLayers.Layer.Vector &&
+                (b.protocol instanceof OpenLayers.Protocol.WFS.v1
+                  ? (d = this.writeNode("_WFS", b))
+                  : b.protocol instanceof OpenLayers.Protocol.HTTP
+                  ? b.protocol.format instanceof OpenLayers.Format.GML
+                    ? ((b.protocol.format.version = "2.1.2"), (d = this.writeNode("_GML", b)))
+                    : b.protocol.format instanceof OpenLayers.Format.KML &&
+                      ((b.protocol.format.version = "2.2"), (d = this.writeNode("_KML", b)))
+                  : (this.setNamespace("feature", this.featureNS),
+                    (d = this.writeNode("_InlineGeometry", b)))),
+            b.options.maxScale && this.writeNode("sld:MinScaleDenominator", b.options.maxScale, d),
+            b.options.minScale && this.writeNode("sld:MaxScaleDenominator", b.options.minScale, d),
+            (this.nestingLayerLookup[b.name] = d));
+        return d;
+      },
+      _WFS: function (a) {
+        var b = this.createElementNSPlus("Layer", {
+          attributes: {
+            name: a.protocol.featurePrefix + ":" + a.protocol.featureType,
+            hidden: a.visibility ? "0" : "1",
+          },
+        });
+        this.writeNode("ows:Title", a.name, b);
+        this.writeNode(
+          "Server",
+          {
+            service: OpenLayers.Format.Context.serviceTypes.WFS,
+            version: a.protocol.version,
+            url: a.protocol.url,
+          },
+          b
+        );
+        return b;
+      },
+      _InlineGeometry: function (a) {
+        var b = this.createElementNSPlus("Layer", {
+          attributes: { name: this.featureType, hidden: a.visibility ? "0" : "1" },
+        });
+        this.writeNode("ows:Title", a.name, b);
+        this.writeNode("InlineGeometry", a, b);
+        return b;
+      },
+      _GML: function (a) {
+        var b = this.createElementNSPlus("Layer");
+        this.writeNode("ows:Title", a.name, b);
+        this.writeNode(
+          "Server",
+          {
+            service: OpenLayers.Format.Context.serviceTypes.GML,
+            url: a.protocol.url,
+            version: a.protocol.format.version,
+          },
+          b
+        );
+        return b;
+      },
+      _KML: function (a) {
+        var b = this.createElementNSPlus("Layer");
+        this.writeNode("ows:Title", a.name, b);
+        this.writeNode(
+          "Server",
+          {
+            service: OpenLayers.Format.Context.serviceTypes.KML,
+            version: a.protocol.format.version,
+            url: a.protocol.url,
+          },
+          b
+        );
+        return b;
+      },
+    },
+    gml: OpenLayers.Util.applyDefaults(
+      {
+        boundedBy: function (a) {
+          var b = this.createElementNSPlus("gml:boundedBy");
+          this.writeNode("gml:Box", a, b);
+          return b;
+        },
+      },
+      OpenLayers.Format.GML.v2.prototype.writers.gml
+    ),
+    ows: OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,
+    sld: OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,
+    feature: OpenLayers.Format.GML.v2.prototype.writers.feature,
+  },
+  CLASS_NAME: "OpenLayers.Format.OWSContext.v0_3_1",
+});
+OpenLayers.Popup = OpenLayers.Class({
+  events: null,
+  id: "",
+  lonlat: null,
+  div: null,
+  contentSize: null,
+  size: null,
+  contentHTML: null,
+  backgroundColor: "",
+  opacity: "",
+  border: "",
+  contentDiv: null,
+  groupDiv: null,
+  closeDiv: null,
+  autoSize: !1,
+  minSize: null,
+  maxSize: null,
+  displayClass: "olPopup",
+  contentDisplayClass: "olPopupContent",
+  padding: 0,
+  disableFirefoxOverflowHack: !1,
+  fixPadding: function () {
+    "number" == typeof this.padding &&
+      (this.padding = new OpenLayers.Bounds(
+        this.padding,
+        this.padding,
+        this.padding,
+        this.padding
+      ));
+  },
+  panMapIfOutOfView: !1,
+  keepInMap: !1,
+  closeOnMove: !1,
+  map: null,
+  initialize: function (a, b, c, d, e, f) {
+    null == a && (a = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_"));
+    this.id = a;
+    this.lonlat = b;
+    this.contentSize =
+      null != c ? c : new OpenLayers.Size(OpenLayers.Popup.WIDTH, OpenLayers.Popup.HEIGHT);
+    null != d && (this.contentHTML = d);
+    this.backgroundColor = OpenLayers.Popup.COLOR;
+    this.opacity = OpenLayers.Popup.OPACITY;
+    this.border = OpenLayers.Popup.BORDER;
+    this.div = OpenLayers.Util.createDiv(this.id, null, null, null, null, null, "hidden");
+    this.div.className = this.displayClass;
+    this.groupDiv = OpenLayers.Util.createDiv(
+      this.id + "_GroupDiv",
+      null,
+      null,
+      null,
+      "relative",
+      null,
+      "hidden"
+    );
+    a = this.div.id + "_contentDiv";
+    this.contentDiv = OpenLayers.Util.createDiv(
+      a,
+      null,
+      this.contentSize.clone(),
+      null,
+      "relative"
+    );
+    this.contentDiv.className = this.contentDisplayClass;
+    this.groupDiv.appendChild(this.contentDiv);
+    this.div.appendChild(this.groupDiv);
+    e && this.addCloseBox(f);
+    this.registerEvents();
+  },
+  destroy: function () {
+    this.border = this.opacity = this.backgroundColor = this.contentHTML = this.size = this.lonlat = this.id = null;
+    this.closeOnMove && this.map && this.map.events.unregister("movestart", this, this.hide);
+    this.events.destroy();
+    this.events = null;
+    this.closeDiv &&
+      (OpenLayers.Event.stopObservingElement(this.closeDiv),
+      this.groupDiv.removeChild(this.closeDiv));
+    this.closeDiv = null;
+    this.div.removeChild(this.groupDiv);
+    this.groupDiv = null;
+    null != this.map && this.map.removePopup(this);
+    this.panMapIfOutOfView = this.padding = this.maxSize = this.minSize = this.autoSize = this.div = this.map = null;
+  },
+  draw: function (a) {
+    null == a &&
+      null != this.lonlat &&
+      null != this.map &&
+      (a = this.map.getLayerPxFromLonLat(this.lonlat));
+    this.closeOnMove && this.map.events.register("movestart", this, this.hide);
+    this.disableFirefoxOverflowHack ||
+      "firefox" != OpenLayers.BROWSER_NAME ||
+      (this.map.events.register("movestart", this, function () {
+        var a = document.defaultView
+          .getComputedStyle(this.contentDiv, null)
+          .getPropertyValue("overflow");
+        "hidden" != a &&
+          ((this.contentDiv._oldOverflow = a), (this.contentDiv.style.overflow = "hidden"));
+      }),
+      this.map.events.register("moveend", this, function () {
+        var a = this.contentDiv._oldOverflow;
+        a && ((this.contentDiv.style.overflow = a), (this.contentDiv._oldOverflow = null));
+      }));
+    this.moveTo(a);
+    this.autoSize || this.size || this.setSize(this.contentSize);
+    this.setBackgroundColor();
+    this.setOpacity();
+    this.setBorder();
+    this.setContentHTML();
+    this.panMapIfOutOfView && this.panIntoView();
+    return this.div;
+  },
+  updatePosition: function () {
+    if (this.lonlat && this.map) {
+      var a = this.map.getLayerPxFromLonLat(this.lonlat);
+      a && this.moveTo(a);
+    }
+  },
+  moveTo: function (a) {
+    null != a &&
+      null != this.div &&
+      ((this.div.style.left = a.x + "px"), (this.div.style.top = a.y + "px"));
+  },
+  visible: function () {
+    return OpenLayers.Element.visible(this.div);
+  },
+  toggle: function () {
+    this.visible() ? this.hide() : this.show();
+  },
+  show: function () {
+    this.div.style.display = "";
+    this.panMapIfOutOfView && this.panIntoView();
+  },
+  hide: function () {
+    this.div.style.display = "none";
+  },
+  setSize: function (a) {
+    this.size = a.clone();
+    var b = this.getContentDivPadding(),
+      c = b.left + b.right,
+      d = b.top + b.bottom;
+    this.fixPadding();
+    c += this.padding.left + this.padding.right;
+    d += this.padding.top + this.padding.bottom;
+    if (this.closeDiv)
+      var e = parseInt(this.closeDiv.style.width),
+        c = c + (e + b.right);
+    this.size.w += c;
+    this.size.h += d;
+    "msie" == OpenLayers.BROWSER_NAME &&
+      ((this.contentSize.w += b.left + b.right), (this.contentSize.h += b.bottom + b.top));
+    null != this.div &&
+      ((this.div.style.width = this.size.w + "px"), (this.div.style.height = this.size.h + "px"));
+    null != this.contentDiv &&
+      ((this.contentDiv.style.width = a.w + "px"), (this.contentDiv.style.height = a.h + "px"));
+  },
+  updateSize: function () {
+    var a = "<div class='" + this.contentDisplayClass + "'>" + this.contentDiv.innerHTML + "</div>",
+      b = this.map ? this.map.div : document.body,
+      c = OpenLayers.Util.getRenderedDimensions(a, null, {
+        displayClass: this.displayClass,
+        containerElement: b,
+      }),
+      d = this.getSafeContentSize(c),
+      e = null;
+    d.equals(c)
+      ? (e = c)
+      : ((c = { w: d.w < c.w ? d.w : null, h: d.h < c.h ? d.h : null }),
+        c.w && c.h
+          ? (e = d)
+          : ((a = OpenLayers.Util.getRenderedDimensions(a, c, {
+              displayClass: this.contentDisplayClass,
+              containerElement: b,
+            })),
+            "hidden" != OpenLayers.Element.getStyle(this.contentDiv, "overflow") &&
+              a.equals(d) &&
+              ((d = OpenLayers.Util.getScrollbarWidth()), c.w ? (a.h += d) : (a.w += d)),
+            (e = this.getSafeContentSize(a))));
+    this.setSize(e);
+  },
+  setBackgroundColor: function (a) {
+    void 0 != a && (this.backgroundColor = a);
+    null != this.div && (this.div.style.backgroundColor = this.backgroundColor);
+  },
+  setOpacity: function (a) {
+    void 0 != a && (this.opacity = a);
+    null != this.div &&
+      ((this.div.style.opacity = this.opacity),
+      (this.div.style.filter = "alpha(opacity=" + 100 * this.opacity + ")"));
+  },
+  setBorder: function (a) {
+    void 0 != a && (this.border = a);
+    null != this.div && (this.div.style.border = this.border);
+  },
+  setContentHTML: function (a) {
+    null != a && (this.contentHTML = a);
+    null != this.contentDiv &&
+      null != this.contentHTML &&
+      this.contentHTML != this.contentDiv.innerHTML &&
+      ((this.contentDiv.innerHTML = this.contentHTML),
+      this.autoSize && (this.registerImageListeners(), this.updateSize()));
+  },
+  registerImageListeners: function () {
+    for (
+      var a = function () {
+          null !== this.popup.id &&
+            (this.popup.updateSize(),
+            this.popup.visible() && this.popup.panMapIfOutOfView && this.popup.panIntoView(),
+            OpenLayers.Event.stopObserving(this.img, "load", this.img._onImgLoad));
+        },
+        b = this.contentDiv.getElementsByTagName("img"),
+        c = 0,
+        d = b.length;
+      c < d;
+      c++
+    ) {
+      var e = b[c];
+      if (0 == e.width || 0 == e.height)
+        (e._onImgLoad = OpenLayers.Function.bind(a, { popup: this, img: e })),
+          OpenLayers.Event.observe(e, "load", e._onImgLoad);
+    }
+  },
+  getSafeContentSize: function (a) {
+    a = a.clone();
+    var b = this.getContentDivPadding(),
+      c = b.left + b.right,
+      d = b.top + b.bottom;
+    this.fixPadding();
+    c += this.padding.left + this.padding.right;
+    d += this.padding.top + this.padding.bottom;
+    if (this.closeDiv)
+      var e = parseInt(this.closeDiv.style.width),
+        c = c + (e + b.right);
+    this.minSize &&
+      ((a.w = Math.max(a.w, this.minSize.w - c)), (a.h = Math.max(a.h, this.minSize.h - d)));
+    this.maxSize &&
+      ((a.w = Math.min(a.w, this.maxSize.w - c)), (a.h = Math.min(a.h, this.maxSize.h - d)));
+    if (this.map && this.map.size) {
+      e = b = 0;
+      if (this.keepInMap && !this.panMapIfOutOfView)
+        switch (((e = this.map.getPixelFromLonLat(this.lonlat)), this.relativePosition)) {
+          case "tr":
+            b = e.x;
+            e = this.map.size.h - e.y;
+            break;
+          case "tl":
+            b = this.map.size.w - e.x;
+            e = this.map.size.h - e.y;
+            break;
+          case "bl":
+            b = this.map.size.w - e.x;
+            e = e.y;
+            break;
+          case "br":
+            b = e.x;
+            e = e.y;
+            break;
+          default:
+            (b = e.x), (e = this.map.size.h - e.y);
+        }
+      d =
+        this.map.size.h - this.map.paddingForPopups.top - this.map.paddingForPopups.bottom - d - e;
+      a.w = Math.min(
+        a.w,
+        this.map.size.w - this.map.paddingForPopups.left - this.map.paddingForPopups.right - c - b
+      );
+      a.h = Math.min(a.h, d);
+    }
+    return a;
+  },
+  getContentDivPadding: function () {
+    var a = this._contentDivPadding;
+    a ||
+      (null == this.div.parentNode &&
+        ((this.div.style.display = "none"), document.body.appendChild(this.div)),
+      (this._contentDivPadding = a = new OpenLayers.Bounds(
+        OpenLayers.Element.getStyle(this.contentDiv, "padding-left"),
+        OpenLayers.Element.getStyle(this.contentDiv, "padding-bottom"),
+        OpenLayers.Element.getStyle(this.contentDiv, "padding-right"),
+        OpenLayers.Element.getStyle(this.contentDiv, "padding-top")
+      )),
+      this.div.parentNode == document.body &&
+        (document.body.removeChild(this.div), (this.div.style.display = "")));
+    return a;
+  },
+  addCloseBox: function (a) {
+    this.closeDiv = OpenLayers.Util.createDiv(this.id + "_close", null, { w: 17, h: 17 });
+    this.closeDiv.className = "olPopupCloseBox";
+    var b = this.getContentDivPadding();
+    this.closeDiv.style.right = b.right + "px";
+    this.closeDiv.style.top = b.top + "px";
+    this.groupDiv.appendChild(this.closeDiv);
+    a =
+      a ||
+      function (a) {
+        this.hide();
+        OpenLayers.Event.stop(a);
+      };
+    OpenLayers.Event.observe(
+      this.closeDiv,
+      "touchend",
+      OpenLayers.Function.bindAsEventListener(a, this)
+    );
+    OpenLayers.Event.observe(
+      this.closeDiv,
+      "click",
+      OpenLayers.Function.bindAsEventListener(a, this)
+    );
+  },
+  panIntoView: function () {
+    var a = this.map.getSize(),
+      b = this.map.getViewPortPxFromLayerPx(
+        new OpenLayers.Pixel(parseInt(this.div.style.left), parseInt(this.div.style.top))
+      ),
+      c = b.clone();
+    b.x < this.map.paddingForPopups.left
+      ? (c.x = this.map.paddingForPopups.left)
+      : b.x + this.size.w > a.w - this.map.paddingForPopups.right &&
+        (c.x = a.w - this.map.paddingForPopups.right - this.size.w);
+    b.y < this.map.paddingForPopups.top
+      ? (c.y = this.map.paddingForPopups.top)
+      : b.y + this.size.h > a.h - this.map.paddingForPopups.bottom &&
+        (c.y = a.h - this.map.paddingForPopups.bottom - this.size.h);
+    this.map.pan(b.x - c.x, b.y - c.y);
+  },
+  registerEvents: function () {
+    this.events = new OpenLayers.Events(this, this.div, null, !0);
+    this.events.on({
+      mousedown: this.onmousedown,
+      mousemove: this.onmousemove,
+      mouseup: this.onmouseup,
+      click: this.onclick,
+      mouseout: this.onmouseout,
+      dblclick: this.ondblclick,
+      touchstart: function (a) {
+        OpenLayers.Event.stop(a, !0);
+      },
+      scope: this,
+    });
+  },
+  onmousedown: function (a) {
+    this.mousedown = !0;
+    OpenLayers.Event.stop(a, !0);
+  },
+  onmousemove: function (a) {
+    this.mousedown && OpenLayers.Event.stop(a, !0);
+  },
+  onmouseup: function (a) {
+    this.mousedown && ((this.mousedown = !1), OpenLayers.Event.stop(a, !0));
+  },
+  onclick: function (a) {
+    OpenLayers.Event.stop(a, !0);
+  },
+  onmouseout: function (a) {
+    this.mousedown = !1;
+  },
+  ondblclick: function (a) {
+    OpenLayers.Event.stop(a, !0);
+  },
+  CLASS_NAME: "OpenLayers.Popup",
+});
+OpenLayers.Popup.WIDTH = 200;
+OpenLayers.Popup.HEIGHT = 200;
+OpenLayers.Popup.COLOR = "white";
+OpenLayers.Popup.OPACITY = 1;
+OpenLayers.Popup.BORDER = "0px";
+OpenLayers.Control.ScaleLine = OpenLayers.Class(OpenLayers.Control, {
+  maxWidth: 100,
+  topOutUnits: "km",
+  topInUnits: "m",
+  bottomOutUnits: "mi",
+  bottomInUnits: "ft",
+  eTop: null,
+  eBottom: null,
+  geodesic: !1,
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    this.eTop ||
+      ((this.eTop = document.createElement("div")),
+      (this.eTop.className = this.displayClass + "Top"),
+      this.div.appendChild(this.eTop),
+      (this.eTop.style.visibility =
+        "" == this.topOutUnits || "" == this.topInUnits ? "hidden" : "visible"),
+      (this.eBottom = document.createElement("div")),
+      (this.eBottom.className = this.displayClass + "Bottom"),
+      this.div.appendChild(this.eBottom),
+      (this.eBottom.style.visibility =
+        "" == this.bottomOutUnits || "" == this.bottomInUnits ? "hidden" : "visible"));
+    this.map.events.register("moveend", this, this.update);
+    this.update();
+    return this.div;
+  },
+  getBarLen: function (a) {
+    var b = parseInt(Math.log(a) / Math.log(10)),
+      b = Math.pow(10, b);
+    a = parseInt(a / b);
+    return (5 < a ? 5 : 2 < a ? 2 : 1) * b;
+  },
+  update: function () {
+    var a = this.map.getResolution();
+    if (a) {
+      var b = this.map.getUnits(),
+        c = OpenLayers.INCHES_PER_UNIT,
+        d = this.maxWidth * a * c[b],
+        e = 1;
+      !0 === this.geodesic &&
+        ((e = ((this.map.getGeodesicPixelSize().w || 1e-6) * this.maxWidth) / (d / c.km)),
+        (d *= e));
+      var f, g;
+      1e5 < d
+        ? ((f = this.topOutUnits), (g = this.bottomOutUnits))
+        : ((f = this.topInUnits), (g = this.bottomInUnits));
+      var h = d / c[f],
+        k = d / c[g],
+        d = this.getBarLen(h),
+        l = this.getBarLen(k),
+        h = (d / c[b]) * c[f],
+        k = (l / c[b]) * c[g],
+        b = h / a / e,
+        a = k / a / e;
+      "visible" == this.eBottom.style.visibility &&
+        ((this.eBottom.style.width = Math.round(a) + "px"), (this.eBottom.innerHTML = l + " " + g));
+      "visible" == this.eTop.style.visibility &&
+        ((this.eTop.style.width = Math.round(b) + "px"), (this.eTop.innerHTML = d + " " + f));
+    }
+  },
+  CLASS_NAME: "OpenLayers.Control.ScaleLine",
+});
+OpenLayers.Icon = OpenLayers.Class({
+  url: null,
+  size: null,
+  offset: null,
+  calculateOffset: null,
+  imageDiv: null,
+  px: null,
+  initialize: function (a, b, c, d) {
+    this.url = a;
+    this.size = b || { w: 20, h: 20 };
+    this.offset = c || { x: -(this.size.w / 2), y: -(this.size.h / 2) };
+    this.calculateOffset = d;
+    a = OpenLayers.Util.createUniqueID("OL_Icon_");
+    this.imageDiv = OpenLayers.Util.createAlphaImageDiv(a);
+  },
+  destroy: function () {
+    this.erase();
+    OpenLayers.Event.stopObservingElement(this.imageDiv.firstChild);
+    this.imageDiv.innerHTML = "";
+    this.imageDiv = null;
+  },
+  clone: function () {
+    return new OpenLayers.Icon(this.url, this.size, this.offset, this.calculateOffset);
+  },
+  setSize: function (a) {
+    null != a && (this.size = a);
+    this.draw();
+  },
+  setUrl: function (a) {
+    null != a && (this.url = a);
+    this.draw();
+  },
+  draw: function (a) {
+    OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv, null, null, this.size, this.url, "absolute");
+    this.moveTo(a);
+    return this.imageDiv;
+  },
+  erase: function () {
+    null != this.imageDiv &&
+      null != this.imageDiv.parentNode &&
+      OpenLayers.Element.remove(this.imageDiv);
+  },
+  setOpacity: function (a) {
+    OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv, null, null, null, null, null, null, null, a);
+  },
+  moveTo: function (a) {
+    null != a && (this.px = a);
+    null != this.imageDiv &&
+      (null == this.px
+        ? this.display(!1)
+        : (this.calculateOffset && (this.offset = this.calculateOffset(this.size)),
+          OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv, null, {
+            x: this.px.x + this.offset.x,
+            y: this.px.y + this.offset.y,
+          })));
+  },
+  display: function (a) {
+    this.imageDiv.style.display = a ? "" : "none";
+  },
+  isDrawn: function () {
+    return this.imageDiv && this.imageDiv.parentNode && 11 != this.imageDiv.parentNode.nodeType;
+  },
+  CLASS_NAME: "OpenLayers.Icon",
+});
+OpenLayers.Marker = OpenLayers.Class({
+  icon: null,
+  lonlat: null,
+  events: null,
+  map: null,
+  initialize: function (a, b) {
+    this.lonlat = a;
+    var c = b ? b : OpenLayers.Marker.defaultIcon();
+    null == this.icon
+      ? (this.icon = c)
+      : ((this.icon.url = c.url),
+        (this.icon.size = c.size),
+        (this.icon.offset = c.offset),
+        (this.icon.calculateOffset = c.calculateOffset));
+    this.events = new OpenLayers.Events(this, this.icon.imageDiv);
+  },
+  destroy: function () {
+    this.erase();
+    this.map = null;
+    this.events.destroy();
+    this.events = null;
+    null != this.icon && (this.icon.destroy(), (this.icon = null));
+  },
+  draw: function (a) {
+    return this.icon.draw(a);
+  },
+  erase: function () {
+    null != this.icon && this.icon.erase();
+  },
+  moveTo: function (a) {
+    null != a && null != this.icon && this.icon.moveTo(a);
+    this.lonlat = this.map.getLonLatFromLayerPx(a);
+  },
+  isDrawn: function () {
+    return this.icon && this.icon.isDrawn();
+  },
+  onScreen: function () {
+    var a = !1;
+    this.map && (a = this.map.getExtent().containsLonLat(this.lonlat));
+    return a;
+  },
+  inflate: function (a) {
+    this.icon && this.icon.setSize({ w: this.icon.size.w * a, h: this.icon.size.h * a });
+  },
+  setOpacity: function (a) {
+    this.icon.setOpacity(a);
+  },
+  setUrl: function (a) {
+    this.icon.setUrl(a);
+  },
+  display: function (a) {
+    this.icon.display(a);
+  },
+  CLASS_NAME: "OpenLayers.Marker",
+});
+OpenLayers.Marker.defaultIcon = function () {
+  return new OpenLayers.Icon(
+    OpenLayers.Util.getImageLocation("marker.png"),
+    { w: 21, h: 25 },
+    { x: -10.5, y: -25 }
+  );
+};
+OpenLayers.Layer.TileCache = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  isBaseLayer: !0,
+  format: "image/png",
+  serverResolutions: null,
+  initialize: function (a, b, c, d) {
+    this.layername = c;
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, [a, b, {}, d]);
+    this.extension = this.format.split("/")[1].toLowerCase();
+    this.extension = "jpg" == this.extension ? "jpeg" : this.extension;
+  },
+  clone: function (a) {
+    null == a &&
+      (a = new OpenLayers.Layer.TileCache(this.name, this.url, this.layername, this.getOptions()));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  getURL: function (a) {
+    var b = this.getServerResolution(),
+      c = this.maxExtent,
+      d = this.tileSize,
+      e = Math.round((a.left - c.left) / (b * d.w));
+    a = Math.round((a.bottom - c.bottom) / (b * d.h));
+    b =
+      null != this.serverResolutions
+        ? OpenLayers.Util.indexOf(this.serverResolutions, b)
+        : this.map.getZoom();
+    e = [
+      this.layername,
+      OpenLayers.Number.zeroPad(b, 2),
+      OpenLayers.Number.zeroPad(parseInt(e / 1e6), 3),
+      OpenLayers.Number.zeroPad(parseInt(e / 1e3) % 1e3, 3),
+      OpenLayers.Number.zeroPad(parseInt(e) % 1e3, 3),
+      OpenLayers.Number.zeroPad(parseInt(a / 1e6), 3),
+      OpenLayers.Number.zeroPad(parseInt(a / 1e3) % 1e3, 3),
+      OpenLayers.Number.zeroPad(parseInt(a) % 1e3, 3) + "." + this.extension,
+    ].join("/");
+    b = this.url;
+    OpenLayers.Util.isArray(b) && (b = this.selectUrl(e, b));
+    b = "/" == b.charAt(b.length - 1) ? b : b + "/";
+    return b + e;
+  },
+  CLASS_NAME: "OpenLayers.Layer.TileCache",
+});
+OpenLayers.Strategy.Paging = OpenLayers.Class(OpenLayers.Strategy, {
+  features: null,
+  length: 10,
+  num: null,
+  paging: !1,
+  activate: function () {
+    var a = OpenLayers.Strategy.prototype.activate.call(this);
+    if (a) this.layer.events.on({ beforefeaturesadded: this.cacheFeatures, scope: this });
+    return a;
+  },
+  deactivate: function () {
+    var a = OpenLayers.Strategy.prototype.deactivate.call(this);
+    a &&
+      (this.clearCache(),
+      this.layer.events.un({ beforefeaturesadded: this.cacheFeatures, scope: this }));
+    return a;
+  },
+  cacheFeatures: function (a) {
+    this.paging || (this.clearCache(), (this.features = a.features), this.pageNext(a));
+  },
+  clearCache: function () {
+    if (this.features) for (var a = 0; a < this.features.length; ++a) this.features[a].destroy();
+    this.num = this.features = null;
+  },
+  pageCount: function () {
+    return Math.ceil((this.features ? this.features.length : 0) / this.length);
+  },
+  pageNum: function () {
+    return this.num;
+  },
+  pageLength: function (a) {
+    a && 0 < a && (this.length = a);
+    return this.length;
+  },
+  pageNext: function (a) {
+    var b = !1;
+    this.features &&
+      (null === this.num && (this.num = -1), (b = this.page((this.num + 1) * this.length, a)));
+    return b;
+  },
+  pagePrevious: function () {
+    var a = !1;
+    this.features &&
+      (null === this.num && (this.num = this.pageCount()),
+      (a = this.page((this.num - 1) * this.length)));
+    return a;
+  },
+  page: function (a, b) {
+    var c = !1;
+    if (this.features && 0 <= a && a < this.features.length) {
+      var d = Math.floor(a / this.length);
+      d != this.num &&
+        ((this.paging = !0),
+        (c = this.features.slice(a, a + this.length)),
+        this.layer.removeFeatures(this.layer.features),
+        (this.num = d),
+        b && b.features ? (b.features = c) : this.layer.addFeatures(c),
+        (this.paging = !1),
+        (c = !0));
+    }
+    return c;
+  },
+  CLASS_NAME: "OpenLayers.Strategy.Paging",
+});
+OpenLayers.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, {
+  geometryTypes: null,
+  onStart: function (a, b) {},
+  onDrag: function (a, b) {},
+  onComplete: function (a, b) {},
+  onEnter: function (a) {},
+  onLeave: function (a) {},
+  documentDrag: !1,
+  layer: null,
+  feature: null,
+  dragCallbacks: {},
+  featureCallbacks: {},
+  lastPixel: null,
+  initialize: function (a, b) {
+    OpenLayers.Control.prototype.initialize.apply(this, [b]);
+    this.layer = a;
+    this.handlers = {
+      drag: new OpenLayers.Handler.Drag(
+        this,
+        OpenLayers.Util.extend(
+          {
+            down: this.downFeature,
+            move: this.moveFeature,
+            up: this.upFeature,
+            out: this.cancel,
+            done: this.doneDragging,
+          },
+          this.dragCallbacks
+        ),
+        { documentDrag: this.documentDrag }
+      ),
+      feature: new OpenLayers.Handler.Feature(
+        this,
+        this.layer,
+        OpenLayers.Util.extend(
+          {
+            click: this.clickFeature,
+            clickout: this.clickoutFeature,
+            over: this.overFeature,
+            out: this.outFeature,
+          },
+          this.featureCallbacks
+        ),
+        { geometryTypes: this.geometryTypes }
+      ),
+    };
+  },
+  clickFeature: function (a) {
+    this.handlers.feature.touch &&
+      !this.over &&
+      this.overFeature(a) &&
+      (this.handlers.drag.dragstart(this.handlers.feature.evt), (this.handlers.drag.stopDown = !1));
+  },
+  clickoutFeature: function (a) {
+    this.handlers.feature.touch &&
+      this.over &&
+      (this.outFeature(a), (this.handlers.drag.stopDown = !0));
+  },
+  destroy: function () {
+    this.layer = null;
+    OpenLayers.Control.prototype.destroy.apply(this, []);
+  },
+  activate: function () {
+    return (
+      this.handlers.feature.activate() &&
+      OpenLayers.Control.prototype.activate.apply(this, arguments)
+    );
+  },
+  deactivate: function () {
+    this.handlers.drag.deactivate();
+    this.handlers.feature.deactivate();
+    this.feature = null;
+    this.dragging = !1;
+    this.lastPixel = null;
+    OpenLayers.Element.removeClass(this.map.viewPortDiv, this.displayClass + "Over");
+    return OpenLayers.Control.prototype.deactivate.apply(this, arguments);
+  },
+  overFeature: function (a) {
+    var b = !1;
+    this.handlers.drag.dragging
+      ? (this.over = this.feature.id == a.id ? !0 : !1)
+      : ((this.feature = a),
+        this.handlers.drag.activate(),
+        (this.over = b = !0),
+        OpenLayers.Element.addClass(this.map.viewPortDiv, this.displayClass + "Over"),
+        this.onEnter(a));
+    return b;
+  },
+  downFeature: function (a) {
+    this.lastPixel = a;
+    this.onStart(this.feature, a);
+  },
+  moveFeature: function (a) {
+    var b = this.map.getResolution();
+    this.feature.geometry.move(b * (a.x - this.lastPixel.x), b * (this.lastPixel.y - a.y));
+    this.layer.drawFeature(this.feature);
+    this.lastPixel = a;
+    this.onDrag(this.feature, a);
+  },
+  upFeature: function (a) {
+    this.over || this.handlers.drag.deactivate();
+  },
+  doneDragging: function (a) {
+    this.onComplete(this.feature, a);
+  },
+  outFeature: function (a) {
+    this.handlers.drag.dragging
+      ? this.feature.id == a.id && (this.over = !1)
+      : ((this.over = !1),
+        this.handlers.drag.deactivate(),
+        OpenLayers.Element.removeClass(this.map.viewPortDiv, this.displayClass + "Over"),
+        this.onLeave(a),
+        (this.feature = null));
+  },
+  cancel: function () {
+    this.handlers.drag.deactivate();
+    this.over = !1;
+  },
+  setMap: function (a) {
+    this.handlers.drag.setMap(a);
+    this.handlers.feature.setMap(a);
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Control.DragFeature",
+});
+OpenLayers.Control.TransformFeature = OpenLayers.Class(OpenLayers.Control, {
+  geometryTypes: null,
+  layer: null,
+  preserveAspectRatio: !1,
+  rotate: !0,
+  feature: null,
+  renderIntent: "temporary",
+  rotationHandleSymbolizer: null,
+  box: null,
+  center: null,
+  scale: 1,
+  ratio: 1,
+  rotation: 0,
+  handles: null,
+  rotationHandles: null,
+  dragControl: null,
+  irregular: !1,
+  initialize: function (a, b) {
+    OpenLayers.Control.prototype.initialize.apply(this, [b]);
+    this.layer = a;
+    this.rotationHandleSymbolizer ||
+      (this.rotationHandleSymbolizer = {
+        stroke: !1,
+        pointRadius: 10,
+        fillOpacity: 0,
+        cursor: "pointer",
+      });
+    this.createBox();
+    this.createControl();
+  },
+  activate: function () {
+    var a = !1;
+    OpenLayers.Control.prototype.activate.apply(this, arguments) &&
+      (this.dragControl.activate(),
+      this.layer.addFeatures([this.box]),
+      this.rotate && this.layer.addFeatures(this.rotationHandles),
+      this.layer.addFeatures(this.handles),
+      (a = !0));
+    return a;
+  },
+  deactivate: function () {
+    var a = !1;
+    OpenLayers.Control.prototype.deactivate.apply(this, arguments) &&
+      (this.layer.removeFeatures(this.handles),
+      this.rotate && this.layer.removeFeatures(this.rotationHandles),
+      this.layer.removeFeatures([this.box]),
+      this.dragControl.deactivate(),
+      (a = !0));
+    return a;
+  },
+  setMap: function (a) {
+    this.dragControl.setMap(a);
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+  },
+  setFeature: function (a, b) {
+    b = OpenLayers.Util.applyDefaults(b, { rotation: 0, scale: 1, ratio: 1 });
+    var c = this.rotation,
+      d = this.center;
+    OpenLayers.Util.extend(this, b);
+    if (!1 !== this.events.triggerEvent("beforesetfeature", { feature: a })) {
+      this.feature = a;
+      this.activate();
+      this._setfeature = !0;
+      var e = this.feature.geometry.getBounds();
+      this.box.move(e.getCenterLonLat());
+      this.box.geometry.rotate(-c, d);
+      this._angle = 0;
+      this.rotation
+        ? ((c = a.geometry.clone()),
+          c.rotate(-this.rotation, this.center),
+          (c = new OpenLayers.Feature.Vector(c.getBounds().toGeometry())),
+          c.geometry.rotate(this.rotation, this.center),
+          this.box.geometry.rotate(this.rotation, this.center),
+          this.box.move(c.geometry.getBounds().getCenterLonLat()),
+          (c = c.geometry.components[0].components[0].getBounds().getCenterLonLat()))
+        : (c = new OpenLayers.LonLat(e.left, e.bottom));
+      this.handles[0].move(c);
+      delete this._setfeature;
+      this.events.triggerEvent("setfeature", { feature: a });
+    }
+  },
+  unsetFeature: function () {
+    this.active
+      ? this.deactivate()
+      : ((this.feature = null), (this.rotation = 0), (this.ratio = this.scale = 1));
+  },
+  createBox: function () {
+    var a = this;
+    this.center = new OpenLayers.Geometry.Point(0, 0);
+    this.box = new OpenLayers.Feature.Vector(
+      new OpenLayers.Geometry.LineString([
+        new OpenLayers.Geometry.Point(-1, -1),
+        new OpenLayers.Geometry.Point(0, -1),
+        new OpenLayers.Geometry.Point(1, -1),
+        new OpenLayers.Geometry.Point(1, 0),
+        new OpenLayers.Geometry.Point(1, 1),
+        new OpenLayers.Geometry.Point(0, 1),
+        new OpenLayers.Geometry.Point(-1, 1),
+        new OpenLayers.Geometry.Point(-1, 0),
+        new OpenLayers.Geometry.Point(-1, -1),
+      ]),
+      null,
+      "string" == typeof this.renderIntent ? null : this.renderIntent
+    );
+    this.box.geometry.move = function (b, c) {
+      a._moving = !0;
+      OpenLayers.Geometry.LineString.prototype.move.apply(this, arguments);
+      a.center.move(b, c);
+      delete a._moving;
+    };
+    for (
+      var b = function (a, b) {
+          OpenLayers.Geometry.Point.prototype.move.apply(this, arguments);
+          this._rotationHandle && this._rotationHandle.geometry.move(a, b);
+          this._handle.geometry.move(a, b);
+        },
+        c = function (a, b, c) {
+          OpenLayers.Geometry.Point.prototype.resize.apply(this, arguments);
+          this._rotationHandle && this._rotationHandle.geometry.resize(a, b, c);
+          this._handle.geometry.resize(a, b, c);
+        },
+        d = function (a, b) {
+          OpenLayers.Geometry.Point.prototype.rotate.apply(this, arguments);
+          this._rotationHandle && this._rotationHandle.geometry.rotate(a, b);
+          this._handle.geometry.rotate(a, b);
+        },
+        e = function (b, c) {
+          var d = this.x,
+            e = this.y;
+          OpenLayers.Geometry.Point.prototype.move.call(this, b, c);
+          if (!a._moving) {
+            var f = a.dragControl.handlers.drag.evt,
+              g = !(!a._setfeature && a.preserveAspectRatio) && !(f && f.shiftKey),
+              h = new OpenLayers.Geometry.Point(d, e),
+              f = a.center;
+            this.rotate(-a.rotation, f);
+            h.rotate(-a.rotation, f);
+            var k = this.x - f.x,
+              l = this.y - f.y,
+              m = k - (this.x - h.x),
+              n = l - (this.y - h.y);
+            a.irregular && !a._setfeature && ((k -= (this.x - h.x) / 2), (l -= (this.y - h.y) / 2));
+            this.x = d;
+            this.y = e;
+            h = 1;
+            g
+              ? ((l = 1e-5 > Math.abs(n) ? 1 : l / n), (h = (1e-5 > Math.abs(m) ? 1 : k / m) / l))
+              : ((m = Math.sqrt(m * m + n * n)), (l = Math.sqrt(k * k + l * l) / m));
+            a._moving = !0;
+            a.box.geometry.rotate(-a.rotation, f);
+            delete a._moving;
+            a.box.geometry.resize(l, f, h);
+            a.box.geometry.rotate(a.rotation, f);
+            a.transformFeature({ scale: l, ratio: h });
+            a.irregular &&
+              !a._setfeature &&
+              ((k = f.clone()),
+              (k.x += 1e-5 > Math.abs(d - f.x) ? 0 : this.x - d),
+              (k.y += 1e-5 > Math.abs(e - f.y) ? 0 : this.y - e),
+              a.box.geometry.move(this.x - d, this.y - e),
+              a.transformFeature({ center: k }));
+          }
+        },
+        f = function (b, c) {
+          var d = this.x,
+            e = this.y;
+          OpenLayers.Geometry.Point.prototype.move.call(this, b, c);
+          if (!a._moving) {
+            var f = a.dragControl.handlers.drag.evt,
+              f = f && f.shiftKey ? 45 : 1,
+              g = a.center,
+              h = this.x - g.x,
+              k = this.y - g.y;
+            this.x = d;
+            this.y = e;
+            d = Math.atan2(k - c, h - b);
+            d = Math.atan2(k, h) - d;
+            d *= 180 / Math.PI;
+            a._angle = (a._angle + d) % 360;
+            d = a.rotation % f;
+            if (Math.abs(a._angle) >= f || 0 !== d)
+              (d = Math.round(a._angle / f) * f - d),
+                (a._angle = 0),
+                a.box.geometry.rotate(d, g),
+                a.transformFeature({ rotation: d });
+          }
+        },
+        g = Array(8),
+        h = Array(4),
+        k,
+        l,
+        m,
+        n = "sw s se e ne n nw w".split(" "),
+        p = 0;
+      8 > p;
+      ++p
+    )
+      (k = this.box.geometry.components[p]),
+        (l = new OpenLayers.Feature.Vector(
+          k.clone(),
+          { role: n[p] + "-resize" },
+          "string" == typeof this.renderIntent ? null : this.renderIntent
+        )),
+        0 == p % 2 &&
+          ((m = new OpenLayers.Feature.Vector(
+            k.clone(),
+            { role: n[p] + "-rotate" },
+            "string" == typeof this.rotationHandleSymbolizer ? null : this.rotationHandleSymbolizer
+          )),
+          (m.geometry.move = f),
+          (k._rotationHandle = m),
+          (h[p / 2] = m)),
+        (k.move = b),
+        (k.resize = c),
+        (k.rotate = d),
+        (l.geometry.move = e),
+        (k._handle = l),
+        (g[p] = l);
+    this.rotationHandles = h;
+    this.handles = g;
+  },
+  createControl: function () {
+    var a = this;
+    this.dragControl = new OpenLayers.Control.DragFeature(this.layer, {
+      documentDrag: !0,
+      moveFeature: function (b) {
+        this.feature === a.feature && (this.feature = a.box);
+        OpenLayers.Control.DragFeature.prototype.moveFeature.apply(this, arguments);
+      },
+      onDrag: function (b, c) {
+        b === a.box && a.transformFeature({ center: a.center });
+      },
+      onStart: function (b, c) {
+        var d =
+            !a.geometryTypes ||
+            -1 !== OpenLayers.Util.indexOf(a.geometryTypes, b.geometry.CLASS_NAME),
+          e = OpenLayers.Util.indexOf(a.handles, b),
+          e = e + OpenLayers.Util.indexOf(a.rotationHandles, b);
+        b !== a.feature && b !== a.box && -2 == e && d && a.setFeature(b);
+      },
+      onComplete: function (b, c) {
+        a.events.triggerEvent("transformcomplete", { feature: a.feature });
+      },
+    });
+  },
+  drawHandles: function () {
+    for (var a = this.layer, b = 0; 8 > b; ++b)
+      this.rotate &&
+        0 === b % 2 &&
+        a.drawFeature(this.rotationHandles[b / 2], this.rotationHandleSymbolizer),
+        a.drawFeature(this.handles[b], this.renderIntent);
+  },
+  transformFeature: function (a) {
+    if (!this._setfeature) {
+      this.scale *= a.scale || 1;
+      this.ratio *= a.ratio || 1;
+      var b = this.rotation;
+      this.rotation = (this.rotation + (a.rotation || 0)) % 360;
+      if (!1 !== this.events.triggerEvent("beforetransform", a)) {
+        var c = this.feature,
+          d = c.geometry,
+          e = this.center;
+        d.rotate(-b, e);
+        a.scale || a.ratio
+          ? d.resize(a.scale, e, a.ratio)
+          : a.center && c.move(a.center.getBounds().getCenterLonLat());
+        d.rotate(this.rotation, e);
+        this.layer.drawFeature(c);
+        c.toState(OpenLayers.State.UPDATE);
+        this.events.triggerEvent("transform", a);
+      }
+    }
+    this.layer.drawFeature(this.box, this.renderIntent);
+    this.drawHandles();
+  },
+  destroy: function () {
+    for (var a, b = 0; 8 > b; ++b)
+      (a = this.box.geometry.components[b]),
+        a._handle.destroy(),
+        (a._handle = null),
+        a._rotationHandle && a._rotationHandle.destroy(),
+        (a._rotationHandle = null);
+    this.rotationHandles = this.rotationHandleSymbolizer = this.handles = this.feature = this.center = null;
+    this.box.destroy();
+    this.layer = this.box = null;
+    this.dragControl.destroy();
+    this.dragControl = null;
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Control.TransformFeature",
+});
+OpenLayers.Handler.Box = OpenLayers.Class(OpenLayers.Handler, {
+  dragHandler: null,
+  boxDivClassName: "olHandlerBoxZoomBox",
+  boxOffsets: null,
+  initialize: function (a, b, c) {
+    OpenLayers.Handler.prototype.initialize.apply(this, arguments);
+    this.dragHandler = new OpenLayers.Handler.Drag(
+      this,
+      { down: this.startBox, move: this.moveBox, out: this.removeBox, up: this.endBox },
+      { keyMask: this.keyMask }
+    );
+  },
+  destroy: function () {
+    OpenLayers.Handler.prototype.destroy.apply(this, arguments);
+    this.dragHandler && (this.dragHandler.destroy(), (this.dragHandler = null));
+  },
+  setMap: function (a) {
+    OpenLayers.Handler.prototype.setMap.apply(this, arguments);
+    this.dragHandler && this.dragHandler.setMap(a);
+  },
+  startBox: function (a) {
+    this.callback("start", []);
+    this.zoomBox = OpenLayers.Util.createDiv("zoomBox", { x: -9999, y: -9999 });
+    this.zoomBox.className = this.boxDivClassName;
+    this.zoomBox.style.zIndex = this.map.Z_INDEX_BASE.Popup - 1;
+    this.map.viewPortDiv.appendChild(this.zoomBox);
+    OpenLayers.Element.addClass(this.map.viewPortDiv, "olDrawBox");
+  },
+  moveBox: function (a) {
+    var b = this.dragHandler.start.x,
+      c = this.dragHandler.start.y,
+      d = Math.abs(b - a.x),
+      e = Math.abs(c - a.y),
+      f = this.getBoxOffsets();
+    this.zoomBox.style.width = d + f.width + 1 + "px";
+    this.zoomBox.style.height = e + f.height + 1 + "px";
+    this.zoomBox.style.left = (a.x < b ? b - d - f.left : b - f.left) + "px";
+    this.zoomBox.style.top = (a.y < c ? c - e - f.top : c - f.top) + "px";
+  },
+  endBox: function (a) {
+    var b;
+    if (
+      5 < Math.abs(this.dragHandler.start.x - a.x) ||
+      5 < Math.abs(this.dragHandler.start.y - a.y)
+    ) {
+      var c = this.dragHandler.start;
+      b = Math.min(c.y, a.y);
+      var d = Math.max(c.y, a.y),
+        e = Math.min(c.x, a.x);
+      a = Math.max(c.x, a.x);
+      b = new OpenLayers.Bounds(e, d, a, b);
+    } else b = this.dragHandler.start.clone();
+    this.removeBox();
+    this.callback("done", [b]);
+  },
+  removeBox: function () {
+    this.map.viewPortDiv.removeChild(this.zoomBox);
+    this.boxOffsets = this.zoomBox = null;
+    OpenLayers.Element.removeClass(this.map.viewPortDiv, "olDrawBox");
+  },
+  activate: function () {
+    return OpenLayers.Handler.prototype.activate.apply(this, arguments)
+      ? (this.dragHandler.activate(), !0)
+      : !1;
+  },
+  deactivate: function () {
+    return OpenLayers.Handler.prototype.deactivate.apply(this, arguments)
+      ? (this.dragHandler.deactivate() && this.zoomBox && this.removeBox(), !0)
+      : !1;
+  },
+  getBoxOffsets: function () {
+    if (!this.boxOffsets) {
+      var a = document.createElement("div");
+      a.style.position = "absolute";
+      a.style.border = "1px solid black";
+      a.style.width = "3px";
+      document.body.appendChild(a);
+      var b = 3 == a.clientWidth;
+      document.body.removeChild(a);
+      var a = parseInt(OpenLayers.Element.getStyle(this.zoomBox, "border-left-width")),
+        c = parseInt(OpenLayers.Element.getStyle(this.zoomBox, "border-right-width")),
+        d = parseInt(OpenLayers.Element.getStyle(this.zoomBox, "border-top-width")),
+        e = parseInt(OpenLayers.Element.getStyle(this.zoomBox, "border-bottom-width"));
+      this.boxOffsets = {
+        left: a,
+        right: c,
+        top: d,
+        bottom: e,
+        width: !1 === b ? a + c : 0,
+        height: !1 === b ? d + e : 0,
+      };
+    }
+    return this.boxOffsets;
+  },
+  CLASS_NAME: "OpenLayers.Handler.Box",
+});
+OpenLayers.Control.ZoomBox = OpenLayers.Class(OpenLayers.Control, {
+  type: OpenLayers.Control.TYPE_TOOL,
+  out: !1,
+  keyMask: null,
+  alwaysZoom: !1,
+  zoomOnClick: !0,
+  draw: function () {
+    this.handler = new OpenLayers.Handler.Box(
+      this,
+      { done: this.zoomBox },
+      { keyMask: this.keyMask }
+    );
+  },
+  zoomBox: function (a) {
+    if (a instanceof OpenLayers.Bounds) {
+      var b,
+        c = a.getCenterPixel();
+      if (this.out) {
+        b = Math.min(this.map.size.h / (a.bottom - a.top), this.map.size.w / (a.right - a.left));
+        var d = this.map.getExtent(),
+          e = this.map.getLonLatFromPixel(c),
+          f = e.lon - (d.getWidth() / 2) * b;
+        a = e.lon + (d.getWidth() / 2) * b;
+        var g = e.lat - (d.getHeight() / 2) * b;
+        b = e.lat + (d.getHeight() / 2) * b;
+        b = new OpenLayers.Bounds(f, g, a, b);
+      } else
+        (f = this.map.getLonLatFromPixel({ x: a.left, y: a.bottom })),
+          (a = this.map.getLonLatFromPixel({ x: a.right, y: a.top })),
+          (b = new OpenLayers.Bounds(f.lon, f.lat, a.lon, a.lat));
+      f = this.map.getZoom();
+      g = this.map.getSize();
+      a = g.w / 2;
+      g = g.h / 2;
+      b = this.map.getZoomForExtent(b);
+      d = this.map.getResolution();
+      e = this.map.getResolutionForZoom(b);
+      d == e
+        ? this.map.setCenter(this.map.getLonLatFromPixel(c))
+        : this.map.zoomTo(b, { x: (d * c.x - e * a) / (d - e), y: (d * c.y - e * g) / (d - e) });
+      f == this.map.getZoom() && !0 == this.alwaysZoom && this.map.zoomTo(f + (this.out ? -1 : 1));
+    } else
+      this.zoomOnClick &&
+        (this.out
+          ? this.map.zoomTo(this.map.getZoom() - 1, a)
+          : this.map.zoomTo(this.map.getZoom() + 1, a));
+  },
+  CLASS_NAME: "OpenLayers.Control.ZoomBox",
+});
+OpenLayers.Control.DragPan = OpenLayers.Class(OpenLayers.Control, {
+  type: OpenLayers.Control.TYPE_TOOL,
+  panned: !1,
+  interval: 0,
+  documentDrag: !1,
+  kinetic: null,
+  enableKinetic: !0,
+  kineticInterval: 10,
+  draw: function () {
+    if (this.enableKinetic && OpenLayers.Kinetic) {
+      var a = { interval: this.kineticInterval };
+      "object" === typeof this.enableKinetic && (a = OpenLayers.Util.extend(a, this.enableKinetic));
+      this.kinetic = new OpenLayers.Kinetic(a);
+    }
+    this.handler = new OpenLayers.Handler.Drag(
+      this,
+      { move: this.panMap, done: this.panMapDone, down: this.panMapStart },
+      { interval: this.interval, documentDrag: this.documentDrag }
+    );
+  },
+  panMapStart: function () {
+    this.kinetic && this.kinetic.begin();
+  },
+  panMap: function (a) {
+    this.kinetic && this.kinetic.update(a);
+    this.panned = !0;
+    this.map.pan(this.handler.last.x - a.x, this.handler.last.y - a.y, {
+      dragging: !0,
+      animate: !1,
+    });
+  },
+  panMapDone: function (a) {
+    if (this.panned) {
+      var b = null;
+      this.kinetic && (b = this.kinetic.end(a));
+      this.map.pan(this.handler.last.x - a.x, this.handler.last.y - a.y, {
+        dragging: !!b,
+        animate: !1,
+      });
+      if (b) {
+        var c = this;
+        this.kinetic.move(b, function (a, b, f) {
+          c.map.pan(a, b, { dragging: !f, animate: !1 });
+        });
+      }
+      this.panned = !1;
+    }
+  },
+  CLASS_NAME: "OpenLayers.Control.DragPan",
+});
+OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
+  dragPan: null,
+  dragPanOptions: null,
+  pinchZoom: null,
+  pinchZoomOptions: null,
+  documentDrag: !1,
+  zoomBox: null,
+  zoomBoxEnabled: !0,
+  zoomWheelEnabled: !0,
+  mouseWheelOptions: null,
+  handleRightClicks: !1,
+  zoomBoxKeyMask: OpenLayers.Handler.MOD_SHIFT,
+  autoActivate: !0,
+  initialize: function (a) {
+    this.handlers = {};
+    OpenLayers.Control.prototype.initialize.apply(this, arguments);
+  },
+  destroy: function () {
+    this.deactivate();
+    this.dragPan && this.dragPan.destroy();
+    this.dragPan = null;
+    this.zoomBox && this.zoomBox.destroy();
+    this.zoomBox = null;
+    this.pinchZoom && this.pinchZoom.destroy();
+    this.pinchZoom = null;
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  activate: function () {
+    this.dragPan.activate();
+    this.zoomWheelEnabled && this.handlers.wheel.activate();
+    this.handlers.click.activate();
+    this.zoomBoxEnabled && this.zoomBox.activate();
+    this.pinchZoom && this.pinchZoom.activate();
+    return OpenLayers.Control.prototype.activate.apply(this, arguments);
+  },
+  deactivate: function () {
+    this.pinchZoom && this.pinchZoom.deactivate();
+    this.zoomBox.deactivate();
+    this.dragPan.deactivate();
+    this.handlers.click.deactivate();
+    this.handlers.wheel.deactivate();
+    return OpenLayers.Control.prototype.deactivate.apply(this, arguments);
+  },
+  draw: function () {
+    this.handleRightClicks && (this.map.viewPortDiv.oncontextmenu = OpenLayers.Function.False);
+    this.handlers.click = new OpenLayers.Handler.Click(
+      this,
+      {
+        click: this.defaultClick,
+        dblclick: this.defaultDblClick,
+        dblrightclick: this.defaultDblRightClick,
+      },
+      { double: !0, stopDouble: !0 }
+    );
+    this.dragPan = new OpenLayers.Control.DragPan(
+      OpenLayers.Util.extend(
+        { map: this.map, documentDrag: this.documentDrag },
+        this.dragPanOptions
+      )
+    );
+    this.zoomBox = new OpenLayers.Control.ZoomBox({ map: this.map, keyMask: this.zoomBoxKeyMask });
+    this.dragPan.draw();
+    this.zoomBox.draw();
+    this.handlers.wheel = new OpenLayers.Handler.MouseWheel(
+      this,
+      { up: this.wheelUp, down: this.wheelDown },
+      OpenLayers.Util.extend(
+        this.map.fractionalZoom ? {} : { cumulative: !1, interval: 50, maxDelta: 6 },
+        this.mouseWheelOptions
+      )
+    );
+    OpenLayers.Control.PinchZoom &&
+      (this.pinchZoom = new OpenLayers.Control.PinchZoom(
+        OpenLayers.Util.extend({ map: this.map }, this.pinchZoomOptions)
+      ));
+  },
+  defaultClick: function (a) {
+    a.lastTouches && 2 == a.lastTouches.length && this.map.zoomOut();
+  },
+  defaultDblClick: function (a) {
+    this.map.zoomTo(this.map.zoom + 1, a.xy);
+  },
+  defaultDblRightClick: function (a) {
+    this.map.zoomTo(this.map.zoom - 1, a.xy);
+  },
+  wheelChange: function (a, b) {
+    this.map.fractionalZoom || (b = Math.round(b));
+    var c = this.map.getZoom(),
+      d;
+    d = Math.max(c + b, 0);
+    d = Math.min(d, this.map.getNumZoomLevels());
+    d !== c && this.map.zoomTo(d, a.xy);
+  },
+  wheelUp: function (a, b) {
+    this.wheelChange(a, b || 1);
+  },
+  wheelDown: function (a, b) {
+    this.wheelChange(a, b || -1);
+  },
+  disableZoomBox: function () {
+    this.zoomBoxEnabled = !1;
+    this.zoomBox.deactivate();
+  },
+  enableZoomBox: function () {
+    this.zoomBoxEnabled = !0;
+    this.active && this.zoomBox.activate();
+  },
+  disableZoomWheel: function () {
+    this.zoomWheelEnabled = !1;
+    this.handlers.wheel.deactivate();
+  },
+  enableZoomWheel: function () {
+    this.zoomWheelEnabled = !0;
+    this.active && this.handlers.wheel.activate();
+  },
+  CLASS_NAME: "OpenLayers.Control.Navigation",
+});
+OpenLayers.Control.DrawFeature = OpenLayers.Class(OpenLayers.Control, {
+  layer: null,
+  callbacks: null,
+  multi: !1,
+  featureAdded: function () {},
+  initialize: function (a, b, c) {
+    OpenLayers.Control.prototype.initialize.apply(this, [c]);
+    this.callbacks = OpenLayers.Util.extend(
+      {
+        done: this.drawFeature,
+        modify: function (a, b) {
+          this.layer.events.triggerEvent("sketchmodified", { vertex: a, feature: b });
+        },
+        create: function (a, b) {
+          this.layer.events.triggerEvent("sketchstarted", { vertex: a, feature: b });
+        },
+      },
+      this.callbacks
+    );
+    this.layer = a;
+    this.handlerOptions = this.handlerOptions || {};
+    this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults(
+      this.handlerOptions.layerOptions,
+      { renderers: a.renderers, rendererOptions: a.rendererOptions }
+    );
+    "multi" in this.handlerOptions || (this.handlerOptions.multi = this.multi);
+    if ((a = this.layer.styleMap && this.layer.styleMap.styles.temporary))
+      this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults(
+        this.handlerOptions.layerOptions,
+        { styleMap: new OpenLayers.StyleMap({ default: a }) }
+      );
+    this.handler = new b(this, this.callbacks, this.handlerOptions);
+  },
+  drawFeature: function (a) {
+    a = new OpenLayers.Feature.Vector(a);
+    !1 !== this.layer.events.triggerEvent("sketchcomplete", { feature: a }) &&
+      ((a.state = OpenLayers.State.INSERT),
+      this.layer.addFeatures([a]),
+      this.featureAdded(a),
+      this.events.triggerEvent("featureadded", { feature: a }));
+  },
+  insertXY: function (a, b) {
+    this.handler && this.handler.line && this.handler.insertXY(a, b);
+  },
+  insertDeltaXY: function (a, b) {
+    this.handler && this.handler.line && this.handler.insertDeltaXY(a, b);
+  },
+  insertDirectionLength: function (a, b) {
+    this.handler && this.handler.line && this.handler.insertDirectionLength(a, b);
+  },
+  insertDeflectionLength: function (a, b) {
+    this.handler && this.handler.line && this.handler.insertDeflectionLength(a, b);
+  },
+  undo: function () {
+    return this.handler.undo && this.handler.undo();
+  },
+  redo: function () {
+    return this.handler.redo && this.handler.redo();
+  },
+  finishSketch: function () {
+    this.handler.finishGeometry();
+  },
+  cancel: function () {
+    this.handler.cancel();
+  },
+  CLASS_NAME: "OpenLayers.Control.DrawFeature",
+});
+OpenLayers.Handler.Polygon = OpenLayers.Class(OpenLayers.Handler.Path, {
+  holeModifier: null,
+  drawingHole: !1,
+  polygon: null,
+  createFeature: function (a) {
+    a = this.layer.getLonLatFromViewPortPx(a);
+    a = new OpenLayers.Geometry.Point(a.lon, a.lat);
+    this.point = new OpenLayers.Feature.Vector(a);
+    this.line = new OpenLayers.Feature.Vector(
+      new OpenLayers.Geometry.LinearRing([this.point.geometry])
+    );
+    this.polygon = new OpenLayers.Feature.Vector(
+      new OpenLayers.Geometry.Polygon([this.line.geometry])
+    );
+    this.callback("create", [this.point.geometry, this.getSketch()]);
+    this.point.geometry.clearBounds();
+    this.layer.addFeatures([this.polygon, this.point], { silent: !0 });
+  },
+  addPoint: function (a) {
+    if (!this.drawingHole && this.holeModifier && this.evt && this.evt[this.holeModifier])
+      for (
+        var b = this.point.geometry, c = this.control.layer.features, d, e = c.length - 1;
+        0 <= e;
+        --e
+      )
+        if (
+          ((d = c[e].geometry),
+          (d instanceof OpenLayers.Geometry.Polygon ||
+            d instanceof OpenLayers.Geometry.MultiPolygon) &&
+            d.intersects(b))
+        ) {
+          b = c[e];
+          this.control.layer.removeFeatures([b], { silent: !0 });
+          this.control.layer.events.registerPriority(
+            "sketchcomplete",
+            this,
+            this.finalizeInteriorRing
+          );
+          this.control.layer.events.registerPriority("sketchmodified", this, this.enforceTopology);
+          b.geometry.addComponent(this.line.geometry);
+          this.polygon = b;
+          this.drawingHole = !0;
+          break;
+        }
+    OpenLayers.Handler.Path.prototype.addPoint.apply(this, arguments);
+  },
+  getCurrentPointIndex: function () {
+    return this.line.geometry.components.length - 2;
+  },
+  enforceTopology: function (a) {
+    a = a.vertex;
+    var b = this.line.geometry.components;
+    this.polygon.geometry.intersects(a) || ((b = b[b.length - 3]), (a.x = b.x), (a.y = b.y));
+  },
+  finishGeometry: function () {
+    this.line.geometry.removeComponent(
+      this.line.geometry.components[this.line.geometry.components.length - 2]
+    );
+    this.removePoint();
+    this.finalize();
+  },
+  finalizeInteriorRing: function () {
+    var a = this.line.geometry,
+      b = 0 !== a.getArea();
+    if (b) {
+      for (var c = this.polygon.geometry.components, d = c.length - 2; 0 <= d; --d)
+        if (a.intersects(c[d])) {
+          b = !1;
+          break;
+        }
+      if (b)
+        a: for (d = c.length - 2; 0 < d; --d)
+          for (var e = c[d].components, f = 0, g = e.length; f < g; ++f)
+            if (a.containsPoint(e[f])) {
+              b = !1;
+              break a;
+            }
+    }
+    b
+      ? this.polygon.state !== OpenLayers.State.INSERT &&
+        (this.polygon.state = OpenLayers.State.UPDATE)
+      : this.polygon.geometry.removeComponent(a);
+    this.restoreFeature();
+    return !1;
+  },
+  cancel: function () {
+    this.drawingHole &&
+      (this.polygon.geometry.removeComponent(this.line.geometry), this.restoreFeature(!0));
+    return OpenLayers.Handler.Path.prototype.cancel.apply(this, arguments);
+  },
+  restoreFeature: function (a) {
+    this.control.layer.events.unregister("sketchcomplete", this, this.finalizeInteriorRing);
+    this.control.layer.events.unregister("sketchmodified", this, this.enforceTopology);
+    this.layer.removeFeatures([this.polygon], { silent: !0 });
+    this.control.layer.addFeatures([this.polygon], { silent: !0 });
+    this.drawingHole = !1;
+    a || this.control.layer.events.triggerEvent("sketchcomplete", { feature: this.polygon });
+  },
+  destroyFeature: function (a) {
+    OpenLayers.Handler.Path.prototype.destroyFeature.call(this, a);
+    this.polygon = null;
+  },
+  drawFeature: function () {
+    this.layer.drawFeature(this.polygon, this.style);
+    this.layer.drawFeature(this.point, this.style);
+  },
+  getSketch: function () {
+    return this.polygon;
+  },
+  getGeometry: function () {
+    var a = this.polygon && this.polygon.geometry;
+    a && this.multi && (a = new OpenLayers.Geometry.MultiPolygon([a]));
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Handler.Polygon",
+});
+OpenLayers.Control.EditingToolbar = OpenLayers.Class(OpenLayers.Control.Panel, {
+  citeCompliant: !1,
+  initialize: function (a, b) {
+    OpenLayers.Control.Panel.prototype.initialize.apply(this, [b]);
+    this.addControls([new OpenLayers.Control.Navigation()]);
+    var c = [
+      new OpenLayers.Control.DrawFeature(a, OpenLayers.Handler.Point, {
+        displayClass: "olControlDrawFeaturePoint",
+        handlerOptions: { citeCompliant: this.citeCompliant },
+      }),
+      new OpenLayers.Control.DrawFeature(a, OpenLayers.Handler.Path, {
+        displayClass: "olControlDrawFeaturePath",
+        handlerOptions: { citeCompliant: this.citeCompliant },
+      }),
+      new OpenLayers.Control.DrawFeature(a, OpenLayers.Handler.Polygon, {
+        displayClass: "olControlDrawFeaturePolygon",
+        handlerOptions: { citeCompliant: this.citeCompliant },
+      }),
+    ];
+    this.addControls(c);
+  },
+  draw: function () {
+    var a = OpenLayers.Control.Panel.prototype.draw.apply(this, arguments);
+    null === this.defaultControl && (this.defaultControl = this.controls[0]);
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Control.EditingToolbar",
+});
+OpenLayers.Strategy.BBOX = OpenLayers.Class(OpenLayers.Strategy, {
+  bounds: null,
+  resolution: null,
+  ratio: 2,
+  resFactor: null,
+  response: null,
+  activate: function () {
+    var a = OpenLayers.Strategy.prototype.activate.call(this);
+    a &&
+      (this.layer.events.on({
+        moveend: this.update,
+        refresh: this.update,
+        visibilitychanged: this.update,
+        scope: this,
+      }),
+      this.update());
+    return a;
+  },
+  deactivate: function () {
+    var a = OpenLayers.Strategy.prototype.deactivate.call(this);
+    a &&
+      this.layer.events.un({
+        moveend: this.update,
+        refresh: this.update,
+        visibilitychanged: this.update,
+        scope: this,
+      });
+    return a;
+  },
+  update: function (a) {
+    var b = this.getMapBounds();
+    null !== b &&
+      ((a && a.force) ||
+        (this.layer.visibility && this.layer.calculateInRange() && this.invalidBounds(b))) &&
+      (this.calculateBounds(b),
+      (this.resolution = this.layer.map.getResolution()),
+      this.triggerRead(a));
+  },
+  getMapBounds: function () {
+    if (null === this.layer.map) return null;
+    var a = this.layer.map.getExtent();
+    a &&
+      !this.layer.projection.equals(this.layer.map.getProjectionObject()) &&
+      (a = a.clone().transform(this.layer.map.getProjectionObject(), this.layer.projection));
+    return a;
+  },
+  invalidBounds: function (a) {
+    a || (a = this.getMapBounds());
+    a = !this.bounds || !this.bounds.containsBounds(a);
+    !a &&
+      this.resFactor &&
+      ((a = this.resolution / this.layer.map.getResolution()),
+      (a = a >= this.resFactor || a <= 1 / this.resFactor));
+    return a;
+  },
+  calculateBounds: function (a) {
+    a || (a = this.getMapBounds());
+    var b = a.getCenterLonLat(),
+      c = a.getWidth() * this.ratio;
+    a = a.getHeight() * this.ratio;
+    this.bounds = new OpenLayers.Bounds(b.lon - c / 2, b.lat - a / 2, b.lon + c / 2, b.lat + a / 2);
+  },
+  triggerRead: function (a) {
+    !this.response ||
+      (a && !0 === a.noAbort) ||
+      (this.layer.protocol.abort(this.response), this.layer.events.triggerEvent("loadend"));
+    var b = { filter: this.createFilter() };
+    this.layer.events.triggerEvent("loadstart", b);
+    this.response = this.layer.protocol.read(
+      OpenLayers.Util.applyDefaults({ filter: b.filter, callback: this.merge, scope: this }, a)
+    );
+  },
+  createFilter: function () {
+    var a = new OpenLayers.Filter.Spatial({
+      type: OpenLayers.Filter.Spatial.BBOX,
+      value: this.bounds,
+      projection: this.layer.projection,
+    });
+    this.layer.filter &&
+      (a = new OpenLayers.Filter.Logical({
+        type: OpenLayers.Filter.Logical.AND,
+        filters: [this.layer.filter, a],
+      }));
+    return a;
+  },
+  merge: function (a) {
+    this.layer.destroyFeatures();
+    if (a.success()) {
+      var b = a.features;
+      if (b && 0 < b.length) {
+        var c = this.layer.projection,
+          d = this.layer.map.getProjectionObject();
+        if (!d.equals(c))
+          for (var e, f = 0, g = b.length; f < g; ++f) (e = b[f].geometry) && e.transform(c, d);
+        this.layer.addFeatures(b);
+      }
+    } else this.bounds = null;
+    this.response = null;
+    this.layer.events.triggerEvent("loadend", { response: a });
+  },
+  CLASS_NAME: "OpenLayers.Strategy.BBOX",
+});
+OpenLayers.Layer.WorldWind = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  DEFAULT_PARAMS: {},
+  isBaseLayer: !0,
+  lzd: null,
+  zoomLevels: null,
+  initialize: function (a, b, c, d, e, f) {
+    this.lzd = c;
+    this.zoomLevels = d;
+    c = [];
+    c.push(a, b, e, f);
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, c);
+    this.params = OpenLayers.Util.applyDefaults(this.params, this.DEFAULT_PARAMS);
+  },
+  getZoom: function () {
+    var a = this.map.getZoom();
+    this.map.getMaxExtent();
+    return (a -= Math.log(this.maxResolution / (this.lzd / 512)) / Math.log(2));
+  },
+  getURL: function (a) {
+    a = this.adjustBounds(a);
+    var b = this.getZoom(),
+      c = this.map.getMaxExtent(),
+      d = this.lzd / Math.pow(2, this.getZoom()),
+      e = Math.floor((a.left - c.left) / d);
+    a = Math.floor((a.bottom - c.bottom) / d);
+    return this.map.getResolution() <= this.lzd / 512 && this.getZoom() <= this.zoomLevels
+      ? this.getFullRequestString({ L: b, X: e, Y: a })
+      : OpenLayers.Util.getImageLocation("blank.gif");
+  },
+  CLASS_NAME: "OpenLayers.Layer.WorldWind",
+});
+OpenLayers.Protocol.CSW = function (a) {
+  a = OpenLayers.Util.applyDefaults(a, OpenLayers.Protocol.CSW.DEFAULTS);
+  var b = OpenLayers.Protocol.CSW["v" + a.version.replace(/\./g, "_")];
+  if (!b) throw "Unsupported CSW version: " + a.version;
+  return new b(a);
+};
+OpenLayers.Protocol.CSW.DEFAULTS = { version: "2.0.2" };
+OpenLayers.Format.WMTSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.0.0",
+  yx: { "urn:ogc:def:crs:EPSG::4326": !0 },
+  createLayer: function (a, b) {
+    if (!("layer" in b)) throw Error("Missing property 'layer' in configuration.");
+    for (var c = a.contents, d, e = 0, f = c.layers.length; e < f; ++e)
+      if (c.layers[e].identifier === b.layer) {
+        d = c.layers[e];
+        break;
+      }
+    if (!d) throw Error("Layer not found");
+    var g = b.format;
+    !g && d.formats && d.formats.length && (g = d.formats[0]);
+    var h;
+    b.matrixSet
+      ? (h = c.tileMatrixSets[b.matrixSet])
+      : 1 <= d.tileMatrixSetLinks.length &&
+        (h = c.tileMatrixSets[d.tileMatrixSetLinks[0].tileMatrixSet]);
+    if (!h) throw Error("matrixSet not found");
+    for (var k, e = 0, f = d.styles.length; e < f && ((k = d.styles[e]), !k.isDefault); ++e);
+    c = b.requestEncoding;
+    if (!c && ((c = "KVP"), a.operationsMetadata.GetTile.dcp.http)) {
+      var l = a.operationsMetadata.GetTile.dcp.http;
+      l.get[0].constraints &&
+        ((l = l.get[0].constraints.GetEncoding.allowedValues),
+        l.KVP || (!l.REST && !l.RESTful) || (c = "REST"));
+    }
+    var l = [],
+      m = b.params || {};
+    delete b.params;
+    for (var n = 0, p = d.dimensions.length; n < p; n++) {
+      var q = d.dimensions[n];
+      l.push(q.identifier);
+      m.hasOwnProperty(q.identifier) || (m[q.identifier] = q["default"]);
+    }
+    var n = b.projection || h.supportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/, "$1:$3"),
+      p = b.units || ("EPSG:4326" === n ? "degrees" : "m"),
+      q = [],
+      r;
+    for (r in h.matrixIds)
+      h.matrixIds.hasOwnProperty(r) &&
+        q.push(
+          (2.8e-4 * h.matrixIds[r].scaleDenominator) /
+            OpenLayers.METERS_PER_INCH /
+            OpenLayers.INCHES_PER_UNIT[p]
+        );
+    if ("REST" === c && d.resourceUrls) {
+      r = [];
+      for (var f = 0, s = d.resourceUrls.length; f < s; ++f)
+        (e = d.resourceUrls[f]), e.format === g && "tile" === e.resourceType && r.push(e.template);
+    } else {
+      s = a.operationsMetadata.GetTile.dcp.http.get;
+      r = [];
+      for (var t, e = 0, f = s.length; e < f; e++)
+        (t = s[e].constraints), (!t || (t && t.GetEncoding.allowedValues[c])) && r.push(s[e].url);
+    }
+    return new OpenLayers.Layer.WMTS(
+      OpenLayers.Util.applyDefaults(b, {
+        url: r,
+        requestEncoding: c,
+        name: d.title,
+        style: k.identifier,
+        format: g,
+        matrixIds: h.matrixIds,
+        matrixSet: h.identifier,
+        projection: n,
+        units: p,
+        resolutions: !1 === b.isBaseLayer ? void 0 : q,
+        serverResolutions: q,
+        tileFullExtent: h.bounds,
+        dimensions: l,
+        params: m,
+      })
+    );
+  },
+  CLASS_NAME: "OpenLayers.Format.WMTSCapabilities",
+});
+OpenLayers.Layer.Google.v3 = {
+  DEFAULTS: { sphericalMercator: !0, projection: "EPSG:900913" },
+  animationEnabled: !0,
+  loadMapObject: function () {
+    this.type || (this.type = google.maps.MapTypeId.ROADMAP);
+    var a,
+      b = OpenLayers.Layer.Google.cache[this.map.id];
+    b
+      ? ((a = b.mapObject), ++b.count)
+      : ((a = this.map.getCenter()),
+        (b = document.createElement("div")),
+        (b.className = "olForeignContainer"),
+        (b.style.width = "100%"),
+        (b.style.height = "100%"),
+        (a = new google.maps.Map(b, {
+          center: a ? new google.maps.LatLng(a.lat, a.lon) : new google.maps.LatLng(0, 0),
+          zoom: this.map.getZoom() || 0,
+          mapTypeId: this.type,
+          disableDefaultUI: !0,
+          keyboardShortcuts: !1,
+          draggable: !1,
+          disableDoubleClickZoom: !0,
+          scrollwheel: !1,
+          streetViewControl: !1,
+        })),
+        (b = document.createElement("div")),
+        (b.style.width = "100%"),
+        (b.style.height = "100%"),
+        a.controls[google.maps.ControlPosition.TOP_LEFT].push(b),
+        (b = { googleControl: b, mapObject: a, count: 1 }),
+        (OpenLayers.Layer.Google.cache[this.map.id] = b));
+    this.mapObject = a;
+    this.setGMapVisibility(this.visibility);
+  },
+  onMapResize: function () {
+    this.visibility && google.maps.event.trigger(this.mapObject, "resize");
+  },
+  setGMapVisibility: function (a) {
+    var b = OpenLayers.Layer.Google.cache[this.map.id],
+      c = this.map;
+    if (b) {
+      for (var d = this.type, e = c.layers, f, g = e.length - 1; 0 <= g; --g)
+        if (
+          ((f = e[g]),
+          f instanceof OpenLayers.Layer.Google && !0 === f.visibility && !0 === f.inRange)
+        ) {
+          d = f.type;
+          a = !0;
+          break;
+        }
+      e = this.mapObject.getDiv();
+      if (!0 === a) {
+        if (e.parentNode !== c.div)
+          if (b.rendered)
+            c.div.appendChild(e),
+              b.googleControl.appendChild(c.viewPortDiv),
+              google.maps.event.trigger(this.mapObject, "resize");
+          else {
+            var h = this;
+            google.maps.event.addListenerOnce(this.mapObject, "tilesloaded", function () {
+              b.rendered = !0;
+              h.setGMapVisibility(h.getVisibility());
+              h.moveTo(h.map.getCenter());
+            });
+          }
+        this.mapObject.setMapTypeId(d);
+      } else
+        b.googleControl.hasChildNodes() && (c.div.appendChild(c.viewPortDiv), c.div.removeChild(e));
+    }
+  },
+  getMapContainer: function () {
+    return this.mapObject.getDiv();
+  },
+  getMapObjectBoundsFromOLBounds: function (a) {
+    var b = null;
+    null != a &&
+      ((b = this.sphericalMercator
+        ? this.inverseMercator(a.bottom, a.left)
+        : new OpenLayers.LonLat(a.bottom, a.left)),
+      (a = this.sphericalMercator
+        ? this.inverseMercator(a.top, a.right)
+        : new OpenLayers.LonLat(a.top, a.right)),
+      (b = new google.maps.LatLngBounds(
+        new google.maps.LatLng(b.lat, b.lon),
+        new google.maps.LatLng(a.lat, a.lon)
+      )));
+    return b;
+  },
+  getMapObjectLonLatFromMapObjectPixel: function (a) {
+    var b = this.map.getSize(),
+      c = this.getLongitudeFromMapObjectLonLat(this.mapObject.center),
+      d = this.getLatitudeFromMapObjectLonLat(this.mapObject.center),
+      e = this.map.getResolution();
+    a = new OpenLayers.LonLat(c + (a.x - b.w / 2) * e, d - (a.y - b.h / 2) * e);
+    this.wrapDateLine && (a = a.wrapDateLine(this.maxExtent));
+    return this.getMapObjectLonLatFromLonLat(a.lon, a.lat);
+  },
+  getMapObjectPixelFromMapObjectLonLat: function (a) {
+    var b = this.getLongitudeFromMapObjectLonLat(a);
+    a = this.getLatitudeFromMapObjectLonLat(a);
+    var c = this.map.getResolution(),
+      d = this.map.getExtent();
+    return this.getMapObjectPixelFromXY((1 / c) * (b - d.left), (1 / c) * (d.top - a));
+  },
+  setMapObjectCenter: function (a, b) {
+    if (!1 === this.animationEnabled && b != this.mapObject.zoom) {
+      var c = this.getMapContainer();
+      google.maps.event.addListenerOnce(this.mapObject, "idle", function () {
+        c.style.visibility = "";
+      });
+      c.style.visibility = "hidden";
+    }
+    this.mapObject.setOptions({ center: a, zoom: b });
+  },
+  getMapObjectZoomFromMapObjectBounds: function (a) {
+    return this.mapObject.getBoundsZoomLevel(a);
+  },
+  getMapObjectLonLatFromLonLat: function (a, b) {
+    var c;
+    this.sphericalMercator
+      ? ((c = this.inverseMercator(a, b)), (c = new google.maps.LatLng(c.lat, c.lon)))
+      : (c = new google.maps.LatLng(b, a));
+    return c;
+  },
+  getMapObjectPixelFromXY: function (a, b) {
+    return new google.maps.Point(a, b);
+  },
+};
+OpenLayers.Format.WPSDescribeProcess = OpenLayers.Class(OpenLayers.Format.XML, {
+  VERSION: "1.0.0",
+  namespaces: {
+    wps: "http://www.opengis.net/wps/1.0.0",
+    ows: "http://www.opengis.net/ows/1.1",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  schemaLocation:
+    "http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",
+  defaultPrefix: "wps",
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    this.readNode(a, b);
+    return b;
+  },
+  readers: {
+    wps: {
+      ProcessDescriptions: function (a, b) {
+        b.processDescriptions = {};
+        this.readChildNodes(a, b.processDescriptions);
+      },
+      ProcessDescription: function (a, b) {
+        var c = {
+          processVersion: this.getAttributeNS(a, this.namespaces.wps, "processVersion"),
+          statusSupported: "true" === a.getAttribute("statusSupported"),
+          storeSupported: "true" === a.getAttribute("storeSupported"),
+        };
+        this.readChildNodes(a, c);
+        b[c.identifier] = c;
+      },
+      DataInputs: function (a, b) {
+        b.dataInputs = [];
+        this.readChildNodes(a, b.dataInputs);
+      },
+      ProcessOutputs: function (a, b) {
+        b.processOutputs = [];
+        this.readChildNodes(a, b.processOutputs);
+      },
+      Output: function (a, b) {
+        var c = {};
+        this.readChildNodes(a, c);
+        b.push(c);
+      },
+      ComplexOutput: function (a, b) {
+        b.complexOutput = {};
+        this.readChildNodes(a, b.complexOutput);
+      },
+      LiteralOutput: function (a, b) {
+        b.literalOutput = {};
+        this.readChildNodes(a, b.literalOutput);
+      },
+      Input: function (a, b) {
+        var c = {
+          maxOccurs: parseInt(a.getAttribute("maxOccurs")),
+          minOccurs: parseInt(a.getAttribute("minOccurs")),
+        };
+        this.readChildNodes(a, c);
+        b.push(c);
+      },
+      BoundingBoxData: function (a, b) {
+        b.boundingBoxData = {};
+        this.readChildNodes(a, b.boundingBoxData);
+      },
+      CRS: function (a, b) {
+        b.CRSs || (b.CRSs = {});
+        b.CRSs[this.getChildValue(a)] = !0;
+      },
+      LiteralData: function (a, b) {
+        b.literalData = {};
+        this.readChildNodes(a, b.literalData);
+      },
+      ComplexData: function (a, b) {
+        b.complexData = {};
+        this.readChildNodes(a, b.complexData);
+      },
+      Default: function (a, b) {
+        b["default"] = {};
+        this.readChildNodes(a, b["default"]);
+      },
+      Supported: function (a, b) {
+        b.supported = {};
+        this.readChildNodes(a, b.supported);
+      },
+      Format: function (a, b) {
+        var c = {};
+        this.readChildNodes(a, c);
+        b.formats || (b.formats = {});
+        b.formats[c.mimeType] = !0;
+      },
+      MimeType: function (a, b) {
+        b.mimeType = this.getChildValue(a);
+      },
+    },
+    ows: OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows,
+  },
+  CLASS_NAME: "OpenLayers.Format.WPSDescribeProcess",
+});
+OpenLayers.Format.WKT = OpenLayers.Class(OpenLayers.Format, {
+  initialize: function (a) {
+    this.regExes = {
+      typeStr: /^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,
+      spaces: /\s+/,
+      parenComma: /\)\s*,\s*\(/,
+      doubleParenComma: /\)\s*\)\s*,\s*\(\s*\(/,
+      trimParens: /^\s*\(?(.*?)\)?\s*$/,
+    };
+    OpenLayers.Format.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    var b, c;
+    a = a.replace(/[\n\r]/g, " ");
+    if ((c = this.regExes.typeStr.exec(a)))
+      if (
+        ((a = c[1].toLowerCase()),
+        (c = c[2]),
+        this.parse[a] && (b = this.parse[a].apply(this, [c])),
+        this.internalProjection && this.externalProjection)
+      )
+        if (b && "OpenLayers.Feature.Vector" == b.CLASS_NAME)
+          b.geometry.transform(this.externalProjection, this.internalProjection);
+        else if (b && "geometrycollection" != a && "object" == typeof b)
+          for (a = 0, c = b.length; a < c; a++)
+            b[a].geometry.transform(this.externalProjection, this.internalProjection);
+    return b;
+  },
+  write: function (a) {
+    var b, c;
+    a.constructor == Array ? (c = !0) : ((a = [a]), (c = !1));
+    var d = [];
+    c && d.push("GEOMETRYCOLLECTION(");
+    for (var e = 0, f = a.length; e < f; ++e)
+      c && 0 < e && d.push(","), (b = a[e].geometry), d.push(this.extractGeometry(b));
+    c && d.push(")");
+    return d.join("");
+  },
+  extractGeometry: function (a) {
+    var b = a.CLASS_NAME.split(".")[2].toLowerCase();
+    if (!this.extract[b]) return null;
+    this.internalProjection &&
+      this.externalProjection &&
+      ((a = a.clone()), a.transform(this.internalProjection, this.externalProjection));
+    return (
+      ("collection" == b ? "GEOMETRYCOLLECTION" : b.toUpperCase()) +
+      "(" +
+      this.extract[b].apply(this, [a]) +
+      ")"
+    );
+  },
+  extract: {
+    point: function (a) {
+      return a.x + " " + a.y;
+    },
+    multipoint: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push("(" + this.extract.point.apply(this, [a.components[c]]) + ")");
+      return b.join(",");
+    },
+    linestring: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push(this.extract.point.apply(this, [a.components[c]]));
+      return b.join(",");
+    },
+    multilinestring: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push("(" + this.extract.linestring.apply(this, [a.components[c]]) + ")");
+      return b.join(",");
+    },
+    polygon: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push("(" + this.extract.linestring.apply(this, [a.components[c]]) + ")");
+      return b.join(",");
+    },
+    multipolygon: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push("(" + this.extract.polygon.apply(this, [a.components[c]]) + ")");
+      return b.join(",");
+    },
+    collection: function (a) {
+      for (var b = [], c = 0, d = a.components.length; c < d; ++c)
+        b.push(this.extractGeometry.apply(this, [a.components[c]]));
+      return b.join(",");
+    },
+  },
+  parse: {
+    point: function (a) {
+      a = OpenLayers.String.trim(a).split(this.regExes.spaces);
+      return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a[0], a[1]));
+    },
+    multipoint: function (a) {
+      for (var b = OpenLayers.String.trim(a).split(","), c = [], d = 0, e = b.length; d < e; ++d)
+        (a = b[d].replace(this.regExes.trimParens, "$1")),
+          c.push(this.parse.point.apply(this, [a]).geometry);
+      return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPoint(c));
+    },
+    linestring: function (a) {
+      a = OpenLayers.String.trim(a).split(",");
+      for (var b = [], c = 0, d = a.length; c < d; ++c)
+        b.push(this.parse.point.apply(this, [a[c]]).geometry);
+      return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(b));
+    },
+    multilinestring: function (a) {
+      for (
+        var b = OpenLayers.String.trim(a).split(this.regExes.parenComma),
+          c = [],
+          d = 0,
+          e = b.length;
+        d < e;
+        ++d
+      )
+        (a = b[d].replace(this.regExes.trimParens, "$1")),
+          c.push(this.parse.linestring.apply(this, [a]).geometry);
+      return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiLineString(c));
+    },
+    polygon: function (a) {
+      var b;
+      a = OpenLayers.String.trim(a).split(this.regExes.parenComma);
+      for (var c = [], d = 0, e = a.length; d < e; ++d)
+        (b = a[d].replace(this.regExes.trimParens, "$1")),
+          (b = this.parse.linestring.apply(this, [b]).geometry),
+          (b = new OpenLayers.Geometry.LinearRing(b.components)),
+          c.push(b);
+      return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon(c));
+    },
+    multipolygon: function (a) {
+      for (
+        var b = OpenLayers.String.trim(a).split(this.regExes.doubleParenComma),
+          c = [],
+          d = 0,
+          e = b.length;
+        d < e;
+        ++d
+      )
+        (a = b[d].replace(this.regExes.trimParens, "$1")),
+          c.push(this.parse.polygon.apply(this, [a]).geometry);
+      return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon(c));
+    },
+    geometrycollection: function (a) {
+      a = a.replace(/,\s*([A-Za-z])/g, "|$1");
+      a = OpenLayers.String.trim(a).split("|");
+      for (var b = [], c = 0, d = a.length; c < d; ++c)
+        b.push(OpenLayers.Format.WKT.prototype.read.apply(this, [a[c]]));
+      return b;
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.WKT",
+});
+OpenLayers.WPSProcess = OpenLayers.Class({
+  client: null,
+  server: null,
+  identifier: null,
+  description: null,
+  localWPS: "http://geoserver/wps",
+  formats: null,
+  chained: 0,
+  executeCallbacks: null,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+    this.executeCallbacks = [];
+    this.formats = {
+      "application/wkt": new OpenLayers.Format.WKT(),
+      "application/json": new OpenLayers.Format.GeoJSON(),
+    };
+  },
+  describe: function (a) {
+    a = a || {};
+    if (!this.description)
+      this.client.describeProcess(
+        this.server,
+        this.identifier,
+        function (b) {
+          this.description || this.parseDescription(b);
+          a.callback && a.callback.call(a.scope, this.description);
+        },
+        this
+      );
+    else if (a.callback) {
+      var b = this.description;
+      window.setTimeout(function () {
+        a.callback.call(a.scope, b);
+      }, 0);
+    }
+  },
+  configure: function (a) {
+    this.describe({
+      callback: function () {
+        var b = this.description,
+          c = a.inputs,
+          d,
+          e,
+          f;
+        e = 0;
+        for (f = b.dataInputs.length; e < f; ++e)
+          (d = b.dataInputs[e]), this.setInputData(d, c[d.identifier]);
+        a.callback && a.callback.call(a.scope);
+      },
+      scope: this,
+    });
+    return this;
+  },
+  execute: function (a) {
+    this.configure({
+      inputs: a.inputs,
+      callback: function () {
+        var b = this,
+          c = this.getOutputIndex(b.description.processOutputs, a.output);
+        b.setResponseForm({ outputIndex: c });
+        (function e() {
+          OpenLayers.Util.removeItem(b.executeCallbacks, e);
+          0 !== b.chained
+            ? b.executeCallbacks.push(e)
+            : OpenLayers.Request.POST({
+                url: b.client.servers[b.server].url,
+                data: new OpenLayers.Format.WPSExecute().write(b.description),
+                success: function (e) {
+                  var g = b.findMimeType(
+                    b.description.processOutputs[c].complexOutput.supported.formats
+                  );
+                  e = b.formats[g].read(e.responseText);
+                  e instanceof OpenLayers.Feature.Vector && (e = [e]);
+                  a.success &&
+                    ((g = {}), (g[a.output || "result"] = e), a.success.call(a.scope, g));
+                },
+                scope: b,
+              });
+        })();
+      },
+      scope: this,
+    });
+  },
+  output: function (a) {
+    return new OpenLayers.WPSProcess.ChainLink({ process: this, output: a });
+  },
+  parseDescription: function (a) {
+    a = this.client.servers[this.server];
+    this.description = new OpenLayers.Format.WPSDescribeProcess().read(
+      a.processDescription[this.identifier]
+    ).processDescriptions[this.identifier];
+  },
+  setInputData: function (a, b) {
+    delete a.data;
+    delete a.reference;
+    if (b instanceof OpenLayers.WPSProcess.ChainLink)
+      ++this.chained,
+        (a.reference = {
+          method: "POST",
+          href:
+            b.process.server === this.server
+              ? this.localWPS
+              : this.client.servers[b.process.server].url,
+        }),
+        b.process.describe({
+          callback: function () {
+            --this.chained;
+            this.chainProcess(a, b);
+          },
+          scope: this,
+        });
+    else {
+      a.data = {};
+      var c = a.complexData;
+      c
+        ? ((c = this.findMimeType(c.supported.formats)),
+          (a.data.complexData = { mimeType: c, value: this.formats[c].write(this.toFeatures(b)) }))
+        : (a.data.literalData = { value: b });
+    }
+  },
+  setResponseForm: function (a) {
+    a = a || {};
+    var b = this.description.processOutputs[a.outputIndex || 0];
+    this.description.responseForm = {
+      rawDataOutput: {
+        identifier: b.identifier,
+        mimeType: this.findMimeType(b.complexOutput.supported.formats, a.supportedFormats),
+      },
+    };
+  },
+  getOutputIndex: function (a, b) {
+    var c;
+    if (b)
+      for (var d = a.length - 1; 0 <= d; --d) {
+        if (a[d].identifier === b) {
+          c = d;
+          break;
+        }
+      }
+    else c = 0;
+    return c;
+  },
+  chainProcess: function (a, b) {
+    var c = this.getOutputIndex(b.process.description.processOutputs, b.output);
+    a.reference.mimeType = this.findMimeType(
+      a.complexData.supported.formats,
+      b.process.description.processOutputs[c].complexOutput.supported.formats
+    );
+    var d = {};
+    d[a.reference.mimeType] = !0;
+    b.process.setResponseForm({ outputIndex: c, supportedFormats: d });
+    for (a.reference.body = b.process.description; 0 < this.executeCallbacks.length; )
+      this.executeCallbacks[0]();
+  },
+  toFeatures: function (a) {
+    var b = OpenLayers.Util.isArray(a);
+    b || (a = [a]);
+    for (var c = Array(a.length), d, e = 0, f = a.length; e < f; ++e)
+      (d = a[e]),
+        (c[e] = d instanceof OpenLayers.Feature.Vector ? d : new OpenLayers.Feature.Vector(d));
+    return b ? c : c[0];
+  },
+  findMimeType: function (a, b) {
+    b = b || this.formats;
+    for (var c in a) if (c in b) return c;
+  },
+  CLASS_NAME: "OpenLayers.WPSProcess",
+});
+OpenLayers.WPSProcess.ChainLink = OpenLayers.Class({
+  process: null,
+  output: null,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+  },
+  CLASS_NAME: "OpenLayers.WPSProcess.ChainLink",
+});
+OpenLayers.WPSClient = OpenLayers.Class({
+  servers: null,
+  version: "1.0.0",
+  lazy: !1,
+  events: null,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+    this.events = new OpenLayers.Events(this);
+    this.servers = {};
+    for (var b in a.servers)
+      this.servers[b] =
+        "string" == typeof a.servers[b]
+          ? { url: a.servers[b], version: this.version, processDescription: {} }
+          : a.servers[b];
+  },
+  execute: function (a) {
+    this.getProcess(a.server, a.process).execute({
+      inputs: a.inputs,
+      success: a.success,
+      scope: a.scope,
+    });
+  },
+  getProcess: function (a, b) {
+    var c = new OpenLayers.WPSProcess({ client: this, server: a, identifier: b });
+    this.lazy || c.describe();
+    return c;
+  },
+  describeProcess: function (a, b, c, d) {
+    var e = this.servers[a];
+    e.processDescription[b]
+      ? window.setTimeout(function () {
+          c.call(d, e.processDescription[b]);
+        }, 0)
+      : b in e.processDescription
+      ? this.events.register("describeprocess", this, function g(a) {
+          a.identifier === b &&
+            (this.events.unregister("describeprocess", this, g), c.call(d, a.raw));
+        })
+      : ((e.processDescription[b] = null),
+        OpenLayers.Request.GET({
+          url: e.url,
+          params: { SERVICE: "WPS", VERSION: e.version, REQUEST: "DescribeProcess", IDENTIFIER: b },
+          success: function (a) {
+            e.processDescription[b] = a.responseText;
+            this.events.triggerEvent("describeprocess", { identifier: b, raw: a.responseText });
+          },
+          scope: this,
+        }));
+  },
+  destroy: function () {
+    this.events.destroy();
+    this.servers = this.events = null;
+  },
+  CLASS_NAME: "OpenLayers.WPSClient",
+});
+OpenLayers.Format.CSWGetRecords.v2_0_2 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    csw: "http://www.opengis.net/cat/csw/2.0.2",
+    dc: "http://purl.org/dc/elements/1.1/",
+    dct: "http://purl.org/dc/terms/",
+    gmd: "http://www.isotc211.org/2005/gmd",
+    geonet: "http://www.fao.org/geonetwork",
+    ogc: "http://www.opengis.net/ogc",
+    ows: "http://www.opengis.net/ows",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  defaultPrefix: "csw",
+  version: "2.0.2",
+  schemaLocation:
+    "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",
+  requestId: null,
+  resultType: null,
+  outputFormat: null,
+  outputSchema: null,
+  startPosition: null,
+  maxRecords: null,
+  DistributedSearch: null,
+  ResponseHandler: null,
+  Query: null,
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  initialize: function (a) {
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    this.readNode(a, b);
+    return b;
+  },
+  readers: {
+    csw: {
+      GetRecordsResponse: function (a, b) {
+        b.records = [];
+        this.readChildNodes(a, b);
+        var c = this.getAttributeNS(a, "", "version");
+        "" != c && (b.version = c);
+      },
+      RequestId: function (a, b) {
+        b.RequestId = this.getChildValue(a);
+      },
+      SearchStatus: function (a, b) {
+        b.SearchStatus = {};
+        var c = this.getAttributeNS(a, "", "timestamp");
+        "" != c && (b.SearchStatus.timestamp = c);
+      },
+      SearchResults: function (a, b) {
+        this.readChildNodes(a, b);
+        for (var c = a.attributes, d = {}, e = 0, f = c.length; e < f; ++e)
+          d[c[e].name] =
+            "numberOfRecordsMatched" == c[e].name ||
+            "numberOfRecordsReturned" == c[e].name ||
+            "nextRecord" == c[e].name
+              ? parseInt(c[e].nodeValue)
+              : c[e].nodeValue;
+        b.SearchResults = d;
+      },
+      SummaryRecord: function (a, b) {
+        var c = { type: "SummaryRecord" };
+        this.readChildNodes(a, c);
+        b.records.push(c);
+      },
+      BriefRecord: function (a, b) {
+        var c = { type: "BriefRecord" };
+        this.readChildNodes(a, c);
+        b.records.push(c);
+      },
+      DCMIRecord: function (a, b) {
+        var c = { type: "DCMIRecord" };
+        this.readChildNodes(a, c);
+        b.records.push(c);
+      },
+      Record: function (a, b) {
+        var c = { type: "Record" };
+        this.readChildNodes(a, c);
+        b.records.push(c);
+      },
+      "*": function (a, b) {
+        var c = a.localName || a.nodeName.split(":").pop();
+        b[c] = this.getChildValue(a);
+      },
+    },
+    geonet: {
+      info: function (a, b) {
+        var c = {};
+        this.readChildNodes(a, c);
+        b.gninfo = c;
+      },
+    },
+    dc: {
+      "*": function (a, b) {
+        var c = a.localName || a.nodeName.split(":").pop();
+        OpenLayers.Util.isArray(b[c]) || (b[c] = []);
+        for (var d = {}, e = a.attributes, f = 0, g = e.length; f < g; ++f)
+          d[e[f].name] = e[f].nodeValue;
+        d.value = this.getChildValue(a);
+        "" != d.value && b[c].push(d);
+      },
+    },
+    dct: {
+      "*": function (a, b) {
+        var c = a.localName || a.nodeName.split(":").pop();
+        OpenLayers.Util.isArray(b[c]) || (b[c] = []);
+        b[c].push(this.getChildValue(a));
+      },
+    },
+    ows: OpenLayers.Util.applyDefaults(
+      {
+        BoundingBox: function (a, b) {
+          b.bounds &&
+            ((b.BoundingBox = [
+              {
+                crs: b.projection,
+                value: [b.bounds.left, b.bounds.bottom, b.bounds.right, b.bounds.top],
+              },
+            ]),
+            delete b.projection,
+            delete b.bounds);
+          OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows.BoundingBox.apply(
+            this,
+            arguments
+          );
+        },
+      },
+      OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows
+    ),
+  },
+  write: function (a) {
+    a = this.writeNode("csw:GetRecords", a);
+    a.setAttribute("xmlns:gmd", this.namespaces.gmd);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [a]);
+  },
+  writers: {
+    csw: {
+      GetRecords: function (a) {
+        a || (a = {});
+        var b = this.createElementNSPlus("csw:GetRecords", {
+          attributes: {
+            service: "CSW",
+            version: this.version,
+            requestId: a.requestId || this.requestId,
+            resultType: a.resultType || this.resultType,
+            outputFormat: a.outputFormat || this.outputFormat,
+            outputSchema: a.outputSchema || this.outputSchema,
+            startPosition: a.startPosition || this.startPosition,
+            maxRecords: a.maxRecords || this.maxRecords,
+          },
+        });
+        (a.DistributedSearch || this.DistributedSearch) &&
+          this.writeNode("csw:DistributedSearch", a.DistributedSearch || this.DistributedSearch, b);
+        var c = a.ResponseHandler || this.ResponseHandler;
+        if (OpenLayers.Util.isArray(c) && 0 < c.length)
+          for (var d = 0, e = c.length; d < e; d++) this.writeNode("csw:ResponseHandler", c[d], b);
+        this.writeNode("Query", a.Query || this.Query, b);
+        return b;
+      },
+      DistributedSearch: function (a) {
+        return this.createElementNSPlus("csw:DistributedSearch", {
+          attributes: { hopCount: a.hopCount },
+        });
+      },
+      ResponseHandler: function (a) {
+        return this.createElementNSPlus("csw:ResponseHandler", { value: a.value });
+      },
+      Query: function (a) {
+        a || (a = {});
+        var b = this.createElementNSPlus("csw:Query", {
+            attributes: { typeNames: a.typeNames || "csw:Record" },
+          }),
+          c = a.ElementName;
+        if (OpenLayers.Util.isArray(c) && 0 < c.length)
+          for (var d = 0, e = c.length; d < e; d++) this.writeNode("csw:ElementName", c[d], b);
+        else this.writeNode("csw:ElementSetName", a.ElementSetName || { value: "summary" }, b);
+        a.Constraint && this.writeNode("csw:Constraint", a.Constraint, b);
+        a.SortBy && this.writeNode("ogc:SortBy", a.SortBy, b);
+        return b;
+      },
+      ElementName: function (a) {
+        return this.createElementNSPlus("csw:ElementName", { value: a.value });
+      },
+      ElementSetName: function (a) {
+        return this.createElementNSPlus("csw:ElementSetName", {
+          attributes: { typeNames: a.typeNames },
+          value: a.value,
+        });
+      },
+      Constraint: function (a) {
+        var b = this.createElementNSPlus("csw:Constraint", { attributes: { version: a.version } });
+        if (a.Filter) {
+          var c = new OpenLayers.Format.Filter({ version: a.version });
+          b.appendChild(c.write(a.Filter));
+        } else
+          a.CqlText &&
+            ((a = this.createElementNSPlus("CqlText", { value: a.CqlText.value })),
+            b.appendChild(a));
+        return b;
+      },
+    },
+    ogc: OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc,
+  },
+  CLASS_NAME: "OpenLayers.Format.CSWGetRecords.v2_0_2",
+}); /*
+ Apache 2 
+
+ Contains portions of Rico <http://openrico.org/>
+
+ Copyright 2005 Sabre Airline Solutions  
+
+ Licensed under the Apache License, Version 2.0 (the "License"); you
+ may not use this file except in compliance with the License. You
+ may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0  
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied. See the License for the specific language governing
+ permissions and limitations under the License. 
+*/
+OpenLayers.Marker.Box = OpenLayers.Class(OpenLayers.Marker, {
+  bounds: null,
+  div: null,
+  initialize: function (a, b, c) {
+    this.bounds = a;
+    this.div = OpenLayers.Util.createDiv();
+    this.div.style.overflow = "hidden";
+    this.events = new OpenLayers.Events(this, this.div);
+    this.setBorder(b, c);
+  },
+  destroy: function () {
+    this.div = this.bounds = null;
+    OpenLayers.Marker.prototype.destroy.apply(this, arguments);
+  },
+  setBorder: function (a, b) {
+    a || (a = "red");
+    b || (b = 2);
+    this.div.style.border = b + "px solid " + a;
+  },
+  draw: function (a, b) {
+    OpenLayers.Util.modifyDOMElement(this.div, null, a, b);
+    return this.div;
+  },
+  onScreen: function () {
+    var a = !1;
+    this.map && (a = this.map.getExtent().containsBounds(this.bounds, !0, !0));
+    return a;
+  },
+  display: function (a) {
+    this.div.style.display = a ? "" : "none";
+  },
+  CLASS_NAME: "OpenLayers.Marker.Box",
+});
+OpenLayers.Format.Text = OpenLayers.Class(OpenLayers.Format, {
+  defaultStyle: null,
+  extractStyles: !0,
+  initialize: function (a) {
+    a = a || {};
+    !1 !== a.extractStyles &&
+      (a.defaultStyle = {
+        externalGraphic: OpenLayers.Util.getImageLocation("marker.png"),
+        graphicWidth: 21,
+        graphicHeight: 25,
+        graphicXOffset: -10.5,
+        graphicYOffset: -12.5,
+      });
+    OpenLayers.Format.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    a = a.split("\n");
+    for (var b, c = [], d = 0; d < a.length - 1; d++) {
+      var e = a[d].replace(/^\s*/, "").replace(/\s*$/, "");
+      if ("#" != e.charAt(0))
+        if (b) {
+          for (
+            var e = e.split("\t"),
+              f = new OpenLayers.Geometry.Point(0, 0),
+              g = {},
+              h = this.defaultStyle ? OpenLayers.Util.applyDefaults({}, this.defaultStyle) : null,
+              k = !1,
+              l = 0;
+            l < e.length;
+            l++
+          )
+            if (e[l])
+              if ("point" == b[l])
+                (k = e[l].split(",")), (f.y = parseFloat(k[0])), (f.x = parseFloat(k[1])), (k = !0);
+              else if ("lat" == b[l]) (f.y = parseFloat(e[l])), (k = !0);
+              else if ("lon" == b[l]) (f.x = parseFloat(e[l])), (k = !0);
+              else if ("title" == b[l]) g.title = e[l];
+              else if ("image" == b[l] || ("icon" == b[l] && h)) h.externalGraphic = e[l];
+              else if ("iconSize" == b[l] && h) {
+                var m = e[l].split(",");
+                h.graphicWidth = parseFloat(m[0]);
+                h.graphicHeight = parseFloat(m[1]);
+              } else
+                "iconOffset" == b[l] && h
+                  ? ((m = e[l].split(",")),
+                    (h.graphicXOffset = parseFloat(m[0])),
+                    (h.graphicYOffset = parseFloat(m[1])))
+                  : "description" == b[l]
+                  ? (g.description = e[l])
+                  : "overflow" == b[l]
+                  ? (g.overflow = e[l])
+                  : (g[b[l]] = e[l]);
+          k &&
+            (this.internalProjection &&
+              this.externalProjection &&
+              f.transform(this.externalProjection, this.internalProjection),
+            (e = new OpenLayers.Feature.Vector(f, g, h)),
+            c.push(e));
+        } else b = e.split("\t");
+    }
+    return c;
+  },
+  CLASS_NAME: "OpenLayers.Format.Text",
+});
+OpenLayers.Layer.Text = OpenLayers.Class(OpenLayers.Layer.Markers, {
+  location: null,
+  features: null,
+  formatOptions: null,
+  selectedFeature: null,
+  initialize: function (a, b) {
+    OpenLayers.Layer.Markers.prototype.initialize.apply(this, arguments);
+    this.features = [];
+  },
+  destroy: function () {
+    OpenLayers.Layer.Markers.prototype.destroy.apply(this, arguments);
+    this.clearFeatures();
+    this.features = null;
+  },
+  loadText: function () {
+    this.loaded ||
+      null == this.location ||
+      (this.events.triggerEvent("loadstart"),
+      OpenLayers.Request.GET({
+        url: this.location,
+        success: this.parseData,
+        failure: function (a) {
+          this.events.triggerEvent("loadend");
+        },
+        scope: this,
+      }),
+      (this.loaded = !0));
+  },
+  moveTo: function (a, b, c) {
+    OpenLayers.Layer.Markers.prototype.moveTo.apply(this, arguments);
+    this.visibility && !this.loaded && this.loadText();
+  },
+  parseData: function (a) {
+    a = a.responseText;
+    var b = {};
+    OpenLayers.Util.extend(b, this.formatOptions);
+    this.map &&
+      !this.projection.equals(this.map.getProjectionObject()) &&
+      ((b.externalProjection = this.projection),
+      (b.internalProjection = this.map.getProjectionObject()));
+    a = new OpenLayers.Format.Text(b).read(a);
+    for (var b = 0, c = a.length; b < c; b++) {
+      var d = {},
+        e = a[b],
+        f,
+        g,
+        h;
+      f = new OpenLayers.LonLat(e.geometry.x, e.geometry.y);
+      e.style.graphicWidth &&
+        e.style.graphicHeight &&
+        (g = new OpenLayers.Size(e.style.graphicWidth, e.style.graphicHeight));
+      void 0 !== e.style.graphicXOffset &&
+        void 0 !== e.style.graphicYOffset &&
+        (h = new OpenLayers.Pixel(e.style.graphicXOffset, e.style.graphicYOffset));
+      null != e.style.externalGraphic
+        ? (d.icon = new OpenLayers.Icon(e.style.externalGraphic, g, h))
+        : ((d.icon = OpenLayers.Marker.defaultIcon()), null != g && d.icon.setSize(g));
+      null != e.attributes.title &&
+        null != e.attributes.description &&
+        (d.popupContentHTML =
+          "<h2>" + e.attributes.title + "</h2><p>" + e.attributes.description + "</p>");
+      d.overflow = e.attributes.overflow || "auto";
+      d = new OpenLayers.Feature(this, f, d);
+      this.features.push(d);
+      f = d.createMarker();
+      null != e.attributes.title &&
+        null != e.attributes.description &&
+        f.events.register("click", d, this.markerClick);
+      this.addMarker(f);
+    }
+    this.events.triggerEvent("loadend");
+  },
+  markerClick: function (a) {
+    var b = this == this.layer.selectedFeature;
+    this.layer.selectedFeature = b ? null : this;
+    for (var c = 0, d = this.layer.map.popups.length; c < d; c++)
+      this.layer.map.removePopup(this.layer.map.popups[c]);
+    b || this.layer.map.addPopup(this.createPopup());
+    OpenLayers.Event.stop(a);
+  },
+  clearFeatures: function () {
+    if (null != this.features)
+      for (; 0 < this.features.length; ) {
+        var a = this.features[0];
+        OpenLayers.Util.removeItem(this.features, a);
+        a.destroy();
+      }
+  },
+  CLASS_NAME: "OpenLayers.Layer.Text",
+});
+OpenLayers.Handler.RegularPolygon = OpenLayers.Class(OpenLayers.Handler.Drag, {
+  sides: 4,
+  radius: null,
+  snapAngle: null,
+  snapToggle: "shiftKey",
+  layerOptions: null,
+  persist: !1,
+  irregular: !1,
+  citeCompliant: !1,
+  angle: null,
+  fixedRadius: !1,
+  feature: null,
+  layer: null,
+  origin: null,
+  initialize: function (a, b, c) {
+    (c && c.layerOptions && c.layerOptions.styleMap) ||
+      (this.style = OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"], {}));
+    OpenLayers.Handler.Drag.prototype.initialize.apply(this, [a, b, c]);
+    this.options = c ? c : {};
+  },
+  setOptions: function (a) {
+    OpenLayers.Util.extend(this.options, a);
+    OpenLayers.Util.extend(this, a);
+  },
+  activate: function () {
+    var a = !1;
+    OpenLayers.Handler.Drag.prototype.activate.apply(this, arguments) &&
+      ((a = OpenLayers.Util.extend(
+        {
+          displayInLayerSwitcher: !1,
+          calculateInRange: OpenLayers.Function.True,
+          wrapDateLine: this.citeCompliant,
+        },
+        this.layerOptions
+      )),
+      (this.layer = new OpenLayers.Layer.Vector(this.CLASS_NAME, a)),
+      this.map.addLayer(this.layer),
+      (a = !0));
+    return a;
+  },
+  deactivate: function () {
+    var a = !1;
+    OpenLayers.Handler.Drag.prototype.deactivate.apply(this, arguments) &&
+      (this.dragging && this.cancel(),
+      null != this.layer.map && (this.layer.destroy(!1), this.feature && this.feature.destroy()),
+      (this.feature = this.layer = null),
+      (a = !0));
+    return a;
+  },
+  down: function (a) {
+    this.fixedRadius = !!this.radius;
+    a = this.layer.getLonLatFromViewPortPx(a.xy);
+    this.origin = new OpenLayers.Geometry.Point(a.lon, a.lat);
+    if (!this.fixedRadius || this.irregular) this.radius = this.map.getResolution();
+    this.persist && this.clear();
+    this.feature = new OpenLayers.Feature.Vector();
+    this.createGeometry();
+    this.callback("create", [this.origin, this.feature]);
+    this.layer.addFeatures([this.feature], { silent: !0 });
+    this.layer.drawFeature(this.feature, this.style);
+  },
+  move: function (a) {
+    var b = this.layer.getLonLatFromViewPortPx(a.xy),
+      b = new OpenLayers.Geometry.Point(b.lon, b.lat);
+    this.irregular
+      ? ((a = (Math.sqrt(2) * Math.abs(b.y - this.origin.y)) / 2),
+        (this.radius = Math.max(this.map.getResolution() / 2, a)))
+      : this.fixedRadius
+      ? (this.origin = b)
+      : (this.calculateAngle(b, a),
+        (this.radius = Math.max(this.map.getResolution() / 2, b.distanceTo(this.origin))));
+    this.modifyGeometry();
+    if (this.irregular) {
+      a = b.x - this.origin.x;
+      var b = b.y - this.origin.y,
+        c;
+      c = 0 == b ? a / (this.radius * Math.sqrt(2)) : a / b;
+      this.feature.geometry.resize(1, this.origin, c);
+      this.feature.geometry.move(a / 2, b / 2);
+    }
+    this.layer.drawFeature(this.feature, this.style);
+  },
+  up: function (a) {
+    this.finalize();
+    this.start == this.last && this.callback("done", [a.xy]);
+  },
+  out: function (a) {
+    this.finalize();
+  },
+  createGeometry: function () {
+    this.angle = Math.PI * (1 / this.sides - 0.5);
+    this.snapAngle && (this.angle += this.snapAngle * (Math.PI / 180));
+    this.feature.geometry = OpenLayers.Geometry.Polygon.createRegularPolygon(
+      this.origin,
+      this.radius,
+      this.sides,
+      this.snapAngle
+    );
+  },
+  modifyGeometry: function () {
+    var a,
+      b,
+      c = this.feature.geometry.components[0];
+    c.components.length != this.sides + 1 &&
+      (this.createGeometry(), (c = this.feature.geometry.components[0]));
+    for (var d = 0; d < this.sides; ++d)
+      (b = c.components[d]),
+        (a = this.angle + (2 * d * Math.PI) / this.sides),
+        (b.x = this.origin.x + this.radius * Math.cos(a)),
+        (b.y = this.origin.y + this.radius * Math.sin(a)),
+        b.clearBounds();
+  },
+  calculateAngle: function (a, b) {
+    var c = Math.atan2(a.y - this.origin.y, a.x - this.origin.x);
+    if (this.snapAngle && this.snapToggle && !b[this.snapToggle]) {
+      var d = (Math.PI / 180) * this.snapAngle;
+      this.angle = Math.round(c / d) * d;
+    } else this.angle = c;
+  },
+  cancel: function () {
+    this.callback("cancel", null);
+    this.finalize();
+  },
+  finalize: function () {
+    this.origin = null;
+    this.radius = this.options.radius;
+  },
+  clear: function () {
+    this.layer && (this.layer.renderer.clear(), this.layer.destroyFeatures());
+  },
+  callback: function (a, b) {
+    this.callbacks[a] && this.callbacks[a].apply(this.control, [this.feature.geometry.clone()]);
+    this.persist || ("done" != a && "cancel" != a) || this.clear();
+  },
+  CLASS_NAME: "OpenLayers.Handler.RegularPolygon",
+});
+OpenLayers.Control.SLDSelect = OpenLayers.Class(OpenLayers.Control, {
+  clearOnDeactivate: !1,
+  layers: null,
+  callbacks: null,
+  selectionSymbolizer: {
+    Polygon: { fillColor: "#FF0000", stroke: !1 },
+    Line: { strokeColor: "#FF0000", strokeWidth: 2 },
+    Point: { graphicName: "square", fillColor: "#FF0000", pointRadius: 5 },
+  },
+  layerOptions: null,
+  sketchStyle: null,
+  wfsCache: {},
+  layerCache: {},
+  initialize: function (a, b) {
+    OpenLayers.Control.prototype.initialize.apply(this, [b]);
+    this.callbacks = OpenLayers.Util.extend(
+      { done: this.select, click: this.select },
+      this.callbacks
+    );
+    this.handlerOptions = this.handlerOptions || {};
+    this.layerOptions = OpenLayers.Util.applyDefaults(this.layerOptions, {
+      displayInLayerSwitcher: !1,
+      tileOptions: { maxGetUrlLength: 2048 },
+    });
+    this.sketchStyle &&
+      (this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults(
+        this.handlerOptions.layerOptions,
+        { styleMap: new OpenLayers.StyleMap({ default: this.sketchStyle }) }
+      ));
+    this.handler = new a(this, this.callbacks, this.handlerOptions);
+  },
+  destroy: function () {
+    for (var a in this.layerCache) delete this.layerCache[a];
+    for (a in this.wfsCache) delete this.wfsCache[a];
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  coupleLayerVisiblity: function (a) {
+    this.setVisibility(a.object.getVisibility());
+  },
+  createSelectionLayer: function (a) {
+    var b;
+    if (this.layerCache[a.id]) b = this.layerCache[a.id];
+    else {
+      b = new OpenLayers.Layer.WMS(
+        a.name,
+        a.url,
+        a.params,
+        OpenLayers.Util.applyDefaults(this.layerOptions, a.getOptions())
+      );
+      this.layerCache[a.id] = b;
+      if (!1 === this.layerOptions.displayInLayerSwitcher)
+        a.events.on({ visibilitychanged: this.coupleLayerVisiblity, scope: b });
+      this.map.addLayer(b);
+    }
+    return b;
+  },
+  createSLD: function (a, b, c) {
+    for (
+      var d = { version: "1.0.0", namedLayers: {} },
+        e = ("" + a.params.LAYERS).split(","),
+        f = 0,
+        g = e.length;
+      f < g;
+      f++
+    ) {
+      var h = e[f];
+      d.namedLayers[h] = { name: h, userStyles: [] };
+      var k = this.selectionSymbolizer,
+        l = c[f];
+      0 <= l.type.indexOf("Polygon")
+        ? (k = { Polygon: this.selectionSymbolizer.Polygon })
+        : 0 <= l.type.indexOf("LineString")
+        ? (k = { Line: this.selectionSymbolizer.Line })
+        : 0 <= l.type.indexOf("Point") && (k = { Point: this.selectionSymbolizer.Point });
+      d.namedLayers[h].userStyles.push({
+        name: "default",
+        rules: [
+          new OpenLayers.Rule({
+            symbolizer: k,
+            filter: b[f],
+            maxScaleDenominator: a.options.minScale,
+          }),
+        ],
+      });
+    }
+    return new OpenLayers.Format.SLD({ srsName: this.map.getProjection() }).write(d);
+  },
+  parseDescribeLayer: function (a) {
+    var b = new OpenLayers.Format.WMSDescribeLayer(),
+      c = a.responseXML;
+    (c && c.documentElement) || (c = a.responseText);
+    a = b.read(c);
+    for (var b = [], c = null, d = 0, e = a.length; d < e; d++)
+      "WFS" == a[d].owsType && (b.push(a[d].typeName), (c = a[d].owsURL));
+    OpenLayers.Request.GET({
+      url: c,
+      params: {
+        SERVICE: "WFS",
+        TYPENAME: b.toString(),
+        REQUEST: "DescribeFeatureType",
+        VERSION: "1.0.0",
+      },
+      callback: function (a) {
+        var b = new OpenLayers.Format.WFSDescribeFeatureType(),
+          c = a.responseXML;
+        (c && c.documentElement) || (c = a.responseText);
+        a = b.read(c);
+        this.control.wfsCache[this.layer.id] = a;
+        this.control._queue && this.control.applySelection();
+      },
+      scope: this,
+    });
+  },
+  getGeometryAttributes: function (a) {
+    var b = [];
+    a = this.wfsCache[a.id];
+    for (var c = 0, d = a.featureTypes.length; c < d; c++)
+      for (var e = a.featureTypes[c].properties, f = 0, g = e.length; f < g; f++) {
+        var h = e[f],
+          k = h.type;
+        (0 <= k.indexOf("LineString") ||
+          0 <= k.indexOf("GeometryAssociationType") ||
+          0 <= k.indexOf("GeometryPropertyType") ||
+          0 <= k.indexOf("Point") ||
+          0 <= k.indexOf("Polygon")) &&
+          b.push(h);
+      }
+    return b;
+  },
+  activate: function () {
+    var a = OpenLayers.Control.prototype.activate.call(this);
+    if (a)
+      for (var b = 0, c = this.layers.length; b < c; b++) {
+        var d = this.layers[b];
+        d &&
+          !this.wfsCache[d.id] &&
+          OpenLayers.Request.GET({
+            url: d.url,
+            params: {
+              SERVICE: "WMS",
+              VERSION: d.params.VERSION,
+              LAYERS: d.params.LAYERS,
+              REQUEST: "DescribeLayer",
+            },
+            callback: this.parseDescribeLayer,
+            scope: { layer: d, control: this },
+          });
+      }
+    return a;
+  },
+  deactivate: function () {
+    var a = OpenLayers.Control.prototype.deactivate.call(this);
+    if (a)
+      for (var b = 0, c = this.layers.length; b < c; b++) {
+        var d = this.layers[b];
+        if (d && !0 === this.clearOnDeactivate) {
+          var e = this.layerCache,
+            f = e[d.id];
+          f &&
+            (d.events.un({ visibilitychanged: this.coupleLayerVisiblity, scope: f }),
+            f.destroy(),
+            delete e[d.id]);
+        }
+      }
+    return a;
+  },
+  setLayers: function (a) {
+    this.active ? (this.deactivate(), (this.layers = a), this.activate()) : (this.layers = a);
+  },
+  createFilter: function (a, b) {
+    var c = null;
+    this.handler instanceof OpenLayers.Handler.RegularPolygon
+      ? (c =
+          !0 === this.handler.irregular
+            ? new OpenLayers.Filter.Spatial({
+                type: OpenLayers.Filter.Spatial.BBOX,
+                property: a.name,
+                value: b.getBounds(),
+              })
+            : new OpenLayers.Filter.Spatial({
+                type: OpenLayers.Filter.Spatial.INTERSECTS,
+                property: a.name,
+                value: b,
+              }))
+      : this.handler instanceof OpenLayers.Handler.Polygon
+      ? (c = new OpenLayers.Filter.Spatial({
+          type: OpenLayers.Filter.Spatial.INTERSECTS,
+          property: a.name,
+          value: b,
+        }))
+      : this.handler instanceof OpenLayers.Handler.Path
+      ? (c =
+          0 <= a.type.indexOf("Point")
+            ? new OpenLayers.Filter.Spatial({
+                type: OpenLayers.Filter.Spatial.DWITHIN,
+                property: a.name,
+                distance: 0.01 * this.map.getExtent().getWidth(),
+                distanceUnits: this.map.getUnits(),
+                value: b,
+              })
+            : new OpenLayers.Filter.Spatial({
+                type: OpenLayers.Filter.Spatial.INTERSECTS,
+                property: a.name,
+                value: b,
+              }))
+      : this.handler instanceof OpenLayers.Handler.Click &&
+        (c =
+          0 <= a.type.indexOf("Polygon")
+            ? new OpenLayers.Filter.Spatial({
+                type: OpenLayers.Filter.Spatial.INTERSECTS,
+                property: a.name,
+                value: b,
+              })
+            : new OpenLayers.Filter.Spatial({
+                type: OpenLayers.Filter.Spatial.DWITHIN,
+                property: a.name,
+                distance: 0.01 * this.map.getExtent().getWidth(),
+                distanceUnits: this.map.getUnits(),
+                value: b,
+              }));
+    return c;
+  },
+  select: function (a) {
+    this._queue = function () {
+      for (var b = 0, c = this.layers.length; b < c; b++) {
+        for (
+          var d = this.layers[b], e = this.getGeometryAttributes(d), f = [], g = 0, h = e.length;
+          g < h;
+          g++
+        ) {
+          var k = e[g];
+          if (null !== k) {
+            if (!(a instanceof OpenLayers.Geometry)) {
+              var l = this.map.getLonLatFromPixel(a.xy);
+              a = new OpenLayers.Geometry.Point(l.lon, l.lat);
+            }
+            k = this.createFilter(k, a);
+            null !== k && f.push(k);
+          }
+        }
+        g = this.createSelectionLayer(d);
+        this.events.triggerEvent("selected", { layer: d, filters: f });
+        d = this.createSLD(d, f, e);
+        g.mergeNewParams({ SLD_BODY: d });
+        delete this._queue;
+      }
+    };
+    this.applySelection();
+  },
+  applySelection: function () {
+    for (var a = !0, b = 0, c = this.layers.length; b < c; b++)
+      if (!this.wfsCache[this.layers[b].id]) {
+        a = !1;
+        break;
+      }
+    a && this._queue.call(this);
+  },
+  CLASS_NAME: "OpenLayers.Control.SLDSelect",
+});
+OpenLayers.Control.Scale = OpenLayers.Class(OpenLayers.Control, {
+  element: null,
+  geodesic: !1,
+  initialize: function (a, b) {
+    OpenLayers.Control.prototype.initialize.apply(this, [b]);
+    this.element = OpenLayers.Util.getElement(a);
+  },
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    this.element ||
+      ((this.element = document.createElement("div")), this.div.appendChild(this.element));
+    this.map.events.register("moveend", this, this.updateScale);
+    this.updateScale();
+    return this.div;
+  },
+  updateScale: function () {
+    var a;
+    if (!0 === this.geodesic) {
+      if (!this.map.getUnits()) return;
+      a = OpenLayers.INCHES_PER_UNIT;
+      a = (this.map.getGeodesicPixelSize().w || 1e-6) * a.km * OpenLayers.DOTS_PER_INCH;
+    } else a = this.map.getScale();
+    a &&
+      ((a =
+        9500 <= a && 95e4 >= a
+          ? Math.round(a / 1e3) + "K"
+          : 95e4 <= a
+          ? Math.round(a / 1e6) + "M"
+          : Math.round(a)),
+      (this.element.innerHTML = OpenLayers.i18n("Scale = 1 : ${scaleDenom}", { scaleDenom: a })));
+  },
+  CLASS_NAME: "OpenLayers.Control.Scale",
+});
+OpenLayers.Layer.MapGuide = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  isBaseLayer: !0,
+  useHttpTile: !1,
+  singleTile: !1,
+  useOverlay: !1,
+  useAsyncOverlay: !0,
+  TILE_PARAMS: { operation: "GETTILEIMAGE", version: "1.2.0" },
+  SINGLE_TILE_PARAMS: {
+    operation: "GETMAPIMAGE",
+    format: "PNG",
+    locale: "en",
+    clip: "1",
+    version: "1.0.0",
+  },
+  OVERLAY_PARAMS: {
+    operation: "GETDYNAMICMAPOVERLAYIMAGE",
+    format: "PNG",
+    locale: "en",
+    clip: "1",
+    version: "2.0.0",
+  },
+  FOLDER_PARAMS: {
+    tileColumnsPerFolder: 30,
+    tileRowsPerFolder: 30,
+    format: "png",
+    querystring: null,
+  },
+  defaultSize: new OpenLayers.Size(300, 300),
+  tileOriginCorner: "tl",
+  initialize: function (a, b, c, d) {
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, arguments);
+    if (null == d || null == d.isBaseLayer)
+      this.isBaseLayer = "true" != this.transparent && !0 != this.transparent;
+    d && null != d.useOverlay && (this.useOverlay = d.useOverlay);
+    this.singleTile
+      ? this.useOverlay
+        ? (OpenLayers.Util.applyDefaults(this.params, this.OVERLAY_PARAMS),
+          this.useAsyncOverlay || (this.params.version = "1.0.0"))
+        : OpenLayers.Util.applyDefaults(this.params, this.SINGLE_TILE_PARAMS)
+      : (this.useHttpTile
+          ? OpenLayers.Util.applyDefaults(this.params, this.FOLDER_PARAMS)
+          : OpenLayers.Util.applyDefaults(this.params, this.TILE_PARAMS),
+        this.setTileSize(this.defaultSize));
+  },
+  clone: function (a) {
+    null == a &&
+      (a = new OpenLayers.Layer.MapGuide(this.name, this.url, this.params, this.getOptions()));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  getURL: function (a) {
+    var b;
+    b = a.getCenterLonLat();
+    var c = this.map.getSize();
+    this.singleTile
+      ? ((a = {
+          setdisplaydpi: OpenLayers.DOTS_PER_INCH,
+          setdisplayheight: c.h * this.ratio,
+          setdisplaywidth: c.w * this.ratio,
+          setviewcenterx: b.lon,
+          setviewcentery: b.lat,
+          setviewscale: this.map.getScale(),
+        }),
+        this.useOverlay &&
+          !this.useAsyncOverlay &&
+          ((b = {}),
+          (b = OpenLayers.Util.extend(b, a)),
+          (b.operation = "GETVISIBLEMAPEXTENT"),
+          (b.version = "1.0.0"),
+          (b.session = this.params.session),
+          (b.mapName = this.params.mapName),
+          (b.format = "text/xml"),
+          (b = this.getFullRequestString(b)),
+          OpenLayers.Request.GET({ url: b, async: !1 })),
+        (b = this.getFullRequestString(a)))
+      : ((c = this.map.getResolution()),
+        (b = Math.floor((a.left - this.maxExtent.left) / c)),
+        (b = Math.round(b / this.tileSize.w)),
+        (a = Math.floor((this.maxExtent.top - a.top) / c)),
+        (a = Math.round(a / this.tileSize.h)),
+        (b = this.useHttpTile
+          ? this.getImageFilePath({
+              tilecol: b,
+              tilerow: a,
+              scaleindex: this.resolutions.length - this.map.zoom - 1,
+            })
+          : this.getFullRequestString({
+              tilecol: b,
+              tilerow: a,
+              scaleindex: this.resolutions.length - this.map.zoom - 1,
+            })));
+    return b;
+  },
+  getFullRequestString: function (a, b) {
+    var c = null == b ? this.url : b;
+    "object" == typeof c && (c = c[Math.floor(Math.random() * c.length)]);
+    var d = c,
+      e = OpenLayers.Util.extend({}, this.params),
+      e = OpenLayers.Util.extend(e, a),
+      f = OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),
+      g;
+    for (g in e) g.toUpperCase() in f && delete e[g];
+    e = OpenLayers.Util.getParameterString(e);
+    e = e.replace(/,/g, "+");
+    "" != e &&
+      ((f = c.charAt(c.length - 1)),
+      (d = "&" == f || "?" == f ? d + e : -1 == c.indexOf("?") ? d + ("?" + e) : d + ("&" + e)));
+    return d;
+  },
+  getImageFilePath: function (a, b) {
+    var c = null == b ? this.url : b;
+    "object" == typeof c && (c = c[Math.floor(Math.random() * c.length)]);
+    var d = "",
+      e = "";
+    0 > a.tilerow && (d = "-");
+    d =
+      0 == a.tilerow
+        ? d + "0"
+        : d +
+          Math.floor(Math.abs(a.tilerow / this.params.tileRowsPerFolder)) *
+            this.params.tileRowsPerFolder;
+    0 > a.tilecol && (e = "-");
+    e =
+      0 == a.tilecol
+        ? e + "0"
+        : e +
+          Math.floor(Math.abs(a.tilecol / this.params.tileColumnsPerFolder)) *
+            this.params.tileColumnsPerFolder;
+    d =
+      "/S" +
+      Math.floor(a.scaleindex) +
+      "/" +
+      this.params.basemaplayergroupname +
+      "/R" +
+      d +
+      "/C" +
+      e +
+      "/" +
+      (a.tilerow % this.params.tileRowsPerFolder) +
+      "_" +
+      (a.tilecol % this.params.tileColumnsPerFolder) +
+      "." +
+      this.params.format;
+    this.params.querystring && (d += "?" + this.params.querystring);
+    return c + d;
+  },
+  CLASS_NAME: "OpenLayers.Layer.MapGuide",
+});
+OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
+  callbacks: null,
+  displaySystem: "metric",
+  geodesic: !1,
+  displaySystemUnits: { geographic: ["dd"], english: ["mi", "ft", "in"], metric: ["km", "m"] },
+  partialDelay: 300,
+  delayedTrigger: null,
+  persist: !1,
+  immediate: !1,
+  initialize: function (a, b) {
+    OpenLayers.Control.prototype.initialize.apply(this, [b]);
+    var c = { done: this.measureComplete, point: this.measurePartial };
+    this.immediate && (c.modify = this.measureImmediate);
+    this.callbacks = OpenLayers.Util.extend(c, this.callbacks);
+    this.handlerOptions = OpenLayers.Util.extend({ persist: this.persist }, this.handlerOptions);
+    this.handler = new a(this, this.callbacks, this.handlerOptions);
+  },
+  deactivate: function () {
+    this.cancelDelay();
+    return OpenLayers.Control.prototype.deactivate.apply(this, arguments);
+  },
+  cancel: function () {
+    this.cancelDelay();
+    this.handler.cancel();
+  },
+  setImmediate: function (a) {
+    (this.immediate = a)
+      ? (this.callbacks.modify = this.measureImmediate)
+      : delete this.callbacks.modify;
+  },
+  updateHandler: function (a, b) {
+    var c = this.active;
+    c && this.deactivate();
+    this.handler = new a(this, this.callbacks, b);
+    c && this.activate();
+  },
+  measureComplete: function (a) {
+    this.cancelDelay();
+    this.measure(a, "measure");
+  },
+  measurePartial: function (a, b) {
+    this.cancelDelay();
+    b = b.clone();
+    this.handler.freehandMode(this.handler.evt)
+      ? this.measure(b, "measurepartial")
+      : (this.delayedTrigger = window.setTimeout(
+          OpenLayers.Function.bind(function () {
+            this.delayedTrigger = null;
+            this.measure(b, "measurepartial");
+          }, this),
+          this.partialDelay
+        ));
+  },
+  measureImmediate: function (a, b, c) {
+    c &&
+      !this.handler.freehandMode(this.handler.evt) &&
+      (this.cancelDelay(), this.measure(b.geometry, "measurepartial"));
+  },
+  cancelDelay: function () {
+    null !== this.delayedTrigger &&
+      (window.clearTimeout(this.delayedTrigger), (this.delayedTrigger = null));
+  },
+  measure: function (a, b) {
+    var c, d;
+    -1 < a.CLASS_NAME.indexOf("LineString")
+      ? ((c = this.getBestLength(a)), (d = 1))
+      : ((c = this.getBestArea(a)), (d = 2));
+    this.events.triggerEvent(b, { measure: c[0], units: c[1], order: d, geometry: a });
+  },
+  getBestArea: function (a) {
+    for (
+      var b = this.displaySystemUnits[this.displaySystem], c, d, e = 0, f = b.length;
+      e < f && !((c = b[e]), (d = this.getArea(a, c)), 1 < d);
+      ++e
+    );
+    return [d, c];
+  },
+  getArea: function (a, b) {
+    var c, d;
+    this.geodesic
+      ? ((c = a.getGeodesicArea(this.map.getProjectionObject())), (d = "m"))
+      : ((c = a.getArea()), (d = this.map.getUnits()));
+    var e = OpenLayers.INCHES_PER_UNIT[b];
+    e && (c *= Math.pow(OpenLayers.INCHES_PER_UNIT[d] / e, 2));
+    return c;
+  },
+  getBestLength: function (a) {
+    for (
+      var b = this.displaySystemUnits[this.displaySystem], c, d, e = 0, f = b.length;
+      e < f && !((c = b[e]), (d = this.getLength(a, c)), 1 < d);
+      ++e
+    );
+    return [d, c];
+  },
+  getLength: function (a, b) {
+    var c, d;
+    this.geodesic
+      ? ((c = a.getGeodesicLength(this.map.getProjectionObject())), (d = "m"))
+      : ((c = a.getLength()), (d = this.map.getUnits()));
+    var e = OpenLayers.INCHES_PER_UNIT[b];
+    e && (c *= OpenLayers.INCHES_PER_UNIT[d] / e);
+    return c;
+  },
+  CLASS_NAME: "OpenLayers.Control.Measure",
+});
+OpenLayers.Format.WMC.v1_0_0 = OpenLayers.Class(OpenLayers.Format.WMC.v1, {
+  VERSION: "1.0.0",
+  schemaLocation:
+    "http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd",
+  initialize: function (a) {
+    OpenLayers.Format.WMC.v1.prototype.initialize.apply(this, [a]);
+  },
+  read_wmc_SRS: function (a, b) {
+    var c = this.getChildValue(b);
+    "object" != typeof a.projections && (a.projections = {});
+    for (var c = c.split(/ +/), d = 0, e = c.length; d < e; d++) a.projections[c[d]] = !0;
+  },
+  write_wmc_Layer: function (a) {
+    var b = OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this, [a]);
+    if (a.srs) {
+      var c = [],
+        d;
+      for (d in a.srs) c.push(d);
+      b.appendChild(this.createElementDefaultNS("SRS", c.join(" ")));
+    }
+    b.appendChild(this.write_wmc_FormatList(a));
+    b.appendChild(this.write_wmc_StyleList(a));
+    a.dimensions && b.appendChild(this.write_wmc_DimensionList(a));
+    b.appendChild(this.write_wmc_LayerExtension(a));
+  },
+  CLASS_NAME: "OpenLayers.Format.WMC.v1_0_0",
+});
+OpenLayers.Popup.Anchored = OpenLayers.Class(OpenLayers.Popup, {
+  relativePosition: null,
+  keepInMap: !0,
+  anchor: null,
+  initialize: function (a, b, c, d, e, f, g) {
+    OpenLayers.Popup.prototype.initialize.apply(this, [a, b, c, d, f, g]);
+    this.anchor =
+      null != e ? e : { size: new OpenLayers.Size(0, 0), offset: new OpenLayers.Pixel(0, 0) };
+  },
+  destroy: function () {
+    this.relativePosition = this.anchor = null;
+    OpenLayers.Popup.prototype.destroy.apply(this, arguments);
+  },
+  show: function () {
+    this.updatePosition();
+    OpenLayers.Popup.prototype.show.apply(this, arguments);
+  },
+  moveTo: function (a) {
+    var b = this.relativePosition;
+    this.relativePosition = this.calculateRelativePosition(a);
+    OpenLayers.Popup.prototype.moveTo.call(this, this.calculateNewPx(a));
+    this.relativePosition != b && this.updateRelativePosition();
+  },
+  setSize: function (a) {
+    OpenLayers.Popup.prototype.setSize.apply(this, arguments);
+    if (this.lonlat && this.map) {
+      var b = this.map.getLayerPxFromLonLat(this.lonlat);
+      this.moveTo(b);
+    }
+  },
+  calculateRelativePosition: function (a) {
+    a = this.map.getLonLatFromLayerPx(a);
+    a = this.map.getExtent().determineQuadrant(a);
+    return OpenLayers.Bounds.oppositeQuadrant(a);
+  },
+  updateRelativePosition: function () {},
+  calculateNewPx: function (a) {
+    a = a.offset(this.anchor.offset);
+    var b = this.size || this.contentSize,
+      c = "t" == this.relativePosition.charAt(0);
+    a.y += c ? -b.h : this.anchor.size.h;
+    c = "l" == this.relativePosition.charAt(1);
+    a.x += c ? -b.w : this.anchor.size.w;
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Popup.Anchored",
+});
+OpenLayers.Popup.Framed = OpenLayers.Class(OpenLayers.Popup.Anchored, {
+  imageSrc: null,
+  imageSize: null,
+  isAlphaImage: !1,
+  positionBlocks: null,
+  blocks: null,
+  fixedRelativePosition: !1,
+  initialize: function (a, b, c, d, e, f, g) {
+    OpenLayers.Popup.Anchored.prototype.initialize.apply(this, arguments);
+    this.fixedRelativePosition &&
+      (this.updateRelativePosition(),
+      (this.calculateRelativePosition = function (a) {
+        return this.relativePosition;
+      }));
+    this.contentDiv.style.position = "absolute";
+    this.contentDiv.style.zIndex = 1;
+    f && (this.closeDiv.style.zIndex = 1);
+    this.groupDiv.style.position = "absolute";
+    this.groupDiv.style.top = "0px";
+    this.groupDiv.style.left = "0px";
+    this.groupDiv.style.height = "100%";
+    this.groupDiv.style.width = "100%";
+  },
+  destroy: function () {
+    this.isAlphaImage = this.imageSize = this.imageSrc = null;
+    this.fixedRelativePosition = !1;
+    this.positionBlocks = null;
+    for (var a = 0; a < this.blocks.length; a++) {
+      var b = this.blocks[a];
+      b.image && b.div.removeChild(b.image);
+      b.image = null;
+      b.div && this.groupDiv.removeChild(b.div);
+      b.div = null;
+    }
+    this.blocks = null;
+    OpenLayers.Popup.Anchored.prototype.destroy.apply(this, arguments);
+  },
+  setBackgroundColor: function (a) {},
+  setBorder: function () {},
+  setOpacity: function (a) {},
+  setSize: function (a) {
+    OpenLayers.Popup.Anchored.prototype.setSize.apply(this, arguments);
+    this.updateBlocks();
+  },
+  updateRelativePosition: function () {
+    this.padding = this.positionBlocks[this.relativePosition].padding;
+    if (this.closeDiv) {
+      var a = this.getContentDivPadding();
+      this.closeDiv.style.right = a.right + this.padding.right + "px";
+      this.closeDiv.style.top = a.top + this.padding.top + "px";
+    }
+    this.updateBlocks();
+  },
+  calculateNewPx: function (a) {
+    var b = OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this, arguments);
+    return (b = b.offset(this.positionBlocks[this.relativePosition].offset));
+  },
+  createBlocks: function () {
+    this.blocks = [];
+    var a = null,
+      b;
+    for (b in this.positionBlocks) {
+      a = b;
+      break;
+    }
+    a = this.positionBlocks[a];
+    for (b = 0; b < a.blocks.length; b++) {
+      var c = {};
+      this.blocks.push(c);
+      c.div = OpenLayers.Util.createDiv(
+        this.id + "_FrameDecorationDiv_" + b,
+        null,
+        null,
+        null,
+        "absolute",
+        null,
+        "hidden",
+        null
+      );
+      c.image = (this.isAlphaImage
+        ? OpenLayers.Util.createAlphaImageDiv
+        : OpenLayers.Util.createImage)(
+        this.id + "_FrameDecorationImg_" + b,
+        null,
+        this.imageSize,
+        this.imageSrc,
+        "absolute",
+        null,
+        null,
+        null
+      );
+      c.div.appendChild(c.image);
+      this.groupDiv.appendChild(c.div);
+    }
+  },
+  updateBlocks: function () {
+    this.blocks || this.createBlocks();
+    if (this.size && this.relativePosition) {
+      for (var a = this.positionBlocks[this.relativePosition], b = 0; b < a.blocks.length; b++) {
+        var c = a.blocks[b],
+          d = this.blocks[b],
+          e = c.anchor.left,
+          f = c.anchor.bottom,
+          g = c.anchor.right,
+          h = c.anchor.top,
+          k = isNaN(c.size.w) ? this.size.w - (g + e) : c.size.w,
+          l = isNaN(c.size.h) ? this.size.h - (f + h) : c.size.h;
+        d.div.style.width = (0 > k ? 0 : k) + "px";
+        d.div.style.height = (0 > l ? 0 : l) + "px";
+        d.div.style.left = null != e ? e + "px" : "";
+        d.div.style.bottom = null != f ? f + "px" : "";
+        d.div.style.right = null != g ? g + "px" : "";
+        d.div.style.top = null != h ? h + "px" : "";
+        d.image.style.left = c.position.x + "px";
+        d.image.style.top = c.position.y + "px";
+      }
+      this.contentDiv.style.left = this.padding.left + "px";
+      this.contentDiv.style.top = this.padding.top + "px";
+    }
+  },
+  CLASS_NAME: "OpenLayers.Popup.Framed",
+});
+OpenLayers.Popup.FramedCloud = OpenLayers.Class(OpenLayers.Popup.Framed, {
+  contentDisplayClass: "olFramedCloudPopupContent",
+  autoSize: !0,
+  panMapIfOutOfView: !0,
+  imageSize: new OpenLayers.Size(1276, 736),
+  isAlphaImage: !1,
+  fixedRelativePosition: !1,
+  positionBlocks: {
+    tl: {
+      offset: new OpenLayers.Pixel(44, 0),
+      padding: new OpenLayers.Bounds(8, 40, 8, 9),
+      blocks: [
+        {
+          size: new OpenLayers.Size("auto", "auto"),
+          anchor: new OpenLayers.Bounds(0, 51, 22, 0),
+          position: new OpenLayers.Pixel(0, 0),
+        },
+        {
+          size: new OpenLayers.Size(22, "auto"),
+          anchor: new OpenLayers.Bounds(null, 50, 0, 0),
+          position: new OpenLayers.Pixel(-1238, 0),
+        },
+        {
+          size: new OpenLayers.Size("auto", 19),
+          anchor: new OpenLayers.Bounds(0, 32, 22, null),
+          position: new OpenLayers.Pixel(0, -631),
+        },
+        {
+          size: new OpenLayers.Size(22, 18),
+          anchor: new OpenLayers.Bounds(null, 32, 0, null),
+          position: new OpenLayers.Pixel(-1238, -632),
+        },
+        {
+          size: new OpenLayers.Size(81, 35),
+          anchor: new OpenLayers.Bounds(null, 0, 0, null),
+          position: new OpenLayers.Pixel(0, -688),
+        },
+      ],
+    },
+    tr: {
+      offset: new OpenLayers.Pixel(-45, 0),
+      padding: new OpenLayers.Bounds(8, 40, 8, 9),
+      blocks: [
+        {
+          size: new OpenLayers.Size("auto", "auto"),
+          anchor: new OpenLayers.Bounds(0, 51, 22, 0),
+          position: new OpenLayers.Pixel(0, 0),
+        },
+        {
+          size: new OpenLayers.Size(22, "auto"),
+          anchor: new OpenLayers.Bounds(null, 50, 0, 0),
+          position: new OpenLayers.Pixel(-1238, 0),
+        },
+        {
+          size: new OpenLayers.Size("auto", 19),
+          anchor: new OpenLayers.Bounds(0, 32, 22, null),
+          position: new OpenLayers.Pixel(0, -631),
+        },
+        {
+          size: new OpenLayers.Size(22, 19),
+          anchor: new OpenLayers.Bounds(null, 32, 0, null),
+          position: new OpenLayers.Pixel(-1238, -631),
+        },
+        {
+          size: new OpenLayers.Size(81, 35),
+          anchor: new OpenLayers.Bounds(0, 0, null, null),
+          position: new OpenLayers.Pixel(-215, -687),
+        },
+      ],
+    },
+    bl: {
+      offset: new OpenLayers.Pixel(45, 0),
+      padding: new OpenLayers.Bounds(8, 9, 8, 40),
+      blocks: [
+        {
+          size: new OpenLayers.Size("auto", "auto"),
+          anchor: new OpenLayers.Bounds(0, 21, 22, 32),
+          position: new OpenLayers.Pixel(0, 0),
+        },
+        {
+          size: new OpenLayers.Size(22, "auto"),
+          anchor: new OpenLayers.Bounds(null, 21, 0, 32),
+          position: new OpenLayers.Pixel(-1238, 0),
+        },
+        {
+          size: new OpenLayers.Size("auto", 21),
+          anchor: new OpenLayers.Bounds(0, 0, 22, null),
+          position: new OpenLayers.Pixel(0, -629),
+        },
+        {
+          size: new OpenLayers.Size(22, 21),
+          anchor: new OpenLayers.Bounds(null, 0, 0, null),
+          position: new OpenLayers.Pixel(-1238, -629),
+        },
+        {
+          size: new OpenLayers.Size(81, 33),
+          anchor: new OpenLayers.Bounds(null, null, 0, 0),
+          position: new OpenLayers.Pixel(-101, -674),
+        },
+      ],
+    },
+    br: {
+      offset: new OpenLayers.Pixel(-44, 0),
+      padding: new OpenLayers.Bounds(8, 9, 8, 40),
+      blocks: [
+        {
+          size: new OpenLayers.Size("auto", "auto"),
+          anchor: new OpenLayers.Bounds(0, 21, 22, 32),
+          position: new OpenLayers.Pixel(0, 0),
+        },
+        {
+          size: new OpenLayers.Size(22, "auto"),
+          anchor: new OpenLayers.Bounds(null, 21, 0, 32),
+          position: new OpenLayers.Pixel(-1238, 0),
+        },
+        {
+          size: new OpenLayers.Size("auto", 21),
+          anchor: new OpenLayers.Bounds(0, 0, 22, null),
+          position: new OpenLayers.Pixel(0, -629),
+        },
+        {
+          size: new OpenLayers.Size(22, 21),
+          anchor: new OpenLayers.Bounds(null, 0, 0, null),
+          position: new OpenLayers.Pixel(-1238, -629),
+        },
+        {
+          size: new OpenLayers.Size(81, 33),
+          anchor: new OpenLayers.Bounds(0, null, null, 0),
+          position: new OpenLayers.Pixel(-311, -674),
+        },
+      ],
+    },
+  },
+  minSize: new OpenLayers.Size(105, 10),
+  maxSize: new OpenLayers.Size(1200, 660),
+  initialize: function (a, b, c, d, e, f, g) {
+    this.imageSrc = OpenLayers.Util.getImageLocation("cloud-popup-relative.png");
+    OpenLayers.Popup.Framed.prototype.initialize.apply(this, arguments);
+    this.contentDiv.className = this.contentDisplayClass;
+  },
+  CLASS_NAME: "OpenLayers.Popup.FramedCloud",
+});
+OpenLayers.Tile.Image.IFrame = {
+  useIFrame: null,
+  blankImageUrl: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAQAIBRAA7",
+  draw: function () {
+    if (OpenLayers.Tile.Image.prototype.shouldDraw.call(this)) {
+      var a = this.layer.getURL(this.bounds),
+        b = this.useIFrame;
+      this.useIFrame =
+        null !== this.maxGetUrlLength && !this.layer.async && a.length > this.maxGetUrlLength;
+      a = b && !this.useIFrame;
+      b = !b && this.useIFrame;
+      if (a || b)
+        this.imgDiv && this.imgDiv.parentNode === this.frame && this.frame.removeChild(this.imgDiv),
+          (this.imgDiv = null),
+          a && this.frame.removeChild(this.frame.firstChild);
+    }
+    return OpenLayers.Tile.Image.prototype.draw.apply(this, arguments);
+  },
+  getImage: function () {
+    if (!0 === this.useIFrame) {
+      if (!this.frame.childNodes.length) {
+        var a = document.createElement("div"),
+          b = a.style;
+        b.position = "absolute";
+        b.width = "100%";
+        b.height = "100%";
+        b.zIndex = 1;
+        b.backgroundImage = "url(" + this.blankImageUrl + ")";
+        this.frame.appendChild(a);
+      }
+      a = this.id + "_iFrame";
+      9 > parseFloat(navigator.appVersion.split("MSIE")[1])
+        ? ((b = document.createElement('<iframe name="' + a + '">')),
+          (b.style.backgroundColor = "#FFFFFF"),
+          (b.style.filter = "chroma(color=#FFFFFF)"))
+        : ((b = document.createElement("iframe")),
+          (b.style.backgroundColor = "transparent"),
+          (b.name = a));
+      b.scrolling = "no";
+      b.marginWidth = "0px";
+      b.marginHeight = "0px";
+      b.frameBorder = "0";
+      b.style.position = "absolute";
+      b.style.width = "100%";
+      b.style.height = "100%";
+      1 > this.layer.opacity &&
+        OpenLayers.Util.modifyDOMElement(b, null, null, null, null, null, null, this.layer.opacity);
+      this.frame.appendChild(b);
+      return (this.imgDiv = b);
+    }
+    return OpenLayers.Tile.Image.prototype.getImage.apply(this, arguments);
+  },
+  createRequestForm: function () {
+    var a = document.createElement("form");
+    a.method = "POST";
+    var b = this.layer.params._OLSALT,
+      b = (b ? b + "_" : "") + this.bounds.toBBOX();
+    a.action = OpenLayers.Util.urlAppend(this.layer.url, b);
+    a.target = this.id + "_iFrame";
+    this.layer.getImageSize();
+    var b = OpenLayers.Util.getParameters(this.url),
+      c,
+      d;
+    for (d in b)
+      (c = document.createElement("input")),
+        (c.type = "hidden"),
+        (c.name = d),
+        (c.value = b[d]),
+        a.appendChild(c);
+    return a;
+  },
+  setImgSrc: function (a) {
+    if (!0 === this.useIFrame)
+      if (a) {
+        var b = this.createRequestForm();
+        this.frame.appendChild(b);
+        b.submit();
+        this.frame.removeChild(b);
+      } else
+        this.imgDiv.parentNode === this.frame &&
+          (this.frame.removeChild(this.imgDiv), (this.imgDiv = null));
+    else OpenLayers.Tile.Image.prototype.setImgSrc.apply(this, arguments);
+  },
+  onImageLoad: function () {
+    OpenLayers.Tile.Image.prototype.onImageLoad.apply(this, arguments);
+    !0 === this.useIFrame &&
+      ((this.imgDiv.style.opacity = 1), (this.frame.style.opacity = this.layer.opacity));
+  },
+  createBackBuffer: function () {
+    var a;
+    !1 === this.useIFrame && (a = OpenLayers.Tile.Image.prototype.createBackBuffer.call(this));
+    return a;
+  },
+};
+OpenLayers.Format.SOSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.0.0",
+  CLASS_NAME: "OpenLayers.Format.SOSCapabilities",
+});
+OpenLayers.Format.SOSCapabilities.v1_0_0 = OpenLayers.Class(OpenLayers.Format.SOSCapabilities, {
+  namespaces: {
+    ows: "http://www.opengis.net/ows/1.1",
+    sos: "http://www.opengis.net/sos/1.0",
+    gml: "http://www.opengis.net/gml",
+    xlink: "http://www.w3.org/1999/xlink",
+  },
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  initialize: function (a) {
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+    this.options = a;
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    this.readNode(a, b);
+    return b;
+  },
+  readers: {
+    gml: OpenLayers.Util.applyDefaults(
+      {
+        name: function (a, b) {
+          b.name = this.getChildValue(a);
+        },
+        TimePeriod: function (a, b) {
+          b.timePeriod = {};
+          this.readChildNodes(a, b.timePeriod);
+        },
+        beginPosition: function (a, b) {
+          b.beginPosition = this.getChildValue(a);
+        },
+        endPosition: function (a, b) {
+          b.endPosition = this.getChildValue(a);
+        },
+      },
+      OpenLayers.Format.GML.v3.prototype.readers.gml
+    ),
+    sos: {
+      Capabilities: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      Contents: function (a, b) {
+        b.contents = {};
+        this.readChildNodes(a, b.contents);
+      },
+      ObservationOfferingList: function (a, b) {
+        b.offeringList = {};
+        this.readChildNodes(a, b.offeringList);
+      },
+      ObservationOffering: function (a, b) {
+        var c = this.getAttributeNS(a, this.namespaces.gml, "id");
+        b[c] = {
+          procedures: [],
+          observedProperties: [],
+          featureOfInterestIds: [],
+          responseFormats: [],
+          resultModels: [],
+          responseModes: [],
+        };
+        this.readChildNodes(a, b[c]);
+      },
+      time: function (a, b) {
+        b.time = {};
+        this.readChildNodes(a, b.time);
+      },
+      procedure: function (a, b) {
+        b.procedures.push(this.getAttributeNS(a, this.namespaces.xlink, "href"));
+      },
+      observedProperty: function (a, b) {
+        b.observedProperties.push(this.getAttributeNS(a, this.namespaces.xlink, "href"));
+      },
+      featureOfInterest: function (a, b) {
+        b.featureOfInterestIds.push(this.getAttributeNS(a, this.namespaces.xlink, "href"));
+      },
+      responseFormat: function (a, b) {
+        b.responseFormats.push(this.getChildValue(a));
+      },
+      resultModel: function (a, b) {
+        b.resultModels.push(this.getChildValue(a));
+      },
+      responseMode: function (a, b) {
+        b.responseModes.push(this.getChildValue(a));
+      },
+    },
+    ows: OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows,
+  },
+  CLASS_NAME: "OpenLayers.Format.SOSCapabilities.v1_0_0",
+});
+OpenLayers.Handler.Pinch = OpenLayers.Class(OpenLayers.Handler, {
+  started: !1,
+  stopDown: !1,
+  pinching: !1,
+  last: null,
+  start: null,
+  touchstart: function (a) {
+    var b = !0;
+    this.pinching = !1;
+    if (OpenLayers.Event.isMultiTouch(a))
+      (this.started = !0),
+        (this.last = this.start = { distance: this.getDistance(a.touches), delta: 0, scale: 1 }),
+        this.callback("start", [a, this.start]),
+        (b = !this.stopDown);
+    else {
+      if (this.started) return !1;
+      this.started = !1;
+      this.last = this.start = null;
+    }
+    OpenLayers.Event.preventDefault(a);
+    return b;
+  },
+  touchmove: function (a) {
+    if (this.started && OpenLayers.Event.isMultiTouch(a)) {
+      this.pinching = !0;
+      var b = this.getPinchData(a);
+      this.callback("move", [a, b]);
+      this.last = b;
+      OpenLayers.Event.stop(a);
+    } else if (this.started) return !1;
+    return !0;
+  },
+  touchend: function (a) {
+    return this.started && !OpenLayers.Event.isMultiTouch(a)
+      ? ((this.pinching = this.started = !1),
+        this.callback("done", [a, this.start, this.last]),
+        (this.last = this.start = null),
+        !1)
+      : !0;
+  },
+  activate: function () {
+    var a = !1;
+    OpenLayers.Handler.prototype.activate.apply(this, arguments) &&
+      ((this.pinching = !1), (a = !0));
+    return a;
+  },
+  deactivate: function () {
+    var a = !1;
+    OpenLayers.Handler.prototype.deactivate.apply(this, arguments) &&
+      ((this.pinching = this.started = !1), (this.last = this.start = null), (a = !0));
+    return a;
+  },
+  getDistance: function (a) {
+    var b = a[0];
+    a = a[1];
+    return Math.sqrt(
+      Math.pow(b.olClientX - a.olClientX, 2) + Math.pow(b.olClientY - a.olClientY, 2)
+    );
+  },
+  getPinchData: function (a) {
+    a = this.getDistance(a.touches);
+    return { distance: a, delta: this.last.distance - a, scale: a / this.start.distance };
+  },
+  CLASS_NAME: "OpenLayers.Handler.Pinch",
+});
+OpenLayers.Control.NavToolbar = OpenLayers.Class(OpenLayers.Control.Panel, {
+  initialize: function (a) {
+    OpenLayers.Control.Panel.prototype.initialize.apply(this, [a]);
+    this.addControls([new OpenLayers.Control.Navigation(), new OpenLayers.Control.ZoomBox()]);
+  },
+  draw: function () {
+    var a = OpenLayers.Control.Panel.prototype.draw.apply(this, arguments);
+    null === this.defaultControl && (this.defaultControl = this.controls[0]);
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Control.NavToolbar",
+});
+OpenLayers.Strategy.Refresh = OpenLayers.Class(OpenLayers.Strategy, {
+  force: !1,
+  interval: 0,
+  timer: null,
+  activate: function () {
+    var a = OpenLayers.Strategy.prototype.activate.call(this);
+    a &&
+      (!0 === this.layer.visibility && this.start(),
+      this.layer.events.on({ visibilitychanged: this.reset, scope: this }));
+    return a;
+  },
+  deactivate: function () {
+    var a = OpenLayers.Strategy.prototype.deactivate.call(this);
+    a && (this.stop(), this.layer.events.un({ visibilitychanged: this.reset, scope: this }));
+    return a;
+  },
+  reset: function () {
+    !0 === this.layer.visibility ? this.start() : this.stop();
+  },
+  start: function () {
+    this.interval &&
+      "number" === typeof this.interval &&
+      0 < this.interval &&
+      (this.timer = window.setInterval(
+        OpenLayers.Function.bind(this.refresh, this),
+        this.interval
+      ));
+  },
+  refresh: function () {
+    this.layer &&
+      this.layer.refresh &&
+      "function" == typeof this.layer.refresh &&
+      this.layer.refresh({ force: this.force });
+  },
+  stop: function () {
+    null !== this.timer && (window.clearInterval(this.timer), (this.timer = null));
+  },
+  CLASS_NAME: "OpenLayers.Strategy.Refresh",
+});
+OpenLayers.Layer.ArcGIS93Rest = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  DEFAULT_PARAMS: { format: "png" },
+  isBaseLayer: !0,
+  initialize: function (a, b, c, d) {
+    var e = [];
+    c = OpenLayers.Util.upperCaseObject(c);
+    e.push(a, b, c, d);
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, e);
+    OpenLayers.Util.applyDefaults(
+      this.params,
+      OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS)
+    );
+    this.params.TRANSPARENT &&
+      "true" == this.params.TRANSPARENT.toString().toLowerCase() &&
+      ((null != d && d.isBaseLayer) || (this.isBaseLayer = !1),
+      "jpg" == this.params.FORMAT &&
+        (this.params.FORMAT = OpenLayers.Util.alphaHack() ? "gif" : "png"));
+  },
+  clone: function (a) {
+    null == a &&
+      (a = new OpenLayers.Layer.ArcGIS93Rest(this.name, this.url, this.params, this.getOptions()));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  getURL: function (a) {
+    a = this.adjustBounds(a);
+    var b = this.projection.getCode().split(":"),
+      b = b[b.length - 1],
+      c = this.getImageSize();
+    a = { BBOX: a.toBBOX(), SIZE: c.w + "," + c.h, F: "image", BBOXSR: b, IMAGESR: b };
+    if (this.layerDefs) {
+      var b = [],
+        d;
+      for (d in this.layerDefs)
+        this.layerDefs.hasOwnProperty(d) &&
+          this.layerDefs[d] &&
+          (b.push(d), b.push(":"), b.push(this.layerDefs[d]), b.push(";"));
+      0 < b.length && (a.LAYERDEFS = b.join(""));
+    }
+    return this.getFullRequestString(a);
+  },
+  setLayerFilter: function (a, b) {
+    this.layerDefs || (this.layerDefs = {});
+    b ? (this.layerDefs[a] = b) : delete this.layerDefs[a];
+  },
+  clearLayerFilter: function (a) {
+    a ? delete this.layerDefs[a] : delete this.layerDefs;
+  },
+  mergeNewParams: function (a) {
+    a = [OpenLayers.Util.upperCaseObject(a)];
+    return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this, a);
+  },
+  CLASS_NAME: "OpenLayers.Layer.ArcGIS93Rest",
+});
+OpenLayers.Handler.Hover = OpenLayers.Class(OpenLayers.Handler, {
+  delay: 500,
+  pixelTolerance: null,
+  stopMove: !1,
+  px: null,
+  timerId: null,
+  mousemove: function (a) {
+    this.passesTolerance(a.xy) &&
+      (this.clearTimer(),
+      this.callback("move", [a]),
+      (this.px = a.xy),
+      (a = OpenLayers.Util.extend({}, a)),
+      (this.timerId = window.setTimeout(
+        OpenLayers.Function.bind(this.delayedCall, this, a),
+        this.delay
+      )));
+    return !this.stopMove;
+  },
+  mouseout: function (a) {
+    OpenLayers.Util.mouseLeft(a, this.map.viewPortDiv) &&
+      (this.clearTimer(), this.callback("move", [a]));
+    return !0;
+  },
+  passesTolerance: function (a) {
+    var b = !0;
+    this.pixelTolerance &&
+      this.px &&
+      Math.sqrt(Math.pow(this.px.x - a.x, 2) + Math.pow(this.px.y - a.y, 2)) <
+        this.pixelTolerance &&
+      (b = !1);
+    return b;
+  },
+  clearTimer: function () {
+    null != this.timerId && (window.clearTimeout(this.timerId), (this.timerId = null));
+  },
+  delayedCall: function (a) {
+    this.callback("pause", [a]);
+  },
+  deactivate: function () {
+    var a = !1;
+    OpenLayers.Handler.prototype.deactivate.apply(this, arguments) && (this.clearTimer(), (a = !0));
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Handler.Hover",
+});
+OpenLayers.Control.GetFeature = OpenLayers.Class(OpenLayers.Control, {
+  protocol: null,
+  multipleKey: null,
+  toggleKey: null,
+  modifiers: null,
+  multiple: !1,
+  click: !0,
+  single: !0,
+  clickout: !0,
+  toggle: !1,
+  clickTolerance: 5,
+  hover: !1,
+  box: !1,
+  maxFeatures: 10,
+  features: null,
+  hoverFeature: null,
+  handlers: null,
+  hoverResponse: null,
+  filterType: OpenLayers.Filter.Spatial.BBOX,
+  initialize: function (a) {
+    a.handlerOptions = a.handlerOptions || {};
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+    this.features = {};
+    this.handlers = {};
+    this.click &&
+      (this.handlers.click = new OpenLayers.Handler.Click(
+        this,
+        { click: this.selectClick },
+        this.handlerOptions.click || {}
+      ));
+    this.box &&
+      (this.handlers.box = new OpenLayers.Handler.Box(
+        this,
+        { done: this.selectBox },
+        OpenLayers.Util.extend(this.handlerOptions.box, {
+          boxDivClassName: "olHandlerBoxSelectFeature",
+        })
+      ));
+    this.hover &&
+      (this.handlers.hover = new OpenLayers.Handler.Hover(
+        this,
+        { move: this.cancelHover, pause: this.selectHover },
+        OpenLayers.Util.extend(this.handlerOptions.hover, { delay: 250, pixelTolerance: 2 })
+      ));
+  },
+  activate: function () {
+    if (!this.active) for (var a in this.handlers) this.handlers[a].activate();
+    return OpenLayers.Control.prototype.activate.apply(this, arguments);
+  },
+  deactivate: function () {
+    if (this.active) for (var a in this.handlers) this.handlers[a].deactivate();
+    return OpenLayers.Control.prototype.deactivate.apply(this, arguments);
+  },
+  selectClick: function (a) {
+    var b = this.pixelToBounds(a.xy);
+    this.setModifiers(a);
+    this.request(b, { single: this.single });
+  },
+  selectBox: function (a) {
+    var b;
+    if (a instanceof OpenLayers.Bounds)
+      (b = this.map.getLonLatFromPixel({ x: a.left, y: a.bottom })),
+        (a = this.map.getLonLatFromPixel({ x: a.right, y: a.top })),
+        (b = new OpenLayers.Bounds(b.lon, b.lat, a.lon, a.lat));
+    else {
+      if (this.click) return;
+      b = this.pixelToBounds(a);
+    }
+    this.setModifiers(this.handlers.box.dragHandler.evt);
+    this.request(b);
+  },
+  selectHover: function (a) {
+    a = this.pixelToBounds(a.xy);
+    this.request(a, { single: !0, hover: !0 });
+  },
+  cancelHover: function () {
+    this.hoverResponse &&
+      (this.protocol.abort(this.hoverResponse),
+      (this.hoverResponse = null),
+      OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait"));
+  },
+  request: function (a, b) {
+    b = b || {};
+    var c = new OpenLayers.Filter.Spatial({ type: this.filterType, value: a });
+    OpenLayers.Element.addClass(this.map.viewPortDiv, "olCursorWait");
+    c = this.protocol.read({
+      maxFeatures: !0 == b.single ? this.maxFeatures : void 0,
+      filter: c,
+      callback: function (c) {
+        c.success() &&
+          (c.features.length
+            ? !0 == b.single
+              ? this.selectBestFeature(c.features, a.getCenterLonLat(), b)
+              : this.select(c.features)
+            : b.hover
+            ? this.hoverSelect()
+            : (this.events.triggerEvent("clickout"), this.clickout && this.unselectAll()));
+        OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait");
+      },
+      scope: this,
+    });
+    !0 == b.hover && (this.hoverResponse = c);
+  },
+  selectBestFeature: function (a, b, c) {
+    c = c || {};
+    if (a.length) {
+      b = new OpenLayers.Geometry.Point(b.lon, b.lat);
+      for (
+        var d, e, f, g = Number.MAX_VALUE, h = 0;
+        h < a.length &&
+        !((d = a[h]),
+        d.geometry &&
+          ((f = b.distanceTo(d.geometry, { edge: !1 })), f < g && ((g = f), (e = d), 0 == g)));
+        ++h
+      );
+      !0 == c.hover ? this.hoverSelect(e) : this.select(e || a);
+    }
+  },
+  setModifiers: function (a) {
+    this.modifiers = {
+      multiple: this.multiple || (this.multipleKey && a[this.multipleKey]),
+      toggle: this.toggle || (this.toggleKey && a[this.toggleKey]),
+    };
+  },
+  select: function (a) {
+    this.modifiers.multiple || this.modifiers.toggle || this.unselectAll();
+    OpenLayers.Util.isArray(a) || (a = [a]);
+    var b = this.events.triggerEvent("beforefeaturesselected", { features: a });
+    if (!1 !== b) {
+      for (var c = [], d, e = 0, f = a.length; e < f; ++e)
+        (d = a[e]),
+          this.features[d.fid || d.id]
+            ? this.modifiers.toggle && this.unselect(this.features[d.fid || d.id])
+            : ((b = this.events.triggerEvent("beforefeatureselected", { feature: d })),
+              !1 !== b &&
+                ((this.features[d.fid || d.id] = d),
+                c.push(d),
+                this.events.triggerEvent("featureselected", { feature: d })));
+      this.events.triggerEvent("featuresselected", { features: c });
+    }
+  },
+  hoverSelect: function (a) {
+    var b = a ? a.fid || a.id : null,
+      c = this.hoverFeature ? this.hoverFeature.fid || this.hoverFeature.id : null;
+    c &&
+      c != b &&
+      (this.events.triggerEvent("outfeature", { feature: this.hoverFeature }),
+      (this.hoverFeature = null));
+    b &&
+      b != c &&
+      (this.events.triggerEvent("hoverfeature", { feature: a }), (this.hoverFeature = a));
+  },
+  unselect: function (a) {
+    delete this.features[a.fid || a.id];
+    this.events.triggerEvent("featureunselected", { feature: a });
+  },
+  unselectAll: function () {
+    for (var a in this.features) this.unselect(this.features[a]);
+  },
+  setMap: function (a) {
+    for (var b in this.handlers) this.handlers[b].setMap(a);
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+  },
+  pixelToBounds: function (a) {
+    var b = a.add(-this.clickTolerance / 2, this.clickTolerance / 2);
+    a = a.add(this.clickTolerance / 2, -this.clickTolerance / 2);
+    b = this.map.getLonLatFromPixel(b);
+    a = this.map.getLonLatFromPixel(a);
+    return new OpenLayers.Bounds(b.lon, b.lat, a.lon, a.lat);
+  },
+  CLASS_NAME: "OpenLayers.Control.GetFeature",
+});
+OpenLayers.Format.QueryStringFilter = (function () {
+  function a(a) {
+    a = a.replace(/%/g, "\\%");
+    a = a.replace(/\\\\\.(\*)?/g, function (a, b) {
+      return b ? a : "\\\\_";
+    });
+    a = a.replace(/\\\\\.\*/g, "\\\\%");
+    a = a.replace(/(\\)?\.(\*)?/g, function (a, b, c) {
+      return b || c ? a : "_";
+    });
+    a = a.replace(/(\\)?\.\*/g, function (a, b) {
+      return b ? a : "%";
+    });
+    a = a.replace(/\\\./g, ".");
+    return (a = a.replace(/(\\)?\\\*/g, function (a, b) {
+      return b ? a : "*";
+    }));
+  }
+  var b = {};
+  b[OpenLayers.Filter.Comparison.EQUAL_TO] = "eq";
+  b[OpenLayers.Filter.Comparison.NOT_EQUAL_TO] = "ne";
+  b[OpenLayers.Filter.Comparison.LESS_THAN] = "lt";
+  b[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO] = "lte";
+  b[OpenLayers.Filter.Comparison.GREATER_THAN] = "gt";
+  b[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO] = "gte";
+  b[OpenLayers.Filter.Comparison.LIKE] = "ilike";
+  return OpenLayers.Class(OpenLayers.Format, {
+    wildcarded: !1,
+    srsInBBOX: !1,
+    write: function (c, d) {
+      d = d || {};
+      var e = c.CLASS_NAME,
+        e = e.substring(e.lastIndexOf(".") + 1);
+      switch (e) {
+        case "Spatial":
+          switch (c.type) {
+            case OpenLayers.Filter.Spatial.BBOX:
+              d.bbox = c.value.toArray();
+              this.srsInBBOX && c.projection && d.bbox.push(c.projection.getCode());
+              break;
+            case OpenLayers.Filter.Spatial.DWITHIN:
+              d.tolerance = c.distance;
+            case OpenLayers.Filter.Spatial.WITHIN:
+              d.lon = c.value.x;
+              d.lat = c.value.y;
+              break;
+            default:
+              OpenLayers.Console.warn("Unknown spatial filter type " + c.type);
+          }
+          break;
+        case "Comparison":
+          e = b[c.type];
+          if (void 0 !== e) {
+            var f = c.value;
+            c.type == OpenLayers.Filter.Comparison.LIKE &&
+              ((f = a(f)), this.wildcarded && (f = "%" + f + "%"));
+            d[c.property + "__" + e] = f;
+            d.queryable = d.queryable || [];
+            d.queryable.push(c.property);
+          } else OpenLayers.Console.warn("Unknown comparison filter type " + c.type);
+          break;
+        case "Logical":
+          if (c.type === OpenLayers.Filter.Logical.AND)
+            for (e = 0, f = c.filters.length; e < f; e++) d = this.write(c.filters[e], d);
+          else OpenLayers.Console.warn("Unsupported logical filter type " + c.type);
+          break;
+        default:
+          OpenLayers.Console.warn("Unknown filter type " + e);
+      }
+      return d;
+    },
+    CLASS_NAME: "OpenLayers.Format.QueryStringFilter",
+  });
+})();
+OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
+  autoActivate: !0,
+  element: null,
+  prefix: "",
+  separator: ", ",
+  suffix: "",
+  numDigits: 5,
+  granularity: 10,
+  emptyString: null,
+  lastXy: null,
+  displayProjection: null,
+  destroy: function () {
+    this.deactivate();
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  activate: function () {
+    return OpenLayers.Control.prototype.activate.apply(this, arguments)
+      ? (this.map.events.register("mousemove", this, this.redraw),
+        this.map.events.register("mouseout", this, this.reset),
+        this.redraw(),
+        !0)
+      : !1;
+  },
+  deactivate: function () {
+    return OpenLayers.Control.prototype.deactivate.apply(this, arguments)
+      ? (this.map.events.unregister("mousemove", this, this.redraw),
+        this.map.events.unregister("mouseout", this, this.reset),
+        (this.element.innerHTML = ""),
+        !0)
+      : !1;
+  },
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    this.element || ((this.div.left = ""), (this.div.top = ""), (this.element = this.div));
+    return this.div;
+  },
+  redraw: function (a) {
+    var b;
+    if (null == a) this.reset();
+    else if (
+      null == this.lastXy ||
+      Math.abs(a.xy.x - this.lastXy.x) > this.granularity ||
+      Math.abs(a.xy.y - this.lastXy.y) > this.granularity
+    )
+      this.lastXy = a.xy;
+    else if ((b = this.map.getLonLatFromPixel(a.xy)))
+      this.displayProjection && b.transform(this.map.getProjectionObject(), this.displayProjection),
+        (this.lastXy = a.xy),
+        (a = this.formatOutput(b)),
+        a != this.element.innerHTML && (this.element.innerHTML = a);
+  },
+  reset: function (a) {
+    null != this.emptyString && (this.element.innerHTML = this.emptyString);
+  },
+  formatOutput: function (a) {
+    var b = parseInt(this.numDigits);
+    return this.prefix + a.lon.toFixed(b) + this.separator + a.lat.toFixed(b) + this.suffix;
+  },
+  CLASS_NAME: "OpenLayers.Control.MousePosition",
+});
+OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, {
+  geolocation: null,
+  available: "geolocation" in navigator,
+  bind: !0,
+  watch: !1,
+  geolocationOptions: null,
+  destroy: function () {
+    this.deactivate();
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  activate: function () {
+    this.available && !this.geolocation && (this.geolocation = navigator.geolocation);
+    return this.geolocation
+      ? OpenLayers.Control.prototype.activate.apply(this, arguments)
+        ? (this.watch
+            ? (this.watchId = this.geolocation.watchPosition(
+                OpenLayers.Function.bind(this.geolocate, this),
+                OpenLayers.Function.bind(this.failure, this),
+                this.geolocationOptions
+              ))
+            : this.getCurrentLocation(),
+          !0)
+        : !1
+      : (this.events.triggerEvent("locationuncapable"), !1);
+  },
+  deactivate: function () {
+    this.active && null !== this.watchId && this.geolocation.clearWatch(this.watchId);
+    return OpenLayers.Control.prototype.deactivate.apply(this, arguments);
+  },
+  geolocate: function (a) {
+    var b = new OpenLayers.LonLat(a.coords.longitude, a.coords.latitude).transform(
+      new OpenLayers.Projection("EPSG:4326"),
+      this.map.getProjectionObject()
+    );
+    this.bind && this.map.setCenter(b);
+    this.events.triggerEvent("locationupdated", {
+      position: a,
+      point: new OpenLayers.Geometry.Point(b.lon, b.lat),
+    });
+  },
+  getCurrentLocation: function () {
+    if (!this.active || this.watch) return !1;
+    this.geolocation.getCurrentPosition(
+      OpenLayers.Function.bind(this.geolocate, this),
+      OpenLayers.Function.bind(this.failure, this),
+      this.geolocationOptions
+    );
+    return !0;
+  },
+  failure: function (a) {
+    this.events.triggerEvent("locationfailed", { error: a });
+  },
+  CLASS_NAME: "OpenLayers.Control.Geolocate",
+});
+OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
+  url: null,
+  utfgridResolution: 2,
+  json: null,
+  format: null,
+  destroy: function () {
+    this.clear();
+    OpenLayers.Tile.prototype.destroy.apply(this, arguments);
+  },
+  draw: function () {
+    var a = OpenLayers.Tile.prototype.draw.apply(this, arguments);
+    if (a)
+      if (
+        (this.isLoading
+          ? (this.abortLoading(), this.events.triggerEvent("reload"))
+          : ((this.isLoading = !0), this.events.triggerEvent("loadstart")),
+        (this.url = this.layer.getURL(this.bounds)),
+        this.layer.useJSONP)
+      ) {
+        var b = new OpenLayers.Protocol.Script({
+          url: this.url,
+          callback: function (a) {
+            this.isLoading = !1;
+            this.events.triggerEvent("loadend");
+            this.json = a.data;
+          },
+          scope: this,
+        });
+        b.read();
+        this.request = b;
+      } else
+        this.request = OpenLayers.Request.GET({
+          url: this.url,
+          callback: function (a) {
+            this.isLoading = !1;
+            this.events.triggerEvent("loadend");
+            200 === a.status && this.parseData(a.responseText);
+          },
+          scope: this,
+        });
+    else this.unload();
+    return a;
+  },
+  abortLoading: function () {
+    this.request && (this.request.abort(), delete this.request);
+    this.isLoading = !1;
+  },
+  getFeatureInfo: function (a, b) {
+    var c = null;
+    if (this.json) {
+      var d = this.getFeatureId(a, b);
+      null !== d && (c = { id: d, data: this.json.data[d] });
+    }
+    return c;
+  },
+  getFeatureId: function (a, b) {
+    var c = null;
+    if (this.json) {
+      var d = this.utfgridResolution,
+        d = this.json.grid[Math.floor(b / d)].charCodeAt(Math.floor(a / d)),
+        d = this.indexFromCharCode(d),
+        e = this.json.keys;
+      !isNaN(d) && d in e && (c = e[d]);
+    }
+    return c;
+  },
+  indexFromCharCode: function (a) {
+    93 <= a && a--;
+    35 <= a && a--;
+    return a - 32;
+  },
+  parseData: function (a) {
+    this.format || (this.format = new OpenLayers.Format.JSON());
+    this.json = this.format.read(a);
+  },
+  clear: function () {
+    this.json = null;
+  },
+  CLASS_NAME: "OpenLayers.Tile.UTFGrid",
+});
+OpenLayers.Protocol.HTTP = OpenLayers.Class(OpenLayers.Protocol, {
+  url: null,
+  headers: null,
+  params: null,
+  callback: null,
+  scope: null,
+  readWithPOST: !1,
+  updateWithPOST: !1,
+  deleteWithPOST: !1,
+  wildcarded: !1,
+  srsInBBOX: !1,
+  initialize: function (a) {
+    a = a || {};
+    this.params = {};
+    this.headers = {};
+    OpenLayers.Protocol.prototype.initialize.apply(this, arguments);
+    if (!this.filterToParams && OpenLayers.Format.QueryStringFilter) {
+      var b = new OpenLayers.Format.QueryStringFilter({
+        wildcarded: this.wildcarded,
+        srsInBBOX: this.srsInBBOX,
+      });
+      this.filterToParams = function (a, d) {
+        return b.write(a, d);
+      };
+    }
+  },
+  destroy: function () {
+    this.headers = this.params = null;
+    OpenLayers.Protocol.prototype.destroy.apply(this);
+  },
+  read: function (a) {
+    OpenLayers.Protocol.prototype.read.apply(this, arguments);
+    a = a || {};
+    a.params = OpenLayers.Util.applyDefaults(a.params, this.options.params);
+    a = OpenLayers.Util.applyDefaults(a, this.options);
+    a.filter && this.filterToParams && (a.params = this.filterToParams(a.filter, a.params));
+    var b = void 0 !== a.readWithPOST ? a.readWithPOST : this.readWithPOST,
+      c = new OpenLayers.Protocol.Response({ requestType: "read" });
+    b
+      ? ((b = a.headers || {}),
+        (b["Content-Type"] = "application/x-www-form-urlencoded"),
+        (c.priv = OpenLayers.Request.POST({
+          url: a.url,
+          callback: this.createCallback(this.handleRead, c, a),
+          data: OpenLayers.Util.getParameterString(a.params),
+          headers: b,
+        })))
+      : (c.priv = OpenLayers.Request.GET({
+          url: a.url,
+          callback: this.createCallback(this.handleRead, c, a),
+          params: a.params,
+          headers: a.headers,
+        }));
+    return c;
+  },
+  handleRead: function (a, b) {
+    this.handleResponse(a, b);
+  },
+  create: function (a, b) {
+    b = OpenLayers.Util.applyDefaults(b, this.options);
+    var c = new OpenLayers.Protocol.Response({ reqFeatures: a, requestType: "create" });
+    c.priv = OpenLayers.Request.POST({
+      url: b.url,
+      callback: this.createCallback(this.handleCreate, c, b),
+      headers: b.headers,
+      data: this.format.write(a),
+    });
+    return c;
+  },
+  handleCreate: function (a, b) {
+    this.handleResponse(a, b);
+  },
+  update: function (a, b) {
+    b = b || {};
+    var c = b.url || a.url || this.options.url + "/" + a.fid;
+    b = OpenLayers.Util.applyDefaults(b, this.options);
+    var d = new OpenLayers.Protocol.Response({ reqFeatures: a, requestType: "update" });
+    d.priv = OpenLayers.Request[this.updateWithPOST ? "POST" : "PUT"]({
+      url: c,
+      callback: this.createCallback(this.handleUpdate, d, b),
+      headers: b.headers,
+      data: this.format.write(a),
+    });
+    return d;
+  },
+  handleUpdate: function (a, b) {
+    this.handleResponse(a, b);
+  },
+  delete: function (a, b) {
+    b = b || {};
+    var c = b.url || a.url || this.options.url + "/" + a.fid;
+    b = OpenLayers.Util.applyDefaults(b, this.options);
+    var d = new OpenLayers.Protocol.Response({ reqFeatures: a, requestType: "delete" }),
+      e = this.deleteWithPOST ? "POST" : "DELETE",
+      c = { url: c, callback: this.createCallback(this.handleDelete, d, b), headers: b.headers };
+    this.deleteWithPOST && (c.data = this.format.write(a));
+    d.priv = OpenLayers.Request[e](c);
+    return d;
+  },
+  handleDelete: function (a, b) {
+    this.handleResponse(a, b);
+  },
+  handleResponse: function (a, b) {
+    var c = a.priv;
+    b.callback &&
+      (200 <= c.status && 300 > c.status
+        ? ("delete" != a.requestType && (a.features = this.parseFeatures(c)),
+          (a.code = OpenLayers.Protocol.Response.SUCCESS))
+        : (a.code = OpenLayers.Protocol.Response.FAILURE),
+      b.callback.call(b.scope, a));
+  },
+  parseFeatures: function (a) {
+    var b = a.responseXML;
+    (b && b.documentElement) || (b = a.responseText);
+    return !b || 0 >= b.length ? null : this.format.read(b);
+  },
+  commit: function (a, b) {
+    function c(a) {
+      for (var b = a.features ? a.features.length : 0, c = Array(b), e = 0; e < b; ++e)
+        c[e] = a.features[e].fid;
+      r.insertIds = c;
+      d.apply(this, [a]);
+    }
+    function d(a) {
+      this.callUserCallback(a, b);
+      q = q && a.success();
+      f++;
+      f >= p &&
+        b.callback &&
+        ((r.code = q ? OpenLayers.Protocol.Response.SUCCESS : OpenLayers.Protocol.Response.FAILURE),
+        b.callback.apply(b.scope, [r]));
+    }
+    b = OpenLayers.Util.applyDefaults(b, this.options);
+    var e = [],
+      f = 0,
+      g = {};
+    g[OpenLayers.State.INSERT] = [];
+    g[OpenLayers.State.UPDATE] = [];
+    g[OpenLayers.State.DELETE] = [];
+    for (var h, k, l = [], m = 0, n = a.length; m < n; ++m)
+      if (((h = a[m]), (k = g[h.state]))) k.push(h), l.push(h);
+    var p =
+        (0 < g[OpenLayers.State.INSERT].length ? 1 : 0) +
+        g[OpenLayers.State.UPDATE].length +
+        g[OpenLayers.State.DELETE].length,
+      q = !0,
+      r = new OpenLayers.Protocol.Response({ reqFeatures: l });
+    h = g[OpenLayers.State.INSERT];
+    0 < h.length &&
+      e.push(this.create(h, OpenLayers.Util.applyDefaults({ callback: c, scope: this }, b.create)));
+    h = g[OpenLayers.State.UPDATE];
+    for (m = h.length - 1; 0 <= m; --m)
+      e.push(
+        this.update(h[m], OpenLayers.Util.applyDefaults({ callback: d, scope: this }, b.update))
+      );
+    h = g[OpenLayers.State.DELETE];
+    for (m = h.length - 1; 0 <= m; --m)
+      e.push(
+        this["delete"](
+          h[m],
+          OpenLayers.Util.applyDefaults({ callback: d, scope: this }, b["delete"])
+        )
+      );
+    return e;
+  },
+  abort: function (a) {
+    a && a.priv.abort();
+  },
+  callUserCallback: function (a, b) {
+    var c = b[a.requestType];
+    c && c.callback && c.callback.call(c.scope, a);
+  },
+  CLASS_NAME: "OpenLayers.Protocol.HTTP",
+});
+OpenLayers.Strategy.Cluster = OpenLayers.Class(OpenLayers.Strategy, {
+  distance: 20,
+  threshold: null,
+  features: null,
+  clusters: null,
+  clustering: !1,
+  resolution: null,
+  activate: function () {
+    var a = OpenLayers.Strategy.prototype.activate.call(this);
+    if (a)
+      this.layer.events.on({
+        beforefeaturesadded: this.cacheFeatures,
+        featuresremoved: this.clearCache,
+        moveend: this.cluster,
+        scope: this,
+      });
+    return a;
+  },
+  deactivate: function () {
+    var a = OpenLayers.Strategy.prototype.deactivate.call(this);
+    a &&
+      (this.clearCache(),
+      this.layer.events.un({
+        beforefeaturesadded: this.cacheFeatures,
+        featuresremoved: this.clearCache,
+        moveend: this.cluster,
+        scope: this,
+      }));
+    return a;
+  },
+  cacheFeatures: function (a) {
+    var b = !0;
+    this.clustering || (this.clearCache(), (this.features = a.features), this.cluster(), (b = !1));
+    return b;
+  },
+  clearCache: function () {
+    this.clustering || (this.features = null);
+  },
+  cluster: function (a) {
+    if (
+      (!a || a.zoomChanged) &&
+      this.features &&
+      ((a = this.layer.map.getResolution()), a != this.resolution || !this.clustersExist())
+    ) {
+      this.resolution = a;
+      a = [];
+      for (var b, c, d, e = 0; e < this.features.length; ++e)
+        if (((b = this.features[e]), b.geometry)) {
+          c = !1;
+          for (var f = a.length - 1; 0 <= f; --f)
+            if (((d = a[f]), this.shouldCluster(d, b))) {
+              this.addToCluster(d, b);
+              c = !0;
+              break;
+            }
+          c || a.push(this.createCluster(this.features[e]));
+        }
+      this.clustering = !0;
+      this.layer.removeAllFeatures();
+      this.clustering = !1;
+      if (0 < a.length) {
+        if (1 < this.threshold)
+          for (b = a.slice(), a = [], e = 0, d = b.length; e < d; ++e)
+            (c = b[e]),
+              c.attributes.count < this.threshold
+                ? Array.prototype.push.apply(a, c.cluster)
+                : a.push(c);
+        this.clustering = !0;
+        this.layer.addFeatures(a);
+        this.clustering = !1;
+      }
+      this.clusters = a;
+    }
+  },
+  clustersExist: function () {
+    var a = !1;
+    if (
+      this.clusters &&
+      0 < this.clusters.length &&
+      this.clusters.length == this.layer.features.length
+    )
+      for (var a = !0, b = 0; b < this.clusters.length; ++b)
+        if (this.clusters[b] != this.layer.features[b]) {
+          a = !1;
+          break;
+        }
+    return a;
+  },
+  shouldCluster: function (a, b) {
+    var c = a.geometry.getBounds().getCenterLonLat(),
+      d = b.geometry.getBounds().getCenterLonLat();
+    return (
+      Math.sqrt(Math.pow(c.lon - d.lon, 2) + Math.pow(c.lat - d.lat, 2)) / this.resolution <=
+      this.distance
+    );
+  },
+  addToCluster: function (a, b) {
+    a.cluster.push(b);
+    a.attributes.count += 1;
+  },
+  createCluster: function (a) {
+    var b = a.geometry.getBounds().getCenterLonLat(),
+      b = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(b.lon, b.lat), { count: 1 });
+    b.cluster = [a];
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Strategy.Cluster",
+});
+OpenLayers.Strategy.Filter = OpenLayers.Class(OpenLayers.Strategy, {
+  filter: null,
+  cache: null,
+  caching: !1,
+  activate: function () {
+    var a = OpenLayers.Strategy.prototype.activate.apply(this, arguments);
+    a &&
+      ((this.cache = []),
+      this.layer.events.on({
+        beforefeaturesadded: this.handleAdd,
+        beforefeaturesremoved: this.handleRemove,
+        scope: this,
+      }));
+    return a;
+  },
+  deactivate: function () {
+    this.cache = null;
+    this.layer &&
+      this.layer.events &&
+      this.layer.events.un({
+        beforefeaturesadded: this.handleAdd,
+        beforefeaturesremoved: this.handleRemove,
+        scope: this,
+      });
+    return OpenLayers.Strategy.prototype.deactivate.apply(this, arguments);
+  },
+  handleAdd: function (a) {
+    if (!this.caching && this.filter) {
+      var b = a.features;
+      a.features = [];
+      for (var c, d = 0, e = b.length; d < e; ++d)
+        (c = b[d]), this.filter.evaluate(c) ? a.features.push(c) : this.cache.push(c);
+    }
+  },
+  handleRemove: function (a) {
+    this.caching || (this.cache = []);
+  },
+  setFilter: function (a) {
+    this.filter = a;
+    a = this.cache;
+    this.cache = [];
+    this.handleAdd({ features: this.layer.features });
+    0 < this.cache.length &&
+      ((this.caching = !0), this.layer.removeFeatures(this.cache.slice()), (this.caching = !1));
+    0 < a.length &&
+      ((a = { features: a }),
+      this.handleAdd(a),
+      0 < a.features.length &&
+        ((this.caching = !0), this.layer.addFeatures(a.features), (this.caching = !1)));
+  },
+  CLASS_NAME: "OpenLayers.Strategy.Filter",
+});
+OpenLayers.Protocol.SOS = function (a) {
+  a = OpenLayers.Util.applyDefaults(a, OpenLayers.Protocol.SOS.DEFAULTS);
+  var b = OpenLayers.Protocol.SOS["v" + a.version.replace(/\./g, "_")];
+  if (!b) throw "Unsupported SOS version: " + a.version;
+  return new b(a);
+};
+OpenLayers.Protocol.SOS.DEFAULTS = { version: "1.0.0" };
+OpenLayers.Format.WFSDescribeFeatureType = OpenLayers.Class(OpenLayers.Format.XML, {
+  regExes: { trimSpace: /^\s*|\s*$/g },
+  namespaces: { xsd: "http://www.w3.org/2001/XMLSchema" },
+  readers: {
+    xsd: {
+      schema: function (a, b) {
+        var c = [],
+          d = {},
+          e,
+          f;
+        this.readChildNodes(a, { complexTypes: c, customTypes: d });
+        var g = a.attributes,
+          h,
+          k;
+        e = 0;
+        for (f = g.length; e < f; ++e)
+          (h = g[e]),
+            (k = h.name),
+            0 === k.indexOf("xmlns")
+              ? this.setNamespace(k.split(":")[1] || "", h.value)
+              : (b[k] = h.value);
+        b.featureTypes = c;
+        b.targetPrefix = this.namespaceAlias[b.targetNamespace];
+        e = 0;
+        for (f = c.length; e < f; ++e)
+          (g = c[e]), (h = d[g.typeName]), d[g.typeName] && (g.typeName = h.name);
+      },
+      complexType: function (a, b) {
+        var c = { typeName: a.getAttribute("name") };
+        this.readChildNodes(a, c);
+        b.complexTypes.push(c);
+      },
+      complexContent: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      extension: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      sequence: function (a, b) {
+        var c = { elements: [] };
+        this.readChildNodes(a, c);
+        b.properties = c.elements;
+      },
+      element: function (a, b) {
+        var c;
+        if (b.elements) {
+          var d = {};
+          c = a.attributes;
+          for (var e, f = 0, g = c.length; f < g; ++f) (e = c[f]), (d[e.name] = e.value);
+          c = d.type;
+          c || ((c = {}), this.readChildNodes(a, c), (d.restriction = c), (d.type = c.base));
+          d.localType = (c.base || c).split(":").pop();
+          b.elements.push(d);
+          this.readChildNodes(a, d);
+        }
+        b.complexTypes &&
+          ((c = a.getAttribute("type")),
+          (d = c.split(":").pop()),
+          (b.customTypes[d] = { name: a.getAttribute("name"), type: c }));
+      },
+      annotation: function (a, b) {
+        b.annotation = {};
+        this.readChildNodes(a, b.annotation);
+      },
+      appinfo: function (a, b) {
+        b.appinfo || (b.appinfo = []);
+        b.appinfo.push(this.getChildValue(a));
+      },
+      documentation: function (a, b) {
+        b.documentation || (b.documentation = []);
+        var c = this.getChildValue(a);
+        b.documentation.push({
+          lang: a.getAttribute("xml:lang"),
+          textContent: c.replace(this.regExes.trimSpace, ""),
+        });
+      },
+      simpleType: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      restriction: function (a, b) {
+        b.base = a.getAttribute("base");
+        this.readRestriction(a, b);
+      },
+    },
+  },
+  readRestriction: function (a, b) {
+    for (var c = a.childNodes, d, e, f = 0, g = c.length; f < g; ++f)
+      (d = c[f]),
+        1 == d.nodeType &&
+          ((e = d.nodeName.split(":").pop()),
+          (d = d.getAttribute("value")),
+          b[e] ? ("string" == typeof b[e] && (b[e] = [b[e]]), b[e].push(d)) : (b[e] = d));
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    if ("ExceptionReport" === a.nodeName.split(":").pop()) {
+      var c = new OpenLayers.Format.OGCExceptionReport();
+      b.error = c.read(a);
+    } else this.readNode(a, b);
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Format.WFSDescribeFeatureType",
+});
+OpenLayers.Format.GeoRSS = OpenLayers.Class(OpenLayers.Format.XML, {
+  rssns: "http://backend.userland.com/rss2",
+  featureNS: "http://mapserver.gis.umn.edu/mapserver",
+  georssns: "http://www.georss.org/georss",
+  geons: "http://www.w3.org/2003/01/geo/wgs84_pos#",
+  featureTitle: "Untitled",
+  featureDescription: "No Description",
+  gmlParser: null,
+  xy: !1,
+  createGeometryFromItem: function (a) {
+    var b = this.getElementsByTagNameNS(a, this.georssns, "point"),
+      c = this.getElementsByTagNameNS(a, this.geons, "lat"),
+      d = this.getElementsByTagNameNS(a, this.geons, "long"),
+      e = this.getElementsByTagNameNS(a, this.georssns, "line"),
+      f = this.getElementsByTagNameNS(a, this.georssns, "polygon"),
+      g = this.getElementsByTagNameNS(a, this.georssns, "where");
+    a = this.getElementsByTagNameNS(a, this.georssns, "box");
+    if (0 < b.length || (0 < c.length && 0 < d.length)) {
+      0 < b.length
+        ? ((c = OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\s+/)),
+          2 != c.length && (c = OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\s*,\s*/)))
+        : (c = [parseFloat(c[0].firstChild.nodeValue), parseFloat(d[0].firstChild.nodeValue)]);
+      var h = new OpenLayers.Geometry.Point(c[1], c[0]);
+    } else if (0 < e.length) {
+      c = OpenLayers.String.trim(this.getChildValue(e[0])).split(/\s+/);
+      d = [];
+      e = 0;
+      for (f = c.length; e < f; e += 2)
+        (b = new OpenLayers.Geometry.Point(c[e + 1], c[e])), d.push(b);
+      h = new OpenLayers.Geometry.LineString(d);
+    } else if (0 < f.length) {
+      c = OpenLayers.String.trim(this.getChildValue(f[0])).split(/\s+/);
+      d = [];
+      e = 0;
+      for (f = c.length; e < f; e += 2)
+        (b = new OpenLayers.Geometry.Point(c[e + 1], c[e])), d.push(b);
+      h = new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)]);
+    } else
+      0 < g.length
+        ? (this.gmlParser || (this.gmlParser = new OpenLayers.Format.GML({ xy: this.xy })),
+          (h = this.gmlParser.parseFeature(g[0]).geometry))
+        : 0 < a.length &&
+          ((c = OpenLayers.String.trim(a[0].firstChild.nodeValue).split(/\s+/)),
+          (d = []),
+          3 < c.length &&
+            ((b = new OpenLayers.Geometry.Point(c[1], c[0])),
+            d.push(b),
+            (b = new OpenLayers.Geometry.Point(c[1], c[2])),
+            d.push(b),
+            (b = new OpenLayers.Geometry.Point(c[3], c[2])),
+            d.push(b),
+            (b = new OpenLayers.Geometry.Point(c[3], c[0])),
+            d.push(b),
+            (b = new OpenLayers.Geometry.Point(c[1], c[0])),
+            d.push(b)),
+          (h = new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)])));
+    h &&
+      this.internalProjection &&
+      this.externalProjection &&
+      h.transform(this.externalProjection, this.internalProjection);
+    return h;
+  },
+  createFeatureFromItem: function (a) {
+    var b = this.createGeometryFromItem(a),
+      c = this._getChildValue(a, "*", "title", this.featureTitle),
+      d = this._getChildValue(
+        a,
+        "*",
+        "description",
+        this._getChildValue(
+          a,
+          "*",
+          "content",
+          this._getChildValue(a, "*", "summary", this.featureDescription)
+        )
+      ),
+      e = this._getChildValue(a, "*", "link");
+    if (!e)
+      try {
+        e = this.getElementsByTagNameNS(a, "*", "link")[0].getAttribute("href");
+      } catch (f) {
+        e = null;
+      }
+    a = this._getChildValue(a, "*", "id", null);
+    b = new OpenLayers.Feature.Vector(b, { title: c, description: d, link: e });
+    b.fid = a;
+    return b;
+  },
+  _getChildValue: function (a, b, c, d) {
+    return (a = this.getElementsByTagNameNS(a, b, c)) &&
+      a[0] &&
+      a[0].firstChild &&
+      a[0].firstChild.nodeValue
+      ? this.getChildValue(a[0])
+      : void 0 == d
+      ? ""
+      : d;
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    var b = null,
+      b = this.getElementsByTagNameNS(a, "*", "item");
+    0 == b.length && (b = this.getElementsByTagNameNS(a, "*", "entry"));
+    a = b.length;
+    for (var c = Array(a), d = 0; d < a; d++) c[d] = this.createFeatureFromItem(b[d]);
+    return c;
+  },
+  write: function (a) {
+    var b;
+    if (OpenLayers.Util.isArray(a)) {
+      b = this.createElementNS(this.rssns, "rss");
+      for (var c = 0, d = a.length; c < d; c++) b.appendChild(this.createFeatureXML(a[c]));
+    } else b = this.createFeatureXML(a);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [b]);
+  },
+  createFeatureXML: function (a) {
+    var b = this.buildGeometryNode(a.geometry),
+      c = this.createElementNS(this.rssns, "item"),
+      d = this.createElementNS(this.rssns, "title");
+    d.appendChild(this.createTextNode(a.attributes.title ? a.attributes.title : ""));
+    var e = this.createElementNS(this.rssns, "description");
+    e.appendChild(this.createTextNode(a.attributes.description ? a.attributes.description : ""));
+    c.appendChild(d);
+    c.appendChild(e);
+    a.attributes.link &&
+      ((d = this.createElementNS(this.rssns, "link")),
+      d.appendChild(this.createTextNode(a.attributes.link)),
+      c.appendChild(d));
+    for (var f in a.attributes)
+      "link" != f &&
+        "title" != f &&
+        "description" != f &&
+        ((d = this.createTextNode(a.attributes[f])),
+        (e = f),
+        -1 != f.search(":") && (e = f.split(":")[1]),
+        (e = this.createElementNS(this.featureNS, "feature:" + e)),
+        e.appendChild(d),
+        c.appendChild(e));
+    c.appendChild(b);
+    return c;
+  },
+  buildGeometryNode: function (a) {
+    this.internalProjection &&
+      this.externalProjection &&
+      ((a = a.clone()), a.transform(this.internalProjection, this.externalProjection));
+    var b;
+    if ("OpenLayers.Geometry.Polygon" == a.CLASS_NAME)
+      (b = this.createElementNS(this.georssns, "georss:polygon")),
+        b.appendChild(this.buildCoordinatesNode(a.components[0]));
+    else if ("OpenLayers.Geometry.LineString" == a.CLASS_NAME)
+      (b = this.createElementNS(this.georssns, "georss:line")),
+        b.appendChild(this.buildCoordinatesNode(a));
+    else if ("OpenLayers.Geometry.Point" == a.CLASS_NAME)
+      (b = this.createElementNS(this.georssns, "georss:point")),
+        b.appendChild(this.buildCoordinatesNode(a));
+    else throw "Couldn't parse " + a.CLASS_NAME;
+    return b;
+  },
+  buildCoordinatesNode: function (a) {
+    var b = null;
+    a.components && (b = a.components);
+    if (b) {
+      a = b.length;
+      for (var c = Array(a), d = 0; d < a; d++) c[d] = b[d].y + " " + b[d].x;
+      b = c.join(" ");
+    } else b = a.y + " " + a.x;
+    return this.createTextNode(b);
+  },
+  CLASS_NAME: "OpenLayers.Format.GeoRSS",
+});
+OpenLayers.Format.WPSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, {
+  defaultVersion: "1.0.0",
+  CLASS_NAME: "OpenLayers.Format.WPSCapabilities",
+});
+OpenLayers.Format.WPSCapabilities.v1_0_0 = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    ows: "http://www.opengis.net/ows/1.1",
+    wps: "http://www.opengis.net/wps/1.0.0",
+    xlink: "http://www.w3.org/1999/xlink",
+  },
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  initialize: function (a) {
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    this.readNode(a, b);
+    return b;
+  },
+  readers: {
+    wps: {
+      Capabilities: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      ProcessOfferings: function (a, b) {
+        b.processOfferings = {};
+        this.readChildNodes(a, b.processOfferings);
+      },
+      Process: function (a, b) {
+        var c = { processVersion: this.getAttributeNS(a, this.namespaces.wps, "processVersion") };
+        this.readChildNodes(a, c);
+        b[c.identifier] = c;
+      },
+      Languages: function (a, b) {
+        b.languages = [];
+        this.readChildNodes(a, b.languages);
+      },
+      Default: function (a, b) {
+        var c = { isDefault: !0 };
+        this.readChildNodes(a, c);
+        b.push(c);
+      },
+      Supported: function (a, b) {
+        var c = {};
+        this.readChildNodes(a, c);
+        b.push(c);
+      },
+    },
+    ows: OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows,
+  },
+  CLASS_NAME: "OpenLayers.Format.WPSCapabilities.v1_0_0",
+});
+OpenLayers.Control.PinchZoom = OpenLayers.Class(OpenLayers.Control, {
+  type: OpenLayers.Control.TYPE_TOOL,
+  pinchOrigin: null,
+  currentCenter: null,
+  autoActivate: !0,
+  preserveCenter: !1,
+  initialize: function (a) {
+    OpenLayers.Control.prototype.initialize.apply(this, arguments);
+    this.handler = new OpenLayers.Handler.Pinch(
+      this,
+      { start: this.pinchStart, move: this.pinchMove, done: this.pinchDone },
+      this.handlerOptions
+    );
+  },
+  pinchStart: function (a, b) {
+    var c = this.preserveCenter ? this.map.getPixelFromLonLat(this.map.getCenter()) : a.xy;
+    this.currentCenter = this.pinchOrigin = c;
+  },
+  pinchMove: function (a, b) {
+    var c = b.scale,
+      d = this.map.layerContainerOriginPx,
+      e = this.pinchOrigin,
+      f = this.preserveCenter ? this.map.getPixelFromLonLat(this.map.getCenter()) : a.xy,
+      g = Math.round(d.x + f.x - e.x + (c - 1) * (d.x - e.x)),
+      d = Math.round(d.y + f.y - e.y + (c - 1) * (d.y - e.y));
+    this.map.applyTransform(g, d, c);
+    this.currentCenter = f;
+  },
+  pinchDone: function (a, b, c) {
+    this.map.applyTransform();
+    a = this.map.getZoomForResolution(this.map.getResolution() / c.scale, !0);
+    if (a !== this.map.getZoom() || !this.currentCenter.equals(this.pinchOrigin)) {
+      b = this.map.getResolutionForZoom(a);
+      c = this.map.getLonLatFromPixel(this.pinchOrigin);
+      var d = this.currentCenter,
+        e = this.map.getSize();
+      c.lon += b * (e.w / 2 - d.x);
+      c.lat -= b * (e.h / 2 - d.y);
+      this.map.div.clientWidth = this.map.div.clientWidth;
+      this.map.setCenter(c, a);
+    }
+  },
+  CLASS_NAME: "OpenLayers.Control.PinchZoom",
+});
+OpenLayers.Control.TouchNavigation = OpenLayers.Class(OpenLayers.Control, {
+  dragPan: null,
+  dragPanOptions: null,
+  pinchZoom: null,
+  pinchZoomOptions: null,
+  clickHandlerOptions: null,
+  documentDrag: !1,
+  autoActivate: !0,
+  initialize: function (a) {
+    this.handlers = {};
+    OpenLayers.Control.prototype.initialize.apply(this, arguments);
+  },
+  destroy: function () {
+    this.deactivate();
+    this.dragPan && this.dragPan.destroy();
+    this.dragPan = null;
+    this.pinchZoom && (this.pinchZoom.destroy(), delete this.pinchZoom);
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  activate: function () {
+    return OpenLayers.Control.prototype.activate.apply(this, arguments)
+      ? (this.dragPan.activate(), this.handlers.click.activate(), this.pinchZoom.activate(), !0)
+      : !1;
+  },
+  deactivate: function () {
+    return OpenLayers.Control.prototype.deactivate.apply(this, arguments)
+      ? (this.dragPan.deactivate(),
+        this.handlers.click.deactivate(),
+        this.pinchZoom.deactivate(),
+        !0)
+      : !1;
+  },
+  draw: function () {
+    var a = { click: this.defaultClick, dblclick: this.defaultDblClick },
+      b = OpenLayers.Util.extend(
+        { double: !0, stopDouble: !0, pixelTolerance: 2 },
+        this.clickHandlerOptions
+      );
+    this.handlers.click = new OpenLayers.Handler.Click(this, a, b);
+    this.dragPan = new OpenLayers.Control.DragPan(
+      OpenLayers.Util.extend(
+        { map: this.map, documentDrag: this.documentDrag },
+        this.dragPanOptions
+      )
+    );
+    this.dragPan.draw();
+    this.pinchZoom = new OpenLayers.Control.PinchZoom(
+      OpenLayers.Util.extend({ map: this.map }, this.pinchZoomOptions)
+    );
+  },
+  defaultClick: function (a) {
+    a.lastTouches && 2 == a.lastTouches.length && this.map.zoomOut();
+  },
+  defaultDblClick: function (a) {
+    this.map.zoomTo(this.map.zoom + 1, a.xy);
+  },
+  CLASS_NAME: "OpenLayers.Control.TouchNavigation",
+});
+OpenLayers.Console.warn("OpenLayers.Rico is deprecated");
+OpenLayers.Rico = OpenLayers.Rico || {};
+OpenLayers.Rico.Color = OpenLayers.Class({
+  initialize: function (a, b, c) {
+    this.rgb = { r: a, g: b, b: c };
+  },
+  setRed: function (a) {
+    this.rgb.r = a;
+  },
+  setGreen: function (a) {
+    this.rgb.g = a;
+  },
+  setBlue: function (a) {
+    this.rgb.b = a;
+  },
+  setHue: function (a) {
+    var b = this.asHSB();
+    b.h = a;
+    this.rgb = OpenLayers.Rico.Color.HSBtoRGB(b.h, b.s, b.b);
+  },
+  setSaturation: function (a) {
+    var b = this.asHSB();
+    b.s = a;
+    this.rgb = OpenLayers.Rico.Color.HSBtoRGB(b.h, b.s, b.b);
+  },
+  setBrightness: function (a) {
+    var b = this.asHSB();
+    b.b = a;
+    this.rgb = OpenLayers.Rico.Color.HSBtoRGB(b.h, b.s, b.b);
+  },
+  darken: function (a) {
+    var b = this.asHSB();
+    this.rgb = OpenLayers.Rico.Color.HSBtoRGB(b.h, b.s, Math.max(b.b - a, 0));
+  },
+  brighten: function (a) {
+    var b = this.asHSB();
+    this.rgb = OpenLayers.Rico.Color.HSBtoRGB(b.h, b.s, Math.min(b.b + a, 1));
+  },
+  blend: function (a) {
+    this.rgb.r = Math.floor((this.rgb.r + a.rgb.r) / 2);
+    this.rgb.g = Math.floor((this.rgb.g + a.rgb.g) / 2);
+    this.rgb.b = Math.floor((this.rgb.b + a.rgb.b) / 2);
+  },
+  isBright: function () {
+    this.asHSB();
+    return 0.5 < this.asHSB().b;
+  },
+  isDark: function () {
+    return !this.isBright();
+  },
+  asRGB: function () {
+    return "rgb(" + this.rgb.r + "," + this.rgb.g + "," + this.rgb.b + ")";
+  },
+  asHex: function () {
+    return "#" + this.rgb.r.toColorPart() + this.rgb.g.toColorPart() + this.rgb.b.toColorPart();
+  },
+  asHSB: function () {
+    return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r, this.rgb.g, this.rgb.b);
+  },
+  toString: function () {
+    return this.asHex();
+  },
+});
+OpenLayers.Rico.Color.createFromHex = function (a) {
+  if (4 == a.length) {
+    var b = a;
+    a = "#";
+    for (var c = 1; 4 > c; c++) a += b.charAt(c) + b.charAt(c);
+  }
+  0 == a.indexOf("#") && (a = a.substring(1));
+  b = a.substring(0, 2);
+  c = a.substring(2, 4);
+  a = a.substring(4, 6);
+  return new OpenLayers.Rico.Color(parseInt(b, 16), parseInt(c, 16), parseInt(a, 16));
+};
+OpenLayers.Rico.Color.createColorFromBackground = function (a) {
+  var b = OpenLayers.Element.getStyle(OpenLayers.Util.getElement(a), "backgroundColor");
+  return "transparent" == b && a.parentNode
+    ? OpenLayers.Rico.Color.createColorFromBackground(a.parentNode)
+    : null == b
+    ? new OpenLayers.Rico.Color(255, 255, 255)
+    : 0 == b.indexOf("rgb(")
+    ? ((a = b.substring(4, b.length - 1).split(",")),
+      new OpenLayers.Rico.Color(parseInt(a[0]), parseInt(a[1]), parseInt(a[2])))
+    : 0 == b.indexOf("#")
+    ? OpenLayers.Rico.Color.createFromHex(b)
+    : new OpenLayers.Rico.Color(255, 255, 255);
+};
+OpenLayers.Rico.Color.HSBtoRGB = function (a, b, c) {
+  var d = 0,
+    e = 0,
+    f = 0;
+  if (0 == b) f = e = d = parseInt(255 * c + 0.5);
+  else {
+    a = 6 * (a - Math.floor(a));
+    var g = a - Math.floor(a),
+      h = c * (1 - b),
+      k = c * (1 - b * g);
+    b = c * (1 - b * (1 - g));
+    switch (parseInt(a)) {
+      case 0:
+        d = 255 * c + 0.5;
+        e = 255 * b + 0.5;
+        f = 255 * h + 0.5;
+        break;
+      case 1:
+        d = 255 * k + 0.5;
+        e = 255 * c + 0.5;
+        f = 255 * h + 0.5;
+        break;
+      case 2:
+        d = 255 * h + 0.5;
+        e = 255 * c + 0.5;
+        f = 255 * b + 0.5;
+        break;
+      case 3:
+        d = 255 * h + 0.5;
+        e = 255 * k + 0.5;
+        f = 255 * c + 0.5;
+        break;
+      case 4:
+        d = 255 * b + 0.5;
+        e = 255 * h + 0.5;
+        f = 255 * c + 0.5;
+        break;
+      case 5:
+        (d = 255 * c + 0.5), (e = 255 * h + 0.5), (f = 255 * k + 0.5);
+    }
+  }
+  return { r: parseInt(d), g: parseInt(e), b: parseInt(f) };
+};
+OpenLayers.Rico.Color.RGBtoHSB = function (a, b, c) {
+  var d,
+    e = a > b ? a : b;
+  c > e && (e = c);
+  var f = a < b ? a : b;
+  c < f && (f = c);
+  d = 0 != e ? (e - f) / e : 0;
+  if (0 == d) a = 0;
+  else {
+    var g = (e - a) / (e - f),
+      h = (e - b) / (e - f);
+    c = (e - c) / (e - f);
+    a = (a == e ? c - h : b == e ? 2 + g - c : 4 + h - g) / 6;
+    0 > a && (a += 1);
+  }
+  return { h: a, s: d, b: e / 255 };
+};
+OpenLayers.Style2 = OpenLayers.Class({
+  id: null,
+  name: null,
+  title: null,
+  description: null,
+  layerName: null,
+  isDefault: !1,
+  rules: null,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+    this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
+  },
+  destroy: function () {
+    for (var a = 0, b = this.rules.length; a < b; a++) this.rules[a].destroy();
+    delete this.rules;
+  },
+  clone: function () {
+    var a = OpenLayers.Util.extend({}, this);
+    if (this.rules) {
+      a.rules = [];
+      for (var b = 0, c = this.rules.length; b < c; ++b) a.rules.push(this.rules[b].clone());
+    }
+    return new OpenLayers.Style2(a);
+  },
+  CLASS_NAME: "OpenLayers.Style2",
+});
+OpenLayers.Format.WFS = OpenLayers.Class(OpenLayers.Format.GML, {
+  layer: null,
+  wfsns: "http://www.opengis.net/wfs",
+  ogcns: "http://www.opengis.net/ogc",
+  initialize: function (a, b) {
+    OpenLayers.Format.GML.prototype.initialize.apply(this, [a]);
+    this.layer = b;
+    this.layer.featureNS && (this.featureNS = this.layer.featureNS);
+    this.layer.options.geometry_column && (this.geometryName = this.layer.options.geometry_column);
+    this.layer.options.typename && (this.featureName = this.layer.options.typename);
+  },
+  write: function (a) {
+    var b = this.createElementNS(this.wfsns, "wfs:Transaction");
+    b.setAttribute("version", "1.0.0");
+    b.setAttribute("service", "WFS");
+    for (var c = 0; c < a.length; c++)
+      switch (a[c].state) {
+        case OpenLayers.State.INSERT:
+          b.appendChild(this.insert(a[c]));
+          break;
+        case OpenLayers.State.UPDATE:
+          b.appendChild(this.update(a[c]));
+          break;
+        case OpenLayers.State.DELETE:
+          b.appendChild(this.remove(a[c]));
+      }
+    return OpenLayers.Format.XML.prototype.write.apply(this, [b]);
+  },
+  createFeatureXML: function (a) {
+    var b = this.buildGeometryNode(a.geometry),
+      c = this.createElementNS(this.featureNS, "feature:" + this.geometryName);
+    c.appendChild(b);
+    b = this.createElementNS(this.featureNS, "feature:" + this.featureName);
+    b.appendChild(c);
+    for (var d in a.attributes) {
+      var c = this.createTextNode(a.attributes[d]),
+        e = d;
+      -1 != d.search(":") && (e = d.split(":")[1]);
+      e = this.createElementNS(this.featureNS, "feature:" + e);
+      e.appendChild(c);
+      b.appendChild(e);
+    }
+    return b;
+  },
+  insert: function (a) {
+    var b = this.createElementNS(this.wfsns, "wfs:Insert");
+    b.appendChild(this.createFeatureXML(a));
+    return b;
+  },
+  update: function (a) {
+    a.fid || OpenLayers.Console.userError(OpenLayers.i18n("noFID"));
+    var b = this.createElementNS(this.wfsns, "wfs:Update");
+    b.setAttribute("typeName", this.featurePrefix + ":" + this.featureName);
+    b.setAttribute("xmlns:" + this.featurePrefix, this.featureNS);
+    var c = this.createElementNS(this.wfsns, "wfs:Property"),
+      d = this.createElementNS(this.wfsns, "wfs:Name"),
+      e = this.createTextNode(this.geometryName);
+    d.appendChild(e);
+    c.appendChild(d);
+    d = this.createElementNS(this.wfsns, "wfs:Value");
+    e = this.buildGeometryNode(a.geometry);
+    a.layer && e.setAttribute("srsName", a.layer.projection.getCode());
+    d.appendChild(e);
+    c.appendChild(d);
+    b.appendChild(c);
+    for (var f in a.attributes)
+      (c = this.createElementNS(this.wfsns, "wfs:Property")),
+        (d = this.createElementNS(this.wfsns, "wfs:Name")),
+        d.appendChild(this.createTextNode(f)),
+        c.appendChild(d),
+        (d = this.createElementNS(this.wfsns, "wfs:Value")),
+        d.appendChild(this.createTextNode(a.attributes[f])),
+        c.appendChild(d),
+        b.appendChild(c);
+    c = this.createElementNS(this.ogcns, "ogc:Filter");
+    f = this.createElementNS(this.ogcns, "ogc:FeatureId");
+    f.setAttribute("fid", a.fid);
+    c.appendChild(f);
+    b.appendChild(c);
+    return b;
+  },
+  remove: function (a) {
+    if (!a.fid) return OpenLayers.Console.userError(OpenLayers.i18n("noFID")), !1;
+    var b = this.createElementNS(this.wfsns, "wfs:Delete");
+    b.setAttribute("typeName", this.featurePrefix + ":" + this.featureName);
+    b.setAttribute("xmlns:" + this.featurePrefix, this.featureNS);
+    var c = this.createElementNS(this.ogcns, "ogc:Filter"),
+      d = this.createElementNS(this.ogcns, "ogc:FeatureId");
+    d.setAttribute("fid", a.fid);
+    c.appendChild(d);
+    b.appendChild(c);
+    return b;
+  },
+  destroy: function () {
+    this.layer = null;
+  },
+  CLASS_NAME: "OpenLayers.Format.WFS",
+});
+OpenLayers.Format.SLD.v1_0_0_GeoServer = OpenLayers.Class(OpenLayers.Format.SLD.v1_0_0, {
+  version: "1.0.0",
+  profile: "GeoServer",
+  readers: OpenLayers.Util.applyDefaults(
+    {
+      sld: OpenLayers.Util.applyDefaults(
+        {
+          Priority: function (a, b) {
+            var c = this.readers.ogc._expression.call(this, a);
+            c && (b.priority = c);
+          },
+          VendorOption: function (a, b) {
+            b.vendorOptions || (b.vendorOptions = {});
+            b.vendorOptions[a.getAttribute("name")] = this.getChildValue(a);
+          },
+          TextSymbolizer: function (a, b) {
+            OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld.TextSymbolizer.apply(
+              this,
+              arguments
+            );
+            var c = this.multipleSymbolizers
+              ? b.symbolizers[b.symbolizers.length - 1]
+              : b.symbolizer.Text;
+            void 0 === c.graphic && (c.graphic = !1);
+          },
+        },
+        OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld
+      ),
+    },
+    OpenLayers.Format.SLD.v1_0_0.prototype.readers
+  ),
+  writers: OpenLayers.Util.applyDefaults(
+    {
+      sld: OpenLayers.Util.applyDefaults(
+        {
+          Priority: function (a) {
+            return this.writers.sld._OGCExpression.call(this, "sld:Priority", a);
+          },
+          VendorOption: function (a) {
+            return this.createElementNSPlus("sld:VendorOption", {
+              attributes: { name: a.name },
+              value: a.value,
+            });
+          },
+          TextSymbolizer: function (a) {
+            var b = OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.TextSymbolizer.apply(
+              this,
+              arguments
+            );
+            !1 !== a.graphic &&
+              (a.externalGraphic || a.graphicName) &&
+              this.writeNode("Graphic", a, b);
+            "priority" in a && this.writeNode("Priority", a.priority, b);
+            return this.addVendorOptions(b, a);
+          },
+          PointSymbolizer: function (a) {
+            var b = OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PointSymbolizer.apply(
+              this,
+              arguments
+            );
+            return this.addVendorOptions(b, a);
+          },
+          LineSymbolizer: function (a) {
+            var b = OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.LineSymbolizer.apply(
+              this,
+              arguments
+            );
+            return this.addVendorOptions(b, a);
+          },
+          PolygonSymbolizer: function (a) {
+            var b = OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PolygonSymbolizer.apply(
+              this,
+              arguments
+            );
+            return this.addVendorOptions(b, a);
+          },
+        },
+        OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld
+      ),
+    },
+    OpenLayers.Format.SLD.v1_0_0.prototype.writers
+  ),
+  addVendorOptions: function (a, b) {
+    if (b.vendorOptions)
+      for (var c in b.vendorOptions)
+        this.writeNode("VendorOption", { name: c, value: b.vendorOptions[c] }, a);
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Format.SLD.v1_0_0_GeoServer",
+});
+OpenLayers.Layer.Boxes = OpenLayers.Class(OpenLayers.Layer.Markers, {
+  drawMarker: function (a) {
+    var b = this.map.getLayerPxFromLonLat({ lon: a.bounds.left, lat: a.bounds.top }),
+      c = this.map.getLayerPxFromLonLat({ lon: a.bounds.right, lat: a.bounds.bottom });
+    null == c || null == b
+      ? a.display(!1)
+      : ((b = a.draw(b, { w: Math.max(1, c.x - b.x), h: Math.max(1, c.y - b.y) })),
+        a.drawn || (this.div.appendChild(b), (a.drawn = !0)));
+  },
+  removeMarker: function (a) {
+    OpenLayers.Util.removeItem(this.markers, a);
+    null != a.div && a.div.parentNode == this.div && this.div.removeChild(a.div);
+  },
+  CLASS_NAME: "OpenLayers.Layer.Boxes",
+});
+OpenLayers.Format.WFSCapabilities.v1_0_0 = OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1, {
+  readers: {
+    wfs: OpenLayers.Util.applyDefaults(
+      {
+        Service: function (a, b) {
+          b.service = {};
+          this.readChildNodes(a, b.service);
+        },
+        Fees: function (a, b) {
+          var c = this.getChildValue(a);
+          c && "none" != c.toLowerCase() && (b.fees = c);
+        },
+        AccessConstraints: function (a, b) {
+          var c = this.getChildValue(a);
+          c && "none" != c.toLowerCase() && (b.accessConstraints = c);
+        },
+        OnlineResource: function (a, b) {
+          var c = this.getChildValue(a);
+          c && "none" != c.toLowerCase() && (b.onlineResource = c);
+        },
+        Keywords: function (a, b) {
+          var c = this.getChildValue(a);
+          c && "none" != c.toLowerCase() && (b.keywords = c.split(", "));
+        },
+        Capability: function (a, b) {
+          b.capability = {};
+          this.readChildNodes(a, b.capability);
+        },
+        Request: function (a, b) {
+          b.request = {};
+          this.readChildNodes(a, b.request);
+        },
+        GetFeature: function (a, b) {
+          b.getfeature = { href: {}, formats: [] };
+          this.readChildNodes(a, b.getfeature);
+        },
+        ResultFormat: function (a, b) {
+          for (var c = a.childNodes, d, e = 0; e < c.length; e++)
+            (d = c[e]), 1 == d.nodeType && b.formats.push(d.nodeName);
+        },
+        DCPType: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        HTTP: function (a, b) {
+          this.readChildNodes(a, b.href);
+        },
+        Get: function (a, b) {
+          b.get = a.getAttribute("onlineResource");
+        },
+        Post: function (a, b) {
+          b.post = a.getAttribute("onlineResource");
+        },
+        SRS: function (a, b) {
+          var c = this.getChildValue(a);
+          c && (b.srs = c);
+        },
+      },
+      OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs
+    ),
+  },
+  CLASS_NAME: "OpenLayers.Format.WFSCapabilities.v1_0_0",
+});
+OpenLayers.Format.WMSCapabilities.v1_3 = OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1, {
+  readers: {
+    wms: OpenLayers.Util.applyDefaults(
+      {
+        WMS_Capabilities: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        LayerLimit: function (a, b) {
+          b.layerLimit = parseInt(this.getChildValue(a));
+        },
+        MaxWidth: function (a, b) {
+          b.maxWidth = parseInt(this.getChildValue(a));
+        },
+        MaxHeight: function (a, b) {
+          b.maxHeight = parseInt(this.getChildValue(a));
+        },
+        BoundingBox: function (a, b) {
+          var c = OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(
+            this,
+            [a, b]
+          );
+          c.srs = a.getAttribute("CRS");
+          b.bbox[c.srs] = c;
+        },
+        CRS: function (a, b) {
+          this.readers.wms.SRS.apply(this, [a, b]);
+        },
+        EX_GeographicBoundingBox: function (a, b) {
+          b.llbbox = [];
+          this.readChildNodes(a, b.llbbox);
+        },
+        westBoundLongitude: function (a, b) {
+          b[0] = this.getChildValue(a);
+        },
+        eastBoundLongitude: function (a, b) {
+          b[2] = this.getChildValue(a);
+        },
+        southBoundLatitude: function (a, b) {
+          b[1] = this.getChildValue(a);
+        },
+        northBoundLatitude: function (a, b) {
+          b[3] = this.getChildValue(a);
+        },
+        MinScaleDenominator: function (a, b) {
+          b.maxScale = parseFloat(this.getChildValue(a)).toPrecision(16);
+        },
+        MaxScaleDenominator: function (a, b) {
+          b.minScale = parseFloat(this.getChildValue(a)).toPrecision(16);
+        },
+        Dimension: function (a, b) {
+          var c = {
+            name: a.getAttribute("name").toLowerCase(),
+            units: a.getAttribute("units"),
+            unitsymbol: a.getAttribute("unitSymbol"),
+            nearestVal: "1" === a.getAttribute("nearestValue"),
+            multipleVal: "1" === a.getAttribute("multipleValues"),
+            default: a.getAttribute("default") || "",
+            current: "1" === a.getAttribute("current"),
+            values: this.getChildValue(a).split(","),
+          };
+          b.dimensions[c.name] = c;
+        },
+        Keyword: function (a, b) {
+          var c = { value: this.getChildValue(a), vocabulary: a.getAttribute("vocabulary") };
+          b.keywords && b.keywords.push(c);
+        },
+      },
+      OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms
+    ),
+    sld: {
+      UserDefinedSymbolization: function (a, b) {
+        this.readers.wms.UserDefinedSymbolization.apply(this, [a, b]);
+        b.userSymbols.inlineFeature = 1 == parseInt(a.getAttribute("InlineFeature"));
+        b.userSymbols.remoteWCS = 1 == parseInt(a.getAttribute("RemoteWCS"));
+      },
+      DescribeLayer: function (a, b) {
+        this.readers.wms.DescribeLayer.apply(this, [a, b]);
+      },
+      GetLegendGraphic: function (a, b) {
+        this.readers.wms.GetLegendGraphic.apply(this, [a, b]);
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1_3",
+});
+OpenLayers.Layer.Zoomify = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  size: null,
+  isBaseLayer: !0,
+  standardTileSize: 256,
+  tileOriginCorner: "tl",
+  numberOfTiers: 0,
+  tileCountUpToTier: null,
+  tierSizeInTiles: null,
+  tierImageSize: null,
+  initialize: function (a, b, c, d) {
+    this.initializeZoomify(c);
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, [a, b, c, {}, d]);
+  },
+  initializeZoomify: function (a) {
+    var b = a.clone();
+    this.size = a.clone();
+    a = new OpenLayers.Size(
+      Math.ceil(b.w / this.standardTileSize),
+      Math.ceil(b.h / this.standardTileSize)
+    );
+    this.tierSizeInTiles = [a];
+    for (this.tierImageSize = [b]; b.w > this.standardTileSize || b.h > this.standardTileSize; )
+      (b = new OpenLayers.Size(Math.floor(b.w / 2), Math.floor(b.h / 2))),
+        (a = new OpenLayers.Size(
+          Math.ceil(b.w / this.standardTileSize),
+          Math.ceil(b.h / this.standardTileSize)
+        )),
+        this.tierSizeInTiles.push(a),
+        this.tierImageSize.push(b);
+    this.tierSizeInTiles.reverse();
+    this.tierImageSize.reverse();
+    this.numberOfTiers = this.tierSizeInTiles.length;
+    b = [1];
+    this.tileCountUpToTier = [0];
+    for (a = 1; a < this.numberOfTiers; a++)
+      b.unshift(Math.pow(2, a)),
+        this.tileCountUpToTier.push(
+          this.tierSizeInTiles[a - 1].w * this.tierSizeInTiles[a - 1].h +
+            this.tileCountUpToTier[a - 1]
+        );
+    this.serverResolutions || (this.serverResolutions = b);
+  },
+  destroy: function () {
+    OpenLayers.Layer.Grid.prototype.destroy.apply(this, arguments);
+    this.tileCountUpToTier.length = 0;
+    this.tierSizeInTiles.length = 0;
+    this.tierImageSize.length = 0;
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.Zoomify(this.name, this.url, this.size, this.options));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  getURL: function (a) {
+    a = this.adjustBounds(a);
+    var b = this.getServerResolution(),
+      c = Math.round((a.left - this.tileOrigin.lon) / (b * this.tileSize.w));
+    a = Math.round((this.tileOrigin.lat - a.top) / (b * this.tileSize.h));
+    b = this.getZoomForResolution(b);
+    c =
+      "TileGroup" +
+      Math.floor((c + a * this.tierSizeInTiles[b].w + this.tileCountUpToTier[b]) / 256) +
+      "/" +
+      b +
+      "-" +
+      c +
+      "-" +
+      a +
+      ".jpg";
+    b = this.url;
+    OpenLayers.Util.isArray(b) && (b = this.selectUrl(c, b));
+    return b + c;
+  },
+  getImageSize: function () {
+    if (0 < arguments.length) {
+      var a = this.adjustBounds(arguments[0]),
+        b = this.getServerResolution(),
+        c = Math.round((a.left - this.tileOrigin.lon) / (b * this.tileSize.w)),
+        a = Math.round((this.tileOrigin.lat - a.top) / (b * this.tileSize.h)),
+        b = this.getZoomForResolution(b),
+        d = this.standardTileSize,
+        e = this.standardTileSize;
+      c == this.tierSizeInTiles[b].w - 1 && (d = this.tierImageSize[b].w % this.standardTileSize);
+      a == this.tierSizeInTiles[b].h - 1 && (e = this.tierImageSize[b].h % this.standardTileSize);
+      return new OpenLayers.Size(d, e);
+    }
+    return this.tileSize;
+  },
+  setMap: function (a) {
+    OpenLayers.Layer.Grid.prototype.setMap.apply(this, arguments);
+    this.tileOrigin = new OpenLayers.LonLat(this.map.maxExtent.left, this.map.maxExtent.top);
+  },
+  CLASS_NAME: "OpenLayers.Layer.Zoomify",
+});
+OpenLayers.Layer.MapServer = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  DEFAULT_PARAMS: { mode: "map", map_imagetype: "png" },
+  initialize: function (a, b, c, d) {
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, arguments);
+    this.params = OpenLayers.Util.applyDefaults(this.params, this.DEFAULT_PARAMS);
+    if (null == d || null == d.isBaseLayer)
+      this.isBaseLayer = "true" != this.params.transparent && !0 != this.params.transparent;
+  },
+  clone: function (a) {
+    null == a &&
+      (a = new OpenLayers.Layer.MapServer(this.name, this.url, this.params, this.getOptions()));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  getURL: function (a) {
+    a = this.adjustBounds(a);
+    a = [a.left, a.bottom, a.right, a.top];
+    var b = this.getImageSize();
+    return this.getFullRequestString({
+      mapext: a,
+      imgext: a,
+      map_size: [b.w, b.h],
+      imgx: b.w / 2,
+      imgy: b.h / 2,
+      imgxy: [b.w, b.h],
+    });
+  },
+  getFullRequestString: function (a, b) {
+    var c = null == b ? this.url : b,
+      d = OpenLayers.Util.extend({}, this.params),
+      d = OpenLayers.Util.extend(d, a),
+      e = OpenLayers.Util.getParameterString(d);
+    OpenLayers.Util.isArray(c) && (c = this.selectUrl(e, c));
+    var e = OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),
+      f;
+    for (f in d) f.toUpperCase() in e && delete d[f];
+    e = OpenLayers.Util.getParameterString(d);
+    d = c;
+    e = e.replace(/,/g, "+");
+    "" != e &&
+      ((f = c.charAt(c.length - 1)),
+      (d = "&" == f || "?" == f ? d + e : -1 == c.indexOf("?") ? d + ("?" + e) : d + ("&" + e)));
+    return d;
+  },
+  CLASS_NAME: "OpenLayers.Layer.MapServer",
+});
+OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
+  xmlns: "urn:schemas-microsoft-com:vml",
+  symbolCache: {},
+  offset: null,
+  initialize: function (a) {
+    if (this.supported()) {
+      if (!document.namespaces.olv) {
+        document.namespaces.add("olv", this.xmlns);
+        for (
+          var b = document.createStyleSheet(),
+            c = "shape rect oval fill stroke imagedata group textbox".split(" "),
+            d = 0,
+            e = c.length;
+          d < e;
+          d++
+        )
+          b.addRule(
+            "olv\\:" + c[d],
+            "behavior: url(#default#VML); position: absolute; display: inline-block;"
+          );
+      }
+      OpenLayers.Renderer.Elements.prototype.initialize.apply(this, arguments);
+    }
+  },
+  supported: function () {
+    return !!document.namespaces;
+  },
+  setExtent: function (a, b) {
+    var c = OpenLayers.Renderer.Elements.prototype.setExtent.apply(this, arguments),
+      d = this.getResolution(),
+      e = (a.left / d) | 0,
+      d = (a.top / d - this.size.h) | 0;
+    b || !this.offset
+      ? ((this.offset = { x: e, y: d }), (d = e = 0))
+      : ((e -= this.offset.x), (d -= this.offset.y));
+    this.root.coordorigin = e - this.xOffset + " " + d;
+    for (var e = [this.root, this.vectorRoot, this.textRoot], f = 0, g = e.length; f < g; ++f)
+      (d = e[f]), (d.coordsize = this.size.w + " " + this.size.h);
+    this.root.style.flip = "y";
+    return c;
+  },
+  setSize: function (a) {
+    OpenLayers.Renderer.prototype.setSize.apply(this, arguments);
+    for (
+      var b = [this.rendererRoot, this.root, this.vectorRoot, this.textRoot],
+        c = this.size.w + "px",
+        d = this.size.h + "px",
+        e,
+        f = 0,
+        g = b.length;
+      f < g;
+      ++f
+    )
+      (e = b[f]), (e.style.width = c), (e.style.height = d);
+  },
+  getNodeType: function (a, b) {
+    var c = null;
+    switch (a.CLASS_NAME) {
+      case "OpenLayers.Geometry.Point":
+        c = b.externalGraphic
+          ? "olv:rect"
+          : this.isComplexSymbol(b.graphicName)
+          ? "olv:shape"
+          : "olv:oval";
+        break;
+      case "OpenLayers.Geometry.Rectangle":
+        c = "olv:rect";
+        break;
+      case "OpenLayers.Geometry.LineString":
+      case "OpenLayers.Geometry.LinearRing":
+      case "OpenLayers.Geometry.Polygon":
+      case "OpenLayers.Geometry.Curve":
+        c = "olv:shape";
+    }
+    return c;
+  },
+  setStyle: function (a, b, c, d) {
+    b = b || a._style;
+    c = c || a._options;
+    var e = b.fillColor,
+      f = b.title || b.graphicTitle;
+    f && (a.title = f);
+    if ("OpenLayers.Geometry.Point" === a._geometryClass)
+      if (b.externalGraphic) {
+        c.isFilled = !0;
+        var e = b.graphicWidth || b.graphicHeight,
+          f = b.graphicHeight || b.graphicWidth,
+          e = e ? e : 2 * b.pointRadius,
+          f = f ? f : 2 * b.pointRadius,
+          g = this.getResolution(),
+          h = void 0 != b.graphicXOffset ? b.graphicXOffset : -(0.5 * e),
+          k = void 0 != b.graphicYOffset ? b.graphicYOffset : -(0.5 * f);
+        a.style.left = (((d.x - this.featureDx) / g - this.offset.x + h) | 0) + "px";
+        a.style.top = ((d.y / g - this.offset.y - (k + f)) | 0) + "px";
+        a.style.width = e + "px";
+        a.style.height = f + "px";
+        a.style.flip = "y";
+        e = "none";
+        c.isStroked = !1;
+      } else
+        this.isComplexSymbol(b.graphicName)
+          ? ((f = this.importSymbol(b.graphicName)),
+            (a.path = f.path),
+            (a.coordorigin = f.left + "," + f.bottom),
+            (f = f.size),
+            (a.coordsize = f + "," + f),
+            this.drawCircle(a, d, b.pointRadius),
+            (a.style.flip = "y"))
+          : this.drawCircle(a, d, b.pointRadius);
+    c.isFilled ? (a.fillcolor = e) : (a.filled = "false");
+    d = a.getElementsByTagName("fill");
+    d = 0 == d.length ? null : d[0];
+    c.isFilled
+      ? (d || (d = this.createNode("olv:fill", a.id + "_fill")),
+        (d.opacity = b.fillOpacity),
+        "OpenLayers.Geometry.Point" === a._geometryClass &&
+          b.externalGraphic &&
+          (b.graphicOpacity && (d.opacity = b.graphicOpacity),
+          (d.src = b.externalGraphic),
+          (d.type = "frame"),
+          (b.graphicWidth && b.graphicHeight) || (d.aspect = "atmost")),
+        d.parentNode != a && a.appendChild(d))
+      : d && a.removeChild(d);
+    e = b.rotation;
+    if (void 0 !== e || void 0 !== a._rotation)
+      (a._rotation = e),
+        b.externalGraphic
+          ? (this.graphicRotate(a, h, k, b), (d.opacity = 0))
+          : "OpenLayers.Geometry.Point" === a._geometryClass && (a.style.rotation = e || 0);
+    h = a.getElementsByTagName("stroke");
+    h = 0 == h.length ? null : h[0];
+    c.isStroked
+      ? (h || ((h = this.createNode("olv:stroke", a.id + "_stroke")), a.appendChild(h)),
+        (h.on = !0),
+        (h.color = b.strokeColor),
+        (h.weight = b.strokeWidth + "px"),
+        (h.opacity = b.strokeOpacity),
+        (h.endcap = "butt" == b.strokeLinecap ? "flat" : b.strokeLinecap || "round"),
+        b.strokeDashstyle && (h.dashstyle = this.dashStyle(b)))
+      : ((a.stroked = !1), h && (h.on = !1));
+    "inherit" != b.cursor && null != b.cursor && (a.style.cursor = b.cursor);
+    return a;
+  },
+  graphicRotate: function (a, b, c, d) {
+    d = d || a._style;
+    var e = d.rotation || 0,
+      f,
+      g;
+    if (d.graphicWidth && d.graphicHeight) {
+      g = Math.max(d.graphicWidth, d.graphicHeight);
+      f = d.graphicWidth / d.graphicHeight;
+      var h = Math.round(d.graphicWidth || g * f),
+        k = Math.round(d.graphicHeight || g);
+      a.style.width = h + "px";
+      a.style.height = k + "px";
+      var l = document.getElementById(a.id + "_image");
+      l || ((l = this.createNode("olv:imagedata", a.id + "_image")), a.appendChild(l));
+      l.style.width = h + "px";
+      l.style.height = k + "px";
+      l.src = d.externalGraphic;
+      l.style.filter =
+        "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='', sizingMethod='scale')";
+      l = (e * Math.PI) / 180;
+      e = Math.sin(l);
+      l = Math.cos(l);
+      e =
+        "progid:DXImageTransform.Microsoft.Matrix(M11=" +
+        l +
+        ",M12=" +
+        -e +
+        ",M21=" +
+        e +
+        ",M22=" +
+        l +
+        ",SizingMethod='auto expand')\n";
+      (l = d.graphicOpacity || d.fillOpacity) &&
+        1 != l &&
+        (e += "progid:DXImageTransform.Microsoft.BasicImage(opacity=" + l + ")\n");
+      a.style.filter = e;
+      e = new OpenLayers.Geometry.Point(-b, -c);
+      h = new OpenLayers.Bounds(0, 0, h, k).toGeometry();
+      h.rotate(d.rotation, e);
+      h = h.getBounds();
+      a.style.left = Math.round(parseInt(a.style.left) + h.left) + "px";
+      a.style.top = Math.round(parseInt(a.style.top) - h.bottom) + "px";
+    } else {
+      var m = new Image();
+      m.onreadystatechange = OpenLayers.Function.bind(function () {
+        if ("complete" == m.readyState || "interactive" == m.readyState)
+          (f = m.width / m.height),
+            (g = Math.max(2 * d.pointRadius, d.graphicWidth || 0, d.graphicHeight || 0)),
+            (b *= f),
+            (d.graphicWidth = g * f),
+            (d.graphicHeight = g),
+            this.graphicRotate(a, b, c, d);
+      }, this);
+      m.src = d.externalGraphic;
+    }
+  },
+  postDraw: function (a) {
+    a.style.visibility = "visible";
+    var b = a._style.fillColor,
+      c = a._style.strokeColor;
+    "none" == b && a.fillcolor != b && (a.fillcolor = b);
+    "none" == c && a.strokecolor != c && (a.strokecolor = c);
+  },
+  setNodeDimension: function (a, b) {
+    var c = b.getBounds();
+    if (c) {
+      var d = this.getResolution(),
+        c = new OpenLayers.Bounds(
+          ((c.left - this.featureDx) / d - this.offset.x) | 0,
+          (c.bottom / d - this.offset.y) | 0,
+          ((c.right - this.featureDx) / d - this.offset.x) | 0,
+          (c.top / d - this.offset.y) | 0
+        );
+      a.style.left = c.left + "px";
+      a.style.top = c.top + "px";
+      a.style.width = c.getWidth() + "px";
+      a.style.height = c.getHeight() + "px";
+      a.coordorigin = c.left + " " + c.top;
+      a.coordsize = c.getWidth() + " " + c.getHeight();
+    }
+  },
+  dashStyle: function (a) {
+    a = a.strokeDashstyle;
+    switch (a) {
+      case "solid":
+      case "dot":
+      case "dash":
+      case "dashdot":
+      case "longdash":
+      case "longdashdot":
+        return a;
+      default:
+        return (
+          (a = a.split(/[ ,]/)),
+          2 == a.length
+            ? 1 * a[0] >= 2 * a[1]
+              ? "longdash"
+              : 1 == a[0] || 1 == a[1]
+              ? "dot"
+              : "dash"
+            : 4 == a.length
+            ? 1 * a[0] >= 2 * a[1]
+              ? "longdashdot"
+              : "dashdot"
+            : "solid"
+        );
+    }
+  },
+  createNode: function (a, b) {
+    var c = document.createElement(a);
+    b && (c.id = b);
+    c.unselectable = "on";
+    c.onselectstart = OpenLayers.Function.False;
+    return c;
+  },
+  nodeTypeCompare: function (a, b) {
+    var c = b,
+      d = c.indexOf(":");
+    -1 != d && (c = c.substr(d + 1));
+    var e = a.nodeName,
+      d = e.indexOf(":");
+    -1 != d && (e = e.substr(d + 1));
+    return c == e;
+  },
+  createRenderRoot: function () {
+    return this.nodeFactory(this.container.id + "_vmlRoot", "div");
+  },
+  createRoot: function (a) {
+    return this.nodeFactory(this.container.id + a, "olv:group");
+  },
+  drawPoint: function (a, b) {
+    return this.drawCircle(a, b, 1);
+  },
+  drawCircle: function (a, b, c) {
+    if (!isNaN(b.x) && !isNaN(b.y)) {
+      var d = this.getResolution();
+      a.style.left = (((b.x - this.featureDx) / d - this.offset.x) | 0) - c + "px";
+      a.style.top = ((b.y / d - this.offset.y) | 0) - c + "px";
+      b = 2 * c;
+      a.style.width = b + "px";
+      a.style.height = b + "px";
+      return a;
+    }
+    return !1;
+  },
+  drawLineString: function (a, b) {
+    return this.drawLine(a, b, !1);
+  },
+  drawLinearRing: function (a, b) {
+    return this.drawLine(a, b, !0);
+  },
+  drawLine: function (a, b, c) {
+    this.setNodeDimension(a, b);
+    for (
+      var d = this.getResolution(), e = b.components.length, f = Array(e), g, h, k = 0;
+      k < e;
+      k++
+    )
+      (g = b.components[k]),
+        (h = ((g.x - this.featureDx) / d - this.offset.x) | 0),
+        (g = (g.y / d - this.offset.y) | 0),
+        (f[k] = " " + h + "," + g + " l ");
+    b = c ? " x e" : " e";
+    a.path = "m" + f.join("") + b;
+    return a;
+  },
+  drawPolygon: function (a, b) {
+    this.setNodeDimension(a, b);
+    var c = this.getResolution(),
+      d = [],
+      e,
+      f,
+      g,
+      h,
+      k,
+      l,
+      m,
+      n,
+      p,
+      q;
+    e = 0;
+    for (f = b.components.length; e < f; e++) {
+      d.push("m");
+      g = b.components[e].components;
+      h = 0 === e;
+      l = k = null;
+      m = 0;
+      for (n = g.length; m < n; m++)
+        (p = g[m]),
+          (q = ((p.x - this.featureDx) / c - this.offset.x) | 0),
+          (p = (p.y / c - this.offset.y) | 0),
+          (q = " " + q + "," + p),
+          d.push(q),
+          0 == m && d.push(" l"),
+          h || (k ? k != q && (l ? l != q && (h = !0) : (l = q)) : (k = q));
+      d.push(h ? " x " : " ");
+    }
+    d.push("e");
+    a.path = d.join("");
+    return a;
+  },
+  drawRectangle: function (a, b) {
+    var c = this.getResolution();
+    a.style.left = (((b.x - this.featureDx) / c - this.offset.x) | 0) + "px";
+    a.style.top = ((b.y / c - this.offset.y) | 0) + "px";
+    a.style.width = ((b.width / c) | 0) + "px";
+    a.style.height = ((b.height / c) | 0) + "px";
+    return a;
+  },
+  drawText: function (a, b, c) {
+    var d = this.nodeFactory(a + this.LABEL_ID_SUFFIX, "olv:rect"),
+      e = this.nodeFactory(a + this.LABEL_ID_SUFFIX + "_textbox", "olv:textbox"),
+      f = this.getResolution();
+    d.style.left = (((c.x - this.featureDx) / f - this.offset.x) | 0) + "px";
+    d.style.top = ((c.y / f - this.offset.y) | 0) + "px";
+    d.style.flip = "y";
+    e.innerText = b.label;
+    "inherit" != b.cursor && null != b.cursor && (e.style.cursor = b.cursor);
+    b.fontColor && (e.style.color = b.fontColor);
+    b.fontOpacity && (e.style.filter = "alpha(opacity=" + 100 * b.fontOpacity + ")");
+    b.fontFamily && (e.style.fontFamily = b.fontFamily);
+    b.fontSize && (e.style.fontSize = b.fontSize);
+    b.fontWeight && (e.style.fontWeight = b.fontWeight);
+    b.fontStyle && (e.style.fontStyle = b.fontStyle);
+    !0 === b.labelSelect &&
+      ((d._featureId = a),
+      (e._featureId = a),
+      (e._geometry = c),
+      (e._geometryClass = c.CLASS_NAME));
+    e.style.whiteSpace = "nowrap";
+    e.inset = "1px,0px,0px,0px";
+    d.parentNode || (d.appendChild(e), this.textRoot.appendChild(d));
+    b = b.labelAlign || "cm";
+    1 == b.length && (b += "m");
+    a = e.clientWidth * OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(0, 1)];
+    e = e.clientHeight * OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(1, 1)];
+    d.style.left = parseInt(d.style.left) - a - 1 + "px";
+    d.style.top = parseInt(d.style.top) + e + "px";
+  },
+  moveRoot: function (a) {
+    var b = this.map.getLayer(a.container.id);
+    b instanceof OpenLayers.Layer.Vector.RootContainer &&
+      (b = this.map.getLayer(this.container.id));
+    b && b.renderer.clear();
+    OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this, arguments);
+    b && b.redraw();
+  },
+  importSymbol: function (a) {
+    var b = this.container.id + "-" + a,
+      c = this.symbolCache[b];
+    if (c) return c;
+    c = OpenLayers.Renderer.symbol[a];
+    if (!c) throw Error(a + " is not a valid symbol name");
+    a = new OpenLayers.Bounds(Number.MAX_VALUE, Number.MAX_VALUE, 0, 0);
+    for (var d = ["m"], e = 0; e < c.length; e += 2) {
+      var f = c[e],
+        g = c[e + 1];
+      a.left = Math.min(a.left, f);
+      a.bottom = Math.min(a.bottom, g);
+      a.right = Math.max(a.right, f);
+      a.top = Math.max(a.top, g);
+      d.push(f);
+      d.push(g);
+      0 == e && d.push("l");
+    }
+    d.push("x e");
+    c = d.join(" ");
+    d = (a.getWidth() - a.getHeight()) / 2;
+    0 < d ? ((a.bottom -= d), (a.top += d)) : ((a.left += d), (a.right -= d));
+    c = { path: c, size: a.getWidth(), left: a.left, bottom: a.bottom };
+    return (this.symbolCache[b] = c);
+  },
+  CLASS_NAME: "OpenLayers.Renderer.VML",
+});
+OpenLayers.Renderer.VML.LABEL_SHIFT = { l: 0, c: 0.5, r: 1, t: 0, m: 0.5, b: 1 };
+OpenLayers.Control.CacheRead = OpenLayers.Class(OpenLayers.Control, {
+  fetchEvent: "tileloadstart",
+  layers: null,
+  autoActivate: !0,
+  setMap: function (a) {
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+    var b,
+      c = this.layers || a.layers;
+    for (b = c.length - 1; 0 <= b; --b) this.addLayer({ layer: c[b] });
+    if (!this.layers)
+      a.events.on({ addlayer: this.addLayer, removeLayer: this.removeLayer, scope: this });
+  },
+  addLayer: function (a) {
+    a.layer.events.register(this.fetchEvent, this, this.fetch);
+  },
+  removeLayer: function (a) {
+    a.layer.events.unregister(this.fetchEvent, this, this.fetch);
+  },
+  fetch: function (a) {
+    if (this.active && window.localStorage && a.tile instanceof OpenLayers.Tile.Image) {
+      var b = a.tile,
+        c = b.url;
+      !b.layer.crossOriginKeyword &&
+        OpenLayers.ProxyHost &&
+        0 === c.indexOf(OpenLayers.ProxyHost) &&
+        (c = OpenLayers.Control.CacheWrite.urlMap[c]);
+      if ((c = window.localStorage.getItem("olCache_" + c)))
+        (b.url = c), "tileerror" === a.type && b.setImgSrc(c);
+    }
+  },
+  destroy: function () {
+    if (this.layers || this.map) {
+      var a,
+        b = this.layers || this.map.layers;
+      for (a = b.length - 1; 0 <= a; --a) this.removeLayer({ layer: b[a] });
+    }
+    this.map &&
+      this.map.events.un({ addlayer: this.addLayer, removeLayer: this.removeLayer, scope: this });
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  CLASS_NAME: "OpenLayers.Control.CacheRead",
+});
+OpenLayers.Protocol.WFS.v1_0_0 = OpenLayers.Class(OpenLayers.Protocol.WFS.v1, {
+  version: "1.0.0",
+  CLASS_NAME: "OpenLayers.Protocol.WFS.v1_0_0",
+});
+OpenLayers.Format.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Format.XML, {
+  layerIdentifier: "_layer",
+  featureIdentifier: "_feature",
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  gmlFormat: null,
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    var b = a.documentElement;
+    if (b) {
+      var c = this["read_" + b.nodeName];
+      a = c ? c.call(this, b) : new OpenLayers.Format.GML(this.options ? this.options : {}).read(a);
+    }
+    return a;
+  },
+  read_msGMLOutput: function (a) {
+    var b = [];
+    if ((a = this.getSiblingNodesByTagCriteria(a, this.layerIdentifier)))
+      for (var c = 0, d = a.length; c < d; ++c) {
+        var e = a[c],
+          f = e.nodeName;
+        e.prefix && (f = f.split(":")[1]);
+        f = f.replace(this.layerIdentifier, "");
+        if ((e = this.getSiblingNodesByTagCriteria(e, this.featureIdentifier)))
+          for (var g = 0; g < e.length; g++) {
+            var h = e[g],
+              k = this.parseGeometry(h),
+              h = this.parseAttributes(h),
+              h = new OpenLayers.Feature.Vector(k.geometry, h, null);
+            h.bounds = k.bounds;
+            h.type = f;
+            b.push(h);
+          }
+      }
+    return b;
+  },
+  read_FeatureInfoResponse: function (a) {
+    var b = [];
+    a = this.getElementsByTagNameNS(a, "*", "FIELDS");
+    for (var c = 0, d = a.length; c < d; c++) {
+      var e = a[c],
+        f = {},
+        g,
+        h = e.attributes.length;
+      if (0 < h)
+        for (g = 0; g < h; g++) {
+          var k = e.attributes[g];
+          f[k.nodeName] = k.nodeValue;
+        }
+      else
+        for (e = e.childNodes, g = 0, h = e.length; g < h; ++g)
+          (k = e[g]), 3 != k.nodeType && (f[k.getAttribute("name")] = k.getAttribute("value"));
+      b.push(new OpenLayers.Feature.Vector(null, f, null));
+    }
+    return b;
+  },
+  getSiblingNodesByTagCriteria: function (a, b) {
+    var c = [],
+      d,
+      e,
+      f,
+      g;
+    if (a && a.hasChildNodes()) {
+      d = a.childNodes;
+      f = d.length;
+      for (var h = 0; h < f; h++) {
+        for (g = d[h]; g && 1 != g.nodeType; ) (g = g.nextSibling), h++;
+        e = g ? g.nodeName : "";
+        0 < e.length && -1 < e.indexOf(b)
+          ? c.push(g)
+          : ((e = this.getSiblingNodesByTagCriteria(g, b)),
+            0 < e.length && (0 == c.length ? (c = e) : c.push(e)));
+      }
+    }
+    return c;
+  },
+  parseAttributes: function (a) {
+    var b = {};
+    if (1 == a.nodeType) {
+      a = a.childNodes;
+      for (var c = a.length, d = 0; d < c; ++d) {
+        var e = a[d];
+        if (1 == e.nodeType) {
+          var f = e.childNodes,
+            e = e.prefix ? e.nodeName.split(":")[1] : e.nodeName;
+          0 == f.length
+            ? (b[e] = null)
+            : 1 == f.length &&
+              ((f = f[0]), 3 == f.nodeType || 4 == f.nodeType) &&
+              ((f = f.nodeValue.replace(this.regExes.trimSpace, "")), (b[e] = f));
+        }
+      }
+    }
+    return b;
+  },
+  parseGeometry: function (a) {
+    this.gmlFormat || (this.gmlFormat = new OpenLayers.Format.GML());
+    a = this.gmlFormat.parseFeature(a);
+    var b,
+      c = null;
+    a && ((b = a.geometry && a.geometry.clone()), (c = a.bounds && a.bounds.clone()), a.destroy());
+    return { geometry: b, bounds: c };
+  },
+  CLASS_NAME: "OpenLayers.Format.WMSGetFeatureInfo",
+});
+OpenLayers.Control.WMTSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
+  hover: !1,
+  requestEncoding: "KVP",
+  drillDown: !1,
+  maxFeatures: 10,
+  clickCallback: "click",
+  layers: null,
+  queryVisible: !0,
+  infoFormat: "text/html",
+  vendorParams: {},
+  format: null,
+  formatOptions: null,
+  handler: null,
+  hoverRequest: null,
+  pending: 0,
+  initialize: function (a) {
+    a = a || {};
+    a.handlerOptions = a.handlerOptions || {};
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+    this.format || (this.format = new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));
+    !0 === this.drillDown && (this.hover = !1);
+    this.hover
+      ? (this.handler = new OpenLayers.Handler.Hover(
+          this,
+          { move: this.cancelHover, pause: this.getInfoForHover },
+          OpenLayers.Util.extend(this.handlerOptions.hover || {}, { delay: 250 })
+        ))
+      : ((a = {}),
+        (a[this.clickCallback] = this.getInfoForClick),
+        (this.handler = new OpenLayers.Handler.Click(this, a, this.handlerOptions.click || {})));
+  },
+  getInfoForClick: function (a) {
+    this.request(a.xy, {});
+  },
+  getInfoForHover: function (a) {
+    this.request(a.xy, { hover: !0 });
+  },
+  cancelHover: function () {
+    this.hoverRequest &&
+      (--this.pending,
+      0 >= this.pending &&
+        (OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait"), (this.pending = 0)),
+      this.hoverRequest.abort(),
+      (this.hoverRequest = null));
+  },
+  findLayers: function () {
+    for (
+      var a = this.layers || this.map.layers, b = [], c, d = a.length - 1;
+      0 <= d &&
+      ((c = a[d]),
+      !(c instanceof OpenLayers.Layer.WMTS) ||
+        c.requestEncoding !== this.requestEncoding ||
+        (this.queryVisible && !c.getVisibility()) ||
+        (b.push(c), this.drillDown && !this.hover));
+      --d
+    );
+    return b;
+  },
+  buildRequestOptions: function (a, b) {
+    var c = this.map.getLonLatFromPixel(b),
+      d = a.getURL(new OpenLayers.Bounds(c.lon, c.lat, c.lon, c.lat)),
+      d = OpenLayers.Util.getParameters(d),
+      c = a.getTileInfo(c);
+    OpenLayers.Util.extend(d, {
+      service: "WMTS",
+      version: a.version,
+      request: "GetFeatureInfo",
+      infoFormat: this.infoFormat,
+      i: c.i,
+      j: c.j,
+    });
+    OpenLayers.Util.applyDefaults(d, this.vendorParams);
+    return {
+      url: OpenLayers.Util.isArray(a.url) ? a.url[0] : a.url,
+      params: OpenLayers.Util.upperCaseObject(d),
+      callback: function (c) {
+        this.handleResponse(b, c, a);
+      },
+      scope: this,
+    };
+  },
+  request: function (a, b) {
+    b = b || {};
+    var c = this.findLayers();
+    if (0 < c.length) {
+      for (var d, e, f = 0, g = c.length; f < g; f++)
+        (e = c[f]),
+          (d = this.events.triggerEvent("beforegetfeatureinfo", { xy: a, layer: e })),
+          !1 !== d &&
+            (++this.pending,
+            (d = this.buildRequestOptions(e, a)),
+            (d = OpenLayers.Request.GET(d)),
+            !0 === b.hover && (this.hoverRequest = d));
+      0 < this.pending && OpenLayers.Element.addClass(this.map.viewPortDiv, "olCursorWait");
+    }
+  },
+  handleResponse: function (a, b, c) {
+    --this.pending;
+    0 >= this.pending &&
+      (OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait"), (this.pending = 0));
+    if (b.status && (200 > b.status || 300 <= b.status))
+      this.events.triggerEvent("exception", { xy: a, request: b, layer: c });
+    else {
+      var d = b.responseXML;
+      (d && d.documentElement) || (d = b.responseText);
+      var e, f;
+      try {
+        e = this.format.read(d);
+      } catch (g) {
+        (f = !0), this.events.triggerEvent("exception", { xy: a, request: b, error: g, layer: c });
+      }
+      f ||
+        this.events.triggerEvent("getfeatureinfo", {
+          text: b.responseText,
+          features: e,
+          request: b,
+          xy: a,
+          layer: c,
+        });
+    }
+  },
+  CLASS_NAME: "OpenLayers.Control.WMTSGetFeatureInfo",
+});
+OpenLayers.Protocol.CSW.v2_0_2 = OpenLayers.Class(OpenLayers.Protocol, {
+  formatOptions: null,
+  initialize: function (a) {
+    OpenLayers.Protocol.prototype.initialize.apply(this, [a]);
+    a.format ||
+      (this.format = new OpenLayers.Format.CSWGetRecords.v2_0_2(
+        OpenLayers.Util.extend({}, this.formatOptions)
+      ));
+  },
+  destroy: function () {
+    this.options && !this.options.format && this.format.destroy();
+    this.format = null;
+    OpenLayers.Protocol.prototype.destroy.apply(this);
+  },
+  read: function (a) {
+    a = OpenLayers.Util.extend({}, a);
+    OpenLayers.Util.applyDefaults(a, this.options || {});
+    var b = new OpenLayers.Protocol.Response({ requestType: "read" }),
+      c = this.format.write(a.params || a);
+    b.priv = OpenLayers.Request.POST({
+      url: a.url,
+      callback: this.createCallback(this.handleRead, b, a),
+      params: a.params,
+      headers: a.headers,
+      data: c,
+    });
+    return b;
+  },
+  handleRead: function (a, b) {
+    if (b.callback) {
+      var c = a.priv;
+      200 <= c.status && 300 > c.status
+        ? ((a.data = this.parseData(c)), (a.code = OpenLayers.Protocol.Response.SUCCESS))
+        : (a.code = OpenLayers.Protocol.Response.FAILURE);
+      b.callback.call(b.scope, a);
+    }
+  },
+  parseData: function (a) {
+    var b = a.responseXML;
+    (b && b.documentElement) || (b = a.responseText);
+    return !b || 0 >= b.length ? null : this.format.read(b);
+  },
+  CLASS_NAME: "OpenLayers.Protocol.CSW.v2_0_2",
+});
+OpenLayers.Format.WCSCapabilities.v1_1_0 = OpenLayers.Class(OpenLayers.Format.WCSCapabilities.v1, {
+  namespaces: {
+    wcs: "http://www.opengis.net/wcs/1.1",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+    ows: "http://www.opengis.net/ows/1.1",
+  },
+  errorProperty: "operationsMetadata",
+  readers: {
+    wcs: OpenLayers.Util.applyDefaults(
+      {
+        Capabilities: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        Contents: function (a, b) {
+          b.contentMetadata = [];
+          this.readChildNodes(a, b.contentMetadata);
+        },
+        CoverageSummary: function (a, b) {
+          var c = {};
+          this.readChildNodes(a, c);
+          b.push(c);
+        },
+        Identifier: function (a, b) {
+          b.identifier = this.getChildValue(a);
+        },
+        Title: function (a, b) {
+          b.title = this.getChildValue(a);
+        },
+        Abstract: function (a, b) {
+          b["abstract"] = this.getChildValue(a);
+        },
+        SupportedCRS: function (a, b) {
+          var c = this.getChildValue(a);
+          c && (b.supportedCRS || (b.supportedCRS = []), b.supportedCRS.push(c));
+        },
+        SupportedFormat: function (a, b) {
+          var c = this.getChildValue(a);
+          c && (b.supportedFormat || (b.supportedFormat = []), b.supportedFormat.push(c));
+        },
+      },
+      OpenLayers.Format.WCSCapabilities.v1.prototype.readers.wcs
+    ),
+    ows: OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows,
+  },
+  CLASS_NAME: "OpenLayers.Format.WCSCapabilities.v1_1_0",
+});
+OpenLayers.Control.Graticule = OpenLayers.Class(OpenLayers.Control, {
+  autoActivate: !0,
+  intervals: [45, 30, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.01, 0.005, 0.002, 0.001],
+  displayInLayerSwitcher: !0,
+  visible: !0,
+  numPoints: 50,
+  targetSize: 200,
+  layerName: null,
+  labelled: !0,
+  labelFormat: "dm",
+  lineSymbolizer: { strokeColor: "#333", strokeWidth: 1, strokeOpacity: 0.5 },
+  labelSymbolizer: {},
+  gratLayer: null,
+  initialize: function (a) {
+    a = a || {};
+    a.layerName = a.layerName || OpenLayers.i18n("Graticule");
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+    this.labelSymbolizer.stroke = !1;
+    this.labelSymbolizer.fill = !1;
+    this.labelSymbolizer.label = "${label}";
+    this.labelSymbolizer.labelAlign = "${labelAlign}";
+    this.labelSymbolizer.labelXOffset = "${xOffset}";
+    this.labelSymbolizer.labelYOffset = "${yOffset}";
+  },
+  destroy: function () {
+    this.deactivate();
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+    this.gratLayer && (this.gratLayer.destroy(), (this.gratLayer = null));
+  },
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    if (!this.gratLayer) {
+      var a = new OpenLayers.Style(
+        {},
+        {
+          rules: [
+            new OpenLayers.Rule({
+              symbolizer: { Point: this.labelSymbolizer, Line: this.lineSymbolizer },
+            }),
+          ],
+        }
+      );
+      this.gratLayer = new OpenLayers.Layer.Vector(this.layerName, {
+        styleMap: new OpenLayers.StyleMap({ default: a }),
+        visibility: this.visible,
+        displayInLayerSwitcher: this.displayInLayerSwitcher,
+      });
+    }
+    return this.div;
+  },
+  activate: function () {
+    return OpenLayers.Control.prototype.activate.apply(this, arguments)
+      ? (this.map.addLayer(this.gratLayer),
+        this.map.events.register("moveend", this, this.update),
+        this.update(),
+        !0)
+      : !1;
+  },
+  deactivate: function () {
+    return OpenLayers.Control.prototype.deactivate.apply(this, arguments)
+      ? (this.map.events.unregister("moveend", this, this.update),
+        this.map.removeLayer(this.gratLayer),
+        !0)
+      : !1;
+  },
+  update: function () {
+    var a = this.map.getExtent();
+    if (a) {
+      this.gratLayer.destroyFeatures();
+      var b = new OpenLayers.Projection("EPSG:4326"),
+        c = this.map.getProjectionObject(),
+        d = this.map.getResolution();
+      c.proj && "longlat" == c.proj.projName && (this.numPoints = 1);
+      var e = this.map.getCenter(),
+        f = new OpenLayers.Pixel(e.lon, e.lat);
+      OpenLayers.Projection.transform(f, c, b);
+      for (var e = this.targetSize * d, e = e * e, g, d = 0; d < this.intervals.length; ++d) {
+        g = this.intervals[d];
+        var h = g / 2,
+          k = f.offset({ x: -h, y: -h }),
+          h = f.offset({ x: h, y: h });
+        OpenLayers.Projection.transform(k, b, c);
+        OpenLayers.Projection.transform(h, b, c);
+        if ((k.x - h.x) * (k.x - h.x) + (k.y - h.y) * (k.y - h.y) <= e) break;
+      }
+      f.x = Math.floor(f.x / g) * g;
+      f.y = Math.floor(f.y / g) * g;
+      var d = 0,
+        e = [f.clone()],
+        h = f.clone(),
+        l;
+      do
+        (h = h.offset({ x: 0, y: g })),
+          (l = OpenLayers.Projection.transform(h.clone(), b, c)),
+          e.unshift(h);
+      while (a.containsPixel(l) && 1e3 > ++d);
+      h = f.clone();
+      do
+        (h = h.offset({ x: 0, y: -g })),
+          (l = OpenLayers.Projection.transform(h.clone(), b, c)),
+          e.push(h);
+      while (a.containsPixel(l) && 1e3 > ++d);
+      d = 0;
+      k = [f.clone()];
+      h = f.clone();
+      do
+        (h = h.offset({ x: -g, y: 0 })),
+          (l = OpenLayers.Projection.transform(h.clone(), b, c)),
+          k.unshift(h);
+      while (a.containsPixel(l) && 1e3 > ++d);
+      h = f.clone();
+      do
+        (h = h.offset({ x: g, y: 0 })),
+          (l = OpenLayers.Projection.transform(h.clone(), b, c)),
+          k.push(h);
+      while (a.containsPixel(l) && 1e3 > ++d);
+      g = [];
+      for (d = 0; d < k.length; ++d) {
+        l = k[d].x;
+        for (
+          var f = [],
+            m = null,
+            n = Math.min(e[0].y, 90),
+            h = Math.max(e[e.length - 1].y, -90),
+            p = (n - h) / this.numPoints,
+            n = h,
+            h = 0;
+          h <= this.numPoints;
+          ++h
+        ) {
+          var q = new OpenLayers.Geometry.Point(l, n);
+          q.transform(b, c);
+          f.push(q);
+          n += p;
+          q.y >= a.bottom && !m && (m = q);
+        }
+        this.labelled &&
+          ((m = new OpenLayers.Geometry.Point(m.x, a.bottom)),
+          (l = {
+            value: l,
+            label: this.labelled
+              ? OpenLayers.Util.getFormattedLonLat(l, "lon", this.labelFormat)
+              : "",
+            labelAlign: "cb",
+            xOffset: 0,
+            yOffset: 2,
+          }),
+          this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(m, l)));
+        f = new OpenLayers.Geometry.LineString(f);
+        g.push(new OpenLayers.Feature.Vector(f));
+      }
+      for (h = 0; h < e.length; ++h)
+        if (((n = e[h].y), !(-90 > n || 90 < n))) {
+          f = [];
+          d = k[0].x;
+          p = (k[k.length - 1].x - d) / this.numPoints;
+          l = d;
+          m = null;
+          for (d = 0; d <= this.numPoints; ++d)
+            (q = new OpenLayers.Geometry.Point(l, n)),
+              q.transform(b, c),
+              f.push(q),
+              (l += p),
+              q.x < a.right && (m = q);
+          this.labelled &&
+            ((m = new OpenLayers.Geometry.Point(a.right, m.y)),
+            (l = {
+              value: n,
+              label: this.labelled
+                ? OpenLayers.Util.getFormattedLonLat(n, "lat", this.labelFormat)
+                : "",
+              labelAlign: "rb",
+              xOffset: -2,
+              yOffset: 2,
+            }),
+            this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(m, l)));
+          f = new OpenLayers.Geometry.LineString(f);
+          g.push(new OpenLayers.Feature.Vector(f));
+        }
+      this.gratLayer.addFeatures(g);
+    }
+  },
+  CLASS_NAME: "OpenLayers.Control.Graticule",
+});
+OpenLayers.Console.warn("OpenLayers.Rico is deprecated");
+OpenLayers.Rico = OpenLayers.Rico || {};
+OpenLayers.Rico.Corner = {
+  round: function (a, b) {
+    a = OpenLayers.Util.getElement(a);
+    this._setOptions(b);
+    var c = this.options.color;
+    "fromElement" == this.options.color && (c = this._background(a));
+    var d = this.options.bgColor;
+    "fromParent" == this.options.bgColor && (d = this._background(a.offsetParent));
+    this._roundCornersImpl(a, c, d);
+  },
+  changeColor: function (a, b) {
+    a.style.backgroundColor = b;
+    for (var c = a.parentNode.getElementsByTagName("span"), d = 0; d < c.length; d++)
+      c[d].style.backgroundColor = b;
+  },
+  changeOpacity: function (a, b) {
+    var c = "alpha(opacity=" + 100 * b + ")";
+    a.style.opacity = b;
+    a.style.filter = c;
+    for (var d = a.parentNode.getElementsByTagName("span"), e = 0; e < d.length; e++)
+      (d[e].style.opacity = b), (d[e].style.filter = c);
+  },
+  reRound: function (a, b) {
+    var c = a.parentNode.childNodes[2];
+    a.parentNode.removeChild(a.parentNode.childNodes[0]);
+    a.parentNode.removeChild(c);
+    this.round(a.parentNode, b);
+  },
+  _roundCornersImpl: function (a, b, c) {
+    this.options.border && this._renderBorder(a, c);
+    this._isTopRounded() && this._roundTopCorners(a, b, c);
+    this._isBottomRounded() && this._roundBottomCorners(a, b, c);
+  },
+  _renderBorder: function (a, b) {
+    var c = "1px solid " + this._borderColor(b);
+    a.innerHTML =
+      "<div " +
+      ("style='border-left: " + c + ";" + ("border-right: " + c) + "'") +
+      ">" +
+      a.innerHTML +
+      "</div>";
+  },
+  _roundTopCorners: function (a, b, c) {
+    for (var d = this._createCorner(c), e = 0; e < this.options.numSlices; e++)
+      d.appendChild(this._createCornerSlice(b, c, e, "top"));
+    a.style.paddingTop = 0;
+    a.insertBefore(d, a.firstChild);
+  },
+  _roundBottomCorners: function (a, b, c) {
+    for (var d = this._createCorner(c), e = this.options.numSlices - 1; 0 <= e; e--)
+      d.appendChild(this._createCornerSlice(b, c, e, "bottom"));
+    a.style.paddingBottom = 0;
+    a.appendChild(d);
+  },
+  _createCorner: function (a) {
+    var b = document.createElement("div");
+    b.style.backgroundColor = this._isTransparent() ? "transparent" : a;
+    return b;
+  },
+  _createCornerSlice: function (a, b, c, d) {
+    var e = document.createElement("span"),
+      f = e.style;
+    f.backgroundColor = a;
+    f.display = "block";
+    f.height = "1px";
+    f.overflow = "hidden";
+    f.fontSize = "1px";
+    a = this._borderColor(a, b);
+    this.options.border && 0 == c
+      ? ((f.borderTopStyle = "solid"),
+        (f.borderTopWidth = "1px"),
+        (f.borderLeftWidth = "0px"),
+        (f.borderRightWidth = "0px"),
+        (f.borderBottomWidth = "0px"),
+        (f.height = "0px"),
+        (f.borderColor = a))
+      : a && ((f.borderColor = a), (f.borderStyle = "solid"), (f.borderWidth = "0px 1px"));
+    this.options.compact || c != this.options.numSlices - 1 || (f.height = "2px");
+    this._setMargin(e, c, d);
+    this._setBorder(e, c, d);
+    return e;
+  },
+  _setOptions: function (a) {
+    this.options = {
+      corners: "all",
+      color: "fromElement",
+      bgColor: "fromParent",
+      blend: !0,
+      border: !1,
+      compact: !1,
+    };
+    OpenLayers.Util.extend(this.options, a || {});
+    this.options.numSlices = this.options.compact ? 2 : 4;
+    this._isTransparent() && (this.options.blend = !1);
+  },
+  _whichSideTop: function () {
+    return this._hasString(this.options.corners, "all", "top") ||
+      (0 <= this.options.corners.indexOf("tl") && 0 <= this.options.corners.indexOf("tr"))
+      ? ""
+      : 0 <= this.options.corners.indexOf("tl")
+      ? "left"
+      : 0 <= this.options.corners.indexOf("tr")
+      ? "right"
+      : "";
+  },
+  _whichSideBottom: function () {
+    return this._hasString(this.options.corners, "all", "bottom") ||
+      (0 <= this.options.corners.indexOf("bl") && 0 <= this.options.corners.indexOf("br"))
+      ? ""
+      : 0 <= this.options.corners.indexOf("bl")
+      ? "left"
+      : 0 <= this.options.corners.indexOf("br")
+      ? "right"
+      : "";
+  },
+  _borderColor: function (a, b) {
+    return "transparent" == a
+      ? b
+      : this.options.border
+      ? this.options.border
+      : this.options.blend
+      ? this._blend(b, a)
+      : "";
+  },
+  _setMargin: function (a, b, c) {
+    b = this._marginSize(b);
+    c = "top" == c ? this._whichSideTop() : this._whichSideBottom();
+    "left" == c
+      ? ((a.style.marginLeft = b + "px"), (a.style.marginRight = "0px"))
+      : "right" == c
+      ? ((a.style.marginRight = b + "px"), (a.style.marginLeft = "0px"))
+      : ((a.style.marginLeft = b + "px"), (a.style.marginRight = b + "px"));
+  },
+  _setBorder: function (a, b, c) {
+    b = this._borderSize(b);
+    c = "top" == c ? this._whichSideTop() : this._whichSideBottom();
+    "left" == c
+      ? ((a.style.borderLeftWidth = b + "px"), (a.style.borderRightWidth = "0px"))
+      : "right" == c
+      ? ((a.style.borderRightWidth = b + "px"), (a.style.borderLeftWidth = "0px"))
+      : ((a.style.borderLeftWidth = b + "px"), (a.style.borderRightWidth = b + "px"));
+    !1 != this.options.border &&
+      ((a.style.borderLeftWidth = b + "px"), (a.style.borderRightWidth = b + "px"));
+  },
+  _marginSize: function (a) {
+    if (this._isTransparent()) return 0;
+    var b = [5, 3, 2, 1],
+      c = [3, 2, 1, 0],
+      d = [2, 1],
+      e = [1, 0];
+    return this.options.compact && this.options.blend
+      ? e[a]
+      : this.options.compact
+      ? d[a]
+      : this.options.blend
+      ? c[a]
+      : b[a];
+  },
+  _borderSize: function (a) {
+    var b = [5, 3, 2, 1],
+      c = [2, 1, 1, 1],
+      d = [1, 0],
+      e = [0, 2, 0, 0];
+    return this.options.compact && (this.options.blend || this._isTransparent())
+      ? 1
+      : this.options.compact
+      ? d[a]
+      : this.options.blend
+      ? c[a]
+      : this.options.border
+      ? e[a]
+      : this._isTransparent()
+      ? b[a]
+      : 0;
+  },
+  _hasString: function (a) {
+    for (var b = 1; b < arguments.length; b++) if (0 <= a.indexOf(arguments[b])) return !0;
+    return !1;
+  },
+  _blend: function (a, b) {
+    var c = OpenLayers.Rico.Color.createFromHex(a);
+    c.blend(OpenLayers.Rico.Color.createFromHex(b));
+    return c;
+  },
+  _background: function (a) {
+    try {
+      return OpenLayers.Rico.Color.createColorFromBackground(a).asHex();
+    } catch (b) {
+      return "#ffffff";
+    }
+  },
+  _isTransparent: function () {
+    return "transparent" == this.options.color;
+  },
+  _isTopRounded: function () {
+    return this._hasString(this.options.corners, "all", "top", "tl", "tr");
+  },
+  _isBottomRounded: function () {
+    return this._hasString(this.options.corners, "all", "bottom", "bl", "br");
+  },
+  _hasSingleTextChild: function (a) {
+    return 1 == a.childNodes.length && 3 == a.childNodes[0].nodeType;
+  },
+};
+OpenLayers.Control.NavigationHistory = OpenLayers.Class(OpenLayers.Control, {
+  type: OpenLayers.Control.TYPE_TOGGLE,
+  previous: null,
+  previousOptions: null,
+  next: null,
+  nextOptions: null,
+  limit: 50,
+  autoActivate: !0,
+  clearOnDeactivate: !1,
+  registry: null,
+  nextStack: null,
+  previousStack: null,
+  listeners: null,
+  restoring: !1,
+  initialize: function (a) {
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+    this.registry = OpenLayers.Util.extend({ moveend: this.getState }, this.registry);
+    a = {
+      trigger: OpenLayers.Function.bind(this.previousTrigger, this),
+      displayClass: this.displayClass + " " + this.displayClass + "Previous",
+    };
+    OpenLayers.Util.extend(a, this.previousOptions);
+    this.previous = new OpenLayers.Control.Button(a);
+    a = {
+      trigger: OpenLayers.Function.bind(this.nextTrigger, this),
+      displayClass: this.displayClass + " " + this.displayClass + "Next",
+    };
+    OpenLayers.Util.extend(a, this.nextOptions);
+    this.next = new OpenLayers.Control.Button(a);
+    this.clear();
+  },
+  onPreviousChange: function (a, b) {
+    a && !this.previous.active
+      ? this.previous.activate()
+      : !a && this.previous.active && this.previous.deactivate();
+  },
+  onNextChange: function (a, b) {
+    a && !this.next.active
+      ? this.next.activate()
+      : !a && this.next.active && this.next.deactivate();
+  },
+  destroy: function () {
+    OpenLayers.Control.prototype.destroy.apply(this);
+    this.previous.destroy();
+    this.next.destroy();
+    this.deactivate();
+    for (var a in this) this[a] = null;
+  },
+  setMap: function (a) {
+    this.map = a;
+    this.next.setMap(a);
+    this.previous.setMap(a);
+  },
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this, arguments);
+    this.next.draw();
+    this.previous.draw();
+  },
+  previousTrigger: function () {
+    var a = this.previousStack.shift(),
+      b = this.previousStack.shift();
+    void 0 != b
+      ? (this.nextStack.unshift(a),
+        this.previousStack.unshift(b),
+        (this.restoring = !0),
+        this.restore(b),
+        (this.restoring = !1),
+        this.onNextChange(this.nextStack[0], this.nextStack.length),
+        this.onPreviousChange(this.previousStack[1], this.previousStack.length - 1))
+      : this.previousStack.unshift(a);
+    return b;
+  },
+  nextTrigger: function () {
+    var a = this.nextStack.shift();
+    void 0 != a &&
+      (this.previousStack.unshift(a),
+      (this.restoring = !0),
+      this.restore(a),
+      (this.restoring = !1),
+      this.onNextChange(this.nextStack[0], this.nextStack.length),
+      this.onPreviousChange(this.previousStack[1], this.previousStack.length - 1));
+    return a;
+  },
+  clear: function () {
+    this.previousStack = [];
+    this.previous.deactivate();
+    this.nextStack = [];
+    this.next.deactivate();
+  },
+  getState: function () {
+    return {
+      center: this.map.getCenter(),
+      resolution: this.map.getResolution(),
+      projection: this.map.getProjectionObject(),
+      units:
+        this.map.getProjectionObject().getUnits() || this.map.units || this.map.baseLayer.units,
+    };
+  },
+  restore: function (a) {
+    var b, c;
+    if (this.map.getProjectionObject() == a.projection)
+      (c = this.map.getZoomForResolution(a.resolution)), (b = a.center);
+    else {
+      b = a.center.clone();
+      b.transform(a.projection, this.map.getProjectionObject());
+      c = a.units;
+      var d =
+        this.map.getProjectionObject().getUnits() || this.map.units || this.map.baseLayer.units;
+      c = this.map.getZoomForResolution(
+        (c && d ? OpenLayers.INCHES_PER_UNIT[c] / OpenLayers.INCHES_PER_UNIT[d] : 1) * a.resolution
+      );
+    }
+    this.map.setCenter(b, c);
+  },
+  setListeners: function () {
+    this.listeners = {};
+    for (var a in this.registry)
+      this.listeners[a] = OpenLayers.Function.bind(function () {
+        if (!this.restoring) {
+          var b = this.registry[a].apply(this, arguments);
+          this.previousStack.unshift(b);
+          if (1 < this.previousStack.length)
+            this.onPreviousChange(this.previousStack[1], this.previousStack.length - 1);
+          this.previousStack.length > this.limit + 1 && this.previousStack.pop();
+          0 < this.nextStack.length && ((this.nextStack = []), this.onNextChange(null, 0));
+        }
+        return !0;
+      }, this);
+  },
+  activate: function () {
+    var a = !1;
+    if (this.map && OpenLayers.Control.prototype.activate.apply(this)) {
+      null == this.listeners && this.setListeners();
+      for (var b in this.listeners) this.map.events.register(b, this, this.listeners[b]);
+      a = !0;
+      0 == this.previousStack.length && this.initStack();
+    }
+    return a;
+  },
+  initStack: function () {
+    this.map.getCenter() && this.listeners.moveend();
+  },
+  deactivate: function () {
+    var a = !1;
+    if (this.map && OpenLayers.Control.prototype.deactivate.apply(this)) {
+      for (var b in this.listeners) this.map.events.unregister(b, this, this.listeners[b]);
+      this.clearOnDeactivate && this.clear();
+      a = !0;
+    }
+    return a;
+  },
+  CLASS_NAME: "OpenLayers.Control.NavigationHistory",
+});
+OpenLayers.Layer.UTFGrid = OpenLayers.Class(OpenLayers.Layer.XYZ, {
+  isBaseLayer: !1,
+  projection: new OpenLayers.Projection("EPSG:900913"),
+  useJSONP: !1,
+  tileClass: OpenLayers.Tile.UTFGrid,
+  initialize: function (a) {
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, [a.name, a.url, {}, a]);
+    this.tileOptions = OpenLayers.Util.extend(
+      { utfgridResolution: this.utfgridResolution },
+      this.tileOptions
+    );
+  },
+  createBackBuffer: function () {},
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.UTFGrid(this.getOptions()));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  getFeatureInfo: function (a) {
+    var b = null;
+    (a = this.getTileData(a)) && a.tile && (b = a.tile.getFeatureInfo(a.i, a.j));
+    return b;
+  },
+  getFeatureId: function (a) {
+    var b = null;
+    a = this.getTileData(a);
+    a.tile && (b = a.tile.getFeatureId(a.i, a.j));
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Layer.UTFGrid",
+});
+OpenLayers.TileManager = OpenLayers.Class({
+  cacheSize: 256,
+  tilesPerFrame: 2,
+  frameDelay: 16,
+  moveDelay: 100,
+  zoomDelay: 200,
+  maps: null,
+  tileQueueId: null,
+  tileQueue: null,
+  tileCache: null,
+  tileCacheIndex: null,
+  initialize: function (a) {
+    OpenLayers.Util.extend(this, a);
+    this.maps = [];
+    this.tileQueueId = {};
+    this.tileQueue = {};
+    this.tileCache = {};
+    this.tileCacheIndex = [];
+  },
+  addMap: function (a) {
+    if (!this._destroyed && OpenLayers.Layer.Grid) {
+      this.maps.push(a);
+      this.tileQueue[a.id] = [];
+      for (var b = 0, c = a.layers.length; b < c; ++b) this.addLayer({ layer: a.layers[b] });
+      a.events.on({
+        move: this.move,
+        zoomend: this.zoomEnd,
+        changelayer: this.changeLayer,
+        addlayer: this.addLayer,
+        preremovelayer: this.removeLayer,
+        scope: this,
+      });
+    }
+  },
+  removeMap: function (a) {
+    if (!this._destroyed && OpenLayers.Layer.Grid) {
+      window.clearTimeout(this.tileQueueId[a.id]);
+      if (a.layers)
+        for (var b = 0, c = a.layers.length; b < c; ++b) this.removeLayer({ layer: a.layers[b] });
+      a.events &&
+        a.events.un({
+          move: this.move,
+          zoomend: this.zoomEnd,
+          changelayer: this.changeLayer,
+          addlayer: this.addLayer,
+          preremovelayer: this.removeLayer,
+          scope: this,
+        });
+      delete this.tileQueue[a.id];
+      delete this.tileQueueId[a.id];
+      OpenLayers.Util.removeItem(this.maps, a);
+    }
+  },
+  move: function (a) {
+    this.updateTimeout(a.object, this.moveDelay, !0);
+  },
+  zoomEnd: function (a) {
+    this.updateTimeout(a.object, this.zoomDelay);
+  },
+  changeLayer: function (a) {
+    ("visibility" !== a.property && "params" !== a.property) || this.updateTimeout(a.object, 0);
+  },
+  addLayer: function (a) {
+    a = a.layer;
+    if (a instanceof OpenLayers.Layer.Grid) {
+      a.events.on({ addtile: this.addTile, retile: this.clearTileQueue, scope: this });
+      var b, c, d;
+      for (b = a.grid.length - 1; 0 <= b; --b)
+        for (c = a.grid[b].length - 1; 0 <= c; --c)
+          (d = a.grid[b][c]),
+            this.addTile({ tile: d }),
+            d.url && !d.imgDiv && this.manageTileCache({ object: d });
+    }
+  },
+  removeLayer: function (a) {
+    a = a.layer;
+    if (
+      a instanceof OpenLayers.Layer.Grid &&
+      (this.clearTileQueue({ object: a }),
+      a.events && a.events.un({ addtile: this.addTile, retile: this.clearTileQueue, scope: this }),
+      a.grid)
+    ) {
+      var b, c, d;
+      for (b = a.grid.length - 1; 0 <= b; --b)
+        for (c = a.grid[b].length - 1; 0 <= c; --c)
+          (d = a.grid[b][c]), this.unloadTile({ object: d });
+    }
+  },
+  updateTimeout: function (a, b, c) {
+    window.clearTimeout(this.tileQueueId[a.id]);
+    var d = this.tileQueue[a.id];
+    if (!c || d.length)
+      this.tileQueueId[a.id] = window.setTimeout(
+        OpenLayers.Function.bind(function () {
+          this.drawTilesFromQueue(a);
+          d.length && this.updateTimeout(a, this.frameDelay);
+        }, this),
+        b
+      );
+  },
+  addTile: function (a) {
+    if (a.tile instanceof OpenLayers.Tile.Image)
+      a.tile.events.on({
+        beforedraw: this.queueTileDraw,
+        beforeload: this.manageTileCache,
+        loadend: this.addToCache,
+        unload: this.unloadTile,
+        scope: this,
+      });
+    else this.removeLayer({ layer: a.tile.layer });
+  },
+  unloadTile: function (a) {
+    a = a.object;
+    a.events.un({
+      beforedraw: this.queueTileDraw,
+      beforeload: this.manageTileCache,
+      loadend: this.addToCache,
+      unload: this.unloadTile,
+      scope: this,
+    });
+    OpenLayers.Util.removeItem(this.tileQueue[a.layer.map.id], a);
+  },
+  queueTileDraw: function (a) {
+    a = a.object;
+    var b = !1,
+      c = a.layer,
+      d = c.getURL(a.bounds),
+      e = this.tileCache[d];
+    e &&
+      "olTileImage" !== e.className &&
+      (delete this.tileCache[d], OpenLayers.Util.removeItem(this.tileCacheIndex, d), (e = null));
+    !c.url ||
+      (!c.async && e) ||
+      ((b = this.tileQueue[c.map.id]), ~OpenLayers.Util.indexOf(b, a) || b.push(a), (b = !0));
+    return !b;
+  },
+  drawTilesFromQueue: function (a) {
+    var b = this.tileQueue[a.id],
+      c = this.tilesPerFrame;
+    for (a = a.zoomTween && a.zoomTween.playing; !a && b.length && c; ) b.shift().draw(!0), --c;
+  },
+  manageTileCache: function (a) {
+    a = a.object;
+    var b = this.tileCache[a.url];
+    b &&
+      (b.parentNode &&
+        OpenLayers.Element.hasClass(b.parentNode, "olBackBuffer") &&
+        (b.parentNode.removeChild(b), (b.id = null)),
+      b.parentNode ||
+        ((b.style.visibility = "hidden"),
+        (b.style.opacity = 0),
+        a.setImage(b),
+        OpenLayers.Util.removeItem(this.tileCacheIndex, a.url),
+        this.tileCacheIndex.push(a.url)));
+  },
+  addToCache: function (a) {
+    a = a.object;
+    this.tileCache[a.url] ||
+      OpenLayers.Element.hasClass(a.imgDiv, "olImageLoadError") ||
+      (this.tileCacheIndex.length >= this.cacheSize &&
+        (delete this.tileCache[this.tileCacheIndex[0]], this.tileCacheIndex.shift()),
+      (this.tileCache[a.url] = a.imgDiv),
+      this.tileCacheIndex.push(a.url));
+  },
+  clearTileQueue: function (a) {
+    a = a.object;
+    for (var b = this.tileQueue[a.map.id], c = b.length - 1; 0 <= c; --c)
+      b[c].layer === a && b.splice(c, 1);
+  },
+  destroy: function () {
+    for (var a = this.maps.length - 1; 0 <= a; --a) this.removeMap(this.maps[a]);
+    this.tileCacheIndex = this.tileCache = this.tileQueueId = this.tileQueue = this.maps = null;
+    this._destroyed = !0;
+  },
+});
+OpenLayers.Layer.ArcGISCache = OpenLayers.Class(OpenLayers.Layer.XYZ, {
+  url: null,
+  tileOrigin: null,
+  tileSize: new OpenLayers.Size(256, 256),
+  useArcGISServer: !0,
+  type: "png",
+  useScales: !1,
+  overrideDPI: !1,
+  initialize: function (a, b, c) {
+    OpenLayers.Layer.XYZ.prototype.initialize.apply(this, arguments);
+    this.resolutions &&
+      ((this.serverResolutions = this.resolutions),
+      (this.maxExtent = this.getMaxExtentForResolution(this.resolutions[0])));
+    if (this.layerInfo) {
+      var d = this.layerInfo,
+        e = new OpenLayers.Bounds(
+          d.fullExtent.xmin,
+          d.fullExtent.ymin,
+          d.fullExtent.xmax,
+          d.fullExtent.ymax
+        );
+      this.projection = "EPSG:" + d.spatialReference.wkid;
+      this.sphericalMercator = 102100 == d.spatialReference.wkid;
+      this.units = "esriFeet" == d.units ? "ft" : "m";
+      if (d.tileInfo) {
+        this.tileSize = new OpenLayers.Size(
+          d.tileInfo.width || d.tileInfo.cols,
+          d.tileInfo.height || d.tileInfo.rows
+        );
+        this.tileOrigin = new OpenLayers.LonLat(d.tileInfo.origin.x, d.tileInfo.origin.y);
+        var f = new OpenLayers.Geometry.Point(e.left, e.top),
+          e = new OpenLayers.Geometry.Point(e.right, e.bottom);
+        this.useScales ? (this.scales = []) : (this.resolutions = []);
+        this.lods = [];
+        for (var g in d.tileInfo.lods)
+          if (d.tileInfo.lods.hasOwnProperty(g)) {
+            var h = d.tileInfo.lods[g];
+            this.useScales ? this.scales.push(h.scale) : this.resolutions.push(h.resolution);
+            var k = this.getContainingTileCoords(f, h.resolution);
+            h.startTileCol = k.x;
+            h.startTileRow = k.y;
+            k = this.getContainingTileCoords(e, h.resolution);
+            h.endTileCol = k.x;
+            h.endTileRow = k.y;
+            this.lods.push(h);
+          }
+        this.maxExtent = this.calculateMaxExtentWithLOD(this.lods[0]);
+        this.serverResolutions = this.resolutions;
+        this.overrideDPI && d.tileInfo.dpi && (OpenLayers.DOTS_PER_INCH = d.tileInfo.dpi);
+      }
+    }
+  },
+  getContainingTileCoords: function (a, b) {
+    return new OpenLayers.Pixel(
+      Math.max(Math.floor((a.x - this.tileOrigin.lon) / (this.tileSize.w * b)), 0),
+      Math.max(Math.floor((this.tileOrigin.lat - a.y) / (this.tileSize.h * b)), 0)
+    );
+  },
+  calculateMaxExtentWithLOD: function (a) {
+    var b = this.tileOrigin.lon + a.startTileCol * this.tileSize.w * a.resolution,
+      c = this.tileOrigin.lat - a.startTileRow * this.tileSize.h * a.resolution;
+    return new OpenLayers.Bounds(
+      b,
+      c - (a.endTileRow - a.startTileRow + 1) * this.tileSize.h * a.resolution,
+      b + (a.endTileCol - a.startTileCol + 1) * this.tileSize.w * a.resolution,
+      c
+    );
+  },
+  calculateMaxExtentWithExtent: function (a, b) {
+    var c = new OpenLayers.Geometry.Point(a.left, a.top),
+      d = new OpenLayers.Geometry.Point(a.right, a.bottom),
+      c = this.getContainingTileCoords(c, b),
+      d = this.getContainingTileCoords(d, b);
+    return this.calculateMaxExtentWithLOD({
+      resolution: b,
+      startTileCol: c.x,
+      startTileRow: c.y,
+      endTileCol: d.x,
+      endTileRow: d.y,
+    });
+  },
+  getUpperLeftTileCoord: function (a) {
+    var b = new OpenLayers.Geometry.Point(this.maxExtent.left, this.maxExtent.top);
+    return this.getContainingTileCoords(b, a);
+  },
+  getLowerRightTileCoord: function (a) {
+    var b = new OpenLayers.Geometry.Point(this.maxExtent.right, this.maxExtent.bottom);
+    return this.getContainingTileCoords(b, a);
+  },
+  getMaxExtentForResolution: function (a) {
+    var b = this.getUpperLeftTileCoord(a),
+      c = this.getLowerRightTileCoord(a),
+      d = this.tileOrigin.lon + b.x * this.tileSize.w * a,
+      e = this.tileOrigin.lat - b.y * this.tileSize.h * a;
+    return new OpenLayers.Bounds(
+      d,
+      e - (c.y - b.y + 1) * this.tileSize.h * a,
+      d + (c.x - b.x + 1) * this.tileSize.w * a,
+      e
+    );
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.ArcGISCache(this.name, this.url, this.options));
+    return OpenLayers.Layer.XYZ.prototype.clone.apply(this, [a]);
+  },
+  initGriddedTiles: function (a) {
+    delete this._tileOrigin;
+    OpenLayers.Layer.XYZ.prototype.initGriddedTiles.apply(this, arguments);
+  },
+  getMaxExtent: function () {
+    var a = this.map.getResolution();
+    return (this.maxExtent = this.getMaxExtentForResolution(a));
+  },
+  getTileOrigin: function () {
+    if (!this._tileOrigin) {
+      var a = this.getMaxExtent();
+      this._tileOrigin = new OpenLayers.LonLat(a.left, a.bottom);
+    }
+    return this._tileOrigin;
+  },
+  getURL: function (a) {
+    var b = this.getResolution(),
+      c = this.tileOrigin.lon + (b * this.tileSize.w) / 2,
+      d = this.tileOrigin.lat - (b * this.tileSize.h) / 2;
+    a = a.getCenterLonLat();
+    c = Math.round(Math.abs((a.lon - c) / (b * this.tileSize.w)));
+    d = Math.round(Math.abs((d - a.lat) / (b * this.tileSize.h)));
+    a = this.map.getZoom();
+    if (this.lods) {
+      if (
+        ((b = this.lods[this.map.getZoom()]),
+        c < b.startTileCol || c > b.endTileCol || d < b.startTileRow || d > b.endTileRow)
+      )
+        return null;
+    } else {
+      var e = this.getUpperLeftTileCoord(b),
+        b = this.getLowerRightTileCoord(b);
+      if (c < e.x || c >= b.x || d < e.y || d >= b.y) return null;
+    }
+    b = this.url;
+    e = "" + c + d + a;
+    OpenLayers.Util.isArray(b) && (b = this.selectUrl(e, b));
+    this.useArcGISServer
+      ? (b += "/tile/${z}/${y}/${x}")
+      : ((c = "C" + OpenLayers.Number.zeroPad(c, 8, 16)),
+        (d = "R" + OpenLayers.Number.zeroPad(d, 8, 16)),
+        (a = "L" + OpenLayers.Number.zeroPad(a, 2, 10)),
+        (b = b + "/${z}/${y}/${x}." + this.type));
+    b = OpenLayers.String.format(b, { x: c, y: d, z: a });
+    return OpenLayers.Util.urlAppend(b, OpenLayers.Util.getParameterString(this.params));
+  },
+  CLASS_NAME: "OpenLayers.Layer.ArcGISCache",
+});
+OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
+  hover: !1,
+  drillDown: !1,
+  maxFeatures: 10,
+  clickCallback: "click",
+  output: "features",
+  layers: null,
+  queryVisible: !1,
+  url: null,
+  layerUrls: null,
+  infoFormat: "text/html",
+  vendorParams: {},
+  format: null,
+  formatOptions: null,
+  handler: null,
+  hoverRequest: null,
+  initialize: function (a) {
+    a = a || {};
+    a.handlerOptions = a.handlerOptions || {};
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+    this.format || (this.format = new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));
+    !0 === this.drillDown && (this.hover = !1);
+    this.hover
+      ? (this.handler = new OpenLayers.Handler.Hover(
+          this,
+          { move: this.cancelHover, pause: this.getInfoForHover },
+          OpenLayers.Util.extend(this.handlerOptions.hover || {}, { delay: 250 })
+        ))
+      : ((a = {}),
+        (a[this.clickCallback] = this.getInfoForClick),
+        (this.handler = new OpenLayers.Handler.Click(this, a, this.handlerOptions.click || {})));
+  },
+  getInfoForClick: function (a) {
+    this.events.triggerEvent("beforegetfeatureinfo", { xy: a.xy });
+    OpenLayers.Element.addClass(this.map.viewPortDiv, "olCursorWait");
+    this.request(a.xy, {});
+  },
+  getInfoForHover: function (a) {
+    this.events.triggerEvent("beforegetfeatureinfo", { xy: a.xy });
+    this.request(a.xy, { hover: !0 });
+  },
+  cancelHover: function () {
+    this.hoverRequest && (this.hoverRequest.abort(), (this.hoverRequest = null));
+  },
+  findLayers: function () {
+    for (var a = this.layers || this.map.layers, b = [], c, d, e = a.length - 1; 0 <= e; --e)
+      (c = a[e]),
+        c instanceof OpenLayers.Layer.WMS &&
+          (!this.queryVisible || c.getVisibility()) &&
+          ((d = OpenLayers.Util.isArray(c.url) ? c.url[0] : c.url),
+          !1 !== this.drillDown || this.url || (this.url = d),
+          (!0 === this.drillDown || this.urlMatches(d)) && b.push(c));
+    return b;
+  },
+  urlMatches: function (a) {
+    var b = OpenLayers.Util.isEquivalentUrl(this.url, a);
+    if (!b && this.layerUrls)
+      for (var c = 0, d = this.layerUrls.length; c < d; ++c)
+        if (OpenLayers.Util.isEquivalentUrl(this.layerUrls[c], a)) {
+          b = !0;
+          break;
+        }
+    return b;
+  },
+  buildWMSOptions: function (a, b, c, d) {
+    for (var e = [], f = [], g = 0, h = b.length; g < h; g++)
+      null != b[g].params.LAYERS &&
+        ((e = e.concat(b[g].params.LAYERS)), (f = f.concat(this.getStyleNames(b[g]))));
+    b = b[0];
+    g = this.map.getProjection();
+    (h = b.projection) && h.equals(this.map.getProjectionObject()) && (g = h.getCode());
+    d = OpenLayers.Util.extend(
+      {
+        service: "WMS",
+        version: b.params.VERSION,
+        request: "GetFeatureInfo",
+        exceptions: b.params.EXCEPTIONS,
+        bbox: this.map.getExtent().toBBOX(null, b.reverseAxisOrder()),
+        feature_count: this.maxFeatures,
+        height: this.map.getSize().h,
+        width: this.map.getSize().w,
+        format: d,
+        info_format: b.params.INFO_FORMAT || this.infoFormat,
+      },
+      1.3 <= parseFloat(b.params.VERSION)
+        ? { crs: g, i: parseInt(c.x), j: parseInt(c.y) }
+        : { srs: g, x: parseInt(c.x), y: parseInt(c.y) }
+    );
+    0 != e.length && (d = OpenLayers.Util.extend({ layers: e, query_layers: e, styles: f }, d));
+    OpenLayers.Util.applyDefaults(d, this.vendorParams);
+    return {
+      url: a,
+      params: OpenLayers.Util.upperCaseObject(d),
+      callback: function (b) {
+        this.handleResponse(c, b, a);
+      },
+      scope: this,
+    };
+  },
+  getStyleNames: function (a) {
+    return a.params.STYLES
+      ? a.params.STYLES
+      : OpenLayers.Util.isArray(a.params.LAYERS)
+      ? Array(a.params.LAYERS.length)
+      : a.params.LAYERS.replace(/[^,]/g, "");
+  },
+  request: function (a, b) {
+    var c = this.findLayers();
+    if (0 == c.length)
+      this.events.triggerEvent("nogetfeatureinfo"),
+        OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait");
+    else if (((b = b || {}), !1 === this.drillDown)) {
+      var c = this.buildWMSOptions(this.url, c, a, c[0].params.FORMAT),
+        d = OpenLayers.Request.GET(c);
+      !0 === b.hover && (this.hoverRequest = d);
+    } else {
+      this._numRequests = this._requestCount = 0;
+      this.features = [];
+      for (var d = {}, e, f = 0, g = c.length; f < g; f++) {
+        var h = c[f];
+        e = OpenLayers.Util.isArray(h.url) ? h.url[0] : h.url;
+        e in d ? d[e].push(h) : (this._numRequests++, (d[e] = [h]));
+      }
+      for (e in d)
+        (c = d[e]),
+          (c = this.buildWMSOptions(e, c, a, c[0].params.FORMAT)),
+          OpenLayers.Request.GET(c);
+    }
+  },
+  triggerGetFeatureInfo: function (a, b, c) {
+    this.events.triggerEvent("getfeatureinfo", {
+      text: a.responseText,
+      features: c,
+      request: a,
+      xy: b,
+    });
+    OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait");
+  },
+  handleResponse: function (a, b, c) {
+    var d = b.responseXML;
+    (d && d.documentElement) || (d = b.responseText);
+    d = this.format.read(d);
+    !1 === this.drillDown
+      ? this.triggerGetFeatureInfo(b, a, d)
+      : (this._requestCount++,
+        (this._features =
+          "object" === this.output
+            ? (this._features || []).concat({ url: c, features: d })
+            : (this._features || []).concat(d)),
+        this._requestCount === this._numRequests &&
+          (this.triggerGetFeatureInfo(b, a, this._features.concat()),
+          delete this._features,
+          delete this._requestCount,
+          delete this._numRequests));
+  },
+  CLASS_NAME: "OpenLayers.Control.WMSGetFeatureInfo",
+});
+OpenLayers.Format.WMSCapabilities.v1_3_0 = OpenLayers.Class(
+  OpenLayers.Format.WMSCapabilities.v1_3,
+  { version: "1.3.0", CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1_3_0" }
+);
+OpenLayers.Format.SOSGetFeatureOfInterest = OpenLayers.Class(OpenLayers.Format.XML, {
+  VERSION: "1.0.0",
+  namespaces: {
+    sos: "http://www.opengis.net/sos/1.0",
+    gml: "http://www.opengis.net/gml",
+    sa: "http://www.opengis.net/sampling/1.0",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  schemaLocation: "http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd",
+  defaultPrefix: "sos",
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = { features: [] };
+    this.readNode(a, b);
+    a = [];
+    for (var c = 0, d = b.features.length; c < d; c++) {
+      var e = b.features[c];
+      this.internalProjection &&
+        this.externalProjection &&
+        e.components[0] &&
+        e.components[0].transform(this.externalProjection, this.internalProjection);
+      e = new OpenLayers.Feature.Vector(e.components[0], e.attributes);
+      a.push(e);
+    }
+    return a;
+  },
+  readers: {
+    sa: {
+      SamplingPoint: function (a, b) {
+        if (!b.attributes) {
+          var c = { attributes: {} };
+          b.features.push(c);
+          b = c;
+        }
+        b.attributes.id = this.getAttributeNS(a, this.namespaces.gml, "id");
+        this.readChildNodes(a, b);
+      },
+      position: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+    },
+    gml: OpenLayers.Util.applyDefaults(
+      {
+        FeatureCollection: function (a, b) {
+          this.readChildNodes(a, b);
+        },
+        featureMember: function (a, b) {
+          var c = { attributes: {} };
+          b.features.push(c);
+          this.readChildNodes(a, c);
+        },
+        name: function (a, b) {
+          b.attributes.name = this.getChildValue(a);
+        },
+        pos: function (a, b) {
+          this.externalProjection ||
+            (this.externalProjection = new OpenLayers.Projection(a.getAttribute("srsName")));
+          OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this, [a, b]);
+        },
+      },
+      OpenLayers.Format.GML.v3.prototype.readers.gml
+    ),
+  },
+  writers: {
+    sos: {
+      GetFeatureOfInterest: function (a) {
+        for (
+          var b = this.createElementNSPlus("GetFeatureOfInterest", {
+              attributes: {
+                version: this.VERSION,
+                service: "SOS",
+                "xsi:schemaLocation": this.schemaLocation,
+              },
+            }),
+            c = 0,
+            d = a.fois.length;
+          c < d;
+          c++
+        )
+          this.writeNode("FeatureOfInterestId", { foi: a.fois[c] }, b);
+        return b;
+      },
+      FeatureOfInterestId: function (a) {
+        return this.createElementNSPlus("FeatureOfInterestId", { value: a.foi });
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.SOSGetFeatureOfInterest",
+});
+OpenLayers.Format.SOSGetObservation = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: {
+    ows: "http://www.opengis.net/ows",
+    gml: "http://www.opengis.net/gml",
+    sos: "http://www.opengis.net/sos/1.0",
+    ogc: "http://www.opengis.net/ogc",
+    om: "http://www.opengis.net/om/1.0",
+    sa: "http://www.opengis.net/sampling/1.0",
+    xlink: "http://www.w3.org/1999/xlink",
+    xsi: "http://www.w3.org/2001/XMLSchema-instance",
+  },
+  regExes: {
+    trimSpace: /^\s*|\s*$/g,
+    removeSpace: /\s*/g,
+    splitSpace: /\s+/,
+    trimComma: /\s*,\s*/g,
+  },
+  VERSION: "1.0.0",
+  schemaLocation:
+    "http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd",
+  defaultPrefix: "sos",
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = { measurements: [], observations: [] };
+    this.readNode(a, b);
+    return b;
+  },
+  write: function (a) {
+    a = this.writeNode("sos:GetObservation", a);
+    a.setAttribute("xmlns:om", this.namespaces.om);
+    a.setAttribute("xmlns:ogc", this.namespaces.ogc);
+    this.setAttributeNS(a, this.namespaces.xsi, "xsi:schemaLocation", this.schemaLocation);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [a]);
+  },
+  readers: {
+    om: {
+      ObservationCollection: function (a, b) {
+        b.id = this.getAttributeNS(a, this.namespaces.gml, "id");
+        this.readChildNodes(a, b);
+      },
+      member: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      Measurement: function (a, b) {
+        var c = {};
+        b.measurements.push(c);
+        this.readChildNodes(a, c);
+      },
+      Observation: function (a, b) {
+        var c = {};
+        b.observations.push(c);
+        this.readChildNodes(a, c);
+      },
+      samplingTime: function (a, b) {
+        var c = {};
+        b.samplingTime = c;
+        this.readChildNodes(a, c);
+      },
+      observedProperty: function (a, b) {
+        b.observedProperty = this.getAttributeNS(a, this.namespaces.xlink, "href");
+        this.readChildNodes(a, b);
+      },
+      procedure: function (a, b) {
+        b.procedure = this.getAttributeNS(a, this.namespaces.xlink, "href");
+        this.readChildNodes(a, b);
+      },
+      featureOfInterest: function (a, b) {
+        var c = { features: [] };
+        b.fois = [];
+        b.fois.push(c);
+        this.readChildNodes(a, c);
+        for (var d = [], e = 0, f = c.features.length; e < f; e++) {
+          var g = c.features[e];
+          d.push(new OpenLayers.Feature.Vector(g.components[0], g.attributes));
+        }
+        c.features = d;
+      },
+      result: function (a, b) {
+        var c = {};
+        b.result = c;
+        "" !== this.getChildValue(a)
+          ? ((c.value = this.getChildValue(a)), (c.uom = a.getAttribute("uom")))
+          : this.readChildNodes(a, c);
+      },
+    },
+    sa: OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.sa,
+    gml: OpenLayers.Util.applyDefaults(
+      {
+        TimeInstant: function (a, b) {
+          var c = {};
+          b.timeInstant = c;
+          this.readChildNodes(a, c);
+        },
+        timePosition: function (a, b) {
+          b.timePosition = this.getChildValue(a);
+        },
+      },
+      OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.gml
+    ),
+  },
+  writers: {
+    sos: {
+      GetObservation: function (a) {
+        var b = this.createElementNSPlus("GetObservation", {
+          attributes: { version: this.VERSION, service: "SOS" },
+        });
+        this.writeNode("offering", a, b);
+        a.eventTime && this.writeNode("eventTime", a, b);
+        for (var c in a.procedures) this.writeNode("procedure", a.procedures[c], b);
+        for (var d in a.observedProperties)
+          this.writeNode("observedProperty", a.observedProperties[d], b);
+        a.foi && this.writeNode("featureOfInterest", a.foi, b);
+        this.writeNode("responseFormat", a, b);
+        a.resultModel && this.writeNode("resultModel", a, b);
+        a.responseMode && this.writeNode("responseMode", a, b);
+        return b;
+      },
+      featureOfInterest: function (a) {
+        var b = this.createElementNSPlus("featureOfInterest");
+        this.writeNode("ObjectID", a.objectId, b);
+        return b;
+      },
+      ObjectID: function (a) {
+        return this.createElementNSPlus("ObjectID", { value: a });
+      },
+      responseFormat: function (a) {
+        return this.createElementNSPlus("responseFormat", { value: a.responseFormat });
+      },
+      procedure: function (a) {
+        return this.createElementNSPlus("procedure", { value: a });
+      },
+      offering: function (a) {
+        return this.createElementNSPlus("offering", { value: a.offering });
+      },
+      observedProperty: function (a) {
+        return this.createElementNSPlus("observedProperty", { value: a });
+      },
+      eventTime: function (a) {
+        var b = this.createElementNSPlus("eventTime");
+        "latest" === a.eventTime && this.writeNode("ogc:TM_Equals", a, b);
+        return b;
+      },
+      resultModel: function (a) {
+        return this.createElementNSPlus("resultModel", { value: a.resultModel });
+      },
+      responseMode: function (a) {
+        return this.createElementNSPlus("responseMode", { value: a.responseMode });
+      },
+    },
+    ogc: {
+      TM_Equals: function (a) {
+        var b = this.createElementNSPlus("ogc:TM_Equals");
+        this.writeNode("ogc:PropertyName", { property: "urn:ogc:data:time:iso8601" }, b);
+        "latest" === a.eventTime && this.writeNode("gml:TimeInstant", { value: "latest" }, b);
+        return b;
+      },
+      PropertyName: function (a) {
+        return this.createElementNSPlus("ogc:PropertyName", { value: a.property });
+      },
+    },
+    gml: {
+      TimeInstant: function (a) {
+        var b = this.createElementNSPlus("gml:TimeInstant");
+        this.writeNode("gml:timePosition", a, b);
+        return b;
+      },
+      timePosition: function (a) {
+        return this.createElementNSPlus("gml:timePosition", { value: a.value });
+      },
+    },
+  },
+  CLASS_NAME: "OpenLayers.Format.SOSGetObservation",
+});
+OpenLayers.Control.UTFGrid = OpenLayers.Class(OpenLayers.Control, {
+  autoActivate: !0,
+  layers: null,
+  defaultHandlerOptions: {
+    delay: 300,
+    pixelTolerance: 4,
+    stopMove: !1,
+    single: !0,
+    double: !1,
+    stopSingle: !1,
+    stopDouble: !1,
+  },
+  handlerMode: "click",
+  setHandler: function (a) {
+    this.handlerMode = a;
+    this.resetHandler();
+  },
+  resetHandler: function () {
+    this.handler && (this.handler.deactivate(), this.handler.destroy(), (this.handler = null));
+    "hover" == this.handlerMode
+      ? (this.handler = new OpenLayers.Handler.Hover(
+          this,
+          { pause: this.handleEvent, move: this.reset },
+          this.handlerOptions
+        ))
+      : "click" == this.handlerMode
+      ? (this.handler = new OpenLayers.Handler.Click(
+          this,
+          { click: this.handleEvent },
+          this.handlerOptions
+        ))
+      : "move" == this.handlerMode &&
+        (this.handler = new OpenLayers.Handler.Hover(
+          this,
+          { pause: this.handleEvent, move: this.handleEvent },
+          this.handlerOptions
+        ));
+    return this.handler ? !0 : !1;
+  },
+  initialize: function (a) {
+    a = a || {};
+    a.handlerOptions = a.handlerOptions || this.defaultHandlerOptions;
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+    this.resetHandler();
+  },
+  handleEvent: function (a) {
+    if (null == a) this.reset();
+    else {
+      var b = this.map.getLonLatFromPixel(a.xy);
+      if (b) {
+        var c = this.findLayers();
+        if (0 < c.length) {
+          for (var d = {}, e, f, g = 0, h = c.length; g < h; g++)
+            (e = c[g]),
+              (f = OpenLayers.Util.indexOf(this.map.layers, e)),
+              (d[f] = e.getFeatureInfo(b));
+          this.callback(d, b, a.xy);
+        }
+      }
+    }
+  },
+  callback: function (a) {},
+  reset: function (a) {
+    this.callback(null);
+  },
+  findLayers: function () {
+    for (var a = this.layers || this.map.layers, b = [], c, d = a.length - 1; 0 <= d; --d)
+      (c = a[d]), c instanceof OpenLayers.Layer.UTFGrid && b.push(c);
+    return b;
+  },
+  CLASS_NAME: "OpenLayers.Control.UTFGrid",
+});
+OpenLayers.Format.CQL = (function () {
+  function a(a) {
+    function b() {
+      var a = e.pop();
+      switch (a.type) {
+        case "LOGICAL":
+          var c = b(),
+            g = b();
+          return new OpenLayers.Filter.Logical({ filters: [g, c], type: f[a.text.toUpperCase()] });
+        case "NOT":
+          return (
+            (a = b()),
+            new OpenLayers.Filter.Logical({ filters: [a], type: OpenLayers.Filter.Logical.NOT })
+          );
+        case "BETWEEN":
+          return (
+            e.pop(),
+            (g = b()),
+            (a = b()),
+            (c = b()),
+            new OpenLayers.Filter.Comparison({
+              property: c,
+              lowerBoundary: a,
+              upperBoundary: g,
+              type: OpenLayers.Filter.Comparison.BETWEEN,
+            })
+          );
+        case "COMPARISON":
+          return (
+            (g = b()),
+            (c = b()),
+            new OpenLayers.Filter.Comparison({
+              property: c,
+              value: g,
+              type: d[a.text.toUpperCase()],
+            })
+          );
+        case "IS_NULL":
+          return (
+            (c = b()),
+            new OpenLayers.Filter.Comparison({ property: c, type: d[a.text.toUpperCase()] })
+          );
+        case "VALUE":
+          return (c = a.text.match(/^'(.*)'$/)) ? c[1].replace(/''/g, "'") : Number(a.text);
+        case "SPATIAL":
+          switch (a.text.toUpperCase()) {
+            case "BBOX":
+              var a = b(),
+                c = b(),
+                g = b(),
+                h = b(),
+                k = b();
+              return new OpenLayers.Filter.Spatial({
+                type: OpenLayers.Filter.Spatial.BBOX,
+                property: k,
+                value: OpenLayers.Bounds.fromArray([h, g, c, a]),
+              });
+            case "INTERSECTS":
+              return (
+                (g = b()),
+                (c = b()),
+                new OpenLayers.Filter.Spatial({
+                  type: OpenLayers.Filter.Spatial.INTERSECTS,
+                  property: c,
+                  value: g,
+                })
+              );
+            case "WITHIN":
+              return (
+                (g = b()),
+                (c = b()),
+                new OpenLayers.Filter.Spatial({
+                  type: OpenLayers.Filter.Spatial.WITHIN,
+                  property: c,
+                  value: g,
+                })
+              );
+            case "CONTAINS":
+              return (
+                (g = b()),
+                (c = b()),
+                new OpenLayers.Filter.Spatial({
+                  type: OpenLayers.Filter.Spatial.CONTAINS,
+                  property: c,
+                  value: g,
+                })
+              );
+            case "DWITHIN":
+              return (
+                (a = b()),
+                (g = b()),
+                (c = b()),
+                new OpenLayers.Filter.Spatial({
+                  type: OpenLayers.Filter.Spatial.DWITHIN,
+                  value: g,
+                  property: c,
+                  distance: Number(a),
+                })
+              );
+          }
+        case "GEOMETRY":
+          return OpenLayers.Geometry.fromWKT(a.text);
+        default:
+          return a.text;
+      }
+    }
+    for (var c = [], e = []; a.length; ) {
+      var g = a.shift();
+      switch (g.type) {
+        case "PROPERTY":
+        case "GEOMETRY":
+        case "VALUE":
+          e.push(g);
+          break;
+        case "COMPARISON":
+        case "BETWEEN":
+        case "IS_NULL":
+        case "LOGICAL":
+          for (var k = h[g.type]; 0 < c.length && h[c[c.length - 1].type] <= k; ) e.push(c.pop());
+          c.push(g);
+          break;
+        case "SPATIAL":
+        case "NOT":
+        case "LPAREN":
+          c.push(g);
+          break;
+        case "RPAREN":
+          for (; 0 < c.length && "LPAREN" != c[c.length - 1].type; ) e.push(c.pop());
+          c.pop();
+          0 < c.length && "SPATIAL" == c[c.length - 1].type && e.push(c.pop());
+        case "COMMA":
+        case "END":
+          break;
+        default:
+          throw Error("Unknown token type " + g.type);
+      }
+    }
+    for (; 0 < c.length; ) e.push(c.pop());
+    a = b();
+    if (0 < e.length) {
+      a = "Remaining tokens after building AST: \n";
+      for (c = e.length - 1; 0 <= c; c--) a += e[c].type + ": " + e[c].text + "\n";
+      throw Error(a);
+    }
+    return a;
+  }
+  var b = {
+      PROPERTY: /^[_a-zA-Z]\w*/,
+      COMPARISON: /^(=|<>|<=|<|>=|>|LIKE)/i,
+      IS_NULL: /^IS NULL/i,
+      COMMA: /^,/,
+      LOGICAL: /^(AND|OR)/i,
+      VALUE: /^('([^']|'')*'|\d+(\.\d*)?|\.\d+)/,
+      LPAREN: /^\(/,
+      RPAREN: /^\)/,
+      SPATIAL: /^(BBOX|INTERSECTS|DWITHIN|WITHIN|CONTAINS)/i,
+      NOT: /^NOT/i,
+      BETWEEN: /^BETWEEN/i,
+      GEOMETRY: function (a) {
+        var b = /^(POINT|LINESTRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)/.exec(
+          a
+        );
+        if (b) {
+          var c = a.length,
+            b = a.indexOf("(", b[0].length);
+          if (-1 < b)
+            for (var d = 1; b < c && 0 < d; )
+              switch ((b++, a.charAt(b))) {
+                case "(":
+                  d++;
+                  break;
+                case ")":
+                  d--;
+              }
+          return [a.substr(0, b + 1)];
+        }
+      },
+      END: /^$/,
+    },
+    c = {
+      LPAREN: ["GEOMETRY", "SPATIAL", "PROPERTY", "VALUE", "LPAREN"],
+      RPAREN: ["NOT", "LOGICAL", "END", "RPAREN"],
+      PROPERTY: ["COMPARISON", "BETWEEN", "COMMA", "IS_NULL"],
+      BETWEEN: ["VALUE"],
+      IS_NULL: ["END"],
+      COMPARISON: ["VALUE"],
+      COMMA: ["GEOMETRY", "VALUE", "PROPERTY"],
+      VALUE: ["LOGICAL", "COMMA", "RPAREN", "END"],
+      SPATIAL: ["LPAREN"],
+      LOGICAL: ["NOT", "VALUE", "SPATIAL", "PROPERTY", "LPAREN"],
+      NOT: ["PROPERTY", "LPAREN"],
+      GEOMETRY: ["COMMA", "RPAREN"],
+    },
+    d = {
+      "=": OpenLayers.Filter.Comparison.EQUAL_TO,
+      "<>": OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
+      "<": OpenLayers.Filter.Comparison.LESS_THAN,
+      "<=": OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,
+      ">": OpenLayers.Filter.Comparison.GREATER_THAN,
+      ">=": OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,
+      LIKE: OpenLayers.Filter.Comparison.LIKE,
+      BETWEEN: OpenLayers.Filter.Comparison.BETWEEN,
+      "IS NULL": OpenLayers.Filter.Comparison.IS_NULL,
+    },
+    e = {},
+    f = { AND: OpenLayers.Filter.Logical.AND, OR: OpenLayers.Filter.Logical.OR },
+    g = {},
+    h = { RPAREN: 3, LOGICAL: 2, COMPARISON: 1 },
+    k;
+  for (k in d) d.hasOwnProperty(k) && (e[d[k]] = k);
+  for (k in f) f.hasOwnProperty(k) && (g[f[k]] = k);
+  return OpenLayers.Class(OpenLayers.Format, {
+    read: function (d) {
+      var e = d;
+      d = [];
+      var f,
+        g = ["NOT", "GEOMETRY", "SPATIAL", "PROPERTY", "LPAREN"];
+      do {
+        a: {
+          f = g;
+          for (var h = void 0, g = void 0, k = f.length, h = 0; h < k; h++) {
+            var g = f[h],
+              s = b[g] instanceof RegExp ? b[g].exec(e) : (0, b[g])(e);
+            if (s) {
+              f = s[0];
+              e = e.substr(f.length).replace(/^\s*/, "");
+              f = { type: g, text: f, remainder: e };
+              break a;
+            }
+          }
+          d = "ERROR: In parsing: [" + e + "], expected one of: ";
+          for (h = 0; h < k; h++) (g = f[h]), (d += "\n    " + g + ": " + b[g]);
+          throw Error(d);
+        }
+        e = f.remainder;
+        g = c[f.type];
+        if ("END" != f.type && !g) throw Error("No follows list for " + f.type);
+        d.push(f);
+      } while ("END" != f.type);
+      d = a(d);
+      this.keepData && (this.data = d);
+      return d;
+    },
+    write: function (a) {
+      if (a instanceof OpenLayers.Geometry) return a.toString();
+      switch (a.CLASS_NAME) {
+        case "OpenLayers.Filter.Spatial":
+          switch (a.type) {
+            case OpenLayers.Filter.Spatial.BBOX:
+              return "BBOX(" + a.property + "," + a.value.toBBOX() + ")";
+            case OpenLayers.Filter.Spatial.DWITHIN:
+              return "DWITHIN(" + a.property + ", " + this.write(a.value) + ", " + a.distance + ")";
+            case OpenLayers.Filter.Spatial.WITHIN:
+              return "WITHIN(" + a.property + ", " + this.write(a.value) + ")";
+            case OpenLayers.Filter.Spatial.INTERSECTS:
+              return "INTERSECTS(" + a.property + ", " + this.write(a.value) + ")";
+            case OpenLayers.Filter.Spatial.CONTAINS:
+              return "CONTAINS(" + a.property + ", " + this.write(a.value) + ")";
+            default:
+              throw Error("Unknown spatial filter type: " + a.type);
+          }
+        case "OpenLayers.Filter.Logical":
+          if (a.type == OpenLayers.Filter.Logical.NOT)
+            return "NOT (" + this.write(a.filters[0]) + ")";
+          for (var b = "(", c = !0, d = 0; d < a.filters.length; d++)
+            c ? (c = !1) : (b += ") " + g[a.type] + " ("), (b += this.write(a.filters[d]));
+          return b + ")";
+        case "OpenLayers.Filter.Comparison":
+          return a.type == OpenLayers.Filter.Comparison.BETWEEN
+            ? a.property +
+                " BETWEEN " +
+                this.write(a.lowerBoundary) +
+                " AND " +
+                this.write(a.upperBoundary)
+            : null !== a.value
+            ? a.property + " " + e[a.type] + " " + this.write(a.value)
+            : a.property + " " + e[a.type];
+        case void 0:
+          if ("string" === typeof a) return "'" + a.replace(/'/g, "''") + "'";
+          if ("number" === typeof a) return String(a);
+        default:
+          throw Error("Can't encode: " + a.CLASS_NAME + " " + a);
+      }
+    },
+    CLASS_NAME: "OpenLayers.Format.CQL",
+  });
+})();
+OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, {
+  layer: null,
+  source: null,
+  sourceOptions: null,
+  tolerance: null,
+  edge: !0,
+  deferDelete: !1,
+  mutual: !0,
+  targetFilter: null,
+  sourceFilter: null,
+  handler: null,
+  initialize: function (a) {
+    OpenLayers.Control.prototype.initialize.apply(this, [a]);
+    this.options = a || {};
+    this.options.source && this.setSource(this.options.source);
+  },
+  setSource: function (a) {
+    this.active
+      ? (this.deactivate(),
+        this.handler && (this.handler.destroy(), delete this.handler),
+        (this.source = a),
+        this.activate())
+      : (this.source = a);
+  },
+  activate: function () {
+    var a = OpenLayers.Control.prototype.activate.call(this);
+    if (a)
+      if (!this.source)
+        this.handler ||
+          (this.handler = new OpenLayers.Handler.Path(
+            this,
+            {
+              done: function (a) {
+                this.onSketchComplete({ feature: new OpenLayers.Feature.Vector(a) });
+              },
+            },
+            { layerOptions: this.sourceOptions }
+          )),
+          this.handler.activate();
+      else if (this.source.events)
+        this.source.events.on({
+          sketchcomplete: this.onSketchComplete,
+          afterfeaturemodified: this.afterFeatureModified,
+          scope: this,
+        });
+    return a;
+  },
+  deactivate: function () {
+    var a = OpenLayers.Control.prototype.deactivate.call(this);
+    a &&
+      this.source &&
+      this.source.events &&
+      this.source.events.un({
+        sketchcomplete: this.onSketchComplete,
+        afterfeaturemodified: this.afterFeatureModified,
+        scope: this,
+      });
+    return a;
+  },
+  onSketchComplete: function (a) {
+    this.feature = null;
+    return !this.considerSplit(a.feature);
+  },
+  afterFeatureModified: function (a) {
+    a.modified &&
+      "function" === typeof a.feature.geometry.split &&
+      ((this.feature = a.feature), this.considerSplit(a.feature));
+  },
+  removeByGeometry: function (a, b) {
+    for (var c = 0, d = a.length; c < d; ++c)
+      if (a[c].geometry === b) {
+        a.splice(c, 1);
+        break;
+      }
+  },
+  isEligible: function (a) {
+    return a.geometry
+      ? a.state !== OpenLayers.State.DELETE &&
+          "function" === typeof a.geometry.split &&
+          this.feature !== a &&
+          (!this.targetFilter || this.targetFilter.evaluate(a.attributes))
+      : !1;
+  },
+  considerSplit: function (a) {
+    var b = !1,
+      c = !1;
+    if (!this.sourceFilter || this.sourceFilter.evaluate(a.attributes)) {
+      for (
+        var d = (this.layer && this.layer.features) || [],
+          e,
+          f,
+          g = [],
+          h = [],
+          k = this.layer === this.source && this.mutual,
+          l = { edge: this.edge, tolerance: this.tolerance, mutual: k },
+          m = [a.geometry],
+          n,
+          p,
+          q,
+          r = 0,
+          s = d.length;
+        r < s;
+        ++r
+      )
+        if (((n = d[r]), this.isEligible(n))) {
+          p = [n.geometry];
+          for (var t = 0; t < m.length; ++t) {
+            q = m[t];
+            for (var u = 0; u < p.length; ++u)
+              if (
+                ((e = p[u]), q.getBounds().intersectsBounds(e.getBounds()) && (e = q.split(e, l)))
+              )
+                (f = this.events.triggerEvent("beforesplit", { source: a, target: n })),
+                  !1 !== f &&
+                    (k &&
+                      ((f = e[0]),
+                      1 < f.length &&
+                        (f.unshift(t, 1), Array.prototype.splice.apply(m, f), (t += f.length - 3)),
+                      (e = e[1])),
+                    1 < e.length &&
+                      (e.unshift(u, 1), Array.prototype.splice.apply(p, e), (u += e.length - 3)));
+          }
+          p &&
+            1 < p.length &&
+            (this.geomsToFeatures(n, p),
+            this.events.triggerEvent("split", { original: n, features: p }),
+            Array.prototype.push.apply(g, p),
+            h.push(n),
+            (c = !0));
+        }
+      m &&
+        1 < m.length &&
+        (this.geomsToFeatures(a, m),
+        this.events.triggerEvent("split", { original: a, features: m }),
+        Array.prototype.push.apply(g, m),
+        h.push(a),
+        (b = !0));
+      if (b || c) {
+        if (this.deferDelete) {
+          d = [];
+          r = 0;
+          for (s = h.length; r < s; ++r)
+            (c = h[r]),
+              c.state === OpenLayers.State.INSERT
+                ? d.push(c)
+                : ((c.state = OpenLayers.State.DELETE), this.layer.drawFeature(c));
+          this.layer.destroyFeatures(d, { silent: !0 });
+          r = 0;
+          for (s = g.length; r < s; ++r) g[r].state = OpenLayers.State.INSERT;
+        } else this.layer.destroyFeatures(h, { silent: !0 });
+        this.layer.addFeatures(g, { silent: !0 });
+        this.events.triggerEvent("aftersplit", { source: a, features: g });
+      }
+    }
+    return b;
+  },
+  geomsToFeatures: function (a, b) {
+    var c = a.clone();
+    delete c.geometry;
+    for (var d, e = 0, f = b.length; e < f; ++e)
+      (d = c.clone()), (d.geometry = b[e]), (d.state = OpenLayers.State.INSERT), (b[e] = d);
+  },
+  destroy: function () {
+    this.active && this.deactivate();
+    OpenLayers.Control.prototype.destroy.call(this);
+  },
+  CLASS_NAME: "OpenLayers.Control.Split",
+});
+OpenLayers.Layer.WMTS = OpenLayers.Class(OpenLayers.Layer.Grid, {
+  isBaseLayer: !0,
+  version: "1.0.0",
+  requestEncoding: "KVP",
+  url: null,
+  layer: null,
+  matrixSet: null,
+  style: null,
+  format: "image/jpeg",
+  tileOrigin: null,
+  tileFullExtent: null,
+  formatSuffix: null,
+  matrixIds: null,
+  dimensions: null,
+  params: null,
+  zoomOffset: 0,
+  serverResolutions: null,
+  formatSuffixMap: {
+    "image/png": "png",
+    "image/png8": "png",
+    "image/png24": "png",
+    "image/png32": "png",
+    png: "png",
+    "image/jpeg": "jpg",
+    "image/jpg": "jpg",
+    jpeg: "jpg",
+    jpg: "jpg",
+  },
+  matrix: null,
+  initialize: function (a) {
+    var b = { url: !0, layer: !0, style: !0, matrixSet: !0 },
+      c;
+    for (c in b) if (!(c in a)) throw Error("Missing property '" + c + "' in layer configuration.");
+    a.params = OpenLayers.Util.upperCaseObject(a.params);
+    OpenLayers.Layer.Grid.prototype.initialize.apply(this, [a.name, a.url, a.params, a]);
+    this.formatSuffix ||
+      (this.formatSuffix = this.formatSuffixMap[this.format] || this.format.split("/").pop());
+    if (this.matrixIds && (a = this.matrixIds.length) && "string" === typeof this.matrixIds[0])
+      for (b = this.matrixIds, this.matrixIds = Array(a), c = 0; c < a; ++c)
+        this.matrixIds[c] = { identifier: b[c] };
+  },
+  setMap: function () {
+    OpenLayers.Layer.Grid.prototype.setMap.apply(this, arguments);
+  },
+  updateMatrixProperties: function () {
+    if ((this.matrix = this.getMatrix()))
+      this.matrix.topLeftCorner && (this.tileOrigin = this.matrix.topLeftCorner),
+        this.matrix.tileWidth &&
+          this.matrix.tileHeight &&
+          (this.tileSize = new OpenLayers.Size(this.matrix.tileWidth, this.matrix.tileHeight)),
+        this.tileOrigin ||
+          (this.tileOrigin = new OpenLayers.LonLat(this.maxExtent.left, this.maxExtent.top)),
+        this.tileFullExtent || (this.tileFullExtent = this.maxExtent);
+  },
+  moveTo: function (a, b, c) {
+    (!b && this.matrix) || this.updateMatrixProperties();
+    return OpenLayers.Layer.Grid.prototype.moveTo.apply(this, arguments);
+  },
+  clone: function (a) {
+    null == a && (a = new OpenLayers.Layer.WMTS(this.options));
+    return (a = OpenLayers.Layer.Grid.prototype.clone.apply(this, [a]));
+  },
+  getIdentifier: function () {
+    return this.getServerZoom();
+  },
+  getMatrix: function () {
+    var a;
+    if (this.matrixIds && 0 !== this.matrixIds.length)
+      if ("scaleDenominator" in this.matrixIds[0])
+        for (
+          var b =
+              (OpenLayers.METERS_PER_INCH *
+                OpenLayers.INCHES_PER_UNIT[this.units] *
+                this.getServerResolution()) /
+              2.8e-4,
+            c = Number.POSITIVE_INFINITY,
+            d,
+            e = 0,
+            f = this.matrixIds.length;
+          e < f;
+          ++e
+        )
+          (d = Math.abs(1 - this.matrixIds[e].scaleDenominator / b)),
+            d < c && ((c = d), (a = this.matrixIds[e]));
+      else a = this.matrixIds[this.getIdentifier()];
+    else a = { identifier: this.getIdentifier() };
+    return a;
+  },
+  getTileInfo: function (a) {
+    var b = this.getServerResolution(),
+      c = (a.lon - this.tileOrigin.lon) / (b * this.tileSize.w);
+    a = (this.tileOrigin.lat - a.lat) / (b * this.tileSize.h);
+    var b = Math.floor(c),
+      d = Math.floor(a);
+    return {
+      col: b,
+      row: d,
+      i: Math.floor((c - b) * this.tileSize.w),
+      j: Math.floor((a - d) * this.tileSize.h),
+    };
+  },
+  getURL: function (a) {
+    a = this.adjustBounds(a);
+    var b = "";
+    if (!this.tileFullExtent || this.tileFullExtent.intersectsBounds(a)) {
+      a = a.getCenterLonLat();
+      var c = this.getTileInfo(a);
+      a = this.dimensions;
+      var d,
+        b = OpenLayers.Util.isArray(this.url)
+          ? this.selectUrl(
+              [
+                this.version,
+                this.style,
+                this.matrixSet,
+                this.matrix.identifier,
+                c.row,
+                c.col,
+              ].join(),
+              this.url
+            )
+          : this.url;
+      if ("REST" === this.requestEncoding.toUpperCase())
+        if (((d = this.params), -1 !== b.indexOf("{"))) {
+          b = b.replace(/\{/g, "${");
+          c = {
+            style: this.style,
+            Style: this.style,
+            TileMatrixSet: this.matrixSet,
+            TileMatrix: this.matrix.identifier,
+            TileRow: c.row,
+            TileCol: c.col,
+          };
+          if (a) {
+            var e, f;
+            for (f = a.length - 1; 0 <= f; --f) (e = a[f]), (c[e] = d[e.toUpperCase()]);
+          }
+          b = OpenLayers.String.format(b, c);
+        } else {
+          e = this.version + "/" + this.layer + "/" + this.style + "/";
+          if (a) for (f = 0; f < a.length; f++) d[a[f]] && (e = e + d[a[f]] + "/");
+          e =
+            e +
+            this.matrixSet +
+            "/" +
+            this.matrix.identifier +
+            "/" +
+            c.row +
+            "/" +
+            c.col +
+            "." +
+            this.formatSuffix;
+          b.match(/\/$/) || (b += "/");
+          b += e;
+        }
+      else
+        "KVP" === this.requestEncoding.toUpperCase() &&
+          ((d = {
+            SERVICE: "WMTS",
+            REQUEST: "GetTile",
+            VERSION: this.version,
+            LAYER: this.layer,
+            STYLE: this.style,
+            TILEMATRIXSET: this.matrixSet,
+            TILEMATRIX: this.matrix.identifier,
+            TILEROW: c.row,
+            TILECOL: c.col,
+            FORMAT: this.format,
+          }),
+          (b = OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this, [d])));
+    }
+    return b;
+  },
+  mergeNewParams: function (a) {
+    if ("KVP" === this.requestEncoding.toUpperCase())
+      return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this, [
+        OpenLayers.Util.upperCaseObject(a),
+      ]);
+  },
+  CLASS_NAME: "OpenLayers.Layer.WMTS",
+});
+OpenLayers.Protocol.SOS.v1_0_0 = OpenLayers.Class(OpenLayers.Protocol, {
+  fois: null,
+  formatOptions: null,
+  initialize: function (a) {
+    OpenLayers.Protocol.prototype.initialize.apply(this, [a]);
+    a.format || (this.format = new OpenLayers.Format.SOSGetFeatureOfInterest(this.formatOptions));
+  },
+  destroy: function () {
+    this.options && !this.options.format && this.format.destroy();
+    this.format = null;
+    OpenLayers.Protocol.prototype.destroy.apply(this);
+  },
+  read: function (a) {
+    a = OpenLayers.Util.extend({}, a);
+    OpenLayers.Util.applyDefaults(a, this.options || {});
+    var b = new OpenLayers.Protocol.Response({ requestType: "read" }),
+      c = this.format,
+      c = OpenLayers.Format.XML.prototype.write.apply(c, [
+        c.writeNode("sos:GetFeatureOfInterest", { fois: this.fois }),
+      ]);
+    b.priv = OpenLayers.Request.POST({
+      url: a.url,
+      callback: this.createCallback(this.handleRead, b, a),
+      data: c,
+    });
+    return b;
+  },
+  handleRead: function (a, b) {
+    if (b.callback) {
+      var c = a.priv;
+      200 <= c.status && 300 > c.status
+        ? ((a.features = this.parseFeatures(c)), (a.code = OpenLayers.Protocol.Response.SUCCESS))
+        : (a.code = OpenLayers.Protocol.Response.FAILURE);
+      b.callback.call(b.scope, a);
+    }
+  },
+  parseFeatures: function (a) {
+    var b = a.responseXML;
+    (b && b.documentElement) || (b = a.responseText);
+    return !b || 0 >= b.length ? null : this.format.read(b);
+  },
+  CLASS_NAME: "OpenLayers.Protocol.SOS.v1_0_0",
+});
+OpenLayers.Layer.KaMapCache = OpenLayers.Class(OpenLayers.Layer.KaMap, {
+  IMAGE_EXTENSIONS: {
+    jpeg: "jpg",
+    gif: "gif",
+    png: "png",
+    png8: "png",
+    png24: "png",
+    dithered: "png",
+  },
+  DEFAULT_FORMAT: "jpeg",
+  initialize: function (a, b, c, d) {
+    OpenLayers.Layer.KaMap.prototype.initialize.apply(this, arguments);
+    this.extension = this.IMAGE_EXTENSIONS[this.params.i.toLowerCase() || this.DEFAULT_FORMAT];
+  },
+  getURL: function (a) {
+    a = this.adjustBounds(a);
+    var b = this.map.getResolution(),
+      c = Math.round(1e4 * this.map.getScale()) / 1e4,
+      d = Math.round(a.left / b);
+    a = -Math.round(a.top / b);
+    var b =
+        Math.floor(d / this.tileSize.w / this.params.metaTileSize.w) *
+        this.tileSize.w *
+        this.params.metaTileSize.w,
+      e =
+        Math.floor(a / this.tileSize.h / this.params.metaTileSize.h) *
+        this.tileSize.h *
+        this.params.metaTileSize.h,
+      c = [
+        "/",
+        this.params.map,
+        "/",
+        c,
+        "/",
+        this.params.g.replace(/\s/g, "_"),
+        "/def/t",
+        e,
+        "/l",
+        b,
+        "/t",
+        a,
+        "l",
+        d,
+        ".",
+        this.extension,
+      ],
+      d = this.url;
+    OpenLayers.Util.isArray(d) && (d = this.selectUrl(c.join(""), d));
+    return d + c.join("");
+  },
+  CLASS_NAME: "OpenLayers.Layer.KaMapCache",
+});
+OpenLayers.Protocol.WFS.v1_1_0 = OpenLayers.Class(OpenLayers.Protocol.WFS.v1, {
+  version: "1.1.0",
+  initialize: function (a) {
+    OpenLayers.Protocol.WFS.v1.prototype.initialize.apply(this, arguments);
+    this.outputFormat &&
+      !this.readFormat &&
+      ("gml2" == this.outputFormat.toLowerCase()
+        ? (this.readFormat = new OpenLayers.Format.GML.v2({
+            featureType: this.featureType,
+            featureNS: this.featureNS,
+            geometryName: this.geometryName,
+          }))
+        : "json" == this.outputFormat.toLowerCase() &&
+          (this.readFormat = new OpenLayers.Format.GeoJSON()));
+  },
+  CLASS_NAME: "OpenLayers.Protocol.WFS.v1_1_0",
+});
+OpenLayers.Format.WMSCapabilities.v1_1_1 = OpenLayers.Class(
+  OpenLayers.Format.WMSCapabilities.v1_1,
+  {
+    version: "1.1.1",
+    readers: {
+      wms: OpenLayers.Util.applyDefaults(
+        {
+          SRS: function (a, b) {
+            b.srs[this.getChildValue(a)] = !0;
+          },
+        },
+        OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms
+      ),
+    },
+    CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1_1_1",
+  }
+);
+OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC = OpenLayers.Class(
+  OpenLayers.Format.WMSCapabilities.v1_1_1,
+  {
+    version: "1.1.1",
+    profile: "WMSC",
+    readers: {
+      wms: OpenLayers.Util.applyDefaults(
+        {
+          VendorSpecificCapabilities: function (a, b) {
+            b.vendorSpecific = { tileSets: [] };
+            this.readChildNodes(a, b.vendorSpecific);
+          },
+          TileSet: function (a, b) {
+            var c = { srs: {}, bbox: {}, resolutions: [] };
+            this.readChildNodes(a, c);
+            b.tileSets.push(c);
+          },
+          Resolutions: function (a, b) {
+            for (var c = this.getChildValue(a).split(" "), d = 0, e = c.length; d < e; d++)
+              "" != c[d] && b.resolutions.push(parseFloat(c[d]));
+          },
+          Width: function (a, b) {
+            b.width = parseInt(this.getChildValue(a));
+          },
+          Height: function (a, b) {
+            b.height = parseInt(this.getChildValue(a));
+          },
+          Layers: function (a, b) {
+            b.layers = this.getChildValue(a);
+          },
+          Styles: function (a, b) {
+            b.styles = this.getChildValue(a);
+          },
+        },
+        OpenLayers.Format.WMSCapabilities.v1_1_1.prototype.readers.wms
+      ),
+    },
+    CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC",
+  }
+);
+OpenLayers.Control.LayerSwitcher = OpenLayers.Class(OpenLayers.Control, {
+  layerStates: null,
+  layersDiv: null,
+  baseLayersDiv: null,
+  baseLayers: null,
+  dataLbl: null,
+  dataLayersDiv: null,
+  dataLayers: null,
+  minimizeDiv: null,
+  maximizeDiv: null,
+  ascending: !0,
+  initialize: function (a) {
+    OpenLayers.Control.prototype.initialize.apply(this, arguments);
+    this.layerStates = [];
+  },
+  destroy: function () {
+    this.clearLayersArray("base");
+    this.clearLayersArray("data");
+    this.map.events.un({
+      buttonclick: this.onButtonClick,
+      addlayer: this.redraw,
+      changelayer: this.redraw,
+      removelayer: this.redraw,
+      changebaselayer: this.redraw,
+      scope: this,
+    });
+    this.events.unregister("buttonclick", this, this.onButtonClick);
+    OpenLayers.Control.prototype.destroy.apply(this, arguments);
+  },
+  setMap: function (a) {
+    OpenLayers.Control.prototype.setMap.apply(this, arguments);
+    this.map.events.on({
+      addlayer: this.redraw,
+      changelayer: this.redraw,
+      removelayer: this.redraw,
+      changebaselayer: this.redraw,
+      scope: this,
+    });
+    this.outsideViewport
+      ? (this.events.attachToElement(this.div),
+        this.events.register("buttonclick", this, this.onButtonClick))
+      : this.map.events.register("buttonclick", this, this.onButtonClick);
+  },
+  draw: function () {
+    OpenLayers.Control.prototype.draw.apply(this);
+    this.loadContents();
+    this.outsideViewport || this.minimizeControl();
+    this.redraw();
+    return this.div;
+  },
+  onButtonClick: function (a) {
+    a = a.buttonElement;
+    a === this.minimizeDiv
+      ? this.minimizeControl()
+      : a === this.maximizeDiv
+      ? this.maximizeControl()
+      : a._layerSwitcher === this.id &&
+        (a["for"] && (a = document.getElementById(a["for"])),
+        a.disabled ||
+          ("radio" == a.type
+            ? ((a.checked = !0), this.map.setBaseLayer(this.map.getLayer(a._layer)))
+            : ((a.checked = !a.checked), this.updateMap())));
+  },
+  clearLayersArray: function (a) {
+    this[a + "LayersDiv"].innerHTML = "";
+    this[a + "Layers"] = [];
+  },
+  checkRedraw: function () {
+    if (!this.layerStates.length || this.map.layers.length != this.layerStates.length) return !0;
+    for (var a = 0, b = this.layerStates.length; a < b; a++) {
+      var c = this.layerStates[a],
+        d = this.map.layers[a];
+      if (
+        c.name != d.name ||
+        c.inRange != d.inRange ||
+        c.id != d.id ||
+        c.visibility != d.visibility
+      )
+        return !0;
+    }
+    return !1;
+  },
+  redraw: function () {
+    if (!this.checkRedraw()) return this.div;
+    this.clearLayersArray("base");
+    this.clearLayersArray("data");
+    var a = !1,
+      b = !1,
+      c = this.map.layers.length;
+    this.layerStates = Array(c);
+    for (var d = 0; d < c; d++) {
+      var e = this.map.layers[d];
+      this.layerStates[d] = {
+        name: e.name,
+        visibility: e.visibility,
+        inRange: e.inRange,
+        id: e.id,
+      };
+    }
+    var f = this.map.layers.slice();
+    this.ascending || f.reverse();
+    d = 0;
+    for (c = f.length; d < c; d++) {
+      var e = f[d],
+        g = e.isBaseLayer;
+      if (e.displayInLayerSwitcher) {
+        g ? (b = !0) : (a = !0);
+        var h = g ? e == this.map.baseLayer : e.getVisibility(),
+          k = document.createElement("input"),
+          l = OpenLayers.Util.createUniqueID(this.id + "_input_");
+        k.id = l;
+        k.name = g ? this.id + "_baseLayers" : e.name;
+        k.type = g ? "radio" : "checkbox";
+        k.value = e.name;
+        k.checked = h;
+        k.defaultChecked = h;
+        k.className = "olButton";
+        k._layer = e.id;
+        k._layerSwitcher = this.id;
+        g || e.inRange || (k.disabled = !0);
+        h = document.createElement("label");
+        h["for"] = k.id;
+        OpenLayers.Element.addClass(h, "labelSpan olButton");
+        h._layer = e.id;
+        h._layerSwitcher = this.id;
+        g || e.inRange || (h.style.color = "gray");
+        h.innerHTML = e.name;
+        h.style.verticalAlign = g ? "bottom" : "baseline";
+        l = document.createElement("br");
+        (g ? this.baseLayers : this.dataLayers).push({ layer: e, inputElem: k, labelSpan: h });
+        e = g ? this.baseLayersDiv : this.dataLayersDiv;
+        e.appendChild(k);
+        e.appendChild(h);
+        e.appendChild(l);
+      }
+    }
+    this.dataLbl.style.display = a ? "" : "none";
+    this.baseLbl.style.display = b ? "" : "none";
+    return this.div;
+  },
+  updateMap: function () {
+    for (var a = 0, b = this.baseLayers.length; a < b; a++) {
+      var c = this.baseLayers[a];
+      c.inputElem.checked && this.map.setBaseLayer(c.layer, !1);
+    }
+    a = 0;
+    for (b = this.dataLayers.length; a < b; a++)
+      (c = this.dataLayers[a]), c.layer.setVisibility(c.inputElem.checked);
+  },
+  maximizeControl: function (a) {
+    this.div.style.width = "";
+    this.div.style.height = "";
+    this.showControls(!1);
+    null != a && OpenLayers.Event.stop(a);
+  },
+  minimizeControl: function (a) {
+    this.div.style.width = "0px";
+    this.div.style.height = "0px";
+    this.showControls(!0);
+    null != a && OpenLayers.Event.stop(a);
+  },
+  showControls: function (a) {
+    this.maximizeDiv.style.display = a ? "" : "none";
+    this.minimizeDiv.style.display = a ? "none" : "";
+    this.layersDiv.style.display = a ? "none" : "";
+  },
+  loadContents: function () {
+    this.layersDiv = document.createElement("div");
+    this.layersDiv.id = this.id + "_layersDiv";
+    OpenLayers.Element.addClass(this.layersDiv, "layersDiv");
+    this.baseLbl = document.createElement("div");
+    this.baseLbl.innerHTML = OpenLayers.i18n("Base Layer");
+    OpenLayers.Element.addClass(this.baseLbl, "baseLbl");
+    this.baseLayersDiv = document.createElement("div");
+    OpenLayers.Element.addClass(this.baseLayersDiv, "baseLayersDiv");
+    this.dataLbl = document.createElement("div");
+    this.dataLbl.innerHTML = OpenLayers.i18n("Overlays");
+    OpenLayers.Element.addClass(this.dataLbl, "dataLbl");
+    this.dataLayersDiv = document.createElement("div");
+    OpenLayers.Element.addClass(this.dataLayersDiv, "dataLayersDiv");
+    this.ascending
+      ? (this.layersDiv.appendChild(this.baseLbl),
+        this.layersDiv.appendChild(this.baseLayersDiv),
+        this.layersDiv.appendChild(this.dataLbl),
+        this.layersDiv.appendChild(this.dataLayersDiv))
+      : (this.layersDiv.appendChild(this.dataLbl),
+        this.layersDiv.appendChild(this.dataLayersDiv),
+        this.layersDiv.appendChild(this.baseLbl),
+        this.layersDiv.appendChild(this.baseLayersDiv));
+    this.div.appendChild(this.layersDiv);
+    var a = OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");
+    this.maximizeDiv = OpenLayers.Util.createAlphaImageDiv(
+      "OpenLayers_Control_MaximizeDiv",
+      null,
+      null,
+      a,
+      "absolute"
+    );
+    OpenLayers.Element.addClass(this.maximizeDiv, "maximizeDiv olButton");
+    this.maximizeDiv.style.display = "none";
+    this.div.appendChild(this.maximizeDiv);
+    a = OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");
+    this.minimizeDiv = OpenLayers.Util.createAlphaImageDiv(
+      "OpenLayers_Control_MinimizeDiv",
+      null,
+      null,
+      a,
+      "absolute"
+    );
+    OpenLayers.Element.addClass(this.minimizeDiv, "minimizeDiv olButton");
+    this.minimizeDiv.style.display = "none";
+    this.div.appendChild(this.minimizeDiv);
+  },
+  CLASS_NAME: "OpenLayers.Control.LayerSwitcher",
+});
+OpenLayers.Format.Atom = OpenLayers.Class(OpenLayers.Format.XML, {
+  namespaces: { atom: "http://www.w3.org/2005/Atom", georss: "http://www.georss.org/georss" },
+  feedTitle: "untitled",
+  defaultEntryTitle: "untitled",
+  gmlParser: null,
+  xy: !1,
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    return this.parseFeatures(a);
+  },
+  write: function (a) {
+    var b;
+    if (OpenLayers.Util.isArray(a)) {
+      b = this.createElementNSPlus("atom:feed");
+      b.appendChild(this.createElementNSPlus("atom:title", { value: this.feedTitle }));
+      for (var c = 0, d = a.length; c < d; c++) b.appendChild(this.buildEntryNode(a[c]));
+    } else b = this.buildEntryNode(a);
+    return OpenLayers.Format.XML.prototype.write.apply(this, [b]);
+  },
+  buildContentNode: function (a) {
+    var b = this.createElementNSPlus("atom:content", { attributes: { type: a.type || null } });
+    if (a.src) b.setAttribute("src", a.src);
+    else if ("text" == a.type || null == a.type) b.appendChild(this.createTextNode(a.value));
+    else if ("html" == a.type) {
+      if ("string" != typeof a.value) throw "HTML content must be in form of an escaped string";
+      b.appendChild(this.createTextNode(a.value));
+    } else
+      "xhtml" == a.type
+        ? b.appendChild(a.value)
+        : "xhtml" == a.type || a.type.match(/(\+|\/)xml$/)
+        ? b.appendChild(a.value)
+        : b.appendChild(this.createTextNode(a.value));
+    return b;
+  },
+  buildEntryNode: function (a) {
+    var b = a.attributes,
+      c = b.atom || {},
+      d = this.createElementNSPlus("atom:entry");
+    if (c.authors)
+      for (
+        var e = OpenLayers.Util.isArray(c.authors) ? c.authors : [c.authors], f = 0, g = e.length;
+        f < g;
+        f++
+      )
+        d.appendChild(this.buildPersonConstructNode("author", e[f]));
+    if (c.categories)
+      for (
+        var e = OpenLayers.Util.isArray(c.categories) ? c.categories : [c.categories],
+          h,
+          f = 0,
+          g = e.length;
+        f < g;
+        f++
+      )
+        (h = e[f]),
+          d.appendChild(
+            this.createElementNSPlus("atom:category", {
+              attributes: { term: h.term, scheme: h.scheme || null, label: h.label || null },
+            })
+          );
+    c.content && d.appendChild(this.buildContentNode(c.content));
+    if (c.contributors)
+      for (
+        e = OpenLayers.Util.isArray(c.contributors) ? c.contributors : [c.contributors],
+          f = 0,
+          g = e.length;
+        f < g;
+        f++
+      )
+        d.appendChild(this.buildPersonConstructNode("contributor", e[f]));
+    a.fid && d.appendChild(this.createElementNSPlus("atom:id", { value: a.fid }));
+    if (c.links)
+      for (
+        e = OpenLayers.Util.isArray(c.links) ? c.links : [c.links], f = 0, g = e.length;
+        f < g;
+        f++
+      )
+        (h = e[f]),
+          d.appendChild(
+            this.createElementNSPlus("atom:link", {
+              attributes: {
+                href: h.href,
+                rel: h.rel || null,
+                type: h.type || null,
+                hreflang: h.hreflang || null,
+                title: h.title || null,
+                length: h.length || null,
+              },
+            })
+          );
+    c.published &&
+      d.appendChild(this.createElementNSPlus("atom:published", { value: c.published }));
+    c.rights && d.appendChild(this.createElementNSPlus("atom:rights", { value: c.rights }));
+    (c.summary || b.description) &&
+      d.appendChild(
+        this.createElementNSPlus("atom:summary", { value: c.summary || b.description })
+      );
+    d.appendChild(
+      this.createElementNSPlus("atom:title", {
+        value: c.title || b.title || this.defaultEntryTitle,
+      })
+    );
+    c.updated && d.appendChild(this.createElementNSPlus("atom:updated", { value: c.updated }));
+    a.geometry &&
+      ((b = this.createElementNSPlus("georss:where")),
+      b.appendChild(this.buildGeometryNode(a.geometry)),
+      d.appendChild(b));
+    return d;
+  },
+  initGmlParser: function () {
+    this.gmlParser = new OpenLayers.Format.GML.v3({
+      xy: this.xy,
+      featureNS: "http://example.com#feature",
+      internalProjection: this.internalProjection,
+      externalProjection: this.externalProjection,
+    });
+  },
+  buildGeometryNode: function (a) {
+    this.gmlParser || this.initGmlParser();
+    return this.gmlParser.writeNode("feature:_geometry", a).firstChild;
+  },
+  buildPersonConstructNode: function (a, b) {
+    var c = ["uri", "email"],
+      d = this.createElementNSPlus("atom:" + a);
+    d.appendChild(this.createElementNSPlus("atom:name", { value: b.name }));
+    for (var e = 0, f = c.length; e < f; e++)
+      b[c[e]] && d.appendChild(this.createElementNSPlus("atom:" + c[e], { value: b[c[e]] }));
+    return d;
+  },
+  getFirstChildValue: function (a, b, c, d) {
+    return (a = this.getElementsByTagNameNS(a, b, c)) && 0 < a.length
+      ? this.getChildValue(a[0], d)
+      : d;
+  },
+  parseFeature: function (a) {
+    var b = {},
+      c = null,
+      d = null,
+      e = null,
+      f = this.namespaces.atom;
+    this.parsePersonConstructs(a, "author", b);
+    d = this.getElementsByTagNameNS(a, f, "category");
+    0 < d.length && (b.categories = []);
+    for (var g = 0, h = d.length; g < h; g++) {
+      c = {};
+      c.term = d[g].getAttribute("term");
+      if ((e = d[g].getAttribute("scheme"))) c.scheme = e;
+      if ((e = d[g].getAttribute("label"))) c.label = e;
+      b.categories.push(c);
+    }
+    d = this.getElementsByTagNameNS(a, f, "content");
+    if (0 < d.length) {
+      c = {};
+      if ((e = d[0].getAttribute("type"))) c.type = e;
+      (e = d[0].getAttribute("src"))
+        ? (c.src = e)
+        : ("text" == c.type || "html" == c.type || null == c.type
+            ? (c.value = this.getFirstChildValue(a, f, "content", null))
+            : "xhtml" == c.type || c.type.match(/(\+|\/)xml$/)
+            ? (c.value = this.getChildEl(d[0]))
+            : (c.value = this.getFirstChildValue(a, f, "content", null)),
+          (b.content = c));
+    }
+    this.parsePersonConstructs(a, "contributor", b);
+    b.id = this.getFirstChildValue(a, f, "id", null);
+    d = this.getElementsByTagNameNS(a, f, "link");
+    0 < d.length && (b.links = Array(d.length));
+    for (var k = ["rel", "type", "hreflang", "title", "length"], g = 0, h = d.length; g < h; g++) {
+      c = {};
+      c.href = d[g].getAttribute("href");
+      for (var l = 0, m = k.length; l < m; l++) (e = d[g].getAttribute(k[l])) && (c[k[l]] = e);
+      b.links[g] = c;
+    }
+    if ((c = this.getFirstChildValue(a, f, "published", null))) b.published = c;
+    if ((c = this.getFirstChildValue(a, f, "rights", null))) b.rights = c;
+    if ((c = this.getFirstChildValue(a, f, "summary", null))) b.summary = c;
+    b.title = this.getFirstChildValue(a, f, "title", null);
+    b.updated = this.getFirstChildValue(a, f, "updated", null);
+    c = { title: b.title, description: b.summary, atom: b };
+    a = this.parseLocations(a)[0];
+    a = new OpenLayers.Feature.Vector(a, c);
+    a.fid = b.id;
+    return a;
+  },
+  parseFeatures: function (a) {
+    var b = [],
+      c = this.getElementsByTagNameNS(a, this.namespaces.atom, "entry");
+    0 == c.length && (c = [a]);
+    a = 0;
+    for (var d = c.length; a < d; a++) b.push(this.parseFeature(c[a]));
+    return b;
+  },
+  parseLocations: function (a) {
+    var b = this.namespaces.georss,
+      c = { components: [] },
+      d = this.getElementsByTagNameNS(a, b, "where");
+    if (d && 0 < d.length) {
+      this.gmlParser || this.initGmlParser();
+      for (var e = 0, f = d.length; e < f; e++) this.gmlParser.readChildNodes(d[e], c);
+    }
+    c = c.components;
+    if ((d = this.getElementsByTagNameNS(a, b, "point")) && 0 < d.length)
+      for (e = 0, f = d.length; e < f; e++) {
+        var g = OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\s+/);
+        2 != g.length && (g = OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\s*,\s*/));
+        c.push(new OpenLayers.Geometry.Point(g[1], g[0]));
+      }
+    var h = this.getElementsByTagNameNS(a, b, "line");
+    if (h && 0 < h.length)
+      for (var k, e = 0, f = h.length; e < f; e++) {
+        d = OpenLayers.String.trim(h[e].firstChild.nodeValue).split(/\s+/);
+        k = [];
+        for (var l = 0, m = d.length; l < m; l += 2)
+          (g = new OpenLayers.Geometry.Point(d[l + 1], d[l])), k.push(g);
+        c.push(new OpenLayers.Geometry.LineString(k));
+      }
+    if ((a = this.getElementsByTagNameNS(a, b, "polygon")) && 0 < a.length)
+      for (e = 0, f = a.length; e < f; e++) {
+        d = OpenLayers.String.trim(a[e].firstChild.nodeValue).split(/\s+/);
+        k = [];
+        l = 0;
+        for (m = d.length; l < m; l += 2)
+          (g = new OpenLayers.Geometry.Point(d[l + 1], d[l])), k.push(g);
+        c.push(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(k)]));
+      }
+    if (this.internalProjection && this.externalProjection)
+      for (e = 0, f = c.length; e < f; e++)
+        c[e] && c[e].transform(this.externalProjection, this.internalProjection);
+    return c;
+  },
+  parsePersonConstructs: function (a, b, c) {
+    var d = [],
+      e = this.namespaces.atom;
+    a = this.getElementsByTagNameNS(a, e, b);
+    for (var f = ["uri", "email"], g = 0, h = a.length; g < h; g++) {
+      var k = {};
+      k.name = this.getFirstChildValue(a[g], e, "name", null);
+      for (var l = 0, m = f.length; l < m; l++) {
+        var n = this.getFirstChildValue(a[g], e, f[l], null);
+        n && (k[f[l]] = n);
+      }
+      d.push(k);
+    }
+    0 < d.length && (c[b + "s"] = d);
+  },
+  CLASS_NAME: "OpenLayers.Format.Atom",
+});
+OpenLayers.Control.KeyboardDefaults = OpenLayers.Class(OpenLayers.Control, {
+  autoActivate: !0,
+  slideFactor: 75,
+  observeElement: null,
+  draw: function () {
+    this.handler = new OpenLayers.Handler.Keyboard(
+      this,
+      { keydown: this.defaultKeyPress },
+      { observeElement: this.observeElement || document }
+    );
+  },
+  defaultKeyPress: function (a) {
+    var b,
+      c = !0;
+    b = OpenLayers.Event.element(a);
+    if (!b || ("INPUT" != b.tagName && "TEXTAREA" != b.tagName && "SELECT" != b.tagName)) {
+      switch (a.keyCode) {
+        case OpenLayers.Event.KEY_LEFT:
+          this.map.pan(-this.slideFactor, 0);
+          break;
+        case OpenLayers.Event.KEY_RIGHT:
+          this.map.pan(this.slideFactor, 0);
+          break;
+        case OpenLayers.Event.KEY_UP:
+          this.map.pan(0, -this.slideFactor);
+          break;
+        case OpenLayers.Event.KEY_DOWN:
+          this.map.pan(0, this.slideFactor);
+          break;
+        case 33:
+          b = this.map.getSize();
+          this.map.pan(0, -0.75 * b.h);
+          break;
+        case 34:
+          b = this.map.getSize();
+          this.map.pan(0, 0.75 * b.h);
+          break;
+        case 35:
+          b = this.map.getSize();
+          this.map.pan(0.75 * b.w, 0);
+          break;
+        case 36:
+          b = this.map.getSize();
+          this.map.pan(-0.75 * b.w, 0);
+          break;
+        case 43:
+        case 61:
+        case 187:
+        case 107:
+          this.map.zoomIn();
+          break;
+        case 45:
+        case 109:
+        case 189:
+        case 95:
+          this.map.zoomOut();
+          break;
+        default:
+          c = !1;
+      }
+      c && OpenLayers.Event.stop(a);
+    }
+  },
+  CLASS_NAME: "OpenLayers.Control.KeyboardDefaults",
+});
+OpenLayers.Format.WMTSCapabilities.v1_0_0 = OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0, {
+  version: "1.0.0",
+  namespaces: {
+    ows: "http://www.opengis.net/ows/1.1",
+    wmts: "http://www.opengis.net/wmts/1.0",
+    xlink: "http://www.w3.org/1999/xlink",
+  },
+  yx: null,
+  defaultPrefix: "wmts",
+  initialize: function (a) {
+    OpenLayers.Format.XML.prototype.initialize.apply(this, [a]);
+    this.options = a;
+    a = OpenLayers.Util.extend({}, OpenLayers.Format.WMTSCapabilities.prototype.yx);
+    this.yx = OpenLayers.Util.extend(a, this.yx);
+  },
+  read: function (a) {
+    "string" == typeof a && (a = OpenLayers.Format.XML.prototype.read.apply(this, [a]));
+    a && 9 == a.nodeType && (a = a.documentElement);
+    var b = {};
+    this.readNode(a, b);
+    b.version = this.version;
+    return b;
+  },
+  readers: {
+    wmts: {
+      Capabilities: function (a, b) {
+        this.readChildNodes(a, b);
+      },
+      Contents: function (a, b) {
+        b.contents = {};
+        b.contents.layers = [];
+        b.contents.tileMatrixSets = {};
+        this.readChildNodes(a, b.contents);
+      },
+      Layer: function (a, b) {
+        var c = { styles: [], formats: [], dimensions: [], tileMatrixSetLinks: [], layers: [] };
+        this.readChildNodes(a, c);
+        b.layers.push(c);
+      },
+      Style: function (a, b) {
+        var c = {};
+        c.isDefault = "true" === a.getAttribute("isDefault");
+        this.readChildNodes(a, c);
+        b.styles.push(c);
+      },
+      Format: function (a, b) {
+        b.formats.push(this.getChildValue(a));
+      },
+      TileMatrixSetLink: function (a, b) {
+        var c = {};
+        this.readChildNodes(a, c);
+        b.tileMatrixSetLinks.push(c);
+      },
+      TileMatrixSet: function (a, b) {
+        if (b.layers) {
+          var c = { matrixIds: [] };
+          this.readChildNodes(a, c);
+          b.tileMatrixSets[c.identifier] = c;
+        } else b.tileMatrixSet = this.getChildValue(a);
+      },
+      TileMatrix: function (a, b) {
+        var c = { supportedCRS: b.supportedCRS };
+        this.readChildNodes(a, c);
+        b.matrixIds.push(c);
+      },
+      ScaleDenominator: function (a, b) {
+        b.scaleDenominator = parseFloat(this.getChildValue(a));
+      },
+      TopLeftCorner: function (a, b) {
+        var c = this.getChildValue(a).split(" "),
+          d;
+        b.supportedCRS &&
+          ((d = b.supportedCRS.replace(
+            /urn:ogc:def:crs:(\w+):.+:(\w+)$/,
+            "urn:ogc:def:crs:$1::$2"
+          )),
+          (d = !!this.yx[d]));
+        b.topLeftCorner = d ? new OpenLayers.LonLat(c[1], c[0]) : new OpenLayers.LonLat(c[0], c[1]);
+      },
+      TileWidth: function (a, b) {
+        b.tileWidth = parseInt(this.getChildValue(a));
+      },
+      TileHeight: function (a, b) {
+        b.tileHeight = parseInt(this.getChildValue(a));
+      },
+      MatrixWidth: function (a, b) {
+        b.matrixWidth = parseInt(this.getChildValue(a));
+      },
+      MatrixHeight: function (a, b) {
+        b.matrixHeight = parseInt(this.getChildValue(a));
+      },
+      ResourceURL: function (a, b) {
+        b.resourceUrl = b.resourceUrl || {};
+        var c = a.getAttribute("resourceType");
+        b.resourceUrls || (b.resourceUrls = []);
+        c = b.resourceUrl[c] = {
+          format: a.getAttribute("format"),
+          template: a.getAttribute("template"),
+          resourceType: c,
+        };
+        b.resourceUrls.push(c);
+      },
+      WSDL: function (a, b) {
+        b.wsdl = {};
+        b.wsdl.href = a.getAttribute("xlink:href");
+      },
+      ServiceMetadataURL: function (a, b) {
+        b.serviceMetadataUrl = {};
+        b.serviceMetadataUrl.href = a.getAttribute("xlink:href");
+      },
+      LegendURL: function (a, b) {
+        b.legend = {};
+        b.legend.href = a.getAttribute("xlink:href");
+        b.legend.format = a.getAttribute("format");
+      },
+      Dimension: function (a, b) {
+        var c = { values: [] };
+        this.readChildNodes(a, c);
+        b.dimensions.push(c);
+      },
+      Default: function (a, b) {
+        b["default"] = this.getChildValue(a);
+      },
+      Value: function (a, b) {
+        b.values.push(this.getChildValue(a));
+      },
+    },
+    ows: OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows,
+  },
+  CLASS_NAME: "OpenLayers.Format.WMTSCapabilities.v1_0_0",
+});
diff --git a/public/CimSDK/ol/ol.css b/public/CimSDK/ol/ol.css
new file mode 100644
index 0000000..62c2b61
--- /dev/null
+++ b/public/CimSDK/ol/ol.css
@@ -0,0 +1,350 @@
+:root,
+:host {
+  --ol-background-color: white;
+  --ol-accent-background-color: #F5F5F5;
+  --ol-subtle-background-color: rgba(128, 128, 128, 0.25);
+  --ol-partial-background-color: rgba(255, 255, 255, 0.75);
+  --ol-foreground-color: #333333;
+  --ol-subtle-foreground-color: #666666;
+  --ol-brand-color: #00AAFF;
+}
+
+.ol-box {
+  box-sizing: border-box;
+  border-radius: 2px;
+  border: 1.5px solid var(--ol-background-color);
+  background-color: var(--ol-partial-background-color);
+}
+
+.ol-mouse-position {
+  top: 8px;
+  right: 8px;
+  position: absolute;
+}
+
+.ol-scale-line {
+  background: var(--ol-partial-background-color);
+  border-radius: 4px;
+  bottom: 8px;
+  left: 8px;
+  padding: 2px;
+  position: absolute;
+}
+
+.ol-scale-line-inner {
+  border: 1px solid var(--ol-subtle-foreground-color);
+  border-top: none;
+  color: var(--ol-foreground-color);
+  font-size: 10px;
+  text-align: center;
+  margin: 1px;
+  will-change: contents, width;
+  transition: all 0.25s;
+}
+
+.ol-scale-bar {
+  position: absolute;
+  bottom: 8px;
+  left: 8px;
+}
+
+.ol-scale-bar-inner {
+  display: flex;
+}
+
+.ol-scale-step-marker {
+  width: 1px;
+  height: 15px;
+  background-color: var(--ol-foreground-color);
+  float: right;
+  z-index: 10;
+}
+
+.ol-scale-step-text {
+  position: absolute;
+  bottom: -5px;
+  font-size: 10px;
+  z-index: 11;
+  color: var(--ol-foreground-color);
+  text-shadow: -1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);
+}
+
+.ol-scale-text {
+  position: absolute;
+  font-size: 12px;
+  text-align: center;
+  bottom: 25px;
+  color: var(--ol-foreground-color);
+  text-shadow: -1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);
+}
+
+.ol-scale-singlebar {
+  position: relative;
+  height: 10px;
+  z-index: 9;
+  box-sizing: border-box;
+  border: 1px solid var(--ol-foreground-color);
+}
+
+.ol-scale-singlebar-even {
+  background-color: var(--ol-subtle-foreground-color);
+}
+
+.ol-scale-singlebar-odd {
+  background-color: var(--ol-background-color);
+}
+
+.ol-unsupported {
+  display: none;
+}
+
+.ol-viewport,
+.ol-unselectable {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none;
+  -webkit-tap-highlight-color: transparent;
+}
+
+.ol-viewport canvas {
+  all: unset;
+  overflow: hidden;
+}
+
+.ol-viewport {
+  touch-action: pan-x pan-y;
+}
+
+.ol-selectable {
+  -webkit-touch-callout: default;
+  -webkit-user-select: text;
+  -moz-user-select: text;
+  user-select: text;
+}
+
+.ol-grabbing {
+  cursor: -webkit-grabbing;
+  cursor: -moz-grabbing;
+  cursor: grabbing;
+}
+
+.ol-grab {
+  cursor: move;
+  cursor: -webkit-grab;
+  cursor: -moz-grab;
+  cursor: grab;
+}
+
+.ol-control {
+  position: absolute;
+  background-color: var(--ol-subtle-background-color);
+  border-radius: 4px;
+}
+
+.ol-zoom {
+  top: .5em;
+  left: .5em;
+}
+
+.ol-rotate {
+  top: .5em;
+  right: .5em;
+  transition: opacity .25s linear, visibility 0s linear;
+}
+
+.ol-rotate.ol-hidden {
+  opacity: 0;
+  visibility: hidden;
+  transition: opacity .25s linear, visibility 0s linear .25s;
+}
+
+.ol-zoom-extent {
+  top: 4.643em;
+  left: .5em;
+}
+
+.ol-full-screen {
+  right: .5em;
+  top: .5em;
+}
+
+.ol-control button {
+  display: block;
+  margin: 1px;
+  padding: 0;
+  color: var(--ol-subtle-foreground-color);
+  font-weight: bold;
+  text-decoration: none;
+  font-size: inherit;
+  text-align: center;
+  height: 1.375em;
+  width: 1.375em;
+  line-height: .4em;
+  background-color: var(--ol-background-color);
+  border: none;
+  border-radius: 2px;
+}
+
+.ol-control button::-moz-focus-inner {
+  border: none;
+  padding: 0;
+}
+
+.ol-zoom-extent button {
+  line-height: 1.4em;
+}
+
+.ol-compass {
+  display: block;
+  font-weight: normal;
+  will-change: transform;
+}
+
+.ol-touch .ol-control button {
+  font-size: 1.5em;
+}
+
+.ol-touch .ol-zoom-extent {
+  top: 5.5em;
+}
+
+.ol-control button:hover,
+.ol-control button:focus {
+  text-decoration: none;
+  outline: 1px solid var(--ol-subtle-foreground-color);
+  color: var(--ol-foreground-color);
+}
+
+.ol-zoom .ol-zoom-in {
+  border-radius: 2px 2px 0 0;
+}
+
+.ol-zoom .ol-zoom-out {
+  border-radius: 0 0 2px 2px;
+}
+
+.ol-attribution {
+  text-align: right;
+  bottom: .5em;
+  right: .5em;
+  max-width: calc(100% - 1.3em);
+  display: flex;
+  flex-flow: row-reverse;
+  align-items: center;
+}
+
+.ol-attribution a {
+  color: var(--ol-subtle-foreground-color);
+  text-decoration: none;
+}
+
+.ol-attribution ul {
+  margin: 0;
+  padding: 1px .5em;
+  color: var(--ol-foreground-color);
+  text-shadow: 0 0 2px var(--ol-background-color);
+  font-size: 12px;
+}
+
+.ol-attribution li {
+  display: inline;
+  list-style: none;
+}
+
+.ol-attribution li:not(:last-child):after {
+  content: " ";
+}
+
+.ol-attribution img {
+  max-height: 2em;
+  max-width: inherit;
+  vertical-align: middle;
+}
+
+.ol-attribution button {
+  flex-shrink: 0;
+}
+
+.ol-attribution.ol-collapsed ul {
+  display: none;
+}
+
+.ol-attribution:not(.ol-collapsed) {
+  background: var(--ol-partial-background-color);
+}
+
+.ol-attribution.ol-uncollapsible {
+  bottom: 0;
+  right: 0;
+  border-radius: 4px 0 0;
+}
+
+.ol-attribution.ol-uncollapsible img {
+  margin-top: -.2em;
+  max-height: 1.6em;
+}
+
+.ol-attribution.ol-uncollapsible button {
+  display: none;
+}
+
+.ol-zoomslider {
+  top: 4.5em;
+  left: .5em;
+  height: 200px;
+}
+
+.ol-zoomslider button {
+  position: relative;
+  height: 10px;
+}
+
+.ol-touch .ol-zoomslider {
+  top: 5.5em;
+}
+
+.ol-overviewmap {
+  left: 0.5em;
+  bottom: 0.5em;
+}
+
+.ol-overviewmap.ol-uncollapsible {
+  bottom: 0;
+  left: 0;
+  border-radius: 0 4px 0 0;
+}
+
+.ol-overviewmap .ol-overviewmap-map,
+.ol-overviewmap button {
+  display: block;
+}
+
+.ol-overviewmap .ol-overviewmap-map {
+  border: 1px solid var(--ol-subtle-foreground-color);
+  height: 150px;
+  width: 150px;
+}
+
+.ol-overviewmap:not(.ol-collapsed) button {
+  bottom: 0;
+  left: 0;
+  position: absolute;
+}
+
+.ol-overviewmap.ol-collapsed .ol-overviewmap-map,
+.ol-overviewmap.ol-uncollapsible button {
+  display: none;
+}
+
+.ol-overviewmap:not(.ol-collapsed) {
+  background: var(--ol-subtle-background-color);
+}
+
+.ol-overviewmap-box {
+  border: 1.5px dotted var(--ol-subtle-foreground-color);
+}
+
+.ol-overviewmap .ol-overviewmap-box:hover {
+  cursor: move;
+}
diff --git a/public/CimSDK/ol/ol.js b/public/CimSDK/ol/ol.js
new file mode 100644
index 0000000..7a172f5
--- /dev/null
+++ b/public/CimSDK/ol/ol.js
@@ -0,0 +1,2 @@
+/*! For license information please see ol.js.LICENSE.txt */
+!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.ol=n():t.ol=n()}(self,(function(){return function(){var t,n={226:function(t,n){n.read=function(t,n,i,r,e){var o,s,a=8*e-r-1,u=(1<<a)-1,c=u>>1,h=-7,f=i?e-1:0,l=i?-1:1,v=t[n+f];for(f+=l,o=v&(1<<-h)-1,v>>=-h,h+=a;h>0;o=256*o+t[n+f],f+=l,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=r;h>0;s=256*s+t[n+f],f+=l,h-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(v?-1:1);s+=Math.pow(2,r),o-=c}return(v?-1:1)*s*Math.pow(2,o-r)},n.write=function(t,n,i,r,e,o){var s,a,u,c=8*o-e-1,h=(1<<c)-1,f=h>>1,l=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,v=r?0:o-1,d=r?1:-1,p=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(a=isNaN(n)?1:0,s=h):(s=Math.floor(Math.log(n)/Math.LN2),n*(u=Math.pow(2,-s))<1&&(s--,u*=2),(n+=s+f>=1?l/u:l*Math.pow(2,1-f))*u>=2&&(s++,u/=2),s+f>=h?(a=0,s=h):s+f>=1?(a=(n*u-1)*Math.pow(2,e),s+=f):(a=n*Math.pow(2,f-1)*Math.pow(2,e),s=0));e>=8;t[i+v]=255&a,v+=d,a/=256,e-=8);for(s=s<<e|a,c+=e;c>0;t[i+v]=255&s,v+=d,s/=256,c-=8);t[i+v-d]|=128*p}},875:function(t,n,i){"use strict";function r(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function e(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}var s=i(692),a=Symbol("max"),u=Symbol("length"),c=Symbol("lengthCalculator"),h=Symbol("allowStale"),f=Symbol("maxAge"),l=Symbol("dispose"),v=Symbol("noDisposeOnSet"),d=Symbol("lruList"),p=Symbol("cache"),y=Symbol("updateAgeOnGet"),m=function(){return 1},w=function(){function t(n){if(r(this,t),"number"==typeof n&&(n={max:n}),n||(n={}),n.max&&("number"!=typeof n.max||n.max<0))throw new TypeError("max must be a non-negative number");this[a]=n.max||1/0;var i=n.length||m;if(this[c]="function"!=typeof i?m:i,this[h]=n.stale||!1,n.maxAge&&"number"!=typeof n.maxAge)throw new TypeError("maxAge must be a number");this[f]=n.maxAge||0,this[l]=n.dispose,this[v]=n.noDisposeOnSet||!1,this[y]=n.updateAgeOnGet||!1,this.reset()}return o(t,[{key:"max",get:function(){return this[a]},set:function(t){if("number"!=typeof t||t<0)throw new TypeError("max must be a non-negative number");this[a]=t||1/0,x(this)}},{key:"allowStale",get:function(){return this[h]},set:function(t){this[h]=!!t}},{key:"maxAge",get:function(){return this[f]},set:function(t){if("number"!=typeof t)throw new TypeError("maxAge must be a non-negative number");this[f]=t,x(this)}},{key:"lengthCalculator",get:function(){return this[c]},set:function(t){var n=this;"function"!=typeof t&&(t=m),t!==this[c]&&(this[c]=t,this[u]=0,this[d].forEach((function(t){t.length=n[c](t.value,t.key),n[u]+=t.length}))),x(this)}},{key:"length",get:function(){return this[u]}},{key:"itemCount",get:function(){return this[d].length}},{key:"rforEach",value:function(t,n){n=n||this;for(var i=this[d].tail;null!==i;){var r=i.prev;k(this,t,i,n),i=r}}},{key:"forEach",value:function(t,n){n=n||this;for(var i=this[d].head;null!==i;){var r=i.next;k(this,t,i,n),i=r}}},{key:"keys",value:function(){return this[d].toArray().map((function(t){return t.key}))}},{key:"values",value:function(){return this[d].toArray().map((function(t){return t.value}))}},{key:"reset",value:function(){var t=this;this[l]&&this[d]&&this[d].length&&this[d].forEach((function(n){return t[l](n.key,n.value)})),this[p]=new Map,this[d]=new s,this[u]=0}},{key:"dump",value:function(){var t=this;return this[d].map((function(n){return!g(t,n)&&{k:n.key,v:n.value,e:n.now+(n.maxAge||0)}})).toArray().filter((function(t){return t}))}},{key:"dumpLru",value:function(){return this[d]}},{key:"set",value:function(t,n,i){if((i=i||this[f])&&"number"!=typeof i)throw new TypeError("maxAge must be a number");var r=i?Date.now():0,e=this[c](n,t);if(this[p].has(t)){if(e>this[a])return j(this,this[p].get(t)),!1;var o=this[p].get(t).value;return this[l]&&(this[v]||this[l](t,o.value)),o.now=r,o.maxAge=i,o.value=n,this[u]+=e-o.length,o.length=e,this.get(t),x(this),!0}var s=new S(t,n,e,r,i);return s.length>this[a]?(this[l]&&this[l](t,n),!1):(this[u]+=s.length,this[d].unshift(s),this[p].set(t,this[d].head),x(this),!0)}},{key:"has",value:function(t){if(!this[p].has(t))return!1;var n=this[p].get(t).value;return!g(this,n)}},{key:"get",value:function(t){return b(this,t,!0)}},{key:"peek",value:function(t){return b(this,t,!1)}},{key:"pop",value:function(){var t=this[d].tail;return t?(j(this,t),t.value):null}},{key:"del",value:function(t){j(this,this[p].get(t))}},{key:"load",value:function(t){this.reset();for(var n=Date.now(),i=t.length-1;i>=0;i--){var r=t[i],e=r.e||0;if(0===e)this.set(r.k,r.v);else{var o=e-n;o>0&&this.set(r.k,r.v,o)}}}},{key:"prune",value:function(){var t=this;this[p].forEach((function(n,i){return b(t,i,!1)}))}}]),t}(),b=function(t,n,i){var r=t[p].get(n);if(r){var e=r.value;if(g(t,e)){if(j(t,r),!t[h])return}else i&&(t[y]&&(r.value.now=Date.now()),t[d].unshiftNode(r));return e.value}},g=function(t,n){if(!n||!n.maxAge&&!t[f])return!1;var i=Date.now()-n.now;return n.maxAge?i>n.maxAge:t[f]&&i>t[f]},x=function(t){if(t[u]>t[a])for(var n=t[d].tail;t[u]>t[a]&&null!==n;){var i=n.prev;j(t,n),n=i}},j=function(t,n){if(n){var i=n.value;t[l]&&t[l](i.key,i.value),t[u]-=i.length,t[p].delete(i.key),t[d].removeNode(n)}},S=o((function t(n,i,e,o,s){r(this,t),this.key=n,this.value=i,this.length=e,this.now=o,this.maxAge=s||0})),k=function(t,n,i,r){var e=i.value;g(t,e)&&(j(t,i),t[h]||(e=void 0)),e&&n.call(r,e.value,e.key,t)};t.exports=w},63:function(t){var n={thin:100,hairline:100,"ultra-light":100,"extra-light":100,light:200,book:300,regular:400,normal:400,plain:400,roman:400,standard:400,medium:500,"semi-bold":600,"demi-bold":600,bold:700,heavy:800,black:800,"extra-bold":800,"ultra-black":900,"extra-black":900,"ultra-bold":900,"heavy-black":900,fat:900,poster:900},i=" ",r=/(italic|oblique)$/i,e={};t.exports=function(t,o,s){var a=e[t];if(!a){Array.isArray(t)||(t=[t]);for(var u=400,c="normal",h=[],f=0,l=t.length;f<l;++f){var v=t[f].split(" "),d=v[v.length-1].toLowerCase();for(var p in"normal"==d||"italic"==d||"oblique"==d?(c=d,v.pop(),d=v[v.length-1].toLowerCase()):r.test(d)&&(d=d.replace(r,""),c=v[v.length-1].replace(d,"")),n){var y=v.length>1?v[v.length-2].toLowerCase():"";if(d==p||d==p.replace("-","")||y+"-"+d==p){u=n[p],v.pop(),y&&p.startsWith(y)&&v.pop();break}}"number"==typeof d&&(u=d);var m=v.join(i).replace("Klokantech Noto Sans","Noto Sans");-1!==m.indexOf(i)&&(m='"'+m+'"'),h.push(m)}a=e[t]=[c,u,h]}return a[0]+i+a[1]+i+o+"px"+(s?"/"+s:"")+i+a[2]}},98:function(t,n,i){"use strict";t.exports=e;var r=i(226);function e(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}e.Varint=0,e.Fixed64=1,e.Bytes=2,e.Fixed32=5;var o=4294967296,s=1/o,a="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function u(t){return t.type===e.Bytes?t.readVarint()+t.pos:t.pos+1}function c(t,n,i){return i?4294967296*n+(t>>>0):4294967296*(n>>>0)+(t>>>0)}function h(t,n,i){var r=n<=16383?1:n<=2097151?2:n<=268435455?3:Math.floor(Math.log(n)/(7*Math.LN2));i.realloc(r);for(var e=i.pos-1;e>=t;e--)i.buf[e+r]=i.buf[e]}function f(t,n){for(var i=0;i<t.length;i++)n.writeVarint(t[i])}function l(t,n){for(var i=0;i<t.length;i++)n.writeSVarint(t[i])}function v(t,n){for(var i=0;i<t.length;i++)n.writeFloat(t[i])}function d(t,n){for(var i=0;i<t.length;i++)n.writeDouble(t[i])}function p(t,n){for(var i=0;i<t.length;i++)n.writeBoolean(t[i])}function y(t,n){for(var i=0;i<t.length;i++)n.writeFixed32(t[i])}function m(t,n){for(var i=0;i<t.length;i++)n.writeSFixed32(t[i])}function w(t,n){for(var i=0;i<t.length;i++)n.writeFixed64(t[i])}function b(t,n){for(var i=0;i<t.length;i++)n.writeSFixed64(t[i])}function g(t,n){return(t[n]|t[n+1]<<8|t[n+2]<<16)+16777216*t[n+3]}function x(t,n,i){t[i]=n,t[i+1]=n>>>8,t[i+2]=n>>>16,t[i+3]=n>>>24}function j(t,n){return(t[n]|t[n+1]<<8|t[n+2]<<16)+(t[n+3]<<24)}e.prototype={destroy:function(){this.buf=null},readFields:function(t,n,i){for(i=i||this.length;this.pos<i;){var r=this.readVarint(),e=r>>3,o=this.pos;this.type=7&r,t(e,n,this),this.pos===o&&this.skip(r)}return n},readMessage:function(t,n){return this.readFields(t,n,this.readVarint()+this.pos)},readFixed32:function(){var t=g(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=j(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=g(this.buf,this.pos)+g(this.buf,this.pos+4)*o;return this.pos+=8,t},readSFixed64:function(){var t=g(this.buf,this.pos)+j(this.buf,this.pos+4)*o;return this.pos+=8,t},readFloat:function(){var t=r.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=r.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var n,i,r=this.buf;return n=127&(i=r[this.pos++]),i<128?n:(n|=(127&(i=r[this.pos++]))<<7,i<128?n:(n|=(127&(i=r[this.pos++]))<<14,i<128?n:(n|=(127&(i=r[this.pos++]))<<21,i<128?n:function(t,n,i){var r,e,o=i.buf;if(e=o[i.pos++],r=(112&e)>>4,e<128)return c(t,r,n);if(e=o[i.pos++],r|=(127&e)<<3,e<128)return c(t,r,n);if(e=o[i.pos++],r|=(127&e)<<10,e<128)return c(t,r,n);if(e=o[i.pos++],r|=(127&e)<<17,e<128)return c(t,r,n);if(e=o[i.pos++],r|=(127&e)<<24,e<128)return c(t,r,n);if(e=o[i.pos++],r|=(1&e)<<31,e<128)return c(t,r,n);throw new Error("Expected varint not more than 10 bytes")}(n|=(15&(i=r[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,n=this.pos;return this.pos=t,t-n>=12&&a?function(t,n,i){return a.decode(t.subarray(n,i))}(this.buf,n,t):function(t,n,i){var r="",e=n;for(;e<i;){var o,s,a,u=t[e],c=null,h=u>239?4:u>223?3:u>191?2:1;if(e+h>i)break;1===h?u<128&&(c=u):2===h?128==(192&(o=t[e+1]))&&(c=(31&u)<<6|63&o)<=127&&(c=null):3===h?(o=t[e+1],s=t[e+2],128==(192&o)&&128==(192&s)&&((c=(15&u)<<12|(63&o)<<6|63&s)<=2047||c>=55296&&c<=57343)&&(c=null)):4===h&&(o=t[e+1],s=t[e+2],a=t[e+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&((c=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,h=1):c>65535&&(c-=65536,r+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),r+=String.fromCharCode(c),e+=h}return r}(this.buf,n,t)},readBytes:function(){var t=this.readVarint()+this.pos,n=this.buf.subarray(this.pos,t);return this.pos=t,n},readPackedVarint:function(t,n){if(this.type!==e.Bytes)return t.push(this.readVarint(n));var i=u(this);for(t=t||[];this.pos<i;)t.push(this.readVarint(n));return t},readPackedSVarint:function(t){if(this.type!==e.Bytes)return t.push(this.readSVarint());var n=u(this);for(t=t||[];this.pos<n;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==e.Bytes)return t.push(this.readBoolean());var n=u(this);for(t=t||[];this.pos<n;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==e.Bytes)return t.push(this.readFloat());var n=u(this);for(t=t||[];this.pos<n;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==e.Bytes)return t.push(this.readDouble());var n=u(this);for(t=t||[];this.pos<n;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==e.Bytes)return t.push(this.readFixed32());var n=u(this);for(t=t||[];this.pos<n;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==e.Bytes)return t.push(this.readSFixed32());var n=u(this);for(t=t||[];this.pos<n;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==e.Bytes)return t.push(this.readFixed64());var n=u(this);for(t=t||[];this.pos<n;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==e.Bytes)return t.push(this.readSFixed64());var n=u(this);for(t=t||[];this.pos<n;)t.push(this.readSFixed64());return t},skip:function(t){var n=7&t;if(n===e.Varint)for(;this.buf[this.pos++]>127;);else if(n===e.Bytes)this.pos=this.readVarint()+this.pos;else if(n===e.Fixed32)this.pos+=4;else{if(n!==e.Fixed64)throw new Error("Unimplemented type: "+n);this.pos+=8}},writeTag:function(t,n){this.writeVarint(t<<3|n)},realloc:function(t){for(var n=this.length||16;n<this.pos+t;)n*=2;if(n!==this.length){var i=new Uint8Array(n);i.set(this.buf),this.buf=i,this.length=n}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),x(this.buf,t,this.pos),this.pos+=4},writeSFixed32:function(t){this.realloc(4),x(this.buf,t,this.pos),this.pos+=4},writeFixed64:function(t){this.realloc(8),x(this.buf,-1&t,this.pos),x(this.buf,Math.floor(t*s),this.pos+4),this.pos+=8},writeSFixed64:function(t){this.realloc(8),x(this.buf,-1&t,this.pos),x(this.buf,Math.floor(t*s),this.pos+4),this.pos+=8},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,n){var i,r;t>=0?(i=t%4294967296|0,r=t/4294967296|0):(r=~(-t/4294967296),4294967295^(i=~(-t%4294967296))?i=i+1|0:(i=0,r=r+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");n.realloc(10),function(t,n,i){i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos]=127&t}(i,0,n),function(t,n){var i=(7&t)<<4;if(n.buf[n.pos++]|=i|((t>>>=3)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(n.buf[n.pos++]=127&t|((t>>>=7)?128:0),!t)return;n.buf[n.pos++]=127&t}(r,n)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var n=this.pos;this.pos=function(t,n,i){for(var r,e,o=0;o<n.length;o++){if((r=n.charCodeAt(o))>55295&&r<57344){if(!e){r>56319||o+1===n.length?(t[i++]=239,t[i++]=191,t[i++]=189):e=r;continue}if(r<56320){t[i++]=239,t[i++]=191,t[i++]=189,e=r;continue}r=e-55296<<10|r-56320|65536,e=null}else e&&(t[i++]=239,t[i++]=191,t[i++]=189,e=null);r<128?t[i++]=r:(r<2048?t[i++]=r>>6|192:(r<65536?t[i++]=r>>12|224:(t[i++]=r>>18|240,t[i++]=r>>12&63|128),t[i++]=r>>6&63|128),t[i++]=63&r|128)}return i}(this.buf,t,this.pos);var i=this.pos-n;i>=128&&h(n,i,this),this.pos=n-1,this.writeVarint(i),this.pos+=i},writeFloat:function(t){this.realloc(4),r.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),r.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var n=t.length;this.writeVarint(n),this.realloc(n);for(var i=0;i<n;i++)this.buf[this.pos++]=t[i]},writeRawMessage:function(t,n){this.pos++;var i=this.pos;t(n,this);var r=this.pos-i;r>=128&&h(i,r,this),this.pos=i-1,this.writeVarint(r),this.pos+=r},writeMessage:function(t,n,i){this.writeTag(t,e.Bytes),this.writeRawMessage(n,i)},writePackedVarint:function(t,n){n.length&&this.writeMessage(t,f,n)},writePackedSVarint:function(t,n){n.length&&this.writeMessage(t,l,n)},writePackedBoolean:function(t,n){n.length&&this.writeMessage(t,p,n)},writePackedFloat:function(t,n){n.length&&this.writeMessage(t,v,n)},writePackedDouble:function(t,n){n.length&&this.writeMessage(t,d,n)},writePackedFixed32:function(t,n){n.length&&this.writeMessage(t,y,n)},writePackedSFixed32:function(t,n){n.length&&this.writeMessage(t,m,n)},writePackedFixed64:function(t,n){n.length&&this.writeMessage(t,w,n)},writePackedSFixed64:function(t,n){n.length&&this.writeMessage(t,b,n)},writeBytesField:function(t,n){this.writeTag(t,e.Bytes),this.writeBytes(n)},writeFixed32Field:function(t,n){this.writeTag(t,e.Fixed32),this.writeFixed32(n)},writeSFixed32Field:function(t,n){this.writeTag(t,e.Fixed32),this.writeSFixed32(n)},writeFixed64Field:function(t,n){this.writeTag(t,e.Fixed64),this.writeFixed64(n)},writeSFixed64Field:function(t,n){this.writeTag(t,e.Fixed64),this.writeSFixed64(n)},writeVarintField:function(t,n){this.writeTag(t,e.Varint),this.writeVarint(n)},writeSVarintField:function(t,n){this.writeTag(t,e.Varint),this.writeSVarint(n)},writeStringField:function(t,n){this.writeTag(t,e.Bytes),this.writeString(n)},writeFloatField:function(t,n){this.writeTag(t,e.Fixed32),this.writeFloat(n)},writeDoubleField:function(t,n){this.writeTag(t,e.Fixed64),this.writeDouble(n)},writeBooleanField:function(t,n){this.writeVarintField(t,Boolean(n))}}},72:function(t,n,i){var r,e,o;function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}o=function(){"use strict";function t(t,r,e,o,s){!function t(i,r,e,o,s){for(;o>e;){if(o-e>600){var a=o-e+1,u=r-e+1,c=Math.log(a),h=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*h*(a-h)/a)*(u-a/2<0?-1:1);t(i,r,Math.max(e,Math.floor(r-u*h/a+f)),Math.min(o,Math.floor(r+(a-u)*h/a+f)),s)}var l=i[r],v=e,d=o;for(n(i,e,r),s(i[o],l)>0&&n(i,e,o);v<d;){for(n(i,v,d),v++,d--;s(i[v],l)<0;)v++;for(;s(i[d],l)>0;)d--}0===s(i[e],l)?n(i,e,d):n(i,++d,o),d<=r&&(e=d+1),r<=d&&(o=d-1)}}(t,r,e||0,o||t.length-1,s||i)}function n(t,n,i){var r=t[n];t[n]=t[i],t[i]=r}function i(t,n){return t<n?-1:t>n?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,n,i){if(!i)return n.indexOf(t);for(var r=0;r<n.length;r++)if(i(t,n[r]))return r;return-1}function o(t,n){s(t,0,t.children.length,n,t)}function s(t,n,i,r,e){e||(e=d(null)),e.minX=1/0,e.minY=1/0,e.maxX=-1/0,e.maxY=-1/0;for(var o=n;o<i;o++){var s=t.children[o];a(e,t.leaf?r(s):s)}return e}function a(t,n){return t.minX=Math.min(t.minX,n.minX),t.minY=Math.min(t.minY,n.minY),t.maxX=Math.max(t.maxX,n.maxX),t.maxY=Math.max(t.maxY,n.maxY),t}function u(t,n){return t.minX-n.minX}function c(t,n){return t.minY-n.minY}function h(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function f(t){return t.maxX-t.minX+(t.maxY-t.minY)}function l(t,n){return t.minX<=n.minX&&t.minY<=n.minY&&n.maxX<=t.maxX&&n.maxY<=t.maxY}function v(t,n){return n.minX<=t.maxX&&n.minY<=t.maxY&&n.maxX>=t.minX&&n.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function p(n,i,r,e,o){for(var s=[i,r];s.length;)if(!((r=s.pop())-(i=s.pop())<=e)){var a=i+Math.ceil((r-i)/e/2)*e;t(n,a,i,r,o),s.push(i,a,a,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var n=this.data,i=[];if(!v(t,n))return i;for(var r=this.toBBox,e=[];n;){for(var o=0;o<n.children.length;o++){var s=n.children[o],a=n.leaf?r(s):s;v(t,a)&&(n.leaf?i.push(s):l(t,a)?this._all(s,i):e.push(s))}n=e.pop()}return i},r.prototype.collides=function(t){var n=this.data;if(!v(t,n))return!1;for(var i=[];n;){for(var r=0;r<n.children.length;r++){var e=n.children[r],o=n.leaf?this.toBBox(e):e;if(v(t,o)){if(n.leaf||l(t,o))return!0;i.push(e)}}n=i.pop()}return!1},r.prototype.load=function(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(var n=0;n<t.length;n++)this.insert(t[n]);return this}var i=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===i.height)this._splitRoot(this.data,i);else{if(this.data.height<i.height){var r=this.data;this.data=i,i=r}this._insert(i,this.data.height-i.height-1,!0)}else this.data=i;return this},r.prototype.insert=function(t){return t&&this._insert(t,this.data.height-1),this},r.prototype.clear=function(){return this.data=d([]),this},r.prototype.remove=function(t,n){if(!t)return this;for(var i,r,o,s=this.data,a=this.toBBox(t),u=[],c=[];s||u.length;){if(s||(s=u.pop(),r=u[u.length-1],i=c.pop(),o=!0),s.leaf){var h=e(t,s.children,n);if(-1!==h)return s.children.splice(h,1),u.push(s),this._condense(u),this}o||s.leaf||!l(s,a)?r?(i++,s=r.children[i],o=!1):s=null:(u.push(s),c.push(i),i=0,r=s,s=s.children[0])}return this},r.prototype.toBBox=function(t){return t},r.prototype.compareMinX=function(t,n){return t.minX-n.minX},r.prototype.compareMinY=function(t,n){return t.minY-n.minY},r.prototype.toJSON=function(){return this.data},r.prototype.fromJSON=function(t){return this.data=t,this},r.prototype._all=function(t,n){for(var i=[];t;)t.leaf?n.push.apply(n,t.children):i.push.apply(i,t.children),t=i.pop();return n},r.prototype._build=function(t,n,i,r){var e,s=i-n+1,a=this._maxEntries;if(s<=a)return o(e=d(t.slice(n,i+1)),this.toBBox),e;r||(r=Math.ceil(Math.log(s)/Math.log(a)),a=Math.ceil(s/Math.pow(a,r-1))),(e=d([])).leaf=!1,e.height=r;var u=Math.ceil(s/a),c=u*Math.ceil(Math.sqrt(a));p(t,n,i,c,this.compareMinX);for(var h=n;h<=i;h+=c){var f=Math.min(h+c-1,i);p(t,h,f,u,this.compareMinY);for(var l=h;l<=f;l+=u){var v=Math.min(l+u-1,f);e.children.push(this._build(t,l,v,r-1))}}return o(e,this.toBBox),e},r.prototype._chooseSubtree=function(t,n,i,r){for(;r.push(n),!n.leaf&&r.length-1!==i;){for(var e=1/0,o=1/0,s=void 0,a=0;a<n.children.length;a++){var u=n.children[a],c=h(u),f=(l=t,v=u,(Math.max(v.maxX,l.maxX)-Math.min(v.minX,l.minX))*(Math.max(v.maxY,l.maxY)-Math.min(v.minY,l.minY))-c);f<o?(o=f,e=c<e?c:e,s=u):f===o&&c<e&&(e=c,s=u)}n=s||n.children[0]}var l,v;return n},r.prototype._insert=function(t,n,i){var r=i?t:this.toBBox(t),e=[],o=this._chooseSubtree(r,this.data,n,e);for(o.children.push(t),a(o,r);n>=0&&e[n].children.length>this._maxEntries;)this._split(e,n),n--;this._adjustParentBBoxes(r,e,n)},r.prototype._split=function(t,n){var i=t[n],r=i.children.length,e=this._minEntries;this._chooseSplitAxis(i,e,r);var s=this._chooseSplitIndex(i,e,r),a=d(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,o(i,this.toBBox),o(a,this.toBBox),n?t[n-1].children.push(a):this._splitRoot(i,a)},r.prototype._splitRoot=function(t,n){this.data=d([t,n]),this.data.height=t.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,n,i){for(var r,e,o,a,u,c,f,l=1/0,v=1/0,d=n;d<=i-n;d++){var p=s(t,0,d,this.toBBox),y=s(t,d,i,this.toBBox),m=(e=p,o=y,a=Math.max(e.minX,o.minX),u=Math.max(e.minY,o.minY),c=Math.min(e.maxX,o.maxX),f=Math.min(e.maxY,o.maxY),Math.max(0,c-a)*Math.max(0,f-u)),w=h(p)+h(y);m<l?(l=m,r=d,v=w<v?w:v):m===l&&w<v&&(v=w,r=d)}return r||i-n},r.prototype._chooseSplitAxis=function(t,n,i){var r=t.leaf?this.compareMinX:u,e=t.leaf?this.compareMinY:c;this._allDistMargin(t,n,i,r)<this._allDistMargin(t,n,i,e)&&t.children.sort(r)},r.prototype._allDistMargin=function(t,n,i,r){t.children.sort(r);for(var e=this.toBBox,o=s(t,0,n,e),u=s(t,i-n,i,e),c=f(o)+f(u),h=n;h<i-n;h++){var l=t.children[h];a(o,t.leaf?e(l):l),c+=f(o)}for(var v=i-n-1;v>=n;v--){var d=t.children[v];a(u,t.leaf?e(d):d),c+=f(u)}return c},r.prototype._adjustParentBBoxes=function(t,n,i){for(var r=i;r>=0;r--)a(n[r],t)},r.prototype._condense=function(t){for(var n=t.length-1,i=void 0;n>=0;n--)0===t[n].children.length?n>0?(i=t[n-1].children).splice(i.indexOf(t[n]),1):this.clear():o(t[n],this.toBBox)},r},"object"==s(n)?t.exports=o():void 0===(e="function"==typeof(r=o)?r.call(n,i,n,t):r)||(t.exports=e)},760:function(t,n,i){function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var e=function(t){"use strict";var n,i=Object.prototype,e=i.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},s=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function c(t,n,i){return Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[n]}try{c({},"")}catch(t){c=function(t,n,i){return t[n]=i}}function h(t,n,i,r){var e=n&&n.prototype instanceof m?n:m,o=Object.create(e.prototype),s=new E(r||[]);return o._invoke=function(t,n,i){var r=l;return function(e,o){if(r===d)throw new Error("Generator is already running");if(r===p){if("throw"===e)throw o;return C()}for(i.method=e,i.arg=o;;){var s=i.delegate;if(s){var a=_(s,i);if(a){if(a===y)continue;return a}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===l)throw r=p,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=d;var u=f(t,n,i);if("normal"===u.type){if(r=i.done?p:v,u.arg===y)continue;return{value:u.arg,done:i.done}}"throw"===u.type&&(r=p,i.method="throw",i.arg=u.arg)}}}(t,i,s),o}function f(t,n,i){try{return{type:"normal",arg:t.call(n,i)}}catch(t){return{type:"throw",arg:t}}}t.wrap=h;var l="suspendedStart",v="suspendedYield",d="executing",p="completed",y={};function m(){}function w(){}function b(){}var g={};c(g,s,(function(){return this}));var x=Object.getPrototypeOf,j=x&&x(x(A([])));j&&j!==i&&e.call(j,s)&&(g=j);var S=b.prototype=m.prototype=Object.create(g);function k(t){["next","throw","return"].forEach((function(n){c(t,n,(function(t){return this._invoke(n,t)}))}))}function M(t,n){function i(o,s,a,u){var c=f(t[o],t,s);if("throw"!==c.type){var h=c.arg,l=h.value;return l&&"object"===r(l)&&e.call(l,"__await")?n.resolve(l.__await).then((function(t){i("next",t,a,u)}),(function(t){i("throw",t,a,u)})):n.resolve(l).then((function(t){h.value=t,a(h)}),(function(t){return i("throw",t,a,u)}))}u(c.arg)}var o;this._invoke=function(t,r){function e(){return new n((function(n,e){i(t,r,n,e)}))}return o=o?o.then(e,e):e()}}function _(t,i){var r=t.iterator[i.method];if(r===n){if(i.delegate=null,"throw"===i.method){if(t.iterator.return&&(i.method="return",i.arg=n,_(t,i),"throw"===i.method))return y;i.method="throw",i.arg=new TypeError("The iterator does not provide a 'throw' method")}return y}var e=f(r,t.iterator,i.arg);if("throw"===e.type)return i.method="throw",i.arg=e.arg,i.delegate=null,y;var o=e.arg;return o?o.done?(i[t.resultName]=o.value,i.next=t.nextLoc,"return"!==i.method&&(i.method="next",i.arg=n),i.delegate=null,y):o:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,y)}function O(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function T(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function E(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function A(t){if(t){var i=t[s];if(i)return i.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function i(){for(;++r<t.length;)if(e.call(t,r))return i.value=t[r],i.done=!1,i;return i.value=n,i.done=!0,i};return o.next=o}}return{next:C}}function C(){return{value:n,done:!0}}return w.prototype=b,c(S,"constructor",b),c(b,"constructor",w),w.displayName=c(b,u,"GeneratorFunction"),t.isGeneratorFunction=function(t){var n="function"==typeof t&&t.constructor;return!!n&&(n===w||"GeneratorFunction"===(n.displayName||n.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,c(t,u,"GeneratorFunction")),t.prototype=Object.create(S),t},t.awrap=function(t){return{__await:t}},k(M.prototype),c(M.prototype,a,(function(){return this})),t.AsyncIterator=M,t.async=function(n,i,r,e,o){void 0===o&&(o=Promise);var s=new M(h(n,i,r,e),o);return t.isGeneratorFunction(i)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},k(S),c(S,u,"Generator"),c(S,s,(function(){return this})),c(S,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var n=[];for(var i in t)n.push(i);return n.reverse(),function i(){for(;n.length;){var r=n.pop();if(r in t)return i.value=r,i.done=!1,i}return i.done=!0,i}},t.values=A,E.prototype={constructor:E,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(T),!t)for(var i in this)"t"===i.charAt(0)&&e.call(this,i)&&!isNaN(+i.slice(1))&&(this[i]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var i=this;function r(r,e){return a.type="throw",a.arg=t,i.next=r,e&&(i.method="next",i.arg=n),!!e}for(var o=this.tryEntries.length-1;o>=0;--o){var s=this.tryEntries[o],a=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var u=e.call(s,"catchLoc"),c=e.call(s,"finallyLoc");if(u&&c){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(u){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(t,n){for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&e.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=n&&n<=o.finallyLoc&&(o=null);var s=o?o.completion:{};return s.type=t,s.arg=n,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(s)},complete:function(t,n){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&n&&(this.next=n),y},finish:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),T(i),y}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc===t){var r=i.completion;if("throw"===r.type){var e=r.arg;T(i)}return e}}throw new Error("illegal catch attempt")},delegateYield:function(t,i,r){return this.delegate={iterator:A(t),resultName:i,nextLoc:r},"next"===this.method&&(this.arg=n),y}},t}("object"===r(t=i.nmd(t))?t.exports:{});try{regeneratorRuntime=e}catch(t){"object"===("undefined"==typeof globalThis?"undefined":r(globalThis))?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}},338:function(t){(function(){var n;t.exports={icon:"icons/google.svg",name:"google",title:"Google Fonts",link:"google.com/fonts",getNames:function(){return n},getLink:function(t){return"https://fonts.google.com/specimen/"+t.replace(/( )/g,"+")},normalizeName:function(t){return t}},n=["ABeeZee","Abel","Abril Fatface","Aclonica","Acme","Actor","Adamina","Advent Pro","Aguafina Script","Akronim","Aladin","Aldrich","Alef","Alegreya","Alegreya SC","Alegreya Sans","Alegreya Sans SC","Alex Brush","Alfa Slab One","Alice","Alike","Alike Angular","Allan","Allerta","Allerta Stencil","Allura","Almendra","Almendra Display","Almendra SC","Amarante","Amaranth","Amatic SC","Amethysta","Amiri","Amita","Anaheim","Andada","Andika","Angkor","Annie Use Your Telescope","Anonymous Pro","Antic","Antic Didone","Antic Slab","Anton","Arapey","Arbutus","Arbutus Slab","Architects Daughter","Archivo Black","Archivo Narrow","Arimo","Arizonia","Armata","Artifika","Arvo","Arya","Asap","Asar","Asset","Astloch","Asul","Atomic Age","Aubrey","Audiowide","Autour One","Average","Average Sans","Averia Gruesa Libre","Averia Libre","Averia Sans Libre","Averia Serif Libre","Bad Script","Balthazar","Bangers","Basic","Battambang","Baumans","Bayon","Belgrano","Belleza","BenchNine","Bentham","Berkshire Swash","Bevan","Bigelow Rules","Bigshot One","Bilbo","Bilbo Swash Caps","Biryani","Bitter","Black Ops One","Bokor","Bonbon","Boogaloo","Bowlby One","Bowlby One SC","Brawler","Bree Serif","Bubblegum Sans","Bubbler One","Buda","Buenard","Butcherman","Butterfly Kids","Cabin","Cabin Condensed","Cabin Sketch","Caesar Dressing","Cagliostro","Calligraffitti","Cambay","Cambo","Candal","Cantarell","Cantata One","Cantora One","Capriola","Cardo","Carme","Carrois Gothic","Carrois Gothic SC","Carter One","Catamaran","Caudex","Caveat","Caveat Brush","Cedarville Cursive","Ceviche One","Changa One","Chango","Chau Philomene One","Chela One","Chelsea Market","Chenla","Cherry Cream Soda","Cherry Swash","Chewy","Chicle","Chivo","Chonburi","Cinzel","Cinzel Decorative","Clicker Script","Coda","Coda Caption","Codystar","Combo","Comfortaa","Coming Soon","Concert One","Condiment","Content","Contrail One","Convergence","Cookie","Copse","Corben","Courgette","Cousine","Coustard","Covered By Your Grace","Crafty Girls","Creepster","Crete Round","Crimson Text","Croissant One","Crushed","Cuprum","Cutive","Cutive Mono","Damion","Dancing Script","Dangrek","Dawning of a New Day","Days One","Dekko","Delius","Delius Swash Caps","Delius Unicase","Della Respira","Denk One","Devonshire","Dhurjati","Didact Gothic","Diplomata","Diplomata SC","Domine","Donegal One","Doppio One","Dorsa","Dosis","Dr Sugiyama","Droid Sans","Droid Sans Mono","Droid Serif","Duru Sans","Dynalight","EB Garamond","Eagle Lake","Eater","Economica","Eczar","Ek Mukta","Electrolize","Elsie","Elsie Swash Caps","Emblema One","Emilys Candy","Engagement","Englebert","Enriqueta","Erica One","Esteban","Euphoria Script","Ewert","Exo","Exo 2","Expletus Sans","Fanwood Text","Fascinate","Fascinate Inline","Faster One","Fasthand","Fauna One","Federant","Federo","Felipa","Fenix","Finger Paint","Fira Mono","Fira Sans","Fjalla One","Fjord One","Flamenco","Flavors","Fondamento","Fontdiner Swanky","Forum","Francois One","Freckle Face","Fredericka the Great","Fredoka One","Freehand","Fresca","Frijole","Fruktur","Fugaz One","GFS Didot","GFS Neohellenic","Gabriela","Gafata","Galdeano","Galindo","Gentium Basic","Gentium Book Basic","Geo","Geostar","Geostar Fill","Germania One","Gidugu","Gilda Display","Give You Glory","Glass Antiqua","Glegoo","Gloria Hallelujah","Goblin One","Gochi Hand","Gorditas","Goudy Bookletter 1911","Graduate","Grand Hotel","Gravitas One","Great Vibes","Griffy","Gruppo","Gudea","Gurajada","Habibi","Halant","Hammersmith One","Hanalei","Hanalei Fill","Handlee","Hanuman","Happy Monkey","Headland One","Henny Penny","Herr Von Muellerhoff","Hind","Hind Siliguri","Hind Vadodara","Holtwood One SC","Homemade Apple","Homenaje","IM Fell DW Pica","IM Fell DW Pica SC","IM Fell Double Pica","IM Fell Double Pica SC","IM Fell English","IM Fell English SC","IM Fell French Canon","IM Fell French Canon SC","IM Fell Great Primer","IM Fell Great Primer SC","Iceberg","Iceland","Imprima","Inconsolata","Inder","Indie Flower","Inika","Inknut Antiqua","Irish Grover","Istok Web","Italiana","Italianno","Itim","Jacques Francois","Jacques Francois Shadow","Jaldi","Jim Nightshade","Jockey One","Jolly Lodger","Josefin Sans","Josefin Slab","Joti One","Judson","Julee","Julius Sans One","Junge","Jura","Just Another Hand","Just Me Again Down Here","Kadwa","Kalam","Kameron","Kantumruy","Karla","Karma","Kaushan Script","Kavoon","Kdam Thmor","Keania One","Kelly Slab","Kenia","Khand","Khmer","Khula","Kite One","Knewave","Kotta One","Koulen","Kranky","Kreon","Kristi","Krona One","Kurale","La Belle Aurore","Laila","Lakki Reddy","Lancelot","Lateef","Lato","League Script","Leckerli One","Ledger","Lekton","Lemon","Libre Baskerville","Life Savers","Lilita One","Lily Script One","Limelight","Linden Hill","Lobster","Lobster Two","Londrina Outline","Londrina Shadow","Londrina Sketch","Londrina Solid","Lora","Love Ya Like A Sister","Loved by the King","Lovers Quarrel","Luckiest Guy","Lusitana","Lustria","Macondo","Macondo Swash Caps","Magra","Maiden Orange","Mako","Mallanna","Mandali","Marcellus","Marcellus SC","Marck Script","Margarine","Marko One","Marmelad","Martel","Martel Sans","Marvel","Mate","Mate SC","Maven Pro","McLaren","Meddon","MedievalSharp","Medula One","Megrim","Meie Script","Merienda","Merienda One","Merriweather","Merriweather Sans","Metal","Metal Mania","Metamorphous","Metrophobic","Michroma","Milonga","Miltonian","Miltonian Tattoo","Miniver","Miss Fajardose","Modak","Modern Antiqua","Molengo","Molle","Monda","Monofett","Monoton","Monsieur La Doulaise","Montaga","Montez","Montserrat","Montserrat Alternates","Montserrat Subrayada","Moul","Moulpali","Mountains of Christmas","Mouse Memoirs","Mr Bedfort","Mr Dafoe","Mr De Haviland","Mrs Saint Delafield","Mrs Sheppards","Muli","Mystery Quest","NTR","Neucha","Neuton","New Rocker","News Cycle","Niconne","Nixie One","Nobile","Nokora","Norican","Nosifer","Nothing You Could Do","Noticia Text","Noto Sans","Noto Serif","Nova Cut","Nova Flat","Nova Mono","Nova Oval","Nova Round","Nova Script","Nova Slim","Nova Square","Numans","Nunito","Odor Mean Chey","Offside","Old Standard TT","Oldenburg","Oleo Script","Oleo Script Swash Caps","Open Sans","Open Sans Condensed","Oranienbaum","Orbitron","Oregano","Orienta","Original Surfer","Oswald","Over the Rainbow","Overlock","Overlock SC","Ovo","Oxygen","Oxygen Mono","PT Mono","PT Sans","PT Sans Caption","PT Sans Narrow","PT Serif","PT Serif Caption","Pacifico","Palanquin","Palanquin Dark","Paprika","Parisienne","Passero One","Passion One","Pathway Gothic One","Patrick Hand","Patrick Hand SC","Patua One","Paytone One","Peddana","Peralta","Permanent Marker","Petit Formal Script","Petrona","Philosopher","Piedra","Pinyon Script","Pirata One","Plaster","Play","Playball","Playfair Display","Playfair Display SC","Podkova","Poiret One","Poller One","Poly","Pompiere","Pontano Sans","Poppins","Port Lligat Sans","Port Lligat Slab","Pragati Narrow","Prata","Preahvihear","Press Start 2P","Princess Sofia","Prociono","Prosto One","Puritan","Purple Purse","Quando","Quantico","Quattrocento","Quattrocento Sans","Questrial","Quicksand","Quintessential","Qwigley","Racing Sans One","Radley","Rajdhani","Raleway","Raleway Dots","Ramabhadra","Ramaraja","Rambla","Rammetto One","Ranchers","Rancho","Ranga","Rationale","Ravi Prakash","Redressed","Reenie Beanie","Revalia","Rhodium Libre","Ribeye","Ribeye Marrow","Righteous","Risque","Roboto","Roboto Condensed","Roboto Mono","Roboto Slab","Rochester","Rock Salt","Rokkitt","Romanesco","Ropa Sans","Rosario","Rosarivo","Rouge Script","Rozha One","Rubik","Rubik Mono One","Rubik One","Ruda","Rufina","Ruge Boogie","Ruluko","Rum Raisin","Ruslan Display","Russo One","Ruthie","Rye","Sacramento","Sahitya","Sail","Salsa","Sanchez","Sancreek","Sansita One","Sarala","Sarina","Sarpanch","Satisfy","Scada","Scheherazade","Schoolbell","Seaweed Script","Sevillana","Seymour One","Shadows Into Light","Shadows Into Light Two","Shanti","Share","Share Tech","Share Tech Mono","Shojumaru","Short Stack","Siemreap","Sigmar One","Signika","Signika Negative","Simonetta","Sintony","Sirin Stencil","Six Caps","Skranji","Slabo 13px","Slabo 27px","Slackey","Smokum","Smythe","Sniglet","Snippet","Snowburst One","Sofadi One","Sofia","Sonsie One","Sorts Mill Goudy","Source Code Pro","Source Sans Pro","Source Serif Pro","Special Elite","Spicy Rice","Spinnaker","Spirax","Squada One","Sree Krushnadevaraya","Stalemate","Stalinist One","Stardos Stencil","Stint Ultra Condensed","Stint Ultra Expanded","Stoke","Strait","Sue Ellen Francisco","Sumana","Sunshiney","Supermercado One","Sura","Suranna","Suravaram","Suwannaphum","Swanky and Moo Moo","Syncopate","Tangerine","Taprom","Tauri","Teko","Telex","Tenali Ramakrishna","Tenor Sans","Text Me One","The Girl Next Door","Tienne","Tillana","Timmana","Tinos","Titan One","Titillium Web","Trade Winds","Trocchi","Trochut","Trykker","Tulpen One","Ubuntu","Ubuntu Condensed","Ubuntu Mono","Ultra","Uncial Antiqua","Underdog","Unica One","UnifrakturCook","UnifrakturMaguntia","Unkempt","Unlock","Unna","VT323","Vampiro One","Varela","Varela Round","Vast Shadow","Vesper Libre","Vibur","Vidaloka","Viga","Voces","Volkhov","Vollkorn","Voltaire","Waiting for the Sunrise","Wallpoet","Walter Turncoat","Warnes","Wellfleet","Wendy One","Wire One","Work Sans","Yanone Kaffeesatz","Yantramanav","Yellowtail","Yeseva One","Yesteryear","Zeyada"]}).call(this)},617:function(t,n,i){var r=i(279);t.exports=function(t,n,i){var e=i&&i.debug||!1,o=i&&i.startIndex||0;e&&console.log("starting findTagByName with",n," and ",i);var s=r(t,"<".concat(n,"[ >]"),o);if(e&&console.log("start:",s),-1!==s){var a=t.slice(s+n.length),u=r(a,"[ /]"+n+">",0),c=-1===u;c&&(u=r(a,"[ /]>",0));var h=s+n.length+u+1+(c?0:n.length)+1;if(e&&console.log("end:",h),-1!==h){var f=t.slice(s,h);return{inner:c?null:f.slice(f.indexOf(">")+1,f.lastIndexOf("<")),outer:f,start:s,end:h}}}}},51:function(t,n,i){var r=i(617);t.exports=function(t,n,i){for(var e,o=[],s=i&&i.debug||!1,a=i&&i.startIndex||0;e=r(t,n,{debug:s,startIndex:a});)a=e.end,o.push(e);return s&&console.log("findTagsByName found",o.length,"tags"),o}},802:function(t){function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports=function(t,i,r){var e=r&&r.debug||!1;e&&console.log("getting "+i+" in "+t);var o="object"===n(t)?t.outer:t,s="".concat(i,'\\="([^"]*)"');e&&console.log("pattern:",s);var a=new RegExp(s).exec(o);if(e&&console.log("match:",a),a)return a[1]}},279:function(t){t.exports=function(t,n,i){var r=new RegExp(n).exec(t.slice(i));return r?i+r.index:-1}},518:function(t){"use strict";t.exports=function(t){t.prototype[Symbol.iterator]=regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=this.head;case 1:if(!n){t.next=7;break}return t.next=4,n.value;case 4:n=n.next,t.next=1;break;case 7:case"end":return t.stop()}}),t,this)}))}},692:function(t,n,i){"use strict";function r(t){var n=this;if(n instanceof r||(n=new r),n.tail=null,n.head=null,n.length=0,t&&"function"==typeof t.forEach)t.forEach((function(t){n.push(t)}));else if(arguments.length>0)for(var i=0,e=arguments.length;i<e;i++)n.push(arguments[i]);return n}function e(t,n,i){var r=n===t.head?new a(i,null,n,t):new a(i,n,n.next,t);return null===r.next&&(t.tail=r),null===r.prev&&(t.head=r),t.length++,r}function o(t,n){t.tail=new a(n,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function s(t,n){t.head=new a(n,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function a(t,n,i,r){if(!(this instanceof a))return new a(t,n,i,r);this.list=r,this.value=t,n?(n.next=this,this.prev=n):this.prev=null,i?(i.prev=this,this.next=i):this.next=null}t.exports=r,r.Node=a,r.create=r,r.prototype.removeNode=function(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");var n=t.next,i=t.prev;return n&&(n.prev=i),i&&(i.next=n),t===this.head&&(this.head=n),t===this.tail&&(this.tail=i),t.list.length--,t.next=null,t.prev=null,t.list=null,n},r.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var n=this.head;t.list=this,t.next=n,n&&(n.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}},r.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var n=this.tail;t.list=this,t.prev=n,n&&(n.next=t),this.tail=t,this.head||(this.head=t),this.length++}},r.prototype.push=function(){for(var t=0,n=arguments.length;t<n;t++)o(this,arguments[t]);return this.length},r.prototype.unshift=function(){for(var t=0,n=arguments.length;t<n;t++)s(this,arguments[t]);return this.length},r.prototype.pop=function(){if(this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}},r.prototype.shift=function(){if(this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}},r.prototype.forEach=function(t,n){n=n||this;for(var i=this.head,r=0;null!==i;r++)t.call(n,i.value,r,this),i=i.next},r.prototype.forEachReverse=function(t,n){n=n||this;for(var i=this.tail,r=this.length-1;null!==i;r--)t.call(n,i.value,r,this),i=i.prev},r.prototype.get=function(t){for(var n=0,i=this.head;null!==i&&n<t;n++)i=i.next;if(n===t&&null!==i)return i.value},r.prototype.getReverse=function(t){for(var n=0,i=this.tail;null!==i&&n<t;n++)i=i.prev;if(n===t&&null!==i)return i.value},r.prototype.map=function(t,n){n=n||this;for(var i=new r,e=this.head;null!==e;)i.push(t.call(n,e.value,this)),e=e.next;return i},r.prototype.mapReverse=function(t,n){n=n||this;for(var i=new r,e=this.tail;null!==e;)i.push(t.call(n,e.value,this)),e=e.prev;return i},r.prototype.reduce=function(t,n){var i,r=this.head;if(arguments.length>1)i=n;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");r=this.head.next,i=this.head.value}for(var e=0;null!==r;e++)i=t(i,r.value,e),r=r.next;return i},r.prototype.reduceReverse=function(t,n){var i,r=this.tail;if(arguments.length>1)i=n;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");r=this.tail.prev,i=this.tail.value}for(var e=this.length-1;null!==r;e--)i=t(i,r.value,e),r=r.prev;return i},r.prototype.toArray=function(){for(var t=new Array(this.length),n=0,i=this.head;null!==i;n++)t[n]=i.value,i=i.next;return t},r.prototype.toArrayReverse=function(){for(var t=new Array(this.length),n=0,i=this.tail;null!==i;n++)t[n]=i.value,i=i.prev;return t},r.prototype.slice=function(t,n){(n=n||this.length)<0&&(n+=this.length),(t=t||0)<0&&(t+=this.length);var i=new r;if(n<t||n<0)return i;t<0&&(t=0),n>this.length&&(n=this.length);for(var e=0,o=this.head;null!==o&&e<t;e++)o=o.next;for(;null!==o&&e<n;e++,o=o.next)i.push(o.value);return i},r.prototype.sliceReverse=function(t,n){(n=n||this.length)<0&&(n+=this.length),(t=t||0)<0&&(t+=this.length);var i=new r;if(n<t||n<0)return i;t<0&&(t=0),n>this.length&&(n=this.length);for(var e=this.length,o=this.tail;null!==o&&e>n;e--)o=o.prev;for(;null!==o&&e>t;e--,o=o.prev)i.push(o.value);return i},r.prototype.splice=function(t,n){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,r=this.head;null!==r&&i<t;i++)r=r.next;var o=[];for(i=0;r&&i<n;i++)o.push(r.value),r=this.removeNode(r);null===r&&(r=this.tail),r!==this.head&&r!==this.tail&&(r=r.prev);for(i=0;i<(arguments.length<=2?0:arguments.length-2);i++)r=e(this,r,i+2<2||arguments.length<=i+2?void 0:arguments[i+2]);return o},r.prototype.reverse=function(){for(var t=this.head,n=this.tail,i=t;null!==i;i=i.prev){var r=i.prev;i.prev=i.next,i.next=r}return this.head=n,this.tail=t,this};try{i(518)(r)}catch(t){}},752:function(){},640:function(){},630:function(){},920:function(t,n,i){"use strict";function r(){return function(){throw new Error("Unimplemented abstract method.")}()}i.d(n,{default:function(){return mL}});var e=0;function o(t){return t.ol_uid||(t.ol_uid=String(++e))}var s,a="6.14.1",u=(s=function(t,n){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}s(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}),c=function(t){function n(n){var i=this,r="Assertion failed. See https://openlayers.org/en/"+("v"+a.split("-")[0])+"/doc/errors/#"+n+" for details.";return(i=t.call(this,r)||this).code=n,i.name="AssertionError",i.message=r,i}return u(n,t),n}(Error);function h(t){t.stopPropagation()}var f=function(){function t(t){this.propagationStopped,this.defaultPrevented,this.type=t,this.target=null}return t.prototype.preventDefault=function(){this.defaultPrevented=!0},t.prototype.stopPropagation=function(){this.propagationStopped=!0},t}(),l="propertychange",v=function(){function t(){this.disposed=!1}return t.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},t.prototype.disposeInternal=function(){},t}();function d(t,n,i){for(var r,e,o=i||p,s=0,a=t.length,u=!1;s<a;)(e=+o(t[r=s+(a-s>>1)],n))<0?s=r+1:(a=r,u=!e);return u?s:~s}function p(t,n){return t>n?1:t<n?-1:0}function y(t,n){return t.indexOf(n)>=0}function m(t,n,i){var r=t.length;if(t[0]<=n)return 0;if(n<=t[r-1])return r-1;var e=void 0;if(i>0){for(e=1;e<r;++e)if(t[e]<n)return e-1}else if(i<0){for(e=1;e<r;++e)if(t[e]<=n)return e}else for(e=1;e<r;++e){if(t[e]==n)return e;if(t[e]<n)return"function"==typeof i?i(n,t[e-1],t[e])>0?e-1:e:t[e-1]-n<n-t[e]?e-1:e}return r-1}function w(t,n,i){for(;n<i;){var r=t[n];t[n]=t[i],t[i]=r,++n,--i}}function b(t,n){for(var i=Array.isArray(n)?n:[n],r=i.length,e=0;e<r;e++)t[t.length]=i[e]}function g(t,n){for(var i,r=t.length>>>0,e=0;e<r;e++)if(n(i=t[e],e,t))return i;return null}function x(t,n){var i=t.length;if(i!==n.length)return!1;for(var r=0;r<i;r++)if(t[r]!==n[r])return!1;return!0}function j(t,n){var i;return!t.every((function(r,e){return i=e,!n(r,e,t)}))?i:-1}function S(t,n,i){var r=n||p;return t.every((function(n,e){if(0===e)return!0;var o=r(t[e-1],n);return!(o>0||i&&0===o)}))}function k(){return!0}function M(){return!1}function _(){}function O(t){var n,i,r,e=!1;return function(){var o=Array.prototype.slice.call(arguments);return e&&this===r&&x(o,i)||(e=!0,r=this,i=o,n=t.apply(this,arguments)),n}}function T(t){return function(){var n;try{n=t()}catch(t){return Promise.reject(t)}return n instanceof Promise?n:Promise.resolve(n)}()}var E="function"==typeof Object.assign?Object.assign:function(t,n){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var i=Object(t),r=1,e=arguments.length;r<e;++r){var o=arguments[r];if(null!=o)for(var s in o)o.hasOwnProperty(s)&&(i[s]=o[s])}return i};function A(t){for(var n in t)delete t[n]}var C="function"==typeof Object.values?Object.values:function(t){var n=[];for(var i in t)n.push(t[i]);return n};function R(t){var n;for(n in t)return!1;return!n}var P=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),I=function(t){function n(n){var i=t.call(this)||this;return i.t=n,i.S=null,i._=null,i.O=null,i}return P(n,t),n.prototype.addEventListener=function(t,n){if(t&&n){var i=this.O||(this.O={}),r=i[t]||(i[t]=[]);-1===r.indexOf(n)&&r.push(n)}},n.prototype.dispatchEvent=function(t){var n="string"==typeof t,i=n?t:t.type,r=this.O&&this.O[i];if(r){var e=n?new f(t):t;e.target||(e.target=this.t||this);var o,s=this._||(this._={}),a=this.S||(this.S={});i in s||(s[i]=0,a[i]=0),++s[i];for(var u=0,c=r.length;u<c;++u)if(!1===(o="handleEvent"in r[u]?r[u].handleEvent(e):r[u].call(this,e))||e.propagationStopped){o=!1;break}if(0==--s[i]){var h=a[i];for(delete a[i];h--;)this.removeEventListener(i,_);delete s[i]}return o}},n.prototype.disposeInternal=function(){this.O&&A(this.O)},n.prototype.getListeners=function(t){return this.O&&this.O[t]||void 0},n.prototype.hasListener=function(t){return!!this.O&&(t?t in this.O:Object.keys(this.O).length>0)},n.prototype.removeEventListener=function(t,n){var i=this.O&&this.O[t];if(i){var r=i.indexOf(n);-1!==r&&(this.S&&t in this.S?(i[r]=_,++this.S[t]):(i.splice(r,1),0===i.length&&delete this.O[t]))}},n}(v),N="change",z="error",F="clear",L="contextmenu",G="click",D="dblclick",U="dragenter",q="dragover",B="drop",W="keydown",V="keypress",X="load",H="resize",J="touchmove",K="wheel";function Y(t,n,i,r,e){if(r&&r!==t&&(i=i.bind(r)),e){var o=i;i=function(){t.removeEventListener(n,i),o.apply(this,arguments)}}var s={target:t,type:n,listener:i};return t.addEventListener(n,i),s}function Z(t,n,i,r){return Y(t,n,i,r,!0)}function $(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),A(t))}var Q=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),tt=function(t){function n(){var n=t.call(this)||this;return n.on=n.onInternal,n.once=n.onceInternal,n.un=n.unInternal,n.T=0,n}return Q(n,t),n.prototype.changed=function(){++this.T,this.dispatchEvent(N)},n.prototype.getRevision=function(){return this.T},n.prototype.onInternal=function(t,n){if(Array.isArray(t)){for(var i=t.length,r=new Array(i),e=0;e<i;++e)r[e]=Y(this,t[e],n);return r}return Y(this,t,n)},n.prototype.onceInternal=function(t,n){var i;if(Array.isArray(t)){var r=t.length;i=new Array(r);for(var e=0;e<r;++e)i[e]=Z(this,t[e],n)}else i=Z(this,t,n);return n.ol_key=i,i},n.prototype.unInternal=function(t,n){var i=n.ol_key;if(i)nt(i);else if(Array.isArray(t))for(var r=0,e=t.length;r<e;++r)this.removeEventListener(t[r],n);else this.removeEventListener(t,n)},n}(I);function nt(t){if(Array.isArray(t))for(var n=0,i=t.length;n<i;++n)$(t[n]);else $(t)}tt.prototype.on,tt.prototype.once,tt.prototype.un;var it=tt,rt=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),et=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.key=i,e.oldValue=r,e}return rt(n,t),n}(f),ot=function(t){function n(n){var i=t.call(this)||this;return i.on,i.once,i.un,o(i),i.A=null,void 0!==n&&i.setProperties(n),i}return rt(n,t),n.prototype.get=function(t){var n;return this.A&&this.A.hasOwnProperty(t)&&(n=this.A[t]),n},n.prototype.getKeys=function(){return this.A&&Object.keys(this.A)||[]},n.prototype.getProperties=function(){return this.A&&E({},this.A)||{}},n.prototype.hasProperties=function(){return!!this.A},n.prototype.notify=function(t,n){var i;i="change:".concat(t),this.hasListener(i)&&this.dispatchEvent(new et(i,t,n)),i=l,this.hasListener(i)&&this.dispatchEvent(new et(i,t,n))},n.prototype.addChangeListener=function(t,n){this.addEventListener("change:".concat(t),n)},n.prototype.removeChangeListener=function(t,n){this.removeEventListener("change:".concat(t),n)},n.prototype.set=function(t,n,i){var r=this.A||(this.A={});if(i)r[t]=n;else{var e=r[t];r[t]=n,e!==n&&this.notify(t,e)}},n.prototype.setProperties=function(t,n){for(var i in t)this.set(i,t[i],n)},n.prototype.applyProperties=function(t){t.A&&E(this.A||(this.A={}),t.A)},n.prototype.unset=function(t,n){if(this.A&&t in this.A){var i=this.A[t];delete this.A[t],R(this.A)&&(this.A=null),n||this.notify(t,i)}},n}(it),st="add",at="remove",ut=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ct="length",ht=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.element=i,e.index=r,e}return ut(n,t),n}(f),ft=function(t){function n(n,i){var r=t.call(this)||this;r.on,r.once,r.un;var e=i||{};if(r.C=!!e.unique,r.R=n||[],r.C)for(var o=0,s=r.R.length;o<s;++o)r.P(r.R[o],o);return r.G(),r}return ut(n,t),n.prototype.clear=function(){for(;this.getLength()>0;)this.pop()},n.prototype.extend=function(t){for(var n=0,i=t.length;n<i;++n)this.push(t[n]);return this},n.prototype.forEach=function(t){for(var n=this.R,i=0,r=n.length;i<r;++i)t(n[i],i,n)},n.prototype.getArray=function(){return this.R},n.prototype.item=function(t){return this.R[t]},n.prototype.getLength=function(){return this.get(ct)},n.prototype.insertAt=function(t,n){this.C&&this.P(n),this.R.splice(t,0,n),this.G(),this.dispatchEvent(new ht(st,n,t))},n.prototype.pop=function(){return this.removeAt(this.getLength()-1)},n.prototype.push=function(t){this.C&&this.P(t);var n=this.getLength();return this.insertAt(n,t),this.getLength()},n.prototype.remove=function(t){for(var n=this.R,i=0,r=n.length;i<r;++i)if(n[i]===t)return this.removeAt(i)},n.prototype.removeAt=function(t){var n=this.R[t];return this.R.splice(t,1),this.G(),this.dispatchEvent(new ht(at,n,t)),n},n.prototype.setAt=function(t,n){var i=this.getLength();if(t<i){this.C&&this.P(n,t);var r=this.R[t];this.R[t]=n,this.dispatchEvent(new ht(at,r,t)),this.dispatchEvent(new ht(st,n,t))}else{for(var e=i;e<t;++e)this.insertAt(e,void 0);this.insertAt(t,n)}},n.prototype.G=function(){this.set(ct,this.R.length)},n.prototype.P=function(t,n){for(var i=0,r=this.R.length;i<r;++i)if(this.R[i]===t&&i!==n)throw new c(58)},n}(ot),lt=0,vt=1,dt=2,pt=3,yt=4;function mt(t){return Math.pow(t,3)}function wt(t){return 1-mt(1-t)}function bt(t){return 3*t*t-2*t*t*t}function gt(t){return t}var xt=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),jt=function(t){function n(n,i,r){var e=t.call(this)||this,o=r||{};return e.tileCoord=n,e.state=i,e.interimTile=null,e.key="",e.D=void 0===o.transition?250:o.transition,e.U={},e.interpolate=!!o.interpolate,e}return xt(n,t),n.prototype.changed=function(){this.dispatchEvent(N)},n.prototype.release=function(){},n.prototype.getKey=function(){return this.key+"/"+this.tileCoord},n.prototype.getInterimTile=function(){if(!this.interimTile)return this;var t=this.interimTile;do{if(t.getState()==dt)return this.D=0,t;t=t.interimTile}while(t);return this},n.prototype.refreshInterimChain=function(){if(this.interimTile){var t=this.interimTile,n=this;do{if(t.getState()==dt){t.interimTile=null;break}t.getState()==vt?n=t:t.getState()==lt?n.interimTile=t.interimTile:n=t,t=n.interimTile}while(t)}},n.prototype.getTileCoord=function(){return this.tileCoord},n.prototype.getState=function(){return this.state},n.prototype.setState=function(t){if(this.state!==pt&&this.state>t)throw new Error("Tile load sequence violation");this.state=t,this.changed()},n.prototype.load=function(){r()},n.prototype.getAlpha=function(t,n){if(!this.D)return 1;var i=this.U[t];if(i){if(-1===i)return 1}else i=n,this.U[t]=i;var r=n-i+1e3/60;return r>=this.D?1:mt(r/this.D)},n.prototype.inTransition=function(t){return!!this.D&&-1!==this.U[t]},n.prototype.endTransition=function(t){this.D&&(this.U[t]=-1)},n}(I),St=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),kt=function(t){function n(n){var i=this,r=lt;return(i=t.call(this,n.tileCoord,r,{transition:n.transition,interpolate:n.interpolate})||this).q=n.loader,i.B=null,i.W=null,i}return St(n,t),n.prototype.getData=function(){return this.B},n.prototype.getError=function(){return this.W},n.prototype.load=function(){this.state=vt,this.changed();var t=this;this.q().then((function(n){t.B=n,t.state=dt,t.changed()})).catch((function(n){t.W=n,t.state=pt,t.changed()}))},n}(jt);function Mt(t,n){if(!t)throw new c(n)}var _t=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Ot(t){return"function"==typeof t?t:(Array.isArray(t)?n=t:(Mt("function"==typeof t.getZIndex,41),n=[t]),function(){return n});var n}var Tt=function(t){function n(n){var i=t.call(this)||this;if(i.on,i.once,i.un,i.V=void 0,i.H="geometry",i.K=null,i.tt=void 0,i.nt=null,i.addChangeListener(i.H,i.it),n)if("function"==typeof n.getSimplifiedGeometry){var r=n;i.setGeometry(r)}else{var e=n;i.setProperties(e)}return i}return _t(n,t),n.prototype.clone=function(){var t=new n(this.hasProperties()?this.getProperties():null);t.setGeometryName(this.getGeometryName());var i=this.getGeometry();i&&t.setGeometry(i.clone());var r=this.getStyle();return r&&t.setStyle(r),t},n.prototype.getGeometry=function(){return this.get(this.H)},n.prototype.getId=function(){return this.V},n.prototype.getGeometryName=function(){return this.H},n.prototype.getStyle=function(){return this.K},n.prototype.getStyleFunction=function(){return this.tt},n.prototype.rt=function(){this.changed()},n.prototype.it=function(){this.nt&&($(this.nt),this.nt=null);var t=this.getGeometry();t&&(this.nt=Y(t,N,this.rt,this)),this.changed()},n.prototype.setGeometry=function(t){this.set(this.H,t)},n.prototype.setStyle=function(t){this.K=t,this.tt=t?Ot(t):void 0,this.changed()},n.prototype.setId=function(t){this.V=t,this.changed()},n.prototype.setGeometryName=function(t){this.removeChangeListener(this.H,this.it),this.H=t,this.addChangeListener(this.H,this.it),this.it()},n}(ot),Et="XY",At="XYZ",Ct="XYM",Rt="XYZM",Pt={POINT:"Point",LINE_STRING:"LineString",LINEAR_RING:"LinearRing",POLYGON:"Polygon",MULTI_POINT:"MultiPoint",MULTI_LINE_STRING:"MultiLineString",MULTI_POLYGON:"MultiPolygon",GEOMETRY_COLLECTION:"GeometryCollection",CIRCLE:"Circle"},It={RADIANS:"radians",DEGREES:"degrees",FEET:"ft",METERS:"m",PIXELS:"pixels",TILE_PIXELS:"tile-pixels",USFEET:"us-ft"},Nt={9001:It.METERS,9002:It.FEET,9003:It.USFEET,9101:It.RADIANS,9102:It.DEGREES};function zt(t){return Nt[t]}var Ft={};Ft[It.RADIANS]=6370997/(2*Math.PI),Ft[It.DEGREES]=2*Math.PI*6370997/360,Ft[It.FEET]=.3048,Ft[It.METERS]=1,Ft[It.USFEET]=1200/3937;var Lt,Gt=It,Dt="undefined"!=typeof navigator&&void 0!==navigator.userAgent?navigator.userAgent.toLowerCase():"",Ut=-1!==Dt.indexOf("firefox"),qt=-1!==Dt.indexOf("safari")&&-1==Dt.indexOf("chrom"),Bt=qt&&!!(Dt.indexOf("version/15.4")>=0||Dt.match(/cpu (os|iphone os) 15_4 like mac os x/)),Wt=-1!==Dt.indexOf("webkit")&&-1==Dt.indexOf("edge"),Vt=-1!==Dt.indexOf("macintosh"),Xt="undefined"!=typeof devicePixelRatio?devicePixelRatio:1,Ht="undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas&&self instanceof WorkerGlobalScope,Jt="undefined"!=typeof Image&&Image.prototype.decode,Kt=function(){var t=!1;try{var n=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("_",null,n),window.removeEventListener("_",null,n)}catch(t){}return t}(),Yt=new Array(6);function Zt(){return[1,0,0,1,0,0]}function $t(t){return tn(t,1,0,0,1,0,0)}function Qt(t,n){var i=t[0],r=t[1],e=t[2],o=t[3],s=t[4],a=t[5],u=n[0],c=n[1],h=n[2],f=n[3],l=n[4],v=n[5];return t[0]=i*u+e*c,t[1]=r*u+o*c,t[2]=i*h+e*f,t[3]=r*h+o*f,t[4]=i*l+e*v+s,t[5]=r*l+o*v+a,t}function tn(t,n,i,r,e,o,s){return t[0]=n,t[1]=i,t[2]=r,t[3]=e,t[4]=o,t[5]=s,t}function nn(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t}function rn(t,n){var i=n[0],r=n[1];return n[0]=t[0]*i+t[2]*r+t[4],n[1]=t[1]*i+t[3]*r+t[5],n}function en(t,n){var i=Math.cos(n),r=Math.sin(n);return Qt(t,tn(Yt,i,r,-r,i,0,0))}function on(t,n,i){return Qt(t,tn(Yt,n,0,0,i,0,0))}function sn(t,n,i){return tn(t,n,0,0,i,0,0)}function an(t,n,i){return Qt(t,tn(Yt,1,0,0,1,n,i))}function un(t,n,i,r,e,o,s,a){var u=Math.sin(o),c=Math.cos(o);return t[0]=r*c,t[1]=e*u,t[2]=-r*u,t[3]=e*c,t[4]=s*r*c-a*r*u+n,t[5]=s*e*u+a*e*c+i,t}function cn(t,n){var i=hn(n);Mt(0!==i,32);var r=n[0],e=n[1],o=n[2],s=n[3],a=n[4],u=n[5];return t[0]=s/i,t[1]=-e/i,t[2]=-o/i,t[3]=r/i,t[4]=(o*u-s*a)/i,t[5]=-(r*u-e*a)/i,t}function hn(t){return t[0]*t[3]-t[1]*t[2]}function fn(t){var n="matrix("+t.join(", ")+")";if(Ht)return n;var i=Lt||(Lt=document.createElement("div"));return i.style.transform=n,i.style.transform}var ln="bottom-left",vn="bottom-right",dn="top-left",pn="top-right",yn=0,mn=1,wn=2,bn=4,gn=8,xn=16;function jn(t){for(var n=An(),i=0,r=t.length;i<r;++i)Ln(n,t[i]);return n}function Sn(t,n,i){return i?(i[0]=t[0]-n,i[1]=t[1]-n,i[2]=t[2]+n,i[3]=t[3]+n,i):[t[0]-n,t[1]-n,t[2]+n,t[3]+n]}function kn(t,n){return n?(n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n):t.slice()}function Mn(t,n,i){var r,e;return(r=n<t[0]?t[0]-n:t[2]<n?n-t[2]:0)*r+(e=i<t[1]?t[1]-i:t[3]<i?i-t[3]:0)*e}function _n(t,n){return Tn(t,n[0],n[1])}function On(t,n){return t[0]<=n[0]&&n[2]<=t[2]&&t[1]<=n[1]&&n[3]<=t[3]}function Tn(t,n,i){return t[0]<=n&&n<=t[2]&&t[1]<=i&&i<=t[3]}function En(t,n){var i=t[0],r=t[1],e=t[2],o=t[3],s=n[0],a=n[1],u=yn;return s<i?u|=xn:s>e&&(u|=bn),a<r?u|=gn:a>o&&(u|=wn),u===yn&&(u=mn),u}function An(){return[1/0,1/0,-1/0,-1/0]}function Cn(t,n,i,r,e){return e?(e[0]=t,e[1]=n,e[2]=i,e[3]=r,e):[t,n,i,r]}function Rn(t){return Cn(1/0,1/0,-1/0,-1/0,t)}function Pn(t,n){var i=t[0],r=t[1];return Cn(i,r,i,r,n)}function In(t,n,i,r,e){return Dn(Rn(e),t,n,i,r)}function Nn(t,n){return t[0]==n[0]&&t[2]==n[2]&&t[1]==n[1]&&t[3]==n[3]}function zn(t,n,i){return Math.abs(t[0]-n[0])<i&&Math.abs(t[2]-n[2])<i&&Math.abs(t[1]-n[1])<i&&Math.abs(t[3]-n[3])<i}function Fn(t,n){return n[0]<t[0]&&(t[0]=n[0]),n[2]>t[2]&&(t[2]=n[2]),n[1]<t[1]&&(t[1]=n[1]),n[3]>t[3]&&(t[3]=n[3]),t}function Ln(t,n){n[0]<t[0]&&(t[0]=n[0]),n[0]>t[2]&&(t[2]=n[0]),n[1]<t[1]&&(t[1]=n[1]),n[1]>t[3]&&(t[3]=n[1])}function Gn(t,n){for(var i=0,r=n.length;i<r;++i)Ln(t,n[i]);return t}function Dn(t,n,i,r,e){for(;i<r;i+=e)qn(t,n[i],n[i+1]);return t}function Un(t,n){for(var i=0,r=n.length;i<r;++i)Gn(t,n[i]);return t}function qn(t,n,i){t[0]=Math.min(t[0],n),t[1]=Math.min(t[1],i),t[2]=Math.max(t[2],n),t[3]=Math.max(t[3],i)}function Bn(t,n){var i;return(i=n(Vn(t)))||(i=n(Xn(t)))||(i=n(Qn(t)))?i:(i=n($n(t)))||!1}function Wn(t){var n=0;return ii(t)||(n=ti(t)*Yn(t)),n}function Vn(t){return[t[0],t[1]]}function Xn(t){return[t[2],t[1]]}function Hn(t){return[(t[0]+t[2])/2,(t[1]+t[3])/2]}function Jn(t,n){var i;return n===ln?i=Vn(t):n===vn?i=Xn(t):n===dn?i=$n(t):n===pn?i=Qn(t):Mt(!1,13),i}function Kn(t,n,i,r,e){var o=n*r[0]/2,s=n*r[1]/2,a=Math.cos(i),u=Math.sin(i),c=o*a,h=o*u,f=s*a,l=s*u,v=t[0],d=t[1],p=v-c+l,y=v-c-l,m=v+c-l,w=v+c+l,b=d-h-f,g=d-h+f,x=d+h+f,j=d+h-f;return Cn(Math.min(p,y,m,w),Math.min(b,g,x,j),Math.max(p,y,m,w),Math.max(b,g,x,j),e)}function Yn(t){return t[3]-t[1]}function Zn(t,n,i){var r=i||[1/0,1/0,-1/0,-1/0];return ni(t,n)?(t[0]>n[0]?r[0]=t[0]:r[0]=n[0],t[1]>n[1]?r[1]=t[1]:r[1]=n[1],t[2]<n[2]?r[2]=t[2]:r[2]=n[2],t[3]<n[3]?r[3]=t[3]:r[3]=n[3]):Rn(r),r}function $n(t){return[t[0],t[3]]}function Qn(t){return[t[2],t[3]]}function ti(t){return t[2]-t[0]}function ni(t,n){return t[0]<=n[2]&&t[2]>=n[0]&&t[1]<=n[3]&&t[3]>=n[1]}function ii(t){return t[2]<t[0]||t[3]<t[1]}function ri(t,n){return n?(n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n):t}function ei(t,n){var i=(t[2]-t[0])/2*(n-1),r=(t[3]-t[1])/2*(n-1);t[0]-=i,t[2]+=i,t[1]-=r,t[3]+=r}function oi(t,n,i){var r=!1,e=En(t,n),o=En(t,i);if(e===mn||o===mn)r=!0;else{var s=t[0],a=t[1],u=t[2],c=t[3],h=n[0],f=n[1],l=i[0],v=i[1],d=(v-f)/(l-h),p=void 0,y=void 0;o&wn&&!(e&wn)&&(r=(p=l-(v-c)/d)>=s&&p<=u),r||!(o&bn)||e&bn||(r=(y=v-(l-u)*d)>=a&&y<=c),r||!(o&gn)||e&gn||(r=(p=l-(v-a)/d)>=s&&p<=u),r||!(o&xn)||e&xn||(r=(y=v-(l-s)*d)>=a&&y<=c)}return r}function si(t,n,i,r){var e=[];if(r>1)for(var o=t[2]-t[0],s=t[3]-t[1],a=0;a<r;++a)e.push(t[0]+o*a/r,t[1],t[2],t[1]+s*a/r,t[2]-o*a/r,t[3],t[0],t[3]-s*a/r);else e=[t[0],t[1],t[2],t[1],t[2],t[3],t[0],t[3]];n(e,e,2);for(var u=[],c=[],h=(a=0,e.length);a<h;a+=2)u.push(e[a]),c.push(e[a+1]);return function(t,n,i){return Cn(Math.min.apply(null,t),Math.min.apply(null,n),Math.max.apply(null,t),Math.max.apply(null,n),i)}(u,c,i)}function ai(t,n){var i=n.getExtent(),r=Hn(t);if(n.canWrapX()&&(r[0]<i[0]||r[0]>=i[2])){var e=ti(i),o=Math.floor((r[0]-i[0])/e)*e;t[0]-=o,t[2]-=o}return t}var ui=function(){function t(t){this.et=t.code,this.ot=t.units,this.st=void 0!==t.extent?t.extent:null,this.ut=void 0!==t.worldExtent?t.worldExtent:null,this.ct=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.ht=void 0!==t.global&&t.global,this.ft=!(!this.ht||!this.st),this.lt=t.getPointResolution,this.vt=null,this.dt=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.ft},t.prototype.getCode=function(){return this.et},t.prototype.getExtent=function(){return this.st},t.prototype.getUnits=function(){return this.ot},t.prototype.getMetersPerUnit=function(){return this.dt||Ft[this.ot]},t.prototype.getWorldExtent=function(){return this.ut},t.prototype.getAxisOrientation=function(){return this.ct},t.prototype.isGlobal=function(){return this.ht},t.prototype.setGlobal=function(t){this.ht=t,this.ft=!(!t||!this.st)},t.prototype.getDefaultTileGrid=function(){return this.vt},t.prototype.setDefaultTileGrid=function(t){this.vt=t},t.prototype.setExtent=function(t){this.st=t,this.ft=!(!this.ht||!t)},t.prototype.setWorldExtent=function(t){this.ut=t},t.prototype.setGetPointResolution=function(t){this.lt=t},t.prototype.getPointResolutionFunc=function(){return this.lt},t}();function ci(t,n,i){return Math.min(Math.max(t,n),i)}var hi="cosh"in Math?Math.cosh:function(t){var n=Math.exp(t);return(n+1/n)/2},fi="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function li(t,n,i,r,e,o){var s=e-i,a=o-r;if(0!==s||0!==a){var u=((t-i)*s+(n-r)*a)/(s*s+a*a);u>1?(i=e,r=o):u>0&&(i+=s*u,r+=a*u)}return vi(t,n,i,r)}function vi(t,n,i,r){var e=i-t,o=r-n;return e*e+o*o}function di(t){for(var n=t.length,i=0;i<n;i++){for(var r=i,e=Math.abs(t[i][i]),o=i+1;o<n;o++){var s=Math.abs(t[o][i]);s>e&&(e=s,r=o)}if(0===e)return null;var a=t[r];t[r]=t[i],t[i]=a;for(var u=i+1;u<n;u++)for(var c=-t[u][i]/t[i][i],h=i;h<n+1;h++)i==h?t[u][h]=0:t[u][h]+=c*t[i][h]}for(var f=new Array(n),l=n-1;l>=0;l--){f[l]=t[l][n]/t[l][l];for(var v=l-1;v>=0;v--)t[v][n]-=t[v][l]*f[l]}return f}function pi(t){return 180*t/Math.PI}function yi(t){return t*Math.PI/180}function mi(t,n){var i=t%n;return i*n<0?i+n:i}function wi(t,n,i){return t+i*(n-t)}function bi(t,n){var i=Math.pow(10,n);return Math.round(t*i)/i}function gi(t,n){return Math.round(bi(t,n))}function xi(t,n){return Math.floor(bi(t,n))}function ji(t,n){return Math.ceil(bi(t,n))}var Si=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ki=6378137,Mi=Math.PI*ki,_i=[-Mi,-Mi,Mi,Mi],Oi=[-180,-85,180,85],Ti=ki*Math.log(Math.tan(Math.PI/2)),Ei=function(t){function n(n){return t.call(this,{code:n,units:Gt.METERS,extent:_i,global:!0,worldExtent:Oi,getPointResolution:function(t,n){return t/hi(n[1]/ki)}})||this}return Si(n,t),n}(ui),Ai=[new Ei("EPSG:3857"),new Ei("EPSG:102100"),new Ei("EPSG:102113"),new Ei("EPSG:900913"),new Ei("http://www.opengis.net/def/crs/EPSG/0/3857"),new Ei("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Ci(t,n,i){var r=t.length,e=i>1?i:2,o=n;void 0===o&&(o=e>2?t.slice():new Array(r));for(var s=0;s<r;s+=e){o[s]=Mi*t[s]/180;var a=ki*Math.log(Math.tan(Math.PI*(+t[s+1]+90)/360));a>Ti?a=Ti:a<-Ti&&(a=-Ti),o[s+1]=a}return o}function Ri(t,n,i){var r=t.length,e=i>1?i:2,o=n;void 0===o&&(o=e>2?t.slice():new Array(r));for(var s=0;s<r;s+=e)o[s]=180*t[s]/Mi,o[s+1]=360*Math.atan(Math.exp(t[s+1]/ki))/Math.PI-90;return o}var Pi=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ii=6378137,Ni=[-180,-90,180,90],zi=Math.PI*Ii/180,Fi=function(t){function n(n,i){return t.call(this,{code:n,units:Gt.DEGREES,extent:Ni,axisOrientation:i,global:!0,metersPerUnit:zi,worldExtent:Ni})||this}return Pi(n,t),n}(ui),Li=[new Fi("CRS:84"),new Fi("EPSG:4326","neu"),new Fi("urn:ogc:def:crs:OGC:1.3:CRS84"),new Fi("urn:ogc:def:crs:OGC:2:84"),new Fi("http://www.opengis.net/def/crs/OGC/1.3/CRS84"),new Fi("http://www.opengis.net/gml/srs/epsg.xml#4326","neu"),new Fi("http://www.opengis.net/def/crs/EPSG/0/4326","neu")],Gi={};function Di(){Gi={}}function Ui(t){return Gi[t]||Gi[t.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\w+)$/,"EPSG:$3")]||null}function qi(t,n){Gi[t]=n}var Bi={};function Wi(){Bi={}}function Vi(t,n,i){var r=t.getCode(),e=n.getCode();r in Bi||(Bi[r]={}),Bi[r][e]=i}function Xi(t,n){var i;return t in Bi&&n in Bi[t]&&(i=Bi[t][n]),i}function Hi(t,n,i){var r=void 0!==i?t.toFixed(i):""+t,e=r.indexOf(".");return(e=-1===e?r.length:e)>n?r:new Array(1+n-e).join("0")+r}function Ji(t,n){for(var i=(""+t).split("."),r=(""+n).split("."),e=0;e<Math.max(i.length,r.length);e++){var o=parseInt(i[e]||"0",10),s=parseInt(r[e]||"0",10);if(o>s)return 1;if(s>o)return-1}return 0}function Ki(t,n){return t[0]+=+n[0],t[1]+=+n[1],t}function Yi(t,n){var i=n.getRadius(),r=n.getCenter(),e=r[0],o=r[1],s=t[0]-e,a=t[1]-o;0===s&&0===a&&(s=1);var u=Math.sqrt(s*s+a*a);return[e+i*s/u,o+i*a/u]}function Zi(t,n){var i,r,e=t[0],o=t[1],s=n[0],a=n[1],u=s[0],c=s[1],h=a[0],f=a[1],l=h-u,v=f-c,d=0===l&&0===v?0:(l*(e-u)+v*(o-c))/(l*l+v*v||0);return d<=0?(i=u,r=c):d>=1?(i=h,r=f):(i=u+d*l,r=c+d*v),[i,r]}function $i(t,n,i){var r=mi(n+180,360)-180,e=Math.abs(3600*r),o=i||0,s=Math.pow(10,o),a=Math.floor(e/3600),u=Math.floor((e-3600*a)/60),c=e-3600*a-60*u;return(c=Math.ceil(c*s)/s)>=60&&(c=0,u+=1),u>=60&&(u=0,a+=1),a+"掳 "+Hi(u,2)+"鈥� "+Hi(c,2,o)+"鈥�"+(0==r?"":" "+t.charAt(r<0?1:0))}function Qi(t,n,i){return t?n.replace("{x}",t[0].toFixed(i)).replace("{y}",t[1].toFixed(i)):""}function tr(t,n){for(var i=!0,r=t.length-1;r>=0;--r)if(t[r]!=n[r]){i=!1;break}return i}function nr(t,n){var i=Math.cos(n),r=Math.sin(n),e=t[0]*i-t[1]*r,o=t[1]*i+t[0]*r;return t[0]=e,t[1]=o,t}function ir(t,n){return t[0]*=n,t[1]*=n,t}function rr(t,n){var i=t[0]-n[0],r=t[1]-n[1];return i*i+r*r}function er(t,n){return Math.sqrt(rr(t,n))}function or(t,n){return rr(t,Zi(t,n))}function sr(t,n){return Qi(t,"{x}, {y}",n)}function ar(t,n){if(n.canWrapX()){var i=ti(n.getExtent()),r=ur(t,n,i);r&&(t[0]-=r*i)}return t}function ur(t,n,i){var r=n.getExtent(),e=0;if(n.canWrapX()&&(t[0]<r[0]||t[0]>r[2])){var o=i||ti(r);e=Math.floor((t[0]-r[0])/o)}return e}var cr=6371008.8;function hr(t,n,i){var r=i||cr,e=yi(t[1]),o=yi(n[1]),s=(o-e)/2,a=yi(n[0]-t[0])/2,u=Math.sin(s)*Math.sin(s)+Math.sin(a)*Math.sin(a)*Math.cos(e)*Math.cos(o);return 2*r*Math.atan2(Math.sqrt(u),Math.sqrt(1-u))}function fr(t,n){for(var i=0,r=0,e=t.length;r<e-1;++r)i+=hr(t[r],t[r+1],n);return i}function lr(t,n){for(var i=0,r=t.length,e=t[r-1][0],o=t[r-1][1],s=0;s<r;s++){var a=t[s][0],u=t[s][1];i+=yi(a-e)*(2+Math.sin(yi(o))+Math.sin(yi(u))),e=a,o=u}return i*n*n/2}function vr(t,n,i,r){var e=r||cr,o=yi(t[1]),s=yi(t[0]),a=n/e,u=Math.asin(Math.sin(o)*Math.cos(a)+Math.cos(o)*Math.sin(a)*Math.cos(i));return[pi(s+Math.atan2(Math.sin(i)*Math.sin(a)*Math.cos(o),Math.cos(a)-Math.sin(o)*Math.sin(u))),pi(u)]}var dr=!0;function pr(t){dr=!(void 0===t||t)}function yr(t,n,i){var r;if(void 0!==n){for(var e=0,o=t.length;e<o;++e)n[e]=t[e];r=n}else r=t.slice();return r}function mr(t,n,i){if(void 0!==n&&t!==n){for(var r=0,e=t.length;r<e;++r)n[r]=t[r];t=n}return t}function wr(t){qi(t.getCode(),t),Vi(t,t,yr)}function br(t){t.forEach(wr)}function gr(t){return"string"==typeof t?Ui(t):t||null}function xr(t,n,i,r){var e,o=(t=gr(t)).getPointResolutionFunc();if(o){if(e=o(n,i),r&&r!==t.getUnits())(a=t.getMetersPerUnit())&&(e=e*a/Ft[r])}else{var s=t.getUnits();if(s==Gt.DEGREES&&!r||r==Gt.DEGREES)e=n;else{var a,u=Er(t,gr("EPSG:4326"));if(u===mr&&s!==Gt.DEGREES)e=n*t.getMetersPerUnit();else{var c=[i[0]-n/2,i[1],i[0]+n/2,i[1],i[0],i[1]-n/2,i[0],i[1]+n/2];e=(hr((c=u(c,c,2)).slice(0,2),c.slice(2,4))+hr(c.slice(4,6),c.slice(6,8)))/2}void 0!==(a=r?Ft[r]:t.getMetersPerUnit())&&(e/=a)}}return e}function jr(t){br(t),t.forEach((function(n){t.forEach((function(t){n!==t&&Vi(n,t,yr)}))}))}function Sr(t,n,i,r){t.forEach((function(t){n.forEach((function(n){Vi(t,n,i),Vi(n,t,r)}))}))}function kr(t,n){return t?"string"==typeof t?gr(t):t:gr(n)}function Mr(t){return function(n,i,r){for(var e=n.length,o=void 0!==r?r:2,s=void 0!==i?i:new Array(e),a=0;a<e;a+=o){var u=t([n[a],n[a+1]]);s[a]=u[0],s[a+1]=u[1];for(var c=o-1;c>=2;--c)s[a+c]=n[a+c]}return s}}function _r(t,n,i,r){var e=gr(t),o=gr(n);Vi(e,o,Mr(i)),Vi(o,e,Mr(r))}function Or(t,n){return pr(),Cr(t,"EPSG:4326",void 0!==n?n:"EPSG:3857")}function Tr(t,n){if(t===n)return!0;var i=t.getUnits()===n.getUnits();return(t.getCode()===n.getCode()||Er(t,n)===yr)&&i}function Er(t,n){var i=Xi(t.getCode(),n.getCode());return i||(i=mr),i}function Ar(t,n){return Er(gr(t),gr(n))}function Cr(t,n,i){return Ar(n,i)(t,void 0,t.length)}function Rr(t,n,i,r){return si(t,Ar(n,i),void 0,r)}var Pr=null;function Ir(t){Pr=gr(t)}function Nr(){return Pr}function zr(t,n){return Pr?Cr(t,n,Pr):t}function Fr(t,n){return Pr?Cr(t,Pr,n):(dr&&!tr(t,[0,0])&&t[0]>=-180&&t[0]<=180&&t[1]>=-90&&t[1]<=90&&(dr=!1,console.warn("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),t)}function Lr(t,n){return Pr?Rr(t,n,Pr):t}function Gr(t,n){return Pr?Rr(t,Pr,n):t}function Dr(t,n){if(!Pr)return t;var i=gr(n).getUnits(),r=Pr.getUnits();return i&&r?t*Ft[i]/Ft[r]:t}function Ur(t,n){if(!Pr)return t;var i=gr(n).getUnits(),r=Pr.getUnits();return i&&r?t*Ft[r]/Ft[i]:t}function qr(t,n,i){return function(r){var e,o,s=r[0],a=r[1];if(t.canWrapX()){var u=t.getExtent(),c=ti(u);(o=ur(r,t,c))&&(s-=o*c),s=ci(s,u[0],u[2]),a=ci(a,u[1],u[3]),e=i([s,a])}else e=i(r);return o&&n.canWrapX()&&(e[0]+=o*ti(n.getExtent())),e}}function Br(){jr(Ai),jr(Li),Sr(Li,Ai,Ci,Ri)}function Wr(t,n,i,r,e,o){for(var s=o||[],a=0,u=n;u<i;u+=r){var c=t[u],h=t[u+1];s[a++]=e[0]*c+e[2]*h+e[4],s[a++]=e[1]*c+e[3]*h+e[5]}return o&&s.length!=a&&(s.length=a),s}function Vr(t,n,i,r,e,o,s){for(var a=s||[],u=Math.cos(e),c=Math.sin(e),h=o[0],f=o[1],l=0,v=n;v<i;v+=r){var d=t[v]-h,p=t[v+1]-f;a[l++]=h+d*u-p*c,a[l++]=f+d*c+p*u;for(var y=v+2;y<v+r;++y)a[l++]=t[y]}return s&&a.length!=l&&(a.length=l),a}function Xr(t,n,i,r,e,o,s,a){for(var u=a||[],c=s[0],h=s[1],f=0,l=n;l<i;l+=r){var v=t[l]-c,d=t[l+1]-h;u[f++]=c+e*v,u[f++]=h+o*d;for(var p=l+2;p<l+r;++p)u[f++]=t[p]}return a&&u.length!=f&&(u.length=f),u}function Hr(t,n,i,r,e,o,s){for(var a=s||[],u=0,c=n;c<i;c+=r){a[u++]=t[c]+e,a[u++]=t[c+1]+o;for(var h=c+2;h<c+r;++h)a[u++]=t[h]}return s&&a.length!=u&&(a.length=u),a}Br();var Jr=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Kr=[1,0,0,1,0,0],Yr=function(t){function n(){var n=t.call(this)||this;return n.st=[1/0,1/0,-1/0,-1/0],n.yt=-1,n.simplifiedGeometryMaxMinSquaredTolerance=0,n.simplifiedGeometryRevision=0,n.simplifyTransformedInternal=O((function(t,n,i){if(!i)return this.getSimplifiedGeometry(n);var r=this.clone();return r.applyTransform(i),r.getSimplifiedGeometry(n)})),n}return Jr(n,t),n.prototype.simplifyTransformed=function(t,n){return this.simplifyTransformedInternal(this.getRevision(),t,n)},n.prototype.clone=function(){return r()},n.prototype.closestPointXY=function(t,n,i,e){return r()},n.prototype.containsXY=function(t,n){var i=this.getClosestPoint([t,n]);return i[0]===t&&i[1]===n},n.prototype.getClosestPoint=function(t,n){var i=n||[NaN,NaN];return this.closestPointXY(t[0],t[1],i,1/0),i},n.prototype.intersectsCoordinate=function(t){return this.containsXY(t[0],t[1])},n.prototype.computeExtent=function(t){return r()},n.prototype.getExtent=function(t){if(this.yt!=this.getRevision()){var n=this.computeExtent(this.st);(isNaN(n[0])||isNaN(n[1]))&&Rn(n),this.yt=this.getRevision()}return ri(this.st,t)},n.prototype.rotate=function(t,n){r()},n.prototype.scale=function(t,n,i){r()},n.prototype.simplify=function(t){return this.getSimplifiedGeometry(t*t)},n.prototype.getSimplifiedGeometry=function(t){return r()},n.prototype.getType=function(){return r()},n.prototype.applyTransform=function(t){r()},n.prototype.intersectsExtent=function(t){return r()},n.prototype.translate=function(t,n){r()},n.prototype.transform=function(t,n){var i=gr(t),r=i.getUnits()==Gt.TILE_PIXELS?function(t,r,e){var o=i.getExtent(),s=i.getWorldExtent(),a=Yn(s)/Yn(o);return un(Kr,s[0],s[3],a,-a,0,0,0),Wr(t,0,t.length,e,Kr,r),Ar(i,n)(t,r,e)}:Ar(i,n);return this.applyTransform(r),this},n}(ot),Zr=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function $r(t){var n;return t==Et?n=2:t==At||t==Ct?n=3:t==Rt&&(n=4),n}function Qr(t,n,i){var r=t.getFlatCoordinates();if(r){var e=t.getStride();return Wr(r,0,r.length,e,n,i)}return null}var te=function(t){function n(){var n=t.call(this)||this;return n.layout=Et,n.stride=2,n.flatCoordinates=null,n}return Zr(n,t),n.prototype.computeExtent=function(t){return In(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)},n.prototype.getCoordinates=function(){return r()},n.prototype.getFirstCoordinate=function(){return this.flatCoordinates.slice(0,this.stride)},n.prototype.getFlatCoordinates=function(){return this.flatCoordinates},n.prototype.getLastCoordinate=function(){return this.flatCoordinates.slice(this.flatCoordinates.length-this.stride)},n.prototype.getLayout=function(){return this.layout},n.prototype.getSimplifiedGeometry=function(t){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),t<0||0!==this.simplifiedGeometryMaxMinSquaredTolerance&&t<=this.simplifiedGeometryMaxMinSquaredTolerance)return this;var n=this.getSimplifiedGeometryInternal(t);return n.getFlatCoordinates().length<this.flatCoordinates.length?n:(this.simplifiedGeometryMaxMinSquaredTolerance=t,this)},n.prototype.getSimplifiedGeometryInternal=function(t){return this},n.prototype.getStride=function(){return this.stride},n.prototype.setFlatCoordinates=function(t,n){this.stride=$r(t),this.layout=t,this.flatCoordinates=n},n.prototype.setCoordinates=function(t,n){r()},n.prototype.setLayout=function(t,n,i){var r;if(t)r=$r(t);else{for(var e=0;e<i;++e){if(0===n.length)return this.layout=Et,void(this.stride=2);n=n[0]}t=function(t){var n;2==t?n=Et:3==t?n=At:4==t&&(n=Rt);return n}(r=n.length)}this.layout=t,this.stride=r},n.prototype.applyTransform=function(t){this.flatCoordinates&&(t(this.flatCoordinates,this.flatCoordinates,this.stride),this.changed())},n.prototype.rotate=function(t,n){var i=this.getFlatCoordinates();if(i){var r=this.getStride();Vr(i,0,i.length,r,t,n,i),this.changed()}},n.prototype.scale=function(t,n,i){var r=n;void 0===r&&(r=t);var e=i;e||(e=Hn(this.getExtent()));var o=this.getFlatCoordinates();if(o){var s=this.getStride();Xr(o,0,o.length,s,t,r,e,o),this.changed()}},n.prototype.translate=function(t,n){var i=this.getFlatCoordinates();if(i){var r=this.getStride();Hr(i,0,i.length,r,t,n,i),this.changed()}},n}(Yr);function ne(t,n,i,r,e,o,s){var a,u=t[n],c=t[n+1],h=t[i]-u,f=t[i+1]-c;if(0===h&&0===f)a=n;else{var l=((e-u)*h+(o-c)*f)/(h*h+f*f);if(l>1)a=i;else{if(l>0){for(var v=0;v<r;++v)s[v]=wi(t[n+v],t[i+v],l);return void(s.length=r)}a=n}}for(v=0;v<r;++v)s[v]=t[a+v];s.length=r}function ie(t,n,i,r,e){var o=t[n],s=t[n+1];for(n+=r;n<i;n+=r){var a=t[n],u=t[n+1],c=vi(o,s,a,u);c>e&&(e=c),o=a,s=u}return e}function re(t,n,i,r,e){for(var o=0,s=i.length;o<s;++o){var a=i[o];e=ie(t,n,a,r,e),n=a}return e}function ee(t,n,i,r,e){for(var o=0,s=i.length;o<s;++o){var a=i[o];e=re(t,n,a,r,e),n=a[a.length-1]}return e}function oe(t,n,i,r,e,o,s,a,u,c,h){if(n==i)return c;var f,l;if(0===e){if((l=vi(s,a,t[n],t[n+1]))<c){for(f=0;f<r;++f)u[f]=t[n+f];return u.length=r,l}return c}for(var v=h||[NaN,NaN],d=n+r;d<i;)if(ne(t,d-r,d,r,s,a,v),(l=vi(s,a,v[0],v[1]))<c){for(c=l,f=0;f<r;++f)u[f]=v[f];u.length=r,d+=r}else d+=r*Math.max((Math.sqrt(l)-Math.sqrt(c))/e|0,1);if(o&&(ne(t,i-r,n,r,s,a,v),(l=vi(s,a,v[0],v[1]))<c)){for(c=l,f=0;f<r;++f)u[f]=v[f];u.length=r}return c}function se(t,n,i,r,e,o,s,a,u,c,h){for(var f=h||[NaN,NaN],l=0,v=i.length;l<v;++l){var d=i[l];c=oe(t,n,d,r,e,o,s,a,u,c,f),n=d}return c}function ae(t,n,i,r,e,o,s,a,u,c,h){for(var f=h||[NaN,NaN],l=0,v=i.length;l<v;++l){var d=i[l];c=se(t,n,d,r,e,o,s,a,u,c,f),n=d[d.length-1]}return c}function ue(t,n,i,r){for(var e=0,o=i.length;e<o;++e)t[n++]=i[e];return n}function ce(t,n,i,r){for(var e=0,o=i.length;e<o;++e)for(var s=i[e],a=0;a<r;++a)t[n++]=s[a];return n}function he(t,n,i,r,e){for(var o=e||[],s=0,a=0,u=i.length;a<u;++a){var c=ce(t,n,i[a],r);o[s++]=c,n=c}return o.length=s,o}function fe(t,n,i,r,e){for(var o=e||[],s=0,a=0,u=i.length;a<u;++a){var c=he(t,n,i[a],r,o[s]);o[s++]=c,n=c[c.length-1]}return o.length=s,o}function le(t,n,i,r,e,o,s){var a=(i-n)/r;if(a<3){for(;n<i;n+=r)o[s++]=t[n],o[s++]=t[n+1];return s}var u=new Array(a);u[0]=1,u[a-1]=1;for(var c=[n,i-r],h=0;c.length>0;){for(var f=c.pop(),l=c.pop(),v=0,d=t[l],p=t[l+1],y=t[f],m=t[f+1],w=l+r;w<f;w+=r){var b=li(t[w],t[w+1],d,p,y,m);b>v&&(h=w,v=b)}v>e&&(u[(h-n)/r]=1,l+r<h&&c.push(l,h),h+r<f&&c.push(h,f))}for(w=0;w<a;++w)u[w]&&(o[s++]=t[n+w*r],o[s++]=t[n+w*r+1]);return s}function ve(t,n,i,r,e,o,s,a){for(var u=0,c=i.length;u<c;++u){var h=i[u];s=le(t,n,h,r,e,o,s),a.push(s),n=h}return s}function de(t,n,i,r,e,o,s){if(i<=n+r){for(;n<i;n+=r)o[s++]=t[n],o[s++]=t[n+1];return s}var a=t[n],u=t[n+1];o[s++]=a,o[s++]=u;var c=a,h=u;for(n+=r;n<i;n+=r)vi(a,u,c=t[n],h=t[n+1])>e&&(o[s++]=c,o[s++]=h,a=c,u=h);return c==a&&h==u||(o[s++]=c,o[s++]=h),s}function pe(t,n){return n*Math.round(t/n)}function ye(t,n,i,r,e,o,s){if(n==i)return s;var a,u,c=pe(t[n],e),h=pe(t[n+1],e);n+=r,o[s++]=c,o[s++]=h;do{if(a=pe(t[n],e),u=pe(t[n+1],e),(n+=r)==i)return o[s++]=a,o[s++]=u,s}while(a==c&&u==h);for(;n<i;){var f=pe(t[n],e),l=pe(t[n+1],e);if(n+=r,f!=a||l!=u){var v=a-c,d=u-h,p=f-c,y=l-h;v*y==d*p&&(v<0&&p<v||v==p||v>0&&p>v)&&(d<0&&y<d||d==y||d>0&&y>d)?(a=f,u=l):(o[s++]=a,o[s++]=u,c=a,h=u,a=f,u=l)}}return o[s++]=a,o[s++]=u,s}function me(t,n,i,r,e,o,s,a){for(var u=0,c=i.length;u<c;++u){var h=i[u];s=ye(t,n,h,r,e,o,s),a.push(s),n=h}return s}function we(t,n,i,r,e,o,s,a){for(var u=0,c=i.length;u<c;++u){var h=i[u],f=[];s=me(t,n,h,r,e,o,s,f),a.push(f),n=h[h.length-1]}return s}function be(t,n,i,r,e){for(var o=void 0!==e?e:[],s=0,a=n;a<i;a+=r)o[s++]=t.slice(a,a+r);return o.length=s,o}function ge(t,n,i,r,e){for(var o=void 0!==e?e:[],s=0,a=0,u=i.length;a<u;++a){var c=i[a];o[s++]=be(t,n,c,r,o[s]),n=c}return o.length=s,o}function xe(t,n,i,r,e){for(var o=void 0!==e?e:[],s=0,a=0,u=i.length;a<u;++a){var c=i[a];o[s++]=ge(t,n,c,r,o[s]),n=c[c.length-1]}return o.length=s,o}function je(t,n,i,r){for(var e=0,o=t[i-r],s=t[i-r+1];n<i;n+=r){var a=t[n],u=t[n+1];e+=s*a-o*u,o=a,s=u}return e/2}function Se(t,n,i,r){for(var e=0,o=0,s=i.length;o<s;++o){var a=i[o];e+=je(t,n,a,r),n=a}return e}function ke(t,n,i,r){for(var e=0,o=0,s=i.length;o<s;++o){var a=i[o];e+=Se(t,n,a,r),n=a[a.length-1]}return e}var Me=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_e=function(t){function n(n,i){var r=t.call(this)||this;return r.wt=-1,r.bt=-1,void 0===i||Array.isArray(n[0])?r.setCoordinates(n,i):r.setFlatCoordinates(i,n),r}return Me(n,t),n.prototype.clone=function(){return new n(this.flatCoordinates.slice(),this.layout)},n.prototype.closestPointXY=function(t,n,i,r){return r<Mn(this.getExtent(),t,n)?r:(this.bt!=this.getRevision()&&(this.wt=Math.sqrt(ie(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.bt=this.getRevision()),oe(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.wt,!0,t,n,i,r))},n.prototype.getArea=function(){return je(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)},n.prototype.getCoordinates=function(){return be(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)},n.prototype.getSimplifiedGeometryInternal=function(t){var i=[];return i.length=le(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,i,0),new n(i,Et)},n.prototype.getType=function(){return Pt.LINEAR_RING},n.prototype.intersectsExtent=function(t){return!1},n.prototype.setCoordinates=function(t,n){this.setLayout(n,t,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=ce(this.flatCoordinates,0,t,this.stride),this.changed()},n}(te),Oe=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Te=function(t){function n(n,i){var r=t.call(this)||this;return r.setCoordinates(n,i),r}return Oe(n,t),n.prototype.clone=function(){var t=new n(this.flatCoordinates.slice(),this.layout);return t.applyProperties(this),t},n.prototype.closestPointXY=function(t,n,i,r){var e=this.flatCoordinates,o=vi(t,n,e[0],e[1]);if(o<r){for(var s=this.stride,a=0;a<s;++a)i[a]=e[a];return i.length=s,o}return r},n.prototype.getCoordinates=function(){return this.flatCoordinates?this.flatCoordinates.slice():[]},n.prototype.computeExtent=function(t){return Pn(this.flatCoordinates,t)},n.prototype.getType=function(){return Pt.POINT},n.prototype.intersectsExtent=function(t){return Tn(t,this.flatCoordinates[0],this.flatCoordinates[1])},n.prototype.setCoordinates=function(t,n){this.setLayout(n,t,0),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=ue(this.flatCoordinates,0,t,this.stride),this.changed()},n}(te);function Ee(t,n,i,r,e){return!Bn(e,(function(e){return!Ae(t,n,i,r,e[0],e[1])}))}function Ae(t,n,i,r,e,o){for(var s=0,a=t[i-r],u=t[i-r+1];n<i;n+=r){var c=t[n],h=t[n+1];u<=o?h>o&&(c-a)*(o-u)-(e-a)*(h-u)>0&&s++:h<=o&&(c-a)*(o-u)-(e-a)*(h-u)<0&&s--,a=c,u=h}return 0!==s}function Ce(t,n,i,r,e,o){if(0===i.length)return!1;if(!Ae(t,n,i[0],r,e,o))return!1;for(var s=1,a=i.length;s<a;++s)if(Ae(t,i[s-1],i[s],r,e,o))return!1;return!0}function Re(t,n,i,r,e,o){if(0===i.length)return!1;for(var s=0,a=i.length;s<a;++s){var u=i[s];if(Ce(t,n,u,r,e,o))return!0;n=u[u.length-1]}return!1}function Pe(t,n,i,r,e,o,s){for(var a,u,c,h,f,l,v,d=e[o+1],y=[],m=0,w=i.length;m<w;++m){var b=i[m];for(h=t[b-r],l=t[b-r+1],a=n;a<b;a+=r)f=t[a],v=t[a+1],(d<=l&&v<=d||l<=d&&d<=v)&&(c=(d-l)/(v-l)*(f-h)+h,y.push(c)),h=f,l=v}var g=NaN,x=-1/0;for(y.sort(p),h=y[0],a=1,u=y.length;a<u;++a){f=y[a];var j=Math.abs(f-h);j>x&&Ce(t,n,i,r,c=(h+f)/2,d)&&(g=c,x=j),h=f}return isNaN(g)&&(g=e[o]),s?(s.push(g,d,x),s):[g,d,x]}function Ie(t,n,i,r,e){for(var o=[],s=0,a=i.length;s<a;++s){var u=i[s];o=Pe(t,n,u,r,e,2*s,o),n=u[u.length-1]}return o}function Ne(t,n,i,r,e){var o;for(n+=r;n<i;n+=r)if(o=e(t.slice(n-r,n),t.slice(n,n+r)))return o;return!1}function ze(t,n,i,r,e){var o=Dn([1/0,1/0,-1/0,-1/0],t,n,i,r);return!!ni(e,o)&&(!!On(e,o)||(o[0]>=e[0]&&o[2]<=e[2]||(o[1]>=e[1]&&o[3]<=e[3]||Ne(t,n,i,r,(function(t,n){return oi(e,t,n)})))))}function Fe(t,n,i,r,e){for(var o=0,s=i.length;o<s;++o){if(ze(t,n,i[o],r,e))return!0;n=i[o]}return!1}function Le(t,n,i,r,e){return!!ze(t,n,i,r,e)||(!!Ae(t,n,i,r,e[0],e[1])||(!!Ae(t,n,i,r,e[0],e[3])||(!!Ae(t,n,i,r,e[2],e[1])||!!Ae(t,n,i,r,e[2],e[3]))))}function Ge(t,n,i,r,e){if(!Le(t,n,i[0],r,e))return!1;if(1===i.length)return!0;for(var o=1,s=i.length;o<s;++o)if(Ee(t,i[o-1],i[o],r,e)&&!ze(t,i[o-1],i[o],r,e))return!1;return!0}function De(t,n,i,r,e){for(var o=0,s=i.length;o<s;++o){var a=i[o];if(Ge(t,n,a,r,e))return!0;n=a[a.length-1]}return!1}function Ue(t,n,i,r){for(;n<i-r;){for(var e=0;e<r;++e){var o=t[n+e];t[n+e]=t[i-r+e],t[i-r+e]=o}n+=r,i-=r}}function qe(t,n,i,r){for(var e=0,o=t[i-r],s=t[i-r+1];n<i;n+=r){var a=t[n],u=t[n+1];e+=(a-o)*(u+s),o=a,s=u}return 0===e?void 0:e>0}function Be(t,n,i,r,e){for(var o=void 0!==e&&e,s=0,a=i.length;s<a;++s){var u=i[s],c=qe(t,n,u,r);if(0===s){if(o&&c||!o&&!c)return!1}else if(o&&!c||!o&&c)return!1;n=u}return!0}function We(t,n,i,r,e){for(var o=0,s=i.length;o<s;++o){var a=i[o];if(!Be(t,n,a,r,e))return!1;a.length&&(n=a[a.length-1])}return!0}function Ve(t,n,i,r,e){for(var o=void 0!==e&&e,s=0,a=i.length;s<a;++s){var u=i[s],c=qe(t,n,u,r);(0===s?o&&c||!o&&!c:o&&!c||!o&&c)&&Ue(t,n,u,r),n=u}return n}function Xe(t,n,i,r,e){for(var o=0,s=i.length;o<s;++o)n=Ve(t,n,i[o],r,e);return n}function He(t,n){for(var i=[],r=0,e=0,o=0,s=n.length;o<s;++o){var a=n[o];if(qe(t,r,a,2)){if(0===i.length)continue;i[i.length-1].push(n[e])}else i.push(n.slice(e,o+1));e=o+1,r=a}return i}var Je=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ke=function(t){function n(n,i,r){var e=t.call(this)||this;return e.gt=[],e.xt=-1,e.jt=null,e.wt=-1,e.bt=-1,e.St=-1,e.kt=null,void 0!==i&&r?(e.setFlatCoordinates(i,n),e.gt=r):e.setCoordinates(n,i),e}return Je(n,t),n.prototype.appendLinearRing=function(t){this.flatCoordinates?b(this.flatCoordinates,t.getFlatCoordinates()):this.flatCoordinates=t.getFlatCoordinates().slice(),this.gt.push(this.flatCoordinates.length),this.changed()},n.prototype.clone=function(){var t=new n(this.flatCoordinates.slice(),this.layout,this.gt.slice());return t.applyProperties(this),t},n.prototype.closestPointXY=function(t,n,i,r){return r<Mn(this.getExtent(),t,n)?r:(this.bt!=this.getRevision()&&(this.wt=Math.sqrt(re(this.flatCoordinates,0,this.gt,this.stride,0)),this.bt=this.getRevision()),se(this.flatCoordinates,0,this.gt,this.stride,this.wt,!0,t,n,i,r))},n.prototype.containsXY=function(t,n){return Ce(this.getOrientedFlatCoordinates(),0,this.gt,this.stride,t,n)},n.prototype.getArea=function(){return Se(this.getOrientedFlatCoordinates(),0,this.gt,this.stride)},n.prototype.getCoordinates=function(t){var n;return void 0!==t?Ve(n=this.getOrientedFlatCoordinates().slice(),0,this.gt,this.stride,t):n=this.flatCoordinates,ge(n,0,this.gt,this.stride)},n.prototype.getEnds=function(){return this.gt},n.prototype.getFlatInteriorPoint=function(){if(this.xt!=this.getRevision()){var t=Hn(this.getExtent());this.jt=Pe(this.getOrientedFlatCoordinates(),0,this.gt,this.stride,t,0),this.xt=this.getRevision()}return this.jt},n.prototype.getInteriorPoint=function(){return new Te(this.getFlatInteriorPoint(),Ct)},n.prototype.getLinearRingCount=function(){return this.gt.length},n.prototype.getLinearRing=function(t){return t<0||this.gt.length<=t?null:new _e(this.flatCoordinates.slice(0===t?0:this.gt[t-1],this.gt[t]),this.layout)},n.prototype.getLinearRings=function(){for(var t=this.layout,n=this.flatCoordinates,i=this.gt,r=[],e=0,o=0,s=i.length;o<s;++o){var a=i[o],u=new _e(n.slice(e,a),t);r.push(u),e=a}return r},n.prototype.getOrientedFlatCoordinates=function(){if(this.St!=this.getRevision()){var t=this.flatCoordinates;Be(t,0,this.gt,this.stride)?this.kt=t:(this.kt=t.slice(),this.kt.length=Ve(this.kt,0,this.gt,this.stride)),this.St=this.getRevision()}return this.kt},n.prototype.getSimplifiedGeometryInternal=function(t){var i=[],r=[];return i.length=me(this.flatCoordinates,0,this.gt,this.stride,Math.sqrt(t),i,0,r),new n(i,Et,r)},n.prototype.getType=function(){return Pt.POLYGON},n.prototype.intersectsExtent=function(t){return Ge(this.getOrientedFlatCoordinates(),0,this.gt,this.stride,t)},n.prototype.setCoordinates=function(t,n){this.setLayout(n,t,2),this.flatCoordinates||(this.flatCoordinates=[]);var i=he(this.flatCoordinates,0,t,this.stride,this.gt);this.flatCoordinates.length=0===i.length?0:i[i.length-1],this.changed()},n}(te),Ye=Ke;function Ze(t,n,i,r){for(var e=i||32,o=[],s=0;s<e;++s)b(o,vr(t,n,2*Math.PI*s/e,r));return o.push(o[0],o[1]),new Ke(o,Et,[o.length])}function $e(t){var n=t[0],i=t[1],r=t[2],e=t[3],o=[n,i,n,e,r,e,r,i,n,i];return new Ke(o,Et,[o.length])}function Qe(t,n,i){for(var r=n||32,e=t.getStride(),o=t.getLayout(),s=t.getCenter(),a=e*(r+1),u=new Array(a),c=0;c<a;c+=e){u[c]=0,u[c+1]=0;for(var h=2;h<e;h++)u[c+h]=s[h]}var f=[u.length],l=new Ke(u,o,f);return to(l,s,t.getRadius(),i),l}function to(t,n,i,r){for(var e=t.getFlatCoordinates(),o=t.getStride(),s=e.length/o-1,a=r||0,u=0;u<=s;++u){var c=u*o,h=a+2*mi(u,s)*Math.PI/s;e[c]=n[0]+i*Math.cos(h),e[c+1]=n[1]+i*Math.sin(h)}t.changed()}var no=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),io="accuracy",ro="accuracyGeometry",eo="altitude",oo="altitudeAccuracy",so="heading",ao="position",uo="projection",co="speed",ho="tracking",fo="trackingOptions",lo=function(t){function n(n){var i=t.call(this,z)||this;return i.code=n.code,i.message=n.message,i}return no(n,t),n}(f),vo=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un;var r=n||{};return i.Mt=null,i._t=mr,i.Ot=void 0,i.addChangeListener(uo,i.Tt),i.addChangeListener(ho,i.Et),void 0!==r.projection&&i.setProjection(r.projection),void 0!==r.trackingOptions&&i.setTrackingOptions(r.trackingOptions),i.setTracking(void 0!==r.tracking&&r.tracking),i}return no(n,t),n.prototype.disposeInternal=function(){this.setTracking(!1),t.prototype.disposeInternal.call(this)},n.prototype.Tt=function(){var t=this.getProjection();t&&(this._t=Er(gr("EPSG:4326"),t),this.Mt&&this.set(ao,this._t(this.Mt)))},n.prototype.Et=function(){if("geolocation"in navigator){var t=this.getTracking();t&&void 0===this.Ot?this.Ot=navigator.geolocation.watchPosition(this.At.bind(this),this.Ct.bind(this),this.getTrackingOptions()):t||void 0===this.Ot||(navigator.geolocation.clearWatch(this.Ot),this.Ot=void 0)}},n.prototype.At=function(t){var n=t.coords;this.set(io,n.accuracy),this.set(eo,null===n.altitude?void 0:n.altitude),this.set(oo,null===n.altitudeAccuracy?void 0:n.altitudeAccuracy),this.set(so,null===n.heading?void 0:yi(n.heading)),this.Mt?(this.Mt[0]=n.longitude,this.Mt[1]=n.latitude):this.Mt=[n.longitude,n.latitude];var i=this._t(this.Mt);this.set(ao,i),this.set(co,null===n.speed?void 0:n.speed);var r=Ze(this.Mt,n.accuracy);r.applyTransform(this._t),this.set(ro,r),this.changed()},n.prototype.Ct=function(t){this.dispatchEvent(new lo(t))},n.prototype.getAccuracy=function(){return this.get(io)},n.prototype.getAccuracyGeometry=function(){return this.get(ro)||null},n.prototype.getAltitude=function(){return this.get(eo)},n.prototype.getAltitudeAccuracy=function(){return this.get(oo)},n.prototype.getHeading=function(){return this.get(so)},n.prototype.getPosition=function(){return this.get(ao)},n.prototype.getProjection=function(){return this.get(uo)},n.prototype.getSpeed=function(){return this.get(co)},n.prototype.getTracking=function(){return this.get(ho)},n.prototype.getTrackingOptions=function(){return this.get(fo)},n.prototype.setProjection=function(t){this.set(uo,gr(t))},n.prototype.setTracking=function(t){this.set(ho,t)},n.prototype.setTrackingOptions=function(t){this.set(fo,t)},n}(ot),po=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),yo=function(t){function n(n,i,r,e){var o=t.call(this)||this;return o.extent=n,o.Rt=r,o.resolution=i,o.state=e,o}return po(n,t),n.prototype.changed=function(){this.dispatchEvent(N)},n.prototype.getExtent=function(){return this.extent},n.prototype.getImage=function(){return r()},n.prototype.getPixelRatio=function(){return this.Rt},n.prototype.getResolution=function(){return this.resolution},n.prototype.getState=function(){return this.state},n.prototype.load=function(){r()},n}(I),mo=0,wo=1,bo=2,go=3,xo=4,jo=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function So(t,n,i){var r=t,e=!0,o=!1,s=!1,a=[Z(r,X,(function(){s=!0,o||n()}))];return r.src&&Jt?(o=!0,r.decode().then((function(){e&&n()})).catch((function(t){e&&(s?n():i())}))):a.push(Z(r,z,i)),function(){e=!1,a.forEach($)}}var ko=function(t){function n(n,i,r,e,o,s){var a=t.call(this,n,i,r,mo)||this;return a.Pt=e,a.Nt=new Image,null!==o&&(a.Nt.crossOrigin=o),a.zt=null,a.state=mo,a.Ft=s,a}return jo(n,t),n.prototype.getImage=function(){return this.Nt},n.prototype.Lt=function(){this.state=go,this.Gt(),this.changed()},n.prototype.Dt=function(){void 0===this.resolution&&(this.resolution=Yn(this.extent)/this.Nt.height),this.state=bo,this.Gt(),this.changed()},n.prototype.load=function(){this.state!=mo&&this.state!=go||(this.state=wo,this.changed(),this.Ft(this,this.Pt),this.zt=So(this.Nt,this.Dt.bind(this),this.Lt.bind(this)))},n.prototype.setImage=function(t){this.Nt=t,this.resolution=Yn(this.extent)/this.Nt.height},n.prototype.Gt=function(){this.zt&&(this.zt(),this.zt=null)},n}(yo),Mo=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_o=function(t){function n(n,i,r,e,o){var s=this,a=void 0!==o?mo:bo;return(s=t.call(this,n,i,r,a)||this).q=void 0!==o?o:null,s.Ut=e,s.W=null,s}return Mo(n,t),n.prototype.getError=function(){return this.W},n.prototype.qt=function(t){t?(this.W=t,this.state=go):this.state=bo,this.changed()},n.prototype.load=function(){this.state==mo&&(this.state=wo,this.changed(),this.q(this.qt.bind(this)))},n.prototype.getImage=function(){return this.Ut},n}(yo);function Oo(t,n,i,r){var e;return e=i&&i.length?i.shift():Ht?new OffscreenCanvas(t||300,n||300):document.createElement("canvas"),t&&(e.width=t),n&&(e.height=n),e.getContext("2d",r)}function To(t){var n=t.offsetWidth,i=getComputedStyle(t);return n+=parseInt(i.marginLeft,10)+parseInt(i.marginRight,10)}function Eo(t){var n=t.offsetHeight,i=getComputedStyle(t);return n+=parseInt(i.marginTop,10)+parseInt(i.marginBottom,10)}function Ao(t,n){var i=n.parentNode;i&&i.replaceChild(t,n)}function Co(t){return t&&t.parentNode?t.parentNode.removeChild(t):null}function Ro(t){for(;t.lastChild;)t.removeChild(t.lastChild)}function Po(t,n){for(var i=t.childNodes,r=0;;++r){var e=i[r],o=n[r];if(!e&&!o)break;e!==o&&(e?o?t.insertBefore(o,e):(t.removeChild(e),--r):t.appendChild(o))}}var Io=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();var No=function(t){function n(n,i,r,e,o,s){var a=t.call(this,n,i,s)||this;return a.Bt=e,a.Pt=r,a.key=r,a.Nt=new Image,null!==e&&(a.Nt.crossOrigin=e),a.zt=null,a.Wt=o,a}return Io(n,t),n.prototype.getImage=function(){return this.Nt},n.prototype.setImage=function(t){this.Nt=t,this.state=dt,this.Gt(),this.changed()},n.prototype.Lt=function(){var t;this.state=pt,this.Gt(),this.Nt=((t=Oo(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},n.prototype.Dt=function(){var t=this.Nt;t.naturalWidth&&t.naturalHeight?this.state=dt:this.state=yt,this.Gt(),this.changed()},n.prototype.load=function(){this.state==pt&&(this.state=lt,this.Nt=new Image,null!==this.Bt&&(this.Nt.crossOrigin=this.Bt)),this.state==lt&&(this.state=vt,this.changed(),this.Wt(this,this.Pt),this.zt=So(this.Nt,this.Dt.bind(this),this.Lt.bind(this)))},n.prototype.Gt=function(){this.zt&&(this.zt(),this.zt=null)},n}(jt),zo=function(){function t(t,n,i){this.Vt=t,this.Xt=n,this.Ht=i,this.Jt=[],this.Kt=0,this.Yt=0}return t.prototype.begin=function(){this.Jt.length=0,this.Kt=0,this.Yt=0},t.prototype.update=function(t,n){this.Jt.push(t,n,Date.now())},t.prototype.end=function(){if(this.Jt.length<6)return!1;var t=Date.now()-this.Ht,n=this.Jt.length-3;if(this.Jt[n+2]<t)return!1;for(var i=n-3;i>0&&this.Jt[i+2]>t;)i-=3;var r=this.Jt[n+2]-this.Jt[i+2];if(r<1e3/60)return!1;var e=this.Jt[n]-this.Jt[i],o=this.Jt[n+1]-this.Jt[i+1];return this.Kt=Math.atan2(o,e),this.Yt=Math.sqrt(e*e+o*o)/r,this.Yt>this.Xt},t.prototype.getDistance=function(){return(this.Xt-this.Yt)/this.Vt},t.prototype.getAngle=function(){return this.Kt},t}(),Fo=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,Lo=/^([a-z]*)$|^hsla?\(.*\)$/i;function Go(t){return"string"==typeof t?t:Wo(t)}function Do(t){var n=document.createElement("div");if(n.style.color=t,""!==n.style.color){document.body.appendChild(n);var i=getComputedStyle(n).color;return document.body.removeChild(n),i}return""}var Uo=function(){var t={},n=0;return function(i){var r;if(t.hasOwnProperty(i))r=t[i];else{if(n>=1024){var e=0;for(var o in t)0==(3&e++)&&(delete t[o],--n)}r=function(t){var n,i,r,e,o;Lo.exec(t)&&(t=Do(t));if(Fo.exec(t)){var s=t.length-1,a=void 0;a=s<=4?1:2;var u=4===s||8===s;n=parseInt(t.substr(1+0*a,a),16),i=parseInt(t.substr(1+1*a,a),16),r=parseInt(t.substr(1+2*a,a),16),e=u?parseInt(t.substr(1+3*a,a),16):255,1==a&&(n=(n<<4)+n,i=(i<<4)+i,r=(r<<4)+r,u&&(e=(e<<4)+e)),o=[n,i,r,e/255]}else 0==t.indexOf("rgba(")?Bo(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),Bo(o)):Mt(!1,14);return o}(i),t[i]=r,++n}return r}}();function qo(t){return Array.isArray(t)?t:Uo(t)}function Bo(t){return t[0]=ci(t[0]+.5|0,0,255),t[1]=ci(t[1]+.5|0,0,255),t[2]=ci(t[2]+.5|0,0,255),t[3]=ci(t[3],0,1),t}function Wo(t){var n=t[0];n!=(0|n)&&(n=n+.5|0);var i=t[1];i!=(0|i)&&(i=i+.5|0);var r=t[2];return r!=(0|r)&&(r=r+.5|0),"rgba("+n+","+i+","+r+","+(void 0===t[3]?1:Math.round(100*t[3])/100)+")"}function Vo(t){return Lo.test(t)&&(t=Do(t)),Fo.test(t)||0===t.indexOf("rgba(")||0===t.indexOf("rgb(")}var Xo=function(){function t(){this.Zt={},this.$t=0,this.Qt=32}return t.prototype.clear=function(){this.Zt={},this.$t=0},t.prototype.canExpireCache=function(){return this.$t>this.Qt},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var n in this.Zt){var i=this.Zt[n];0!=(3&t++)||i.hasListener()||(delete this.Zt[n],--this.$t)}}},t.prototype.get=function(t,n,i){var r=Ho(t,n,i);return r in this.Zt?this.Zt[r]:null},t.prototype.set=function(t,n,i,r){var e=Ho(t,n,i);this.Zt[e]=r,++this.$t},t.prototype.setSize=function(t){this.Qt=t,this.expire()},t}();function Ho(t,n,i){return n+":"+t+":"+(i?Go(i):"null")}var Jo=Xo,Ko=new Xo,Yo="opacity",Zo="visible",$o="extent",Qo="zIndex",ts="maxResolution",ns="minResolution",is="maxZoom",rs="minZoom",es="source",os="map";function ss(t){return(ss="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var as=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),us=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un,i.tn=n.background;var r=E({},n);return"object"===ss(n.properties)&&(delete r.properties,E(r,n.properties)),r[Yo]=void 0!==n.opacity?n.opacity:1,Mt("number"==typeof r[Yo],64),r[Zo]=void 0===n.visible||n.visible,r[Qo]=n.zIndex,r[ts]=void 0!==n.maxResolution?n.maxResolution:1/0,r[ns]=void 0!==n.minResolution?n.minResolution:0,r[rs]=void 0!==n.minZoom?n.minZoom:-1/0,r[is]=void 0!==n.maxZoom?n.maxZoom:1/0,i.nn=void 0!==r.className?r.className:"ol-layer",delete r.className,i.setProperties(r),i.rn=null,i}return as(n,t),n.prototype.getBackground=function(){return this.tn},n.prototype.getClassName=function(){return this.nn},n.prototype.getLayerState=function(t){var n=this.rn||{layer:this,managed:void 0===t||t},i=this.getZIndex();return n.opacity=ci(Math.round(100*this.getOpacity())/100,0,1),n.visible=this.getVisible(),n.extent=this.getExtent(),n.zIndex=void 0!==i||n.managed?i:1/0,n.maxResolution=this.getMaxResolution(),n.minResolution=Math.max(this.getMinResolution(),0),n.minZoom=this.getMinZoom(),n.maxZoom=this.getMaxZoom(),this.rn=n,n},n.prototype.getLayersArray=function(t){return r()},n.prototype.getLayerStatesArray=function(t){return r()},n.prototype.getExtent=function(){return this.get($o)},n.prototype.getMaxResolution=function(){return this.get(ts)},n.prototype.getMinResolution=function(){return this.get(ns)},n.prototype.getMinZoom=function(){return this.get(rs)},n.prototype.getMaxZoom=function(){return this.get(is)},n.prototype.getOpacity=function(){return this.get(Yo)},n.prototype.getSourceState=function(){return r()},n.prototype.getVisible=function(){return this.get(Zo)},n.prototype.getZIndex=function(){return this.get(Qo)},n.prototype.setBackground=function(t){this.tn=t,this.changed()},n.prototype.setExtent=function(t){this.set($o,t)},n.prototype.setMaxResolution=function(t){this.set(ts,t)},n.prototype.setMinResolution=function(t){this.set(ns,t)},n.prototype.setMaxZoom=function(t){this.set(is,t)},n.prototype.setMinZoom=function(t){this.set(rs,t)},n.prototype.setOpacity=function(t){Mt("number"==typeof t,64),this.set(Yo,t)},n.prototype.setVisible=function(t){this.set(Zo,t)},n.prototype.setZIndex=function(t){this.set(Qo,t)},n.prototype.disposeInternal=function(){this.rn&&(this.rn.layer=null,this.rn=null),t.prototype.disposeInternal.call(this)},n}(ot),cs="prerender",hs="postrender",fs="precompose",ls="postcompose",vs="rendercomplete",ds="undefined",ps="loading",ys="ready",ms="error",ws=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function bs(t,n){if(!t.visible)return!1;var i=n.resolution;if(i<t.minResolution||i>=t.maxResolution)return!1;var r=n.zoom;return r>t.minZoom&&r<=t.maxZoom}var gs=function(t){function n(n){var i=this,r=E({},n);delete r.source,(i=t.call(this,r)||this).on,i.once,i.un,i.en=null,i.sn=null,i.an=null,i.cn=null,i.rendered=!1,n.render&&(i.render=n.render),n.map&&i.setMap(n.map),i.addChangeListener(es,i.hn);var e=n.source?n.source:null;return i.setSource(e),i}return ws(n,t),n.prototype.getLayersArray=function(t){var n=t||[];return n.push(this),n},n.prototype.getLayerStatesArray=function(t){var n=t||[];return n.push(this.getLayerState()),n},n.prototype.getSource=function(){return this.get(es)||null},n.prototype.getRenderSource=function(){return this.getSource()},n.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():ds},n.prototype.fn=function(){this.changed()},n.prototype.hn=function(){this.an&&($(this.an),this.an=null);var t=this.getSource();t&&(this.an=Y(t,N,this.fn,this)),this.changed()},n.prototype.getFeatures=function(t){return this.cn?this.cn.getFeatures(t):new Promise((function(t){return t([])}))},n.prototype.getData=function(t){return this.cn&&this.rendered?this.cn.getData(t):null},n.prototype.render=function(t,n){var i=this.getRenderer();if(i.prepareFrame(t))return this.rendered=!0,i.renderFrame(t,n)},n.prototype.unrender=function(){this.rendered=!1},n.prototype.setMapInternal=function(t){t||this.unrender(),this.set(os,t)},n.prototype.getMapInternal=function(){return this.get(os)},n.prototype.setMap=function(t){this.en&&($(this.en),this.en=null),t||this.changed(),this.sn&&($(this.sn),this.sn=null),t&&(this.en=Y(t,fs,(function(t){var n=t.frameState.layerStatesArray,i=this.getLayerState(!1);Mt(!n.some((function(t){return t.layer===i.layer})),67),n.push(i)}),this),this.sn=Y(this,N,t.render,t),this.changed())},n.prototype.setSource=function(t){this.set(es,t)},n.prototype.getRenderer=function(){return this.cn||(this.cn=this.createRenderer()),this.cn},n.prototype.hasRenderer=function(){return!!this.cn},n.prototype.createRenderer=function(){return null},n.prototype.disposeInternal=function(){this.cn&&(this.cn.dispose(),delete this.cn),this.setSource(null),t.prototype.disposeInternal.call(this)},n}(us),xs=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function js(t,n){Ko.expire()}var Ss=function(t){function n(n){var i=t.call(this)||this;return i.vn=n,i}return xs(n,t),n.prototype.dispatchRenderEvent=function(t,n){r()},n.prototype.calculateMatrices2D=function(t){var n=t.viewState,i=t.coordinateToPixelTransform,r=t.pixelToCoordinateTransform;un(i,t.size[0]/2,t.size[1]/2,1/n.resolution,-1/n.resolution,-n.rotation,-n.center[0],-n.center[1]),cn(r,i)},n.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e,o,s,a){var u,c=n.viewState;function h(t,n,i,r){return e.call(o,n,t?i:null,r)}var f=c.projection,l=ar(t.slice(),f),v=[[0,0]];if(f.canWrapX()&&r){var d=ti(f.getExtent());v.push([-d,0],[d,0])}for(var p=n.layerStatesArray,y=p.length,m=[],w=[],b=0;b<v.length;b++)for(var g=y-1;g>=0;--g){var x=p[g],j=x.layer;if(j.hasRenderer()&&bs(x,c)&&s.call(a,j)){var S=j.getRenderer(),k=j.getSource();if(S&&k){var M=k.getWrapX()?l:t,_=h.bind(null,x.managed);w[0]=M[0]+v[b][0],w[1]=M[1]+v[b][1],u=S.forEachFeatureAtCoordinate(w,n,i,_,m)}if(u)return u}}if(0!==m.length){var O=1/m.length;return m.forEach((function(t,n){return t.distanceSq+=n*O})),m.sort((function(t,n){return t.distanceSq-n.distanceSq})),m.some((function(t){return u=t.callback(t.feature,t.layer,t.geometry)})),u}},n.prototype.forEachLayerAtPixel=function(t,n,i,e,o){return r()},n.prototype.hasFeatureAtCoordinate=function(t,n,i,r,e,o){return void 0!==this.forEachFeatureAtCoordinate(t,n,i,r,k,this,e,o)},n.prototype.getMap=function(){return this.vn},n.prototype.renderFrame=function(t){r()},n.prototype.scheduleExpireIconCache=function(t){Ko.canExpireCache()&&t.postRenderFunctions.push(js)},n}(v),ks=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ms=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.inversePixelTransform=i,o.frameState=r,o.context=e,o}return ks(n,t),n}(f),_s="ol-hidden",Os="ol-selectable",Ts="ol-unselectable",Es="ol-unsupported",As="ol-control",Cs="ol-collapsed",Rs=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),Ps=["style","variant","weight","size","lineHeight","family"],Is=function(t){var n=t.match(Rs);if(!n)return null;for(var i={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"},r=0,e=Ps.length;r<e;++r){var o=n[r+1];void 0!==o&&(i[Ps[r]]=o)}return i.families=i.family.split(/,\s?/),i};function Ns(t){return 1===t?"":String(Math.round(100*t)/100)}var zs="10px sans-serif",Fs="#000",Ls="round",Gs=[],Ds="round",Us=10,qs="#000",Bs="center",Ws="middle",Vs=[0,0,0,0],Xs=new ot,Hs=new I;Hs.setSize=function(){console.warn("labelCache is deprecated.")};var Js,Ks,Ys=null,Zs={},$s=function(){var t,n,i="32px ",r=["monospace","serif"],e=r.length,o="wmytzilWMYTZIL@#/&?$%10飥�";function s(t,s,a){for(var u=!0,c=0;c<e;++c){var h=r[c];if(n=na(t+" "+s+" "+i+h,o),a!=h){var f=na(t+" "+s+" "+i+a+","+h,o);u=u&&f!=n}}return!!u}function a(){for(var n=!0,i=Xs.getKeys(),r=0,e=i.length;r<e;++r){var o=i[r];Xs.get(o)<100&&(s.apply(this,o.split("\n"))?(A(Zs),Ys=null,Js=void 0,Xs.set(o,100)):(Xs.set(o,Xs.get(o)+1,!0),n=!1))}n&&(clearInterval(t),t=void 0)}return function(n){var i=Is(n);if(i)for(var r=i.families,e=0,o=r.length;e<o;++e){var u=r[e],c=i.style+"\n"+i.weight+"\n"+u;void 0===Xs.get(c)&&(Xs.set(c,100,!0),s(i.style,i.weight,u)||(Xs.set(c,0,!0),void 0===t&&(t=setInterval(a,32))))}}}(),Qs=function(t){var n=Zs[t];if(null==n){if(Ht){var i=Is(t),r=ta(t,"沤g");n=(isNaN(Number(i.lineHeight))?1.2:Number(i.lineHeight))*(r.actualBoundingBoxAscent+r.actualBoundingBoxDescent)}else Ks||((Ks=document.createElement("div")).innerHTML="M",Ks.style.minHeight="0",Ks.style.maxHeight="none",Ks.style.height="auto",Ks.style.padding="0",Ks.style.border="none",Ks.style.position="absolute",Ks.style.display="block",Ks.style.left="-99999px"),Ks.style.font=t,document.body.appendChild(Ks),n=Ks.offsetHeight,document.body.removeChild(Ks);Zs[t]=n}return n};function ta(t,n){return Ys||(Ys=Oo(1,1)),t!=Js&&(Ys.font=t,Js=Ys.font),Ys.measureText(n)}function na(t,n){return ta(t,n).width}function ia(t,n,i){if(n in i)return i[n];var r=na(t,n);return i[n]=r,r}function ra(t,n){for(var i=[],r=[],e=[],o=0,s=0,a=0,u=0,c=0,h=n.length;c<=h;c+=2){var f=n[c];if("\n"!==f&&c!==h){var l=n[c+1]||t.font,v=na(l,f);i.push(v),s+=v;var d=Qs(l);r.push(d),u=Math.max(u,d)}else o=Math.max(o,s),e.push(s),s=0,a+=u}return{width:o,height:a,widths:i,heights:r,lineWidths:e}}function ea(t,n,i,r,e,o,s,a,u,c,h){t.save(),1!==i&&(t.globalAlpha*=i),n&&t.setTransform.apply(t,n),r.contextInstructions?(t.translate(u,c),t.scale(h[0],h[1]),function(t,n){for(var i=t.contextInstructions,r=0,e=i.length;r<e;r+=2)Array.isArray(i[r+1])?n[i[r]].apply(n,i[r+1]):n[i[r]]=i[r+1]}(r,t)):h[0]<0||h[1]<0?(t.translate(u,c),t.scale(h[0],h[1]),t.drawImage(r,e,o,s,a,0,0,s,a)):t.drawImage(r,e,o,s,a,u,c,s*h[0],a*h[1]),t.restore()}var oa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),sa=function(t){function n(n){var i=t.call(this,n)||this;i.dn=Y(Xs,l,n.redrawText.bind(n)),i.pn=document.createElement("div");var r=i.pn.style;r.position="absolute",r.width="100%",r.height="100%",r.zIndex="0",i.pn.className="ol-unselectable ol-layers";var e=n.getViewport();return e.insertBefore(i.pn,e.firstChild||null),i.yn=[],i.mn=!0,i}return oa(n,t),n.prototype.dispatchRenderEvent=function(t,n){var i=this.getMap();if(i.hasListener(t)){var r=new Ms(t,void 0,n);i.dispatchEvent(r)}},n.prototype.disposeInternal=function(){$(this.dn),this.pn.parentNode.removeChild(this.pn),t.prototype.disposeInternal.call(this)},n.prototype.renderFrame=function(t){if(t){this.calculateMatrices2D(t),this.dispatchRenderEvent(fs,t);var n=t.layerStatesArray.sort((function(t,n){return t.zIndex-n.zIndex})),i=t.viewState;this.yn.length=0;for(var r=[],e=null,o=0,s=n.length;o<s;++o){var a=n[o];t.layerIndex=o;var u=a.layer,c=u.getSourceState();if(!bs(a,i)||c!=ys&&c!=ds)u.unrender();else{var h=u.render(t,e);h&&(h!==e&&(this.yn.push(h),e=h),"getDeclutter"in u&&r.push(u))}}for(o=r.length-1;o>=0;--o)r[o].renderDeclutter(t);Po(this.pn,this.yn),this.dispatchRenderEvent(ls,t),this.mn||(this.pn.style.display="",this.mn=!0),this.scheduleExpireIconCache(t)}else this.mn&&(this.pn.style.display="none",this.mn=!1)},n.prototype.forEachLayerAtPixel=function(t,n,i,r,e){for(var o=n.viewState,s=n.layerStatesArray,a=s.length-1;a>=0;--a){var u=s[a],c=u.layer;if(c.hasRenderer()&&bs(u,o)&&e(c)){var h=c.getRenderer().getDataAtPixel(t,n,i);if(h){var f=r(c,h);if(f)return f}}}},n}(Ss),aa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ua=function(t){function n(n,i){var r=t.call(this,n)||this;return r.layer=i,r}return aa(n,t),n}(f),ca="layers",ha=function(t){function n(n){var i=this,r=n||{},e=E({},r);delete e.layers;var o=r.layers;return(i=t.call(this,e)||this).on,i.once,i.un,i.wn=[],i.bn={},i.addChangeListener(ca,i.gn),o?Array.isArray(o)?o=new ft(o.slice(),{unique:!0}):Mt("function"==typeof o.getArray,43):o=new ft(void 0,{unique:!0}),i.setLayers(o),i}return aa(n,t),n.prototype.xn=function(){this.changed()},n.prototype.gn=function(){this.wn.forEach($),this.wn.length=0;var t=this.getLayers();for(var n in this.wn.push(Y(t,st,this.jn,this),Y(t,at,this.Sn,this)),this.bn)this.bn[n].forEach($);A(this.bn);for(var i=t.getArray(),r=0,e=i.length;r<e;r++){var o=i[r];this.kn(o),this.dispatchEvent(new ua("addlayer",o))}this.changed()},n.prototype.kn=function(t){var i=[Y(t,l,this.xn,this),Y(t,N,this.xn,this)];t instanceof n&&i.push(Y(t,"addlayer",this.Mn,this),Y(t,"removelayer",this._n,this)),this.bn[o(t)]=i},n.prototype.Mn=function(t){this.dispatchEvent(new ua("addlayer",t.layer))},n.prototype._n=function(t){this.dispatchEvent(new ua("removelayer",t.layer))},n.prototype.jn=function(t){var n=t.element;this.kn(n),this.dispatchEvent(new ua("addlayer",n)),this.changed()},n.prototype.Sn=function(t){var n=t.element,i=o(n);this.bn[i].forEach($),delete this.bn[i],this.dispatchEvent(new ua("removelayer",n)),this.changed()},n.prototype.getLayers=function(){return this.get(ca)},n.prototype.setLayers=function(t){var n=this.getLayers();if(n)for(var i=n.getArray(),r=0,e=i.length;r<e;++r)this.dispatchEvent(new ua("removelayer",i[r]));this.set(ca,t)},n.prototype.getLayersArray=function(t){var n=void 0!==t?t:[];return this.getLayers().forEach((function(t){t.getLayersArray(n)})),n},n.prototype.getLayerStatesArray=function(t){var n=void 0!==t?t:[],i=n.length;this.getLayers().forEach((function(t){t.getLayerStatesArray(n)}));var r=this.getLayerState(),e=r.zIndex;t||void 0!==r.zIndex||(e=0);for(var o=i,s=n.length;o<s;o++){var a=n[o];a.opacity*=r.opacity,a.visible=a.visible&&r.visible,a.maxResolution=Math.min(a.maxResolution,r.maxResolution),a.minResolution=Math.max(a.minResolution,r.minResolution),a.minZoom=Math.max(a.minZoom,r.minZoom),a.maxZoom=Math.min(a.maxZoom,r.maxZoom),void 0!==r.extent&&(void 0!==a.extent?a.extent=Zn(a.extent,r.extent):a.extent=r.extent),void 0===a.zIndex&&(a.zIndex=e)}return n},n.prototype.getSourceState=function(){return ys},n}(us),fa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),la=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.map=i,e.frameState=void 0!==r?r:null,e}return fa(n,t),n}(f),va=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),da=function(t){function n(n,i,r,e,o){var s=t.call(this,n,i,o)||this;return s.originalEvent=r,s.On=null,s.Tn=null,s.dragging=void 0!==e&&e,s}return va(n,t),Object.defineProperty(n.prototype,"pixel",{get:function(){return this.On||(this.On=this.map.getEventPixel(this.originalEvent)),this.On},set:function(t){this.On=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"coordinate",{get:function(){return this.Tn||(this.Tn=this.map.getCoordinateFromPixel(this.pixel)),this.Tn},set:function(t){this.Tn=t},enumerable:!1,configurable:!0}),n.prototype.preventDefault=function(){t.prototype.preventDefault.call(this),"preventDefault"in this.originalEvent&&this.originalEvent.preventDefault()},n.prototype.stopPropagation=function(){t.prototype.stopPropagation.call(this),"stopPropagation"in this.originalEvent&&this.originalEvent.stopPropagation()},n}(la),pa={SINGLECLICK:"singleclick",CLICK:G,DBLCLICK:D,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"},ya="pointermove",ma="pointerdown",wa="pointerup",ba="pointerout",ga=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),xa=function(t){function n(n,i){var r=t.call(this,n)||this;r.vn=n,r.En,r.An=!1,r.Cn=!1,r.Rn=[],r.Pn=void 0===i?1:i,r.In=null;var e=r.vn.getViewport();return r.Nn=0,r.zn={},r.pn=e,r.Fn=Y(e,ma,r.Ln,r),r.Gn,r.Dn=Y(e,ya,r.Un,r),r.qn=r.Bn.bind(r),r.pn.addEventListener(J,r.qn,!!Kt&&{passive:!1}),r}return ga(n,t),n.prototype.Wn=function(t){var n=new da(pa.CLICK,this.vn,t);this.dispatchEvent(n),void 0!==this.En?(clearTimeout(this.En),this.En=void 0,n=new da(pa.DBLCLICK,this.vn,t),this.dispatchEvent(n)):this.En=setTimeout(function(){this.En=void 0;var n=new da(pa.SINGLECLICK,this.vn,t);this.dispatchEvent(n)}.bind(this),250)},n.prototype.Vn=function(t){var n=t;n.type==pa.POINTERUP||n.type==pa.POINTERCANCEL?delete this.zn[n.pointerId]:n.type==pa.POINTERDOWN&&(this.zn[n.pointerId]=!0),this.Nn=Object.keys(this.zn).length},n.prototype.Xn=function(t){this.Vn(t);var n=new da(pa.POINTERUP,this.vn,t);this.dispatchEvent(n),this.An&&!n.defaultPrevented&&!this.Cn&&this.Hn(t)&&this.Wn(this.In),0===this.Nn&&(this.Rn.forEach($),this.Rn.length=0,this.Cn=!1,this.In=null)},n.prototype.Hn=function(t){return 0===t.button},n.prototype.Ln=function(t){this.An=0===this.Nn,this.Vn(t);var n=new da(pa.POINTERDOWN,this.vn,t);for(var i in this.dispatchEvent(n),this.In={},t){var r=t[i];this.In[i]="function"==typeof r?_:r}if(0===this.Rn.length){var e=this.vn.getOwnerDocument();this.Rn.push(Y(e,pa.POINTERMOVE,this.Jn,this),Y(e,pa.POINTERUP,this.Xn,this),Y(this.pn,pa.POINTERCANCEL,this.Xn,this)),this.pn.getRootNode&&this.pn.getRootNode()!==e&&this.Rn.push(Y(this.pn.getRootNode(),pa.POINTERUP,this.Xn,this))}},n.prototype.Jn=function(t){if(this.Kn(t)){this.Cn=!0;var n=new da(pa.POINTERDRAG,this.vn,t,this.Cn);this.dispatchEvent(n)}},n.prototype.Un=function(t){this.Gn=t;var n=!(!this.In||!this.Kn(t));this.dispatchEvent(new da(t.type,this.vn,t,n))},n.prototype.Bn=function(t){var n=this.Gn;n&&!n.defaultPrevented||"boolean"==typeof t.cancelable&&!0!==t.cancelable||t.preventDefault()},n.prototype.Kn=function(t){return this.Cn||Math.abs(t.clientX-this.In.clientX)>this.Pn||Math.abs(t.clientY-this.In.clientY)>this.Pn},n.prototype.disposeInternal=function(){this.Dn&&($(this.Dn),this.Dn=null),this.pn.removeEventListener(J,this.qn),this.Fn&&($(this.Fn),this.Fn=null),this.Rn.forEach($),this.Rn.length=0,this.pn=null,t.prototype.disposeInternal.call(this)},n}(I),ja="postrender",Sa="movestart",ka="moveend",Ma="loadstart",_a="loadend",Oa="layergroup",Ta="size",Ea="target",Aa="view",Ca=1/0,Ra=function(){function t(t,n){this.Yn=t,this.Zn=n,this.$n=[],this.Qn=[],this.ti={}}return t.prototype.clear=function(){this.$n.length=0,this.Qn.length=0,A(this.ti)},t.prototype.dequeue=function(){var t=this.$n,n=this.Qn,i=t[0];1==t.length?(t.length=0,n.length=0):(t[0]=t.pop(),n[0]=n.pop(),this.ni(0));var r=this.Zn(i);return delete this.ti[r],i},t.prototype.enqueue=function(t){Mt(!(this.Zn(t)in this.ti),31);var n=this.Yn(t);return n!=Ca&&(this.$n.push(t),this.Qn.push(n),this.ti[this.Zn(t)]=!0,this.ii(0,this.$n.length-1),!0)},t.prototype.getCount=function(){return this.$n.length},t.prototype.ri=function(t){return 2*t+1},t.prototype.ei=function(t){return 2*t+2},t.prototype.oi=function(t){return t-1>>1},t.prototype.si=function(){var t;for(t=(this.$n.length>>1)-1;t>=0;t--)this.ni(t)},t.prototype.isEmpty=function(){return 0===this.$n.length},t.prototype.isKeyQueued=function(t){return t in this.ti},t.prototype.isQueued=function(t){return this.isKeyQueued(this.Zn(t))},t.prototype.ni=function(t){for(var n=this.$n,i=this.Qn,r=n.length,e=n[t],o=i[t],s=t;t<r>>1;){var a=this.ri(t),u=this.ei(t),c=u<r&&i[u]<i[a]?u:a;n[t]=n[c],i[t]=i[c],t=c}n[t]=e,i[t]=o,this.ii(s,t)},t.prototype.ii=function(t,n){for(var i=this.$n,r=this.Qn,e=i[n],o=r[n];n>t;){var s=this.oi(n);if(!(r[s]>o))break;i[n]=i[s],r[n]=r[s],n=s}i[n]=e,r[n]=o},t.prototype.reprioritize=function(){var t,n,i,r=this.Yn,e=this.$n,o=this.Qn,s=0,a=e.length;for(n=0;n<a;++n)(i=r(t=e[n]))==Ca?delete this.ti[this.Zn(t)]:(o[s]=i,e[s++]=t);e.length=s,o.length=s,this.si()},t}(),Pa=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ia=function(t){function n(n,i){var r=t.call(this,(function(t){return n.apply(null,t)}),(function(t){return t[0].getKey()}))||this;return r.ai=r.handleTileChange.bind(r),r.ui=i,r.ci=0,r.hi={},r}return Pa(n,t),n.prototype.enqueue=function(n){var i=t.prototype.enqueue.call(this,n);i&&n[0].addEventListener(N,this.ai);return i},n.prototype.getTilesLoading=function(){return this.ci},n.prototype.handleTileChange=function(t){var n=t.target,i=n.getState();if(i===dt||i===pt||i===yt){n.removeEventListener(N,this.ai);var r=n.getKey();r in this.hi&&(delete this.hi[r],--this.ci),this.ui()}},n.prototype.loadMoreTiles=function(t,n){for(var i,r,e=0;this.ci<t&&e<n&&this.getCount()>0;)r=(i=this.dequeue()[0]).getKey(),i.getState()!==lt||r in this.hi||(this.hi[r]=!0,++this.ci,++e,i.load())},n}(Ra);function Na(t,n,i,r,e){if(!t||!(i in t.wantedTiles))return Ca;if(!t.wantedTiles[i][n.getKey()])return Ca;var o=t.viewState.center,s=r[0]-o[0],a=r[1]-o[1];return 65536*Math.log(e)+Math.sqrt(s*s+a*a)/e}var za=0,Fa=1,La={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"},Ga=256;function Da(t,n,i){return function(r,e,o,s,a){if(r){if(!e&&!n)return r;var u=n?0:o[0]*e,c=n?0:o[1]*e,h=a?a[0]:0,f=a?a[1]:0,l=t[0]+u/2+h,v=t[2]-u/2+h,d=t[1]+c/2+f,p=t[3]-c/2+f;l>v&&(v=l=(v+l)/2),d>p&&(p=d=(p+d)/2);var y=ci(r[0],l,v),m=ci(r[1],d,p);if(s&&i&&e){var w=30*e;y+=-w*Math.log(1+Math.max(0,l-r[0])/w)+w*Math.log(1+Math.max(0,r[0]-v)/w),m+=-w*Math.log(1+Math.max(0,d-r[1])/w)+w*Math.log(1+Math.max(0,r[1]-p)/w)}return[y,m]}}}function Ua(t){return t}function qa(t,n,i,r){var e=ti(n)/i[0],o=Yn(n)/i[1];return r?Math.min(t,Math.max(e,o)):Math.min(t,Math.min(e,o))}function Ba(t,n,i){var r=Math.min(t,n);return r*=Math.log(1+50*Math.max(0,t/n-1))/50+1,i&&(r=Math.max(r,i),r/=Math.log(1+50*Math.max(0,i/t-1))/50+1),ci(r,i/2,2*n)}function Wa(t,n,i,r){return function(e,o,s,a){if(void 0!==e){var u=t[0],c=t[t.length-1],h=i?qa(u,i,s,r):u;if(a)return void 0===n||n?Ba(e,h,c):ci(e,c,h);var f=Math.min(h,e),l=Math.floor(m(t,f,o));return t[l]>h&&l<t.length-1?t[l+1]:t[l]}}}function Va(t,n,i,r,e,o){return function(s,a,u,c){if(void 0!==s){var h=e?qa(n,e,u,o):n,f=void 0!==i?i:0;if(c)return void 0===r||r?Ba(s,h,f):ci(s,f,h);var l=Math.ceil(Math.log(n/h)/Math.log(t)-1e-9),v=-a*(.5-1e-9)+.5,d=Math.min(h,s),p=Math.floor(Math.log(n/d)/Math.log(t)+v),y=Math.max(l,p);return ci(n/Math.pow(t,y),f,h)}}}function Xa(t,n,i,r,e){return function(o,s,a,u){if(void 0!==o){var c=r?qa(t,r,a,e):t;return(void 0===i||i)&&u?Ba(o,c,n):ci(o,n,c)}}}function Ha(t){return void 0!==t?0:void 0}function Ja(t){return void 0!==t?t:void 0}function Ka(t){var n=2*Math.PI/t;return function(t,i){return i?t:void 0!==t?t=Math.floor(t/n+.5)*n:void 0}}function Ya(t){var n=t||yi(5);return function(t,i){return i?t:void 0!==t?Math.abs(t)<=n?0:t:void 0}}var Za=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function $a(t,n){setTimeout((function(){t(n)}),0)}function Qa(t){if(void 0!==t.extent){var n=void 0===t.smoothExtentConstraint||t.smoothExtentConstraint;return Da(t.extent,t.constrainOnlyCenter,n)}var i=kr(t.projection,"EPSG:3857");if(!0!==t.multiWorld&&i.isGlobal()){var r=i.getExtent().slice();return r[0]=-1/0,r[2]=1/0,Da(r,!1,!1)}return Ua}function tu(t){var n,i,r,e=void 0!==t.minZoom?t.minZoom:0,o=void 0!==t.maxZoom?t.maxZoom:28,s=void 0!==t.zoomFactor?t.zoomFactor:2,a=void 0!==t.multiWorld&&t.multiWorld,u=void 0===t.smoothResolutionConstraint||t.smoothResolutionConstraint,c=void 0!==t.showFullExtent&&t.showFullExtent,h=kr(t.projection,"EPSG:3857"),f=h.getExtent(),l=t.constrainOnlyCenter,v=t.extent;if(a||v||!h.isGlobal()||(l=!1,v=f),void 0!==t.resolutions){var d=t.resolutions;i=d[e],r=void 0!==d[o]?d[o]:d[d.length-1],n=t.constrainResolution?Wa(d,u,!l&&v,c):Xa(i,r,u,!l&&v,c)}else{var p=(f?Math.max(ti(f),Yn(f)):360*Ft[Gt.DEGREES]/h.getMetersPerUnit())/Ga/Math.pow(2,0),y=p/Math.pow(2,28);void 0!==(i=t.maxResolution)?e=0:i=p/Math.pow(s,e),void 0===(r=t.minResolution)&&(r=void 0!==t.maxZoom?void 0!==t.maxResolution?i/Math.pow(s,o):p/Math.pow(s,o):y),o=e+Math.floor(Math.log(i/r)/Math.log(s)),r=i/Math.pow(s,o-e),n=t.constrainResolution?Va(s,i,r,u,!l&&v,c):Xa(i,r,u,!l&&v,c)}return{constraint:n,maxResolution:i,minResolution:r,minZoom:e,zoomFactor:s}}function nu(t){if(void 0===t.enableRotation||t.enableRotation){var n=t.constrainRotation;return void 0===n||!0===n?Ya():!1===n?Ja:"number"==typeof n?Ka(n):Ja}return Ha}function iu(t){return!(t.sourceCenter&&t.targetCenter&&!tr(t.sourceCenter,t.targetCenter))&&(t.sourceResolution===t.targetResolution&&t.sourceRotation===t.targetRotation)}function ru(t,n,i,r,e){var o=Math.cos(-e),s=Math.sin(-e),a=t[0]*o-t[1]*s,u=t[1]*o+t[0]*s;return[(a+=(n[0]/2-i[0])*r)*o-(u+=(i[1]-n[1]/2)*r)*(s=-s),u*o+a*s]}var eu=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un;var r=E({},n);return i.fi=[0,0],i.li=[],i.vi,i.di=kr(r.projection,"EPSG:3857"),i.yi=[100,100],i.mi=null,i.wi,i.bi,i.gi=null,i.xi,i.ji,i.Si=void 0,r.projection&&pr(),r.center&&(r.center=Fr(r.center,i.di)),r.extent&&(r.extent=Gr(r.extent,i.di)),i.ki(r),i}return Za(n,t),n.prototype.ki=function(t){var n=E({},t);for(var i in La)delete n[i];this.setProperties(n,!0);var r=tu(t);this.Mi=r.maxResolution,this._i=r.minResolution,this.Oi=r.zoomFactor,this.Ti=t.resolutions,this.Ei=t.padding,this.Ai=r.minZoom;var e=Qa(t),o=r.constraint,s=nu(t);this.Ci={center:e,resolution:o,rotation:s},this.setRotation(void 0!==t.rotation?t.rotation:0),this.setCenterInternal(void 0!==t.center?t.center:null),void 0!==t.resolution?this.setResolution(t.resolution):void 0!==t.zoom&&this.setZoom(t.zoom)},Object.defineProperty(n.prototype,"padding",{get:function(){return this.Ei},set:function(t){var n=this.Ei;this.Ei=t;var i=this.getCenter();if(i){var r=t||[0,0,0,0];n=n||[0,0,0,0];var e=this.getResolution(),o=e/2*(r[3]-n[3]+n[1]-r[1]),s=e/2*(r[0]-n[0]+n[2]-r[2]);this.setCenterInternal([i[0]+o,i[1]-s])}},enumerable:!1,configurable:!0}),n.prototype.Ri=function(t){var n=this.getProperties();return void 0!==n.resolution?n.resolution=this.getResolution():n.zoom=this.getZoom(),n.center=this.getCenterInternal(),n.rotation=this.getRotation(),E({},n,t)},n.prototype.animate=function(t){this.isDef()&&!this.getAnimating()&&this.resolveConstraints(0);for(var n=new Array(arguments.length),i=0;i<n.length;++i){var r=arguments[i];r.center&&((r=E({},r)).center=Fr(r.center,this.getProjection())),r.anchor&&((r=E({},r)).anchor=Fr(r.anchor,this.getProjection())),n[i]=r}this.animateInternal.apply(this,n)},n.prototype.animateInternal=function(t){var n,i=arguments.length;i>1&&"function"==typeof arguments[i-1]&&(n=arguments[i-1],--i);for(var r=0;r<i&&!this.isDef();++r){var e=arguments[r];e.center&&this.setCenterInternal(e.center),void 0!==e.zoom?this.setZoom(e.zoom):e.resolution&&this.setResolution(e.resolution),void 0!==e.rotation&&this.setRotation(e.rotation)}if(r!==i){for(var o=Date.now(),s=this.mi.slice(),a=this.wi,u=this.bi,c=[];r<i;++r){var h=arguments[r],f={start:o,complete:!1,anchor:h.anchor,duration:void 0!==h.duration?h.duration:1e3,easing:h.easing||bt,callback:n};if(h.center&&(f.sourceCenter=s,f.targetCenter=h.center.slice(),s=f.targetCenter),void 0!==h.zoom?(f.sourceResolution=a,f.targetResolution=this.getResolutionForZoom(h.zoom),a=f.targetResolution):h.resolution&&(f.sourceResolution=a,f.targetResolution=h.resolution,a=f.targetResolution),void 0!==h.rotation){f.sourceRotation=u;var l=mi(h.rotation-u+Math.PI,2*Math.PI)-Math.PI;f.targetRotation=u+l,u=f.targetRotation}iu(f)?f.complete=!0:o+=f.duration,c.push(f)}this.li.push(c),this.setHint(za,1),this.Pi()}else n&&$a(n,!0)},n.prototype.getAnimating=function(){return this.fi[za]>0},n.prototype.getInteracting=function(){return this.fi[Fa]>0},n.prototype.cancelAnimations=function(){var t;this.setHint(za,-this.fi[za]);for(var n=0,i=this.li.length;n<i;++n){var r=this.li[n];if(r[0].callback&&$a(r[0].callback,!1),!t)for(var e=0,o=r.length;e<o;++e){var s=r[e];if(!s.complete){t=s.anchor;break}}}this.li.length=0,this.Si=t,this.gi=null,this.xi=NaN,this.ji=NaN},n.prototype.Pi=function(){if(void 0!==this.vi&&(cancelAnimationFrame(this.vi),this.vi=void 0),this.getAnimating()){for(var t=Date.now(),n=!1,i=this.li.length-1;i>=0;--i){for(var r=this.li[i],e=!0,o=0,s=r.length;o<s;++o){var a=r[o];if(!a.complete){var u=t-a.start,c=a.duration>0?u/a.duration:1;c>=1?(a.complete=!0,c=1):e=!1;var h=a.easing(c);if(a.sourceCenter){var f=a.sourceCenter[0],l=a.sourceCenter[1],v=a.targetCenter[0],d=a.targetCenter[1];this.gi=a.targetCenter;var p=f+h*(v-f),y=l+h*(d-l);this.mi=[p,y]}if(a.sourceResolution&&a.targetResolution){var m=1===h?a.targetResolution:a.sourceResolution+h*(a.targetResolution-a.sourceResolution);if(a.anchor){var w=this.Ii(this.getRotation()),b=this.Ci.resolution(m,0,w,!0);this.mi=this.calculateCenterZoom(b,a.anchor)}this.xi=a.targetResolution,this.wi=m,this.Ni(!0)}if(void 0!==a.sourceRotation&&void 0!==a.targetRotation){var g=1===h?mi(a.targetRotation+Math.PI,2*Math.PI)-Math.PI:a.sourceRotation+h*(a.targetRotation-a.sourceRotation);if(a.anchor){var x=this.Ci.rotation(g,!0);this.mi=this.calculateCenterRotate(x,a.anchor)}this.ji=a.targetRotation,this.bi=g}if(this.Ni(!0),n=!0,!a.complete)break}}if(e){this.li[i]=null,this.setHint(za,-1),this.gi=null,this.xi=NaN,this.ji=NaN;var j=r[0].callback;j&&$a(j,!0)}}this.li=this.li.filter(Boolean),n&&void 0===this.vi&&(this.vi=requestAnimationFrame(this.Pi.bind(this)))}},n.prototype.calculateCenterRotate=function(t,n){var i,r=this.getCenterInternal();return void 0!==r&&(nr(i=[r[0]-n[0],r[1]-n[1]],t-this.getRotation()),Ki(i,n)),i},n.prototype.calculateCenterZoom=function(t,n){var i,r=this.getCenterInternal(),e=this.getResolution();void 0!==r&&void 0!==e&&(i=[n[0]-t*(n[0]-r[0])/e,n[1]-t*(n[1]-r[1])/e]);return i},n.prototype.Ii=function(t){var n=this.yi;if(t){var i=n[0],r=n[1];return[Math.abs(i*Math.cos(t))+Math.abs(r*Math.sin(t)),Math.abs(i*Math.sin(t))+Math.abs(r*Math.cos(t))]}return n},n.prototype.setViewportSize=function(t){this.yi=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},n.prototype.getCenter=function(){var t=this.getCenterInternal();return t?zr(t,this.getProjection()):t},n.prototype.getCenterInternal=function(){return this.get(La.CENTER)},n.prototype.getConstraints=function(){return this.Ci},n.prototype.getConstrainResolution=function(){return this.get("constrainResolution")},n.prototype.getHints=function(t){return void 0!==t?(t[0]=this.fi[0],t[1]=this.fi[1],t):this.fi.slice()},n.prototype.calculateExtent=function(t){return Lr(this.calculateExtentInternal(t),this.getProjection())},n.prototype.calculateExtentInternal=function(t){var n=t||this.zi(),i=this.getCenterInternal();Mt(i,1);var r=this.getResolution();Mt(void 0!==r,2);var e=this.getRotation();return Mt(void 0!==e,3),Kn(i,r,e,n)},n.prototype.getMaxResolution=function(){return this.Mi},n.prototype.getMinResolution=function(){return this._i},n.prototype.getMaxZoom=function(){return this.getZoomForResolution(this._i)},n.prototype.setMaxZoom=function(t){this.ki(this.Ri({maxZoom:t}))},n.prototype.getMinZoom=function(){return this.getZoomForResolution(this.Mi)},n.prototype.setMinZoom=function(t){this.ki(this.Ri({minZoom:t}))},n.prototype.setConstrainResolution=function(t){this.ki(this.Ri({constrainResolution:t}))},n.prototype.getProjection=function(){return this.di},n.prototype.getResolution=function(){return this.get(La.RESOLUTION)},n.prototype.getResolutions=function(){return this.Ti},n.prototype.getResolutionForExtent=function(t,n){return this.getResolutionForExtentInternal(Gr(t,this.getProjection()),n)},n.prototype.getResolutionForExtentInternal=function(t,n){var i=n||this.zi(),r=ti(t)/i[0],e=Yn(t)/i[1];return Math.max(r,e)},n.prototype.getResolutionForValueFunction=function(t){var n=t||2,i=this.getConstrainedResolution(this.Mi),r=this._i,e=Math.log(i/r)/Math.log(n);return function(t){return i/Math.pow(n,t*e)}},n.prototype.getRotation=function(){return this.get(La.ROTATION)},n.prototype.getValueForResolutionFunction=function(t){var n=Math.log(t||2),i=this.getConstrainedResolution(this.Mi),r=this._i,e=Math.log(i/r)/n;return function(t){return Math.log(i/t)/n/e}},n.prototype.zi=function(t){var n=this.Ii(t),i=this.Ei;return i&&(n=[n[0]-i[1]-i[3],n[1]-i[0]-i[2]]),n},n.prototype.getState=function(){var t=this.getProjection(),n=this.getResolution(),i=this.getRotation(),r=this.getCenterInternal(),e=this.Ei;if(e){var o=this.zi();r=ru(r,this.Ii(),[o[0]/2+e[3],o[1]/2+e[0]],n,i)}return{center:r.slice(0),projection:void 0!==t?t:null,resolution:n,nextCenter:this.gi,nextResolution:this.xi,nextRotation:this.ji,rotation:i,zoom:this.getZoom()}},n.prototype.getZoom=function(){var t,n=this.getResolution();return void 0!==n&&(t=this.getZoomForResolution(n)),t},n.prototype.getZoomForResolution=function(t){var n,i,r=this.Ai||0;if(this.Ti){var e=m(this.Ti,t,1);r=e,n=this.Ti[e],i=e==this.Ti.length-1?2:n/this.Ti[e+1]}else n=this.Mi,i=this.Oi;return r+Math.log(n/t)/Math.log(i)},n.prototype.getResolutionForZoom=function(t){if(this.Ti){if(this.Ti.length<=1)return 0;var n=ci(Math.floor(t),0,this.Ti.length-2),i=this.Ti[n]/this.Ti[n+1];return this.Ti[n]/Math.pow(i,ci(t-n,0,1))}return this.Mi/Math.pow(this.Oi,t-this.Ai)},n.prototype.fit=function(t,n){var i;if(Mt(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))Mt(!ii(t),25),i=$e(r=Gr(t,this.getProjection()));else if(t.getType()===Pt.CIRCLE){var r;(i=$e(r=Gr(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),Hn(r))}else{var e=Nr();i=e?t.clone().transform(e,this.getProjection()):t}this.fitInternal(i,n)},n.prototype.rotatedExtentForGeometry=function(t){for(var n=this.getRotation(),i=Math.cos(n),r=Math.sin(-n),e=t.getFlatCoordinates(),o=t.getStride(),s=1/0,a=1/0,u=-1/0,c=-1/0,h=0,f=e.length;h<f;h+=o){var l=e[h]*i-e[h+1]*r,v=e[h]*r+e[h+1]*i;s=Math.min(s,l),a=Math.min(a,v),u=Math.max(u,l),c=Math.max(c,v)}return[s,a,u,c]},n.prototype.fitInternal=function(t,n){var i=n||{},r=i.size;r||(r=this.zi());var e,o=void 0!==i.padding?i.padding:[0,0,0,0],s=void 0!==i.nearest&&i.nearest;e=void 0!==i.minResolution?i.minResolution:void 0!==i.maxZoom?this.getResolutionForZoom(i.maxZoom):0;var a=this.rotatedExtentForGeometry(t),u=this.getResolutionForExtentInternal(a,[r[0]-o[1]-o[3],r[1]-o[0]-o[2]]);u=isNaN(u)?e:Math.max(u,e),u=this.getConstrainedResolution(u,s?0:1);var c=this.getRotation(),h=Math.sin(c),f=Math.cos(c),l=Hn(a);l[0]+=(o[1]-o[3])/2*u,l[1]+=(o[0]-o[2])/2*u;var v=l[0]*f-l[1]*h,d=l[1]*f+l[0]*h,p=this.getConstrainedCenter([v,d],u),y=i.callback?i.callback:_;void 0!==i.duration?this.animateInternal({resolution:u,center:p,duration:i.duration,easing:i.easing},y):(this.wi=u,this.mi=p,this.Ni(!1,!0),$a(y,!0))},n.prototype.centerOn=function(t,n,i){this.centerOnInternal(Fr(t,this.getProjection()),n,i)},n.prototype.centerOnInternal=function(t,n,i){this.setCenterInternal(ru(t,n,i,this.getResolution(),this.getRotation()))},n.prototype.calculateCenterShift=function(t,n,i,r){var e,o=this.Ei;if(o&&t){var s=this.zi(-i),a=ru(t,r,[s[0]/2+o[3],s[1]/2+o[0]],n,i);e=[t[0]-a[0],t[1]-a[1]]}return e},n.prototype.isDef=function(){return!!this.getCenterInternal()&&void 0!==this.getResolution()},n.prototype.adjustCenter=function(t){var n=zr(this.mi,this.getProjection());this.setCenter([n[0]+t[0],n[1]+t[1]])},n.prototype.adjustCenterInternal=function(t){var n=this.mi;this.setCenterInternal([n[0]+t[0],n[1]+t[1]])},n.prototype.adjustResolution=function(t,n){var i=n&&Fr(n,this.getProjection());this.adjustResolutionInternal(t,i)},n.prototype.adjustResolutionInternal=function(t,n){var i=this.getAnimating()||this.getInteracting(),r=this.Ii(this.getRotation()),e=this.Ci.resolution(this.wi*t,0,r,i);n&&(this.mi=this.calculateCenterZoom(e,n)),this.wi*=t,this.Ni()},n.prototype.adjustZoom=function(t,n){this.adjustResolution(Math.pow(this.Oi,-t),n)},n.prototype.adjustRotation=function(t,n){n&&(n=Fr(n,this.getProjection())),this.adjustRotationInternal(t,n)},n.prototype.adjustRotationInternal=function(t,n){var i=this.getAnimating()||this.getInteracting(),r=this.Ci.rotation(this.bi+t,i);n&&(this.mi=this.calculateCenterRotate(r,n)),this.bi+=t,this.Ni()},n.prototype.setCenter=function(t){this.setCenterInternal(t?Fr(t,this.getProjection()):t)},n.prototype.setCenterInternal=function(t){this.mi=t,this.Ni()},n.prototype.setHint=function(t,n){return this.fi[t]+=n,this.changed(),this.fi[t]},n.prototype.setResolution=function(t){this.wi=t,this.Ni()},n.prototype.setRotation=function(t){this.bi=t,this.Ni()},n.prototype.setZoom=function(t){this.setResolution(this.getResolutionForZoom(t))},n.prototype.Ni=function(t,n){var i=this.getAnimating()||this.getInteracting()||n,r=this.Ci.rotation(this.bi,i),e=this.Ii(r),o=this.Ci.resolution(this.wi,0,e,i),s=this.Ci.center(this.mi,o,e,i,this.calculateCenterShift(this.mi,o,r,e));this.get(La.ROTATION)!==r&&this.set(La.ROTATION,r),this.get(La.RESOLUTION)!==o&&(this.set(La.RESOLUTION,o),this.set("zoom",this.getZoom(),!0)),s&&this.get(La.CENTER)&&tr(this.get(La.CENTER),s)||this.set(La.CENTER,s),this.getAnimating()&&!t&&this.cancelAnimations(),this.Si=void 0},n.prototype.resolveConstraints=function(t,n,i){var r=void 0!==t?t:200,e=n||0,o=this.Ci.rotation(this.bi),s=this.Ii(o),a=this.Ci.resolution(this.wi,e,s),u=this.Ci.center(this.mi,a,s,!1,this.calculateCenterShift(this.mi,a,o,s));if(0===r&&!this.Si)return this.wi=a,this.bi=o,this.mi=u,void this.Ni();var c=i||(0===r?this.Si:void 0);this.Si=void 0,this.getResolution()===a&&this.getRotation()===o&&this.getCenterInternal()&&tr(this.getCenterInternal(),u)||(this.getAnimating()&&this.cancelAnimations(),this.animateInternal({rotation:o,center:u,resolution:a,duration:r,easing:wt,anchor:c}))},n.prototype.beginInteraction=function(){this.resolveConstraints(0),this.setHint(Fa,1)},n.prototype.endInteraction=function(t,n,i){var r=i&&Fr(i,this.getProjection());this.endInteractionInternal(t,n,r)},n.prototype.endInteractionInternal=function(t,n,i){this.setHint(Fa,-1),this.resolveConstraints(t,n,i)},n.prototype.getConstrainedCenter=function(t,n){var i=this.Ii(this.getRotation());return this.Ci.center(t,n||this.getResolution(),i)},n.prototype.getConstrainedZoom=function(t,n){var i=this.getResolutionForZoom(t);return this.getZoomForResolution(this.getConstrainedResolution(i,n))},n.prototype.getConstrainedResolution=function(t,n){var i=n||0,r=this.Ii(this.getRotation());return this.Ci.resolution(t,i,r)},n}(ot);function ou(t,n,i){return void 0===i&&(i=[0,0]),i[0]=t[0]+2*n,i[1]=t[1]+2*n,i}function su(t){return t[0]>0&&t[1]>0}function au(t,n,i){return void 0===i&&(i=[0,0]),i[0]=t[0]*n+.5|0,i[1]=t[1]*n+.5|0,i}function uu(t,n){return Array.isArray(t)?t:(void 0===n?n=[t,t]:(n[0]=t,n[1]=t),n)}var cu=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function hu(t){t instanceof gs?t.setMapInternal(null):t instanceof ha&&t.getLayers().forEach(hu)}function fu(t,n){if(t instanceof gs)t.setMapInternal(n);else if(t instanceof ha)for(var i=t.getLayers().getArray(),r=0,e=i.length;r<e;++r)fu(i[r],n)}var lu=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un;var r=function(t){var n=null;void 0!==t.keyboardEventTarget&&(n="string"==typeof t.keyboardEventTarget?document.getElementById(t.keyboardEventTarget):t.keyboardEventTarget);var i,r,e,o={},s=t.layers&&"function"==typeof t.layers.getLayers?t.layers:new ha({layers:t.layers});o[Oa]=s,o[Ea]=t.target,o[Aa]=t.view instanceof eu?t.view:new eu,void 0!==t.controls&&(Array.isArray(t.controls)?i=new ft(t.controls.slice()):(Mt("function"==typeof t.controls.getArray,47),i=t.controls));void 0!==t.interactions&&(Array.isArray(t.interactions)?r=new ft(t.interactions.slice()):(Mt("function"==typeof t.interactions.getArray,48),r=t.interactions));void 0!==t.overlays?Array.isArray(t.overlays)?e=new ft(t.overlays.slice()):(Mt("function"==typeof t.overlays.getArray,49),e=t.overlays):e=new ft;return{controls:i,interactions:r,keyboardEventTarget:n,overlays:e,values:o}}(n);i.Fi,i.Li=!0,i.Gi=i.handleBrowserEvent.bind(i),i.Di=void 0!==n.maxTilesLoading?n.maxTilesLoading:16,i.Rt=void 0!==n.pixelRatio?n.pixelRatio:Xt,i.Ui,i.qi,i.Bi=function(){this.qi=void 0,this.Wi(Date.now())}.bind(i),i.Vi=[1,0,0,1,0,0],i.Xi=[1,0,0,1,0,0],i.Hi=0,i.Ji=null,i.Ki=null,i.Yi=null,i.Zi=null,i.$i=null,i.Qi=document.createElement("div"),i.Qi.className="ol-viewport"+("ontouchstart"in window?" ol-touch":""),i.Qi.style.position="relative",i.Qi.style.overflow="hidden",i.Qi.style.width="100%",i.Qi.style.height="100%",i.tr=document.createElement("div"),i.tr.style.position="absolute",i.tr.style.zIndex="0",i.tr.style.width="100%",i.tr.style.height="100%",i.tr.style.pointerEvents="none",i.tr.className="ol-overlaycontainer",i.Qi.appendChild(i.tr),i.nr=document.createElement("div"),i.nr.style.position="absolute",i.nr.style.zIndex="0",i.nr.style.width="100%",i.nr.style.height="100%",i.nr.style.pointerEvents="none",i.nr.className="ol-overlaycontainer-stopevent",i.Qi.appendChild(i.nr),i.ir=null,i.Pn=n.moveTolerance,i.rr=r.keyboardEventTarget,i.er=null,i.controls=r.controls||new ft,i.interactions=r.interactions||new ft,i.sr=r.overlays,i.ar={},i.cn=null,i.ur=[],i.cr=new Ia(i.getTilePriority.bind(i),i.hr.bind(i)),i.addChangeListener(Oa,i.lr),i.addChangeListener(Aa,i.vr),i.addChangeListener(Ta,i.dr),i.addChangeListener(Ea,i.pr),i.setProperties(r.values);var e=i;return!n.view||n.view instanceof eu||n.view.then((function(t){e.setView(new eu(t))})),i.controls.addEventListener(st,function(t){t.element.setMap(this)}.bind(i)),i.controls.addEventListener(at,function(t){t.element.setMap(null)}.bind(i)),i.interactions.addEventListener(st,function(t){t.element.setMap(this)}.bind(i)),i.interactions.addEventListener(at,function(t){t.element.setMap(null)}.bind(i)),i.sr.addEventListener(st,function(t){this.yr(t.element)}.bind(i)),i.sr.addEventListener(at,function(t){var n=t.element.getId();void 0!==n&&delete this.ar[n.toString()],t.element.setMap(null)}.bind(i)),i.controls.forEach(function(t){t.setMap(this)}.bind(i)),i.interactions.forEach(function(t){t.setMap(this)}.bind(i)),i.sr.forEach(i.yr.bind(i)),i}return cu(n,t),n.prototype.createRenderer=function(){throw new Error("Use a map type that has a createRenderer method")},n.prototype.addControl=function(t){this.getControls().push(t)},n.prototype.addInteraction=function(t){this.getInteractions().push(t)},n.prototype.addLayer=function(t){this.getLayerGroup().getLayers().push(t)},n.prototype.mr=function(t){fu(t.layer,this)},n.prototype.addOverlay=function(t){this.getOverlays().push(t)},n.prototype.yr=function(t){var n=t.getId();void 0!==n&&(this.ar[n.toString()]=t),t.setMap(this)},n.prototype.disposeInternal=function(){this.setTarget(null),t.prototype.disposeInternal.call(this)},n.prototype.forEachFeatureAtPixel=function(t,n,i){if(this.Ji&&this.cn){var r=this.getCoordinateFromPixelInternal(t),e=void 0!==(i=void 0!==i?i:{}).hitTolerance?i.hitTolerance:0,o=void 0!==i.layerFilter?i.layerFilter:k,s=!1!==i.checkWrapped;return this.cn.forEachFeatureAtCoordinate(r,this.Ji,e,s,n,null,o,null)}},n.prototype.getFeaturesAtPixel=function(t,n){var i=[];return this.forEachFeatureAtPixel(t,(function(t){i.push(t)}),n),i},n.prototype.getAllLayers=function(){var t=[];return function n(i){i.forEach((function(i){i instanceof ha?n(i.getLayers()):t.push(i)}))}(this.getLayers()),t},n.prototype.forEachLayerAtPixel=function(t,n,i){if(this.Ji&&this.cn){var r=i||{},e=void 0!==r.hitTolerance?r.hitTolerance:0,o=r.layerFilter||k;return this.cn.forEachLayerAtPixel(t,this.Ji,e,n,o)}},n.prototype.hasFeatureAtPixel=function(t,n){if(!this.Ji||!this.cn)return!1;var i=this.getCoordinateFromPixelInternal(t),r=void 0!==(n=void 0!==n?n:{}).layerFilter?n.layerFilter:k,e=void 0!==n.hitTolerance?n.hitTolerance:0,o=!1!==n.checkWrapped;return this.cn.hasFeatureAtCoordinate(i,this.Ji,e,o,r,null)},n.prototype.getEventCoordinate=function(t){return this.getCoordinateFromPixel(this.getEventPixel(t))},n.prototype.getEventCoordinateInternal=function(t){return this.getCoordinateFromPixelInternal(this.getEventPixel(t))},n.prototype.getEventPixel=function(t){var n=this.Qi.getBoundingClientRect(),i="changedTouches"in t?t.changedTouches[0]:t;return[i.clientX-n.left,i.clientY-n.top]},n.prototype.getTarget=function(){return this.get(Ea)},n.prototype.getTargetElement=function(){var t=this.getTarget();return void 0!==t?"string"==typeof t?document.getElementById(t):t:null},n.prototype.getCoordinateFromPixel=function(t){return zr(this.getCoordinateFromPixelInternal(t),this.getView().getProjection())},n.prototype.getCoordinateFromPixelInternal=function(t){var n=this.Ji;return n?rn(n.pixelToCoordinateTransform,t.slice()):null},n.prototype.getControls=function(){return this.controls},n.prototype.getOverlays=function(){return this.sr},n.prototype.getOverlayById=function(t){var n=this.ar[t.toString()];return void 0!==n?n:null},n.prototype.getInteractions=function(){return this.interactions},n.prototype.getLayerGroup=function(){return this.get(Oa)},n.prototype.setLayers=function(t){var n=this.getLayerGroup();if(t instanceof ft)n.setLayers(t);else{var i=n.getLayers();i.clear(),i.extend(t)}},n.prototype.getLayers=function(){return this.getLayerGroup().getLayers()},n.prototype.getLoadingOrNotReady=function(){for(var t=this.getLayerGroup().getLayerStatesArray(),n=0,i=t.length;n<i;++n){var r=t[n];if(r.visible){var e=r.layer.getRenderer();if(e&&!e.ready)return!0;var o=r.layer.getSource();if(o&&o.loading)return!0}}return!1},n.prototype.getPixelFromCoordinate=function(t){var n=Fr(t,this.getView().getProjection());return this.getPixelFromCoordinateInternal(n)},n.prototype.getPixelFromCoordinateInternal=function(t){var n=this.Ji;return n?rn(n.coordinateToPixelTransform,t.slice(0,2)):null},n.prototype.getRenderer=function(){return this.cn},n.prototype.getSize=function(){return this.get(Ta)},n.prototype.getView=function(){return this.get(Aa)},n.prototype.getViewport=function(){return this.Qi},n.prototype.getOverlayContainer=function(){return this.tr},n.prototype.getOverlayContainerStopEvent=function(){return this.nr},n.prototype.getOwnerDocument=function(){var t=this.getTargetElement();return t?t.ownerDocument:document},n.prototype.getTilePriority=function(t,n,i,r){return Na(this.Ji,t,n,i,r)},n.prototype.handleBrowserEvent=function(t,n){var i=n||t.type,r=new da(i,this,t);this.handleMapBrowserEvent(r)},n.prototype.handleMapBrowserEvent=function(t){if(this.Ji){var n=t.originalEvent,i=n.type;if(i===ma||i===K||i===W){var r=this.getOwnerDocument(),e=this.Qi.getRootNode?this.Qi.getRootNode():r,o=n.target;if(this.nr.contains(o)||!(e===r?r.documentElement:e).contains(o))return}if(t.frameState=this.Ji,!1!==this.dispatchEvent(t))for(var s=this.getInteractions().getArray().slice(),a=s.length-1;a>=0;a--){var u=s[a];if(u.getMap()===this&&u.getActive()&&this.getTargetElement())if(!u.handleEvent(t)||t.propagationStopped)break}}},n.prototype.handlePostRender=function(){var t=this.Ji,n=this.cr;if(!n.isEmpty()){var i=this.Di,r=i;if(t){var e=t.viewHints;if(e[za]||e[Fa]){var o=Date.now()-t.time>8;i=o?0:8,r=o?0:2}}n.getTilesLoading()<i&&(n.reprioritize(),n.loadMoreTiles(i,r))}t&&this.cn&&!t.animate&&(!0===this.Fi?(this.hasListener(vs)&&this.cn.dispatchRenderEvent(vs,t),!1===this.Li&&(this.Li=!0,this.dispatchEvent(new la(_a,this,t)))):!0===this.Li&&(this.Li=!1,this.dispatchEvent(new la(Ma,this,t))));for(var s=this.ur,a=0,u=s.length;a<u;++a)s[a](this,t);s.length=0},n.prototype.dr=function(){this.getView()&&!this.getView().getAnimating()&&this.getView().resolveConstraints(0),this.render()},n.prototype.pr=function(){if(this.ir){for(var t=0,n=this.er.length;t<n;++t)$(this.er[t]);this.er=null,this.Qi.removeEventListener(L,this.Gi),this.Qi.removeEventListener(K,this.Gi),this.ir.dispose(),this.ir=null,Co(this.Qi)}var i=this.getTargetElement();if(i){for(var r in i.appendChild(this.Qi),this.cn||(this.cn=this.createRenderer()),this.ir=new xa(this,this.Pn),pa)this.ir.addEventListener(pa[r],this.handleMapBrowserEvent.bind(this));this.Qi.addEventListener(L,this.Gi,!1),this.Qi.addEventListener(K,this.Gi,!!Kt&&{passive:!1});var e=this.getOwnerDocument().defaultView,o=this.rr?this.rr:i;this.er=[Y(o,W,this.handleBrowserEvent,this),Y(o,V,this.handleBrowserEvent,this),Y(e,H,this.updateSize,this)]}else this.cn&&(clearTimeout(this.Ui),this.Ui=void 0,this.ur.length=0,this.cn.dispose(),this.cn=null),this.qi&&(cancelAnimationFrame(this.qi),this.qi=void 0);this.updateSize()},n.prototype.hr=function(){this.render()},n.prototype.wr=function(){this.render()},n.prototype.vr=function(){this.Yi&&($(this.Yi),this.Yi=null),this.Zi&&($(this.Zi),this.Zi=null);var t=this.getView();t&&(this.br(),this.Yi=Y(t,l,this.wr,this),this.Zi=Y(t,N,this.wr,this),t.resolveConstraints(0)),this.render()},n.prototype.lr=function(){this.$i&&(this.$i.forEach($),this.$i=null);var t=this.getLayerGroup();t&&(this.mr(new ua("addlayer",t)),this.$i=[Y(t,l,this.render,this),Y(t,N,this.render,this),Y(t,"addlayer",this.mr,this),Y(t,"removelayer",this.gr,this)]),this.render()},n.prototype.isRendered=function(){return!!this.Ji},n.prototype.renderSync=function(){this.qi&&cancelAnimationFrame(this.qi),this.Bi()},n.prototype.redrawText=function(){for(var t=this.getLayerGroup().getLayerStatesArray(),n=0,i=t.length;n<i;++n){var r=t[n].layer;r.hasRenderer()&&r.getRenderer().handleFontsChanged()}},n.prototype.render=function(){this.cn&&void 0===this.qi&&(this.qi=requestAnimationFrame(this.Bi))},n.prototype.removeControl=function(t){return this.getControls().remove(t)},n.prototype.removeInteraction=function(t){return this.getInteractions().remove(t)},n.prototype.removeLayer=function(t){return this.getLayerGroup().getLayers().remove(t)},n.prototype.gr=function(t){hu(t.layer)},n.prototype.removeOverlay=function(t){return this.getOverlays().remove(t)},n.prototype.Wi=function(t){var n=this,i=this.getSize(),r=this.getView(),e=this.Ji,s=null;if(void 0!==i&&su(i)&&r&&r.isDef()){var a=r.getHints(this.Ji?this.Ji.viewHints:void 0),u=r.getState();if(s={animate:!1,coordinateToPixelTransform:this.Vi,declutterTree:null,extent:Kn(u.center,u.resolution,u.rotation,i),index:this.Hi++,layerIndex:0,layerStatesArray:this.getLayerGroup().getLayerStatesArray(),pixelRatio:this.Rt,pixelToCoordinateTransform:this.Xi,postRenderFunctions:[],size:i,tileQueue:this.cr,time:t,usedTiles:{},viewState:u,viewHints:a,wantedTiles:{},mapId:o(this),renderTargets:{}},u.nextCenter&&u.nextResolution){var c=isNaN(u.nextRotation)?u.rotation:u.nextRotation;s.nextExtent=Kn(u.nextCenter,u.nextResolution,c,i)}}if(this.Ji=s,this.cn.renderFrame(s),s){if(s.animate&&this.render(),Array.prototype.push.apply(this.ur,s.postRenderFunctions),e)(!this.Ki||!ii(this.Ki)&&!Nn(s.extent,this.Ki))&&(this.dispatchEvent(new la(Sa,this,e)),this.Ki=Rn(this.Ki));this.Ki&&!s.viewHints[za]&&!s.viewHints[Fa]&&!Nn(s.extent,this.Ki)&&(this.dispatchEvent(new la(ka,this,s)),kn(s.extent,this.Ki))}this.dispatchEvent(new la(ja,this,s)),this.Fi=this.hasListener(Ma)||this.hasListener(_a)||this.hasListener(vs)?!this.cr.getTilesLoading()&&!this.cr.getCount()&&!this.getLoadingOrNotReady():void 0,this.Ui||(this.Ui=setTimeout((function(){n.Ui=void 0,n.handlePostRender()}),0))},n.prototype.setLayerGroup=function(t){var n=this.getLayerGroup();n&&this.gr(new ua("removelayer",n)),this.set(Oa,t)},n.prototype.setSize=function(t){this.set(Ta,t)},n.prototype.setTarget=function(t){this.set(Ea,t)},n.prototype.setView=function(t){if(!t||t instanceof eu)this.set(Aa,t);else{this.set(Aa,new eu);var n=this;t.then((function(t){n.setView(new eu(t))}))}},n.prototype.updateSize=function(){var t=this.getTargetElement(),n=void 0;if(t){var i=getComputedStyle(t),r=t.offsetWidth-parseFloat(i.borderLeftWidth)-parseFloat(i.paddingLeft)-parseFloat(i.paddingRight)-parseFloat(i.borderRightWidth),e=t.offsetHeight-parseFloat(i.borderTopWidth)-parseFloat(i.paddingTop)-parseFloat(i.paddingBottom)-parseFloat(i.borderBottomWidth);isNaN(r)||isNaN(e)||!su(n=[r,e])&&(t.offsetWidth||t.offsetHeight||t.getClientRects().length)&&console.warn("No map visible because the map container's width or height are 0.")}this.setSize(n),this.br()},n.prototype.br=function(){var t=this.getView();if(t){var n=void 0,i=getComputedStyle(this.Qi);i.width&&i.height&&(n=[parseInt(i.width,10),parseInt(i.height,10)]),t.setViewportSize(n)}},n}(ot),vu=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),du=function(t){function n(n){var i=t.call(this)||this,r=n.element;return!r||n.target||r.style.pointerEvents||(r.style.pointerEvents="auto"),i.element=r||null,i.jr=null,i.vn=null,i.listenerKeys=[],n.render&&(i.render=n.render),n.target&&i.setTarget(n.target),i}return vu(n,t),n.prototype.disposeInternal=function(){Co(this.element),t.prototype.disposeInternal.call(this)},n.prototype.getMap=function(){return this.vn},n.prototype.setMap=function(t){this.vn&&Co(this.element);for(var n=0,i=this.listenerKeys.length;n<i;++n)$(this.listenerKeys[n]);(this.listenerKeys.length=0,this.vn=t,t)&&((this.jr?this.jr:t.getOverlayContainerStopEvent()).appendChild(this.element),this.render!==_&&this.listenerKeys.push(Y(t,ja,this.render,this)),t.render())},n.prototype.render=function(t){},n.prototype.setTarget=function(t){this.jr="string"==typeof t?document.getElementById(t):t},n}(ot),pu=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),yu=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{element:document.createElement("div"),render:r.render,target:r.target})||this).Sr=document.createElement("ul"),i.kr=void 0===r.collapsed||r.collapsed,i.Mr=i.kr,i._r=void 0!==r.collapsible,i.Tr=void 0===r.collapsible||r.collapsible,i.Tr||(i.kr=!1);var e=void 0!==r.className?r.className:"ol-attribution",o=void 0!==r.tipLabel?r.tipLabel:"Attributions",s=void 0!==r.expandClassName?r.expandClassName:e+"-expand",a=void 0!==r.collapseLabel?r.collapseLabel:"鈥�",u=void 0!==r.collapseClassName?r.collapseClassName:e+"-collapse";"string"==typeof a?(i.Er=document.createElement("span"),i.Er.textContent=a,i.Er.className=u):i.Er=a;var c=void 0!==r.label?r.label:"i";"string"==typeof c?(i.Ar=document.createElement("span"),i.Ar.textContent=c,i.Ar.className=s):i.Ar=c;var h=i.Tr&&!i.kr?i.Er:i.Ar;i.Cr=document.createElement("button"),i.Cr.setAttribute("type","button"),i.Cr.setAttribute("aria-expanded",String(!i.kr)),i.Cr.title=o,i.Cr.appendChild(h),i.Cr.addEventListener(G,i.Rr.bind(i),!1);var f=e+" "+"ol-unselectable "+As+(i.kr&&i.Tr?" ol-collapsed":"")+(i.Tr?"":" ol-uncollapsible"),l=i.element;return l.className=f,l.appendChild(i.Cr),l.appendChild(i.Sr),i.Pr=[],i.mn=!0,i}return pu(n,t),n.prototype.Ir=function(t){for(var n={},i=[],r=!0,e=t.layerStatesArray,o=0,s=e.length;o<s;++o){var a=e[o];if(bs(a,t.viewState)){var u=a.layer.getSource();if(u){var c=u.getAttributions();if(c){var h=c(t);if(h)if(r=r&&!1!==u.getAttributionsCollapsible(),Array.isArray(h))for(var f=0,l=h.length;f<l;++f)h[f]in n||(i.push(h[f]),n[h[f]]=!0);else h in n||(i.push(h),n[h]=!0)}}}}return this._r||this.setCollapsible(r),i},n.prototype.Nr=function(t){if(t){var n=this.Ir(t),i=n.length>0;if(this.mn!=i&&(this.element.style.display=i?"":"none",this.mn=i),!x(n,this.Pr)){Ro(this.Sr);for(var r=0,e=n.length;r<e;++r){var o=document.createElement("li");o.innerHTML=n[r],this.Sr.appendChild(o)}this.Pr=n}}else this.mn&&(this.element.style.display="none",this.mn=!1)},n.prototype.Rr=function(t){t.preventDefault(),this.zr(),this.Mr=this.kr},n.prototype.zr=function(){this.element.classList.toggle(Cs),this.kr?Ao(this.Er,this.Ar):Ao(this.Ar,this.Er),this.kr=!this.kr,this.Cr.setAttribute("aria-expanded",String(!this.kr))},n.prototype.getCollapsible=function(){return this.Tr},n.prototype.setCollapsible=function(t){this.Tr!==t&&(this.Tr=t,this.element.classList.toggle("ol-uncollapsible"),this.Mr&&this.zr())},n.prototype.setCollapsed=function(t){this.Mr=t,this.Tr&&this.kr!==t&&this.zr()},n.prototype.getCollapsed=function(){return this.kr},n.prototype.render=function(t){this.Nr(t.frameState)},n}(du),mu=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),wu=function(t){function n(n){var i=this,r=n||{};i=t.call(this,{element:document.createElement("div"),render:r.render,target:r.target})||this;var e=void 0!==r.className?r.className:"ol-rotate",o=void 0!==r.label?r.label:"鈬�",s=void 0!==r.compassClassName?r.compassClassName:"ol-compass";i.Ar=null,"string"==typeof o?(i.Ar=document.createElement("span"),i.Ar.className=s,i.Ar.textContent=o):(i.Ar=o,i.Ar.classList.add(s));var a=r.tipLabel?r.tipLabel:"Reset rotation",u=document.createElement("button");u.className=e+"-reset",u.setAttribute("type","button"),u.title=a,u.appendChild(i.Ar),u.addEventListener(G,i.Rr.bind(i),!1);var c=e+" "+"ol-unselectable "+As,h=i.element;return h.className=c,h.appendChild(u),i.Fr=r.resetNorth?r.resetNorth:void 0,i.Lr=void 0!==r.duration?r.duration:250,i.Gr=void 0===r.autoHide||r.autoHide,i.Dr=void 0,i.Gr&&i.element.classList.add(_s),i}return mu(n,t),n.prototype.Rr=function(t){t.preventDefault(),void 0!==this.Fr?this.Fr():this.Ur()},n.prototype.Ur=function(){var t=this.getMap().getView();if(t){var n=t.getRotation();void 0!==n&&(this.Lr>0&&n%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.Lr,easing:wt}):t.setRotation(0))}},n.prototype.render=function(t){var n=t.frameState;if(n){var i=n.viewState.rotation;if(i!=this.Dr){var r="rotate("+i+"rad)";if(this.Gr){var e=this.element.classList.contains(_s);e||0!==i?e&&0!==i&&this.element.classList.remove(_s):this.element.classList.add(_s)}this.Ar.style.transform=r}this.Dr=i}},n}(du),bu=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),gu=function(t){function n(n){var i=this,r=n||{};i=t.call(this,{element:document.createElement("div"),target:r.target})||this;var e=void 0!==r.className?r.className:"ol-zoom",o=void 0!==r.delta?r.delta:1,s=void 0!==r.zoomInClassName?r.zoomInClassName:e+"-in",a=void 0!==r.zoomOutClassName?r.zoomOutClassName:e+"-out",u=void 0!==r.zoomInLabel?r.zoomInLabel:"+",c=void 0!==r.zoomOutLabel?r.zoomOutLabel:"鈥�",h=void 0!==r.zoomInTipLabel?r.zoomInTipLabel:"Zoom in",f=void 0!==r.zoomOutTipLabel?r.zoomOutTipLabel:"Zoom out",l=document.createElement("button");l.className=s,l.setAttribute("type","button"),l.title=h,l.appendChild("string"==typeof u?document.createTextNode(u):u),l.addEventListener(G,i.Rr.bind(i,o),!1);var v=document.createElement("button");v.className=a,v.setAttribute("type","button"),v.title=f,v.appendChild("string"==typeof c?document.createTextNode(c):c),v.addEventListener(G,i.Rr.bind(i,-o),!1);var d=e+" "+"ol-unselectable "+As,p=i.element;return p.className=d,p.appendChild(l),p.appendChild(v),i.Lr=void 0!==r.duration?r.duration:250,i}return bu(n,t),n.prototype.Rr=function(t,n){n.preventDefault(),this.qr(t)},n.prototype.qr=function(t){var n=this.getMap().getView();if(n){var i=n.getZoom();if(void 0!==i){var r=n.getConstrainedZoom(i+t);this.Lr>0?(n.getAnimating()&&n.cancelAnimations(),n.animate({zoom:r,duration:this.Lr,easing:wt})):n.setZoom(r)}}},n}(du);function xu(t){var n=t||{},i=new ft;return(void 0===n.zoom||n.zoom)&&i.push(new gu(n.zoomOptions)),(void 0===n.rotate||n.rotate)&&i.push(new wu(n.rotateOptions)),(void 0===n.attribution||n.attribution)&&i.push(new yu(n.attributionOptions)),i}var ju="active",Su=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function ku(t,n,i){var r=t.getCenterInternal();if(r){var e=[r[0]+n[0],r[1]+n[1]];t.animateInternal({duration:void 0!==i?i:250,easing:gt,center:t.getConstrainedCenter(e)})}}function Mu(t,n,i,r){var e=t.getZoom();if(void 0!==e){var o=t.getConstrainedZoom(e+n),s=t.getResolutionForZoom(o);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:s,anchor:i,duration:void 0!==r?r:250,easing:wt})}}var _u=function(t){function n(n){var i=t.call(this)||this;return i.on,i.once,i.un,n&&n.handleEvent&&(i.handleEvent=n.handleEvent),i.vn=null,i.setActive(!0),i}return Su(n,t),n.prototype.getActive=function(){return this.get(ju)},n.prototype.getMap=function(){return this.vn},n.prototype.handleEvent=function(t){return!0},n.prototype.setActive=function(t){this.set(ju,t)},n.prototype.setMap=function(t){this.vn=t},n}(ot),Ou=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Tu=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Br=r.delta?r.delta:1,i.Lr=void 0!==r.duration?r.duration:250,i}return Ou(n,t),n.prototype.handleEvent=function(t){var n=!1;if(t.type==pa.DBLCLICK){var i=t.originalEvent,r=t.map,e=t.coordinate,o=i.shiftKey?-this.Br:this.Br;Mu(r.getView(),o,e,this.Lr),i.preventDefault(),n=!0}return!n},n}(_u),Eu=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Au(t){for(var n=t.length,i=0,r=0,e=0;e<n;e++)i+=t[e].clientX,r+=t[e].clientY;return[i/n,r/n]}var Cu=function(t){function n(n){var i=this,r=n||{};return i=t.call(this,r)||this,r.handleDownEvent&&(i.handleDownEvent=r.handleDownEvent),r.handleDragEvent&&(i.handleDragEvent=r.handleDragEvent),r.handleMoveEvent&&(i.handleMoveEvent=r.handleMoveEvent),r.handleUpEvent&&(i.handleUpEvent=r.handleUpEvent),r.stopDown&&(i.stopDown=r.stopDown),i.handlingDownUpSequence=!1,i.Wr={},i.targetPointers=[],i}return Eu(n,t),n.prototype.getPointerCount=function(){return this.targetPointers.length},n.prototype.handleDownEvent=function(t){return!1},n.prototype.handleDragEvent=function(t){},n.prototype.handleEvent=function(t){if(!t.originalEvent)return!0;var n=!1;if(this.Vr(t),this.handlingDownUpSequence){if(t.type==pa.POINTERDRAG)this.handleDragEvent(t),t.originalEvent.preventDefault();else if(t.type==pa.POINTERUP){var i=this.handleUpEvent(t);this.handlingDownUpSequence=i&&this.targetPointers.length>0}}else if(t.type==pa.POINTERDOWN){var r=this.handleDownEvent(t);this.handlingDownUpSequence=r,n=this.stopDown(r)}else t.type==pa.POINTERMOVE&&this.handleMoveEvent(t);return!n},n.prototype.handleMoveEvent=function(t){},n.prototype.handleUpEvent=function(t){return!1},n.prototype.stopDown=function(t){return t},n.prototype.Vr=function(t){if(function(t){var n=t.type;return n===pa.POINTERDOWN||n===pa.POINTERDRAG||n===pa.POINTERUP}(t)){var n=t.originalEvent,i=n.pointerId.toString();t.type==pa.POINTERUP?delete this.Wr[i]:(t.type==pa.POINTERDOWN||i in this.Wr)&&(this.Wr[i]=n),this.targetPointers=C(this.Wr)}},n}(_u);function Ru(t){var n=arguments;return function(t){for(var i=!0,r=0,e=n.length;r<e&&(i=i&&n[r](t));++r);return i}}var Pu=function(t){var n=t.originalEvent;return n.altKey&&!(n.metaKey||n.ctrlKey)&&!n.shiftKey},Iu=function(t){var n=t.originalEvent;return n.altKey&&!(n.metaKey||n.ctrlKey)&&n.shiftKey},Nu=function(t){var n=t.map.getTargetElement(),i=t.map.getOwnerDocument().activeElement;return n.contains(i)},zu=function(t){return!t.map.getTargetElement().hasAttribute("tabindex")||Nu(t)},Fu=k,Lu=function(t){var n=t.originalEvent;return 0==n.button&&!(Wt&&Vt&&n.ctrlKey)},Gu=M,Du=function(t){return t.type==pa.SINGLECLICK},Uu=function(t){var n=t.originalEvent;return!n.altKey&&!(n.metaKey||n.ctrlKey)&&!n.shiftKey},qu=function(t){var n=t.originalEvent;return!n.altKey&&!(n.metaKey||n.ctrlKey)&&n.shiftKey},Bu=function(t){var n=t.originalEvent.target.tagName;return"INPUT"!==n&&"SELECT"!==n&&"TEXTAREA"!==n},Wu=function(t){var n=t.originalEvent;return Mt(void 0!==n,56),"mouse"==n.pointerType},Vu=function(t){var n=t.originalEvent;return Mt(void 0!==n,56),n.isPrimary&&0===n.button},Xu=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Hu=function(t){function n(n){var i=t.call(this,{stopDown:M})||this,r=n||{};i.Xr=r.kinetic,i.lastCentroid=null,i.Hr,i.Jr=!1;var e=r.condition?r.condition:Ru(Uu,Vu);return i.Kr=r.onFocusOnly?Ru(zu,e):e,i.Yr=!1,i}return Xu(n,t),n.prototype.handleDragEvent=function(t){this.Jr||(this.Jr=!0,this.getMap().getView().beginInteraction());var n=this.targetPointers,i=Au(n);if(n.length==this.Hr){if(this.Xr&&this.Xr.update(i[0],i[1]),this.lastCentroid){var r=[this.lastCentroid[0]-i[0],i[1]-this.lastCentroid[1]],e=t.map.getView();ir(r,e.getResolution()),nr(r,e.getRotation()),e.adjustCenterInternal(r)}}else this.Xr&&this.Xr.begin();this.lastCentroid=i,this.Hr=n.length,t.originalEvent.preventDefault()},n.prototype.handleUpEvent=function(t){var n=t.map,i=n.getView();if(0===this.targetPointers.length){if(!this.Yr&&this.Xr&&this.Xr.end()){var r=this.Xr.getDistance(),e=this.Xr.getAngle(),o=i.getCenterInternal(),s=n.getPixelFromCoordinateInternal(o),a=n.getCoordinateFromPixelInternal([s[0]-r*Math.cos(e),s[1]-r*Math.sin(e)]);i.animateInternal({center:i.getConstrainedCenter(a),duration:500,easing:wt})}return this.Jr&&(this.Jr=!1,i.endInteraction()),!1}return this.Xr&&this.Xr.begin(),this.lastCentroid=null,!0},n.prototype.handleDownEvent=function(t){if(this.targetPointers.length>0&&this.Kr(t)){var n=t.map.getView();return this.lastCentroid=null,n.getAnimating()&&n.cancelAnimations(),this.Xr&&this.Xr.begin(),this.Yr=this.targetPointers.length>1,!0}return!1},n}(Cu),Ju=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ku=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this,{stopDown:M})||this).Kr=r.condition?r.condition:Iu,i.Zr=void 0,i.Lr=void 0!==r.duration?r.duration:250,i}return Ju(n,t),n.prototype.handleDragEvent=function(t){if(Wu(t)){var n=t.map,i=n.getView();if(i.getConstraints().rotation!==Ha){var r=n.getSize(),e=t.pixel,o=Math.atan2(r[1]/2-e[1],e[0]-r[0]/2);if(void 0!==this.Zr){var s=o-this.Zr;i.adjustRotationInternal(-s)}this.Zr=o}}},n.prototype.handleUpEvent=function(t){return!Wu(t)||(t.map.getView().endInteraction(this.Lr),!1)},n.prototype.handleDownEvent=function(t){return!!Wu(t)&&(!(!Lu(t)||!this.Kr(t))&&(t.map.getView().beginInteraction(),this.Zr=void 0,!0))},n}(Cu),Yu=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Zu=function(t){function n(n){var i=t.call(this)||this;return i.$r=null,i.pn=document.createElement("div"),i.pn.style.position="absolute",i.pn.style.pointerEvents="auto",i.pn.className="ol-box "+n,i.vn=null,i.Qr=null,i.te=null,i}return Yu(n,t),n.prototype.disposeInternal=function(){this.setMap(null)},n.prototype.ne=function(){var t=this.Qr,n=this.te,i="px",r=this.pn.style;r.left=Math.min(t[0],n[0])+i,r.top=Math.min(t[1],n[1])+i,r.width=Math.abs(n[0]-t[0])+i,r.height=Math.abs(n[1]-t[1])+i},n.prototype.setMap=function(t){if(this.vn){this.vn.getOverlayContainer().removeChild(this.pn);var n=this.pn.style;n.left="inherit",n.top="inherit",n.width="inherit",n.height="inherit"}this.vn=t,this.vn&&this.vn.getOverlayContainer().appendChild(this.pn)},n.prototype.setPixels=function(t,n){this.Qr=t,this.te=n,this.createOrUpdateGeometry(),this.ne()},n.prototype.createOrUpdateGeometry=function(){var t=this.Qr,n=this.te,i=[t,[t[0],n[1]],n,[n[0],t[1]]].map(this.vn.getCoordinateFromPixelInternal,this.vn);i[4]=i[0].slice(),this.$r?this.$r.setCoordinates([i]):this.$r=new Ye([i])},n.prototype.getGeometry=function(){return this.$r},n}(v),$u=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Qu="boxstart",tc="boxdrag",nc="boxend",ic="boxcancel",rc=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.coordinate=i,e.mapBrowserEvent=r,e}return $u(n,t),n}(f),ec=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un;var r=n||{};return i.ie=new Zu(r.className||"ol-dragbox"),i.re=void 0!==r.minArea?r.minArea:64,r.onBoxEnd&&(i.onBoxEnd=r.onBoxEnd),i.Qr=null,i.Kr=r.condition?r.condition:Lu,i.ee=r.boxEndCondition?r.boxEndCondition:i.defaultBoxEndCondition,i}return $u(n,t),n.prototype.defaultBoxEndCondition=function(t,n,i){var r=i[0]-n[0],e=i[1]-n[1];return r*r+e*e>=this.re},n.prototype.getGeometry=function(){return this.ie.getGeometry()},n.prototype.handleDragEvent=function(t){this.ie.setPixels(this.Qr,t.pixel),this.dispatchEvent(new rc(tc,t.coordinate,t))},n.prototype.handleUpEvent=function(t){this.ie.setMap(null);var n=this.ee(t,this.Qr,t.pixel);return n&&this.onBoxEnd(t),this.dispatchEvent(new rc(n?nc:ic,t.coordinate,t)),!1},n.prototype.handleDownEvent=function(t){return!!this.Kr(t)&&(this.Qr=t.pixel,this.ie.setMap(t.map),this.ie.setPixels(this.Qr,this.Qr),this.dispatchEvent(new rc(Qu,t.coordinate,t)),!0)},n.prototype.onBoxEnd=function(t){},n}(Cu),oc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),sc=function(t){function n(n){var i=this,r=n||{},e=r.condition?r.condition:qu;return(i=t.call(this,{condition:e,className:r.className||"ol-dragzoom",minArea:r.minArea})||this).Lr=void 0!==r.duration?r.duration:200,i.oe=void 0!==r.out&&r.out,i}return oc(n,t),n.prototype.onBoxEnd=function(t){var n=this.getMap().getView(),i=this.getGeometry();if(this.oe){var r=n.rotatedExtentForGeometry(i),e=n.getResolutionForExtentInternal(r),o=n.getResolution()/e;(i=i.clone()).scale(o*o)}n.fitInternal(i,{duration:this.Lr,easing:wt})},n}(ec),ac=37,uc=38,cc=39,hc=40,fc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),lc=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.se=function(t){return Uu(t)&&Bu(t)},i.Kr=void 0!==r.condition?r.condition:i.se,i.Lr=void 0!==r.duration?r.duration:100,i.ae=void 0!==r.pixelDelta?r.pixelDelta:128,i}return fc(n,t),n.prototype.handleEvent=function(t){var n=!1;if(t.type==W){var i=t.originalEvent,r=i.keyCode;if(this.Kr(t)&&(r==hc||r==ac||r==cc||r==uc)){var e=t.map.getView(),o=e.getResolution()*this.ae,s=0,a=0;r==hc?a=-o:r==ac?s=-o:r==cc?s=o:a=o;var u=[s,a];nr(u,e.getRotation()),ku(e,u,this.Lr),i.preventDefault(),n=!0}}return!n},n}(_u),vc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),dc=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Kr=r.condition?r.condition:Bu,i.Br=r.delta?r.delta:1,i.Lr=void 0!==r.duration?r.duration:100,i}return vc(n,t),n.prototype.handleEvent=function(t){var n=!1;if(t.type==W||t.type==V){var i=t.originalEvent,r=i.charCode;if(this.Kr(t)&&(r=="+".charCodeAt(0)||r=="-".charCodeAt(0))){var e=t.map,o=r=="+".charCodeAt(0)?this.Br:-this.Br;Mu(e.getView(),o,void 0,this.Lr),i.preventDefault(),n=!0}}return!n},n}(_u),pc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),yc="trackpad",mc="wheel",wc=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,r)||this).ue=0,i.ce=0,i.wt=void 0!==r.maxDelta?r.maxDelta:1,i.Lr=void 0!==r.duration?r.duration:250,i.he=void 0!==r.timeout?r.timeout:80,i.fe=void 0===r.useAnchor||r.useAnchor,i.le=void 0!==r.constrainResolution&&r.constrainResolution;var e=r.condition?r.condition:Fu;return i.Kr=r.onFocusOnly?Ru(zu,e):e,i.ve=null,i.de=void 0,i.pe,i.ye=void 0,i.me=400,i.we,i.be=300,i}return pc(n,t),n.prototype.ge=function(){this.we=void 0,this.getMap().getView().endInteraction(void 0,this.ce?this.ce>0?1:-1:0,this.ve)},n.prototype.handleEvent=function(t){if(!this.Kr(t))return!0;if(t.type!==K)return!0;var n,i=t.map,r=t.originalEvent;if(r.preventDefault(),this.fe&&(this.ve=t.coordinate),t.type==K&&(n=r.deltaY,Ut&&r.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(n/=Xt),r.deltaMode===WheelEvent.DOM_DELTA_LINE&&(n*=40)),0===n)return!1;this.ce=n;var e=Date.now();void 0===this.de&&(this.de=e),(!this.ye||e-this.de>this.me)&&(this.ye=Math.abs(n)<4?yc:mc);var o=i.getView();if(this.ye===yc&&!o.getConstrainResolution()&&!this.le)return this.we?clearTimeout(this.we):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.we=setTimeout(this.ge.bind(this),this.he),o.adjustZoom(-n/this.be,this.ve),this.de=e,!1;this.ue+=n;var s=Math.max(this.he-(e-this.de),0);return clearTimeout(this.pe),this.pe=setTimeout(this.xe.bind(this,i),s),!1},n.prototype.xe=function(t){var n=t.getView();n.getAnimating()&&n.cancelAnimations();var i=-ci(this.ue,-this.wt*this.be,this.wt*this.be)/this.be;(n.getConstrainResolution()||this.le)&&(i=i?i>0?1:-1:0),Mu(n,i,this.ve,this.Lr),this.ye=void 0,this.ue=0,this.ve=null,this.de=void 0,this.pe=void 0},n.prototype.setMouseAnchor=function(t){this.fe=t,t||(this.ve=null)},n}(_u),bc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),gc=function(t){function n(n){var i=this,r=n||{},e=r;return e.stopDown||(e.stopDown=M),(i=t.call(this,e)||this).je=null,i.Zr=void 0,i.Se=!1,i.ke=0,i.Me=void 0!==r.threshold?r.threshold:.3,i.Lr=void 0!==r.duration?r.duration:250,i}return bc(n,t),n.prototype.handleDragEvent=function(t){var n=0,i=this.targetPointers[0],r=this.targetPointers[1],e=Math.atan2(r.clientY-i.clientY,r.clientX-i.clientX);if(void 0!==this.Zr){var o=e-this.Zr;this.ke+=o,!this.Se&&Math.abs(this.ke)>this.Me&&(this.Se=!0),n=o}this.Zr=e;var s=t.map,a=s.getView();if(a.getConstraints().rotation!==Ha){var u=s.getViewport().getBoundingClientRect(),c=Au(this.targetPointers);c[0]-=u.left,c[1]-=u.top,this.je=s.getCoordinateFromPixelInternal(c),this.Se&&(s.render(),a.adjustRotationInternal(n,this.je))}},n.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.Lr),!1)},n.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var n=t.map;return this.je=null,this.Zr=void 0,this.Se=!1,this.ke=0,this.handlingDownUpSequence||n.getView().beginInteraction(),!0}return!1},n}(Cu),xc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),jc=function(t){function n(n){var i=this,r=n||{},e=r;return e.stopDown||(e.stopDown=M),(i=t.call(this,e)||this).je=null,i.Lr=void 0!==r.duration?r.duration:400,i._e=void 0,i.Oe=1,i}return xc(n,t),n.prototype.handleDragEvent=function(t){var n=1,i=this.targetPointers[0],r=this.targetPointers[1],e=i.clientX-r.clientX,o=i.clientY-r.clientY,s=Math.sqrt(e*e+o*o);void 0!==this._e&&(n=this._e/s),this._e=s;var a=t.map,u=a.getView();1!=n&&(this.Oe=n);var c=a.getViewport().getBoundingClientRect(),h=Au(this.targetPointers);h[0]-=c.left,h[1]-=c.top,this.je=a.getCoordinateFromPixelInternal(h),a.render(),u.adjustResolutionInternal(n,this.je)},n.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var n=t.map.getView(),i=this.Oe>1?1:-1;return n.endInteraction(this.Lr,i),!1}return!0},n.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var n=t.map;return this.je=null,this._e=void 0,this.Oe=1,this.handlingDownUpSequence||n.getView().beginInteraction(),!0}return!1},n}(Cu);function Sc(t){var n=t||{},i=new ft,r=new zo(-.005,.05,100);return(void 0===n.altShiftDragRotate||n.altShiftDragRotate)&&i.push(new Ku),(void 0===n.doubleClickZoom||n.doubleClickZoom)&&i.push(new Tu({delta:n.zoomDelta,duration:n.zoomDuration})),(void 0===n.dragPan||n.dragPan)&&i.push(new Hu({onFocusOnly:n.onFocusOnly,kinetic:r})),(void 0===n.pinchRotate||n.pinchRotate)&&i.push(new gc),(void 0===n.pinchZoom||n.pinchZoom)&&i.push(new jc({duration:n.zoomDuration})),(void 0===n.keyboard||n.keyboard)&&(i.push(new lc),i.push(new dc({delta:n.zoomDelta,duration:n.zoomDuration}))),(void 0===n.mouseWheelZoom||n.mouseWheelZoom)&&i.push(new wc({onFocusOnly:n.onFocusOnly,duration:n.zoomDuration})),(void 0===n.shiftDragZoom||n.shiftDragZoom)&&i.push(new sc({duration:n.zoomDuration})),i}var kc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Mc=function(t){function n(n){return(n=E({},n)).controls||(n.controls=xu()),n.interactions||(n.interactions=Sc({onFocusOnly:!0})),t.call(this,n)||this}return kc(n,t),n.prototype.createRenderer=function(){return new sa(this)},n}(lu),_c="bottom-left",Oc="bottom-center",Tc="bottom-right",Ec="center-left",Ac="center-center",Cc="center-right",Rc="top-left",Pc="top-center",Ic="top-right";function Nc(t){return(Nc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var zc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Fc="element",Lc="map",Gc="offset",Dc="position",Uc="positioning",qc=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un,i.options=n,i.id=n.id,i.insertFirst=void 0===n.insertFirst||n.insertFirst,i.stopEvent=void 0===n.stopEvent||n.stopEvent,i.element=document.createElement("div"),i.element.className=void 0!==n.className?n.className:"ol-overlay-container ol-selectable",i.element.style.position="absolute",i.element.style.pointerEvents="auto";var r=n.autoPan;return r&&"object"!==Nc(r)&&(r={animation:n.autoPanAnimation,margin:n.autoPanMargin}),i.autoPan=r||!1,i.rendered={_t:"",visible:!0},i.mapPostrenderListenerKey=null,i.addChangeListener(Fc,i.handleElementChanged),i.addChangeListener(Lc,i.handleMapChanged),i.addChangeListener(Gc,i.handleOffsetChanged),i.addChangeListener(Dc,i.handlePositionChanged),i.addChangeListener(Uc,i.handlePositioningChanged),void 0!==n.element&&i.setElement(n.element),i.setOffset(void 0!==n.offset?n.offset:[0,0]),i.setPositioning(void 0!==n.positioning?n.positioning:Rc),void 0!==n.position&&i.setPosition(n.position),i}return zc(n,t),n.prototype.getElement=function(){return this.get(Fc)},n.prototype.getId=function(){return this.id},n.prototype.getMap=function(){return this.get(Lc)||null},n.prototype.getOffset=function(){return this.get(Gc)},n.prototype.getPosition=function(){return this.get(Dc)},n.prototype.getPositioning=function(){return this.get(Uc)},n.prototype.handleElementChanged=function(){Ro(this.element);var t=this.getElement();t&&this.element.appendChild(t)},n.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(Co(this.element),$(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=Y(t,ja,this.render,this),this.updatePixelPosition();var n=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?n.insertBefore(this.element,n.childNodes[0]||null):n.appendChild(this.element),this.performAutoPan()}},n.prototype.render=function(){this.updatePixelPosition()},n.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},n.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},n.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},n.prototype.setElement=function(t){this.set(Fc,t)},n.prototype.setMap=function(t){this.set(Lc,t)},n.prototype.setOffset=function(t){this.set(Gc,t)},n.prototype.setPosition=function(t){this.set(Dc,t)},n.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},n.prototype.panIntoView=function(t){var n=this.getMap();if(n&&n.getTargetElement()&&this.get(Dc)){var i=this.getRect(n.getTargetElement(),n.getSize()),r=this.getElement(),e=this.getRect(r,[To(r),Eo(r)]),o=t||{},s=void 0===o.margin?20:o.margin;if(!On(i,e)){var a=e[0]-i[0],u=i[2]-e[2],c=e[1]-i[1],h=i[3]-e[3],f=[0,0];if(a<0?f[0]=a-s:u<0&&(f[0]=Math.abs(u)+s),c<0?f[1]=c-s:h<0&&(f[1]=Math.abs(h)+s),0!==f[0]||0!==f[1]){var l=n.getView().getCenterInternal(),v=n.getPixelFromCoordinateInternal(l);if(!v)return;var d=[v[0]+f[0],v[1]+f[1]],p=o.animation||{};n.getView().animateInternal({center:n.getCoordinateFromPixelInternal(d),duration:p.duration,easing:p.easing})}}}},n.prototype.getRect=function(t,n){var i=t.getBoundingClientRect(),r=i.left+window.pageXOffset,e=i.top+window.pageYOffset;return[r,e,r+n[0],e+n[1]]},n.prototype.setPositioning=function(t){this.set(Uc,t)},n.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},n.prototype.updatePixelPosition=function(){var t=this.getMap(),n=this.getPosition();if(t&&t.isRendered()&&n){var i=t.getPixelFromCoordinate(n),r=t.getSize();this.updateRenderedPosition(i,r)}else this.setVisible(!1)},n.prototype.updateRenderedPosition=function(t,n){var i=this.element.style,r=this.getOffset(),e=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+r[0])+"px",s=Math.round(t[1]+r[1])+"px",a="0%",u="0%";e==Tc||e==Cc||e==Ic?a="-100%":e!=Oc&&e!=Ac&&e!=Pc||(a="-50%"),e==_c||e==Oc||e==Tc?u="-100%":e!=Ec&&e!=Ac&&e!=Cc||(u="-50%");var c="translate(".concat(a,", ").concat(u,") translate(").concat(o,", ").concat(s,")");this.rendered._t!=c&&(this.rendered._t=c,i.transform=c,i.msTransform=c)},n.prototype.getOptions=function(){return this.options},n}(ot),Bc=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.Te=0,this.Ee={},this.Ae=null,this.Ce=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.expireCache=function(t){for(;this.canExpireCache();)this.pop()},t.prototype.clear=function(){this.Te=0,this.Ee={},this.Ae=null,this.Ce=null},t.prototype.containsKey=function(t){return this.Ee.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var n=this.Ae;n;)t(n.Re,n.Pe,this),n=n.newer},t.prototype.get=function(t,n){var i=this.Ee[t];return Mt(void 0!==i,15),i===this.Ce||(i===this.Ae?(this.Ae=this.Ae.newer,this.Ae.older=null):(i.newer.older=i.older,i.older.newer=i.newer),i.newer=null,i.older=this.Ce,this.Ce.newer=i,this.Ce=i),i.Re},t.prototype.remove=function(t){var n=this.Ee[t];return Mt(void 0!==n,15),n===this.Ce?(this.Ce=n.older,this.Ce&&(this.Ce.newer=null)):n===this.Ae?(this.Ae=n.newer,this.Ae&&(this.Ae.older=null)):(n.newer.older=n.older,n.older.newer=n.newer),delete this.Ee[t],--this.Te,n.Re},t.prototype.getCount=function(){return this.Te},t.prototype.getKeys=function(){var t,n=new Array(this.Te),i=0;for(t=this.Ce;t;t=t.older)n[i++]=t.Pe;return n},t.prototype.getValues=function(){var t,n=new Array(this.Te),i=0;for(t=this.Ce;t;t=t.older)n[i++]=t.Re;return n},t.prototype.peekLast=function(){return this.Ae.Re},t.prototype.peekLastKey=function(){return this.Ae.Pe},t.prototype.peekFirstKey=function(){return this.Ce.Pe},t.prototype.pop=function(){var t=this.Ae;return delete this.Ee[t.Pe],t.newer&&(t.newer.older=null),this.Ae=t.newer,this.Ae||(this.Ce=null),--this.Te,t.Re},t.prototype.replace=function(t,n){this.get(t),this.Ee[t].Re=n},t.prototype.set=function(t,n){Mt(!(t in this.Ee),16);var i={Pe:t,newer:null,older:this.Ce,Re:n};this.Ce?this.Ce.newer=i:this.Ae=i,this.Ce=i,this.Ee[t]=i,++this.Te},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function Wc(t,n,i,r){return void 0!==r?(r[0]=t,r[1]=n,r[2]=i,r):[t,n,i]}function Vc(t,n,i){return t+"/"+n+"/"+i}function Xc(t){return Vc(t[0],t[1],t[2])}function Hc(t){var n=t.substring(t.lastIndexOf("/")+1,t.length).split(",").map(Number);return Vc(n[0],n[1],n[2])}function Jc(t){return t.split("/").map(Number)}function Kc(t){return(t[1]<<t[0])+t[2]}function Yc(t,n){var i=t[0],r=t[1],e=t[2];if(n.getMinZoom()>i||i>n.getMaxZoom())return!1;var o=n.getFullTileRange(i);return!o||o.containsXY(r,e)}var Zc=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),$c=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return Zc(n,t),n.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},n.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=Jc(this.peekFirstKey())[0];this.forEach(function(n){n.tileCoord[0]!==t&&(this.remove(Xc(n.tileCoord)),n.release())}.bind(this))}},n}(Bc),Qc=function(){function t(t,n,i,r){this.minX=t,this.maxX=n,this.minY=i,this.maxY=r}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,n){return this.minX<=t&&t<=this.maxX&&this.minY<=n&&n<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minX<this.minX&&(this.minX=t.minX),t.maxX>this.maxX&&(this.maxX=t.maxX),t.minY<this.minY&&(this.minY=t.minY),t.maxY>this.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function th(t,n,i,r,e){return void 0!==e?(e.minX=t,e.maxX=n,e.minY=i,e.maxY=r,e):new Qc(t,n,i,r)}var nh=Qc,ih=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rh=[],eh=function(t){function n(n,i,r,e){var o=t.call(this,n,i,{transition:0})||this;return o.Ne={},o.executorGroups={},o.declutterExecutorGroups={},o.loadingSourceTiles=0,o.hitDetectionImageData={},o.ze={},o.sourceTiles=[],o.errorTileKeys={},o.wantedResolution,o.getSourceTiles=e.bind(void 0,o),o.wrappedTileCoord=r,o}return ih(n,t),n.prototype.getContext=function(t){var n=o(t);return n in this.Ne||(this.Ne[n]=Oo(1,1,rh)),this.Ne[n]},n.prototype.hasContext=function(t){return o(t)in this.Ne},n.prototype.getImage=function(t){return this.hasContext(t)?this.getContext(t).canvas:null},n.prototype.getReplayState=function(t){var n=o(t);return n in this.ze||(this.ze[n]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedTileZ:-1}),this.ze[n]},n.prototype.load=function(){this.getSourceTiles()},n.prototype.release=function(){for(var n in this.Ne)rh.push(this.Ne[n].canvas),delete this.Ne[n];t.prototype.release.call(this)},n}(jt),oh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),sh=function(t){function n(n,i,r,e,o,s){var a=t.call(this,n,i,s)||this;return a.extent=null,a.Fe=e,a.Le=null,a.q,a.projection=null,a.resolution,a.Wt=o,a.Ge=r,a.key=r,a}return oh(n,t),n.prototype.getFormat=function(){return this.Fe},n.prototype.getFeatures=function(){return this.Le},n.prototype.load=function(){this.state==lt&&(this.setState(vt),this.Wt(this,this.Ge),this.q&&this.q(this.extent,this.resolution,this.projection))},n.prototype.onLoad=function(t,n){this.setFeatures(t)},n.prototype.onError=function(){this.setState(pt)},n.prototype.setFeatures=function(t){this.Le=t,this.setState(dt)},n.prototype.setLoader=function(t){this.q=t},n}(jt);function ah(t){return Array.isArray(t)?Wo(t):t}var uh="arraybuffer",ch="json",hh="text",fh="xml",lh=!1;function vh(t,n,i,r,e,o,s){var a=new XMLHttpRequest;a.open("GET","function"==typeof t?t(i,r,e):t,!0),n.getType()==uh&&(a.responseType="arraybuffer"),a.withCredentials=lh,a.onload=function(t){if(!a.status||a.status>=200&&a.status<300){var r=n.getType(),u=void 0;r==ch||r==hh?u=a.responseText:r==fh?(u=a.responseXML)||(u=(new DOMParser).parseFromString(a.responseText,"application/xml")):r==uh&&(u=a.response),u?o(n.readFeatures(u,{extent:i,featureProjection:e}),n.readProjection(u)):s()}else s()},a.onerror=s,a.send()}function dh(t,n){return function(i,r,e,o,s){var a=this;vh(t,n,i,r,e,(function(t,n){a.addFeatures(t),void 0!==o&&o(t)}),s||_)}}function ph(t,n){return[[-1/0,-1/0,1/0,1/0]]}var yh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function mh(t,n,i,r){var e=document.createElement("script"),s="olc_"+o(n);function a(){delete window[s],e.parentNode.removeChild(e)}e.async=!0,e.src=t+(-1==t.indexOf("?")?"?":"&")+(r||"callback")+"="+s;var u=setTimeout((function(){a(),i&&i()}),1e4);window[s]=function(t){clearTimeout(u),a(),n(t)},document.getElementsByTagName("head")[0].appendChild(e)}var wh,bh=function(t){function n(n){var i=this,r="Unexpected response status: "+n.status;return(i=t.call(this,r)||this).name="ResponseError",i.response=n,i}return yh(n,t),n}(Error),gh=function(t){function n(n){var i=t.call(this,"Failed to issue request")||this;return i.name="ClientError",i.client=n,i}return yh(n,t),n}(Error);function xh(t){return new Promise((function(n,i){var r=new XMLHttpRequest;r.addEventListener("load",(function(t){var r=t.target;if(!r.status||r.status>=200&&r.status<300){var e=void 0;try{e=JSON.parse(r.responseText)}catch(t){var o="Error parsing response text as JSON: "+t.message;return void i(new Error(o))}n(e)}else i(new bh(r))})),r.addEventListener("error",(function(t){i(new gh(t.target))})),r.open("GET",t),r.setRequestHeader("Accept","application/json"),r.send()}))}function jh(t,n){return n.indexOf("://")>=0?n:new URL(n,t).href}var Sh=function(){function t(){}return t.prototype.drawCustom=function(t,n,i,r){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,n){},t.prototype.drawFeature=function(t,n){},t.prototype.drawGeometryCollection=function(t,n){},t.prototype.drawLineString=function(t,n){},t.prototype.drawMultiLineString=function(t,n){},t.prototype.drawMultiPoint=function(t,n){},t.prototype.drawMultiPolygon=function(t,n){},t.prototype.drawPoint=function(t,n){},t.prototype.drawPolygon=function(t,n){},t.prototype.drawText=function(t,n){},t.prototype.setFillStrokeStyle=function(t,n){},t.prototype.setImageStyle=function(t,n){},t.prototype.setTextStyle=function(t,n){},t}(),kh=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Mh=function(t){function n(n,i,r,e,o,s,a){var u=t.call(this)||this;return u.Ne=n,u.Rt=i,u.st=r,u._t=e,u.De=o,u.Ue=s,u.qe=a,u.Be=null,u.We=null,u.Ve=null,u.Xe=null,u.He=null,u.Nt=null,u.Je=0,u.Ke=0,u.Ye=0,u.Ze=0,u.$e=0,u.Qe=0,u.no=!1,u.io=0,u.ro=[0,0],u.eo=0,u.oo="",u.so=0,u.ao=0,u.uo=!1,u.co=0,u.ho=[0,0],u.fo=null,u.lo=null,u.vo=null,u.do=[],u.po=[1,0,0,1,0,0],u}return kh(n,t),n.prototype.yo=function(t,n,i,r){if(this.Nt){var e=Wr(t,n,i,r,this._t,this.do),o=this.Ne,s=this.po,a=o.globalAlpha;1!=this.Ze&&(o.globalAlpha=a*this.Ze);var u=this.io;this.no&&(u+=this.De);for(var c=0,h=e.length;c<h;c+=2){var f=e[c]-this.Je,l=e[c+1]-this.Ke;if(0!==u||1!=this.ro[0]||1!=this.ro[1]){var v=f+this.Je,d=l+this.Ke;un(s,v,d,1,1,u,-v,-d),o.setTransform.apply(o,s),o.translate(v,d),o.scale(this.ro[0],this.ro[1]),o.drawImage(this.Nt,this.$e,this.Qe,this.eo,this.Ye,-this.Je,-this.Ke,this.eo,this.Ye),o.setTransform(1,0,0,1,0,0)}else o.drawImage(this.Nt,this.$e,this.Qe,this.eo,this.Ye,f,l,this.eo,this.Ye)}1!=this.Ze&&(o.globalAlpha=a)}},n.prototype.mo=function(t,n,i,r){if(this.vo&&""!==this.oo){this.fo&&this.wo(this.fo),this.lo&&this.bo(this.lo),this.xo(this.vo);var e=Wr(t,n,i,r,this._t,this.do),o=this.Ne,s=this.co;for(this.uo&&(s+=this.De);n<i;n+=r){var a=e[n]+this.so,u=e[n+1]+this.ao;if(0!==s||1!=this.ho[0]||1!=this.ho[1]){var c=un(this.po,a,u,1,1,s,-a,-u);o.setTransform.apply(o,c),o.translate(a,u),o.scale(this.ho[0],this.ho[1]),this.lo&&o.strokeText(this.oo,0,0),this.fo&&o.fillText(this.oo,0,0),o.setTransform(1,0,0,1,0,0)}else this.lo&&o.strokeText(this.oo,a,u),this.fo&&o.fillText(this.oo,a,u)}}},n.prototype.jo=function(t,n,i,r,e){var o=this.Ne,s=Wr(t,n,i,r,this._t,this.do);o.moveTo(s[0],s[1]);var a=s.length;e&&(a-=2);for(var u=2;u<a;u+=2)o.lineTo(s[u],s[u+1]);return e&&o.closePath(),i},n.prototype.So=function(t,n,i,r){for(var e=0,o=i.length;e<o;++e)n=this.jo(t,n,i[e],r,!0);return n},n.prototype.drawCircle=function(t){if(ni(this.st,t.getExtent())){if(this.Xe||this.He){this.Xe&&this.wo(this.Xe),this.He&&this.bo(this.He);var n=Qr(t,this._t,this.do),i=n[2]-n[0],r=n[3]-n[1],e=Math.sqrt(i*i+r*r),o=this.Ne;o.beginPath(),o.arc(n[0],n[1],e,0,2*Math.PI),this.Xe&&o.fill(),this.He&&o.stroke()}""!==this.oo&&this.mo(t.getCenter(),0,2,2)}},n.prototype.setStyle=function(t){this.setFillStrokeStyle(t.getFill(),t.getStroke()),this.setImageStyle(t.getImage()),this.setTextStyle(t.getText())},n.prototype.setTransform=function(t){this._t=t},n.prototype.drawGeometry=function(t){switch(t.getType()){case Pt.POINT:this.drawPoint(t);break;case Pt.LINE_STRING:this.drawLineString(t);break;case Pt.POLYGON:this.drawPolygon(t);break;case Pt.MULTI_POINT:this.drawMultiPoint(t);break;case Pt.MULTI_LINE_STRING:this.drawMultiLineString(t);break;case Pt.MULTI_POLYGON:this.drawMultiPolygon(t);break;case Pt.GEOMETRY_COLLECTION:this.drawGeometryCollection(t);break;case Pt.CIRCLE:this.drawCircle(t)}},n.prototype.drawFeature=function(t,n){var i=n.getGeometryFunction()(t);i&&ni(this.st,i.getExtent())&&(this.setStyle(n),this.drawGeometry(i))},n.prototype.drawGeometryCollection=function(t){for(var n=t.getGeometriesArray(),i=0,r=n.length;i<r;++i)this.drawGeometry(n[i])},n.prototype.drawPoint=function(t){this.Ue&&(t=t.simplifyTransformed(this.Ue,this.qe));var n=t.getFlatCoordinates(),i=t.getStride();this.Nt&&this.yo(n,0,n.length,i),""!==this.oo&&this.mo(n,0,n.length,i)},n.prototype.drawMultiPoint=function(t){this.Ue&&(t=t.simplifyTransformed(this.Ue,this.qe));var n=t.getFlatCoordinates(),i=t.getStride();this.Nt&&this.yo(n,0,n.length,i),""!==this.oo&&this.mo(n,0,n.length,i)},n.prototype.drawLineString=function(t){if(this.Ue&&(t=t.simplifyTransformed(this.Ue,this.qe)),ni(this.st,t.getExtent())){if(this.He){this.bo(this.He);var n=this.Ne,i=t.getFlatCoordinates();n.beginPath(),this.jo(i,0,i.length,t.getStride(),!1),n.stroke()}if(""!==this.oo){var r=t.getFlatMidpoint();this.mo(r,0,2,2)}}},n.prototype.drawMultiLineString=function(t){this.Ue&&(t=t.simplifyTransformed(this.Ue,this.qe));var n=t.getExtent();if(ni(this.st,n)){if(this.He){this.bo(this.He);var i=this.Ne,r=t.getFlatCoordinates(),e=0,o=t.getEnds(),s=t.getStride();i.beginPath();for(var a=0,u=o.length;a<u;++a)e=this.jo(r,e,o[a],s,!1);i.stroke()}if(""!==this.oo){var c=t.getFlatMidpoints();this.mo(c,0,c.length,2)}}},n.prototype.drawPolygon=function(t){if(this.Ue&&(t=t.simplifyTransformed(this.Ue,this.qe)),ni(this.st,t.getExtent())){if(this.He||this.Xe){this.Xe&&this.wo(this.Xe),this.He&&this.bo(this.He);var n=this.Ne;n.beginPath(),this.So(t.getOrientedFlatCoordinates(),0,t.getEnds(),t.getStride()),this.Xe&&n.fill(),this.He&&n.stroke()}if(""!==this.oo){var i=t.getFlatInteriorPoint();this.mo(i,0,2,2)}}},n.prototype.drawMultiPolygon=function(t){if(this.Ue&&(t=t.simplifyTransformed(this.Ue,this.qe)),ni(this.st,t.getExtent())){if(this.He||this.Xe){this.Xe&&this.wo(this.Xe),this.He&&this.bo(this.He);var n=this.Ne,i=t.getOrientedFlatCoordinates(),r=0,e=t.getEndss(),o=t.getStride();n.beginPath();for(var s=0,a=e.length;s<a;++s){var u=e[s];r=this.So(i,r,u,o)}this.Xe&&n.fill(),this.He&&n.stroke()}if(""!==this.oo){var c=t.getFlatInteriorPoints();this.mo(c,0,c.length,2)}}},n.prototype.wo=function(t){var n=this.Ne,i=this.Be;i?i.fillStyle!=t.fillStyle&&(i.fillStyle=t.fillStyle,n.fillStyle=t.fillStyle):(n.fillStyle=t.fillStyle,this.Be={fillStyle:t.fillStyle})},n.prototype.bo=function(t){var n=this.Ne,i=this.We;i?(i.lineCap!=t.lineCap&&(i.lineCap=t.lineCap,n.lineCap=t.lineCap),n.setLineDash&&(x(i.lineDash,t.lineDash)||n.setLineDash(i.lineDash=t.lineDash),i.lineDashOffset!=t.lineDashOffset&&(i.lineDashOffset=t.lineDashOffset,n.lineDashOffset=t.lineDashOffset)),i.lineJoin!=t.lineJoin&&(i.lineJoin=t.lineJoin,n.lineJoin=t.lineJoin),i.lineWidth!=t.lineWidth&&(i.lineWidth=t.lineWidth,n.lineWidth=t.lineWidth),i.miterLimit!=t.miterLimit&&(i.miterLimit=t.miterLimit,n.miterLimit=t.miterLimit),i.strokeStyle!=t.strokeStyle&&(i.strokeStyle=t.strokeStyle,n.strokeStyle=t.strokeStyle)):(n.lineCap=t.lineCap,n.setLineDash&&(n.setLineDash(t.lineDash),n.lineDashOffset=t.lineDashOffset),n.lineJoin=t.lineJoin,n.lineWidth=t.lineWidth,n.miterLimit=t.miterLimit,n.strokeStyle=t.strokeStyle,this.We={lineCap:t.lineCap,lineDash:t.lineDash,lineDashOffset:t.lineDashOffset,lineJoin:t.lineJoin,lineWidth:t.lineWidth,miterLimit:t.miterLimit,strokeStyle:t.strokeStyle})},n.prototype.xo=function(t){var n=this.Ne,i=this.Ve,r=t.textAlign?t.textAlign:Bs;i?(i.font!=t.font&&(i.font=t.font,n.font=t.font),i.textAlign!=r&&(i.textAlign=r,n.textAlign=r),i.textBaseline!=t.textBaseline&&(i.textBaseline=t.textBaseline,n.textBaseline=t.textBaseline)):(n.font=t.font,n.textAlign=r,n.textBaseline=t.textBaseline,this.Ve={font:t.font,textAlign:r,textBaseline:t.textBaseline})},n.prototype.setFillStrokeStyle=function(t,n){var i=this;if(t){var r=t.getColor();this.Xe={fillStyle:ah(r||Fs)}}else this.Xe=null;if(n){var e=n.getColor(),o=n.getLineCap(),s=n.getLineDash(),a=n.getLineDashOffset(),u=n.getLineJoin(),c=n.getWidth(),h=n.getMiterLimit(),f=s||Gs;this.He={lineCap:void 0!==o?o:Ls,lineDash:1===this.Rt?f:f.map((function(t){return t*i.Rt})),lineDashOffset:(a||0)*this.Rt,lineJoin:void 0!==u?u:Ds,lineWidth:(void 0!==c?c:1)*this.Rt,miterLimit:void 0!==h?h:Us,strokeStyle:ah(e||qs)}}else this.He=null},n.prototype.setImageStyle=function(t){var n;if(t&&(n=t.getSize())){var i=t.getAnchor(),r=t.getOrigin();this.Nt=t.getImage(this.Rt),this.Je=i[0]*this.Rt,this.Ke=i[1]*this.Rt,this.Ye=n[1]*this.Rt,this.Ze=t.getOpacity(),this.$e=r[0],this.Qe=r[1],this.no=t.getRotateWithView(),this.io=t.getRotation(),this.ro=t.getScaleArray(),this.eo=n[0]*this.Rt}else this.Nt=null},n.prototype.setTextStyle=function(t){if(t){var n=t.getFill();if(n){var i=n.getColor();this.fo={fillStyle:ah(i||Fs)}}else this.fo=null;var r=t.getStroke();if(r){var e=r.getColor(),o=r.getLineCap(),s=r.getLineDash(),a=r.getLineDashOffset(),u=r.getLineJoin(),c=r.getWidth(),h=r.getMiterLimit();this.lo={lineCap:void 0!==o?o:Ls,lineDash:s||Gs,lineDashOffset:a||0,lineJoin:void 0!==u?u:Ds,lineWidth:void 0!==c?c:1,miterLimit:void 0!==h?h:Us,strokeStyle:ah(e||qs)}}else this.lo=null;var f=t.getFont(),l=t.getOffsetX(),v=t.getOffsetY(),d=t.getRotateWithView(),p=t.getRotation(),y=t.getScaleArray(),m=t.getText(),w=t.getTextAlign(),b=t.getTextBaseline();this.vo={font:void 0!==f?f:zs,textAlign:void 0!==w?w:Bs,textBaseline:void 0!==b?b:Ws},this.oo=void 0!==m?Array.isArray(m)?m.reduce((function(t,n,i){return t+(i%2?" ":n)}),""):m:"",this.so=void 0!==l?this.Rt*l:0,this.ao=void 0!==v?this.Rt*v:0,this.uo=void 0!==d&&d,this.co=void 0!==p?p:0,this.ho=[this.Rt*y[0],this.Rt*y[1]]}else this.oo=""},n}(Sh),_h="Circle",Oh="Default",Th="Image",Eh="LineString",Ah="Polygon",Ch="Text",Rh={Point:function(t,n,i,r,e){var o,s=i.getImage(),a=i.getText();e&&(t=e,o=s&&a&&a.getText()?{}:void 0);if(s){if(s.getImageState()!=bo)return;var u=t.getBuilder(i.getZIndex(),Th);u.setImageStyle(s,o),u.drawPoint(n,r)}if(a&&a.getText()){var c=t.getBuilder(i.getZIndex(),Ch);c.setTextStyle(a,o),c.drawText(n,r)}},LineString:function(t,n,i,r,e){var o=i.getStroke();if(o){var s=t.getBuilder(i.getZIndex(),Eh);s.setFillStrokeStyle(null,o),s.drawLineString(n,r)}var a=i.getText();if(a&&a.getText()){var u=(e||t).getBuilder(i.getZIndex(),Ch);u.setTextStyle(a),u.drawText(n,r)}},Polygon:function(t,n,i,r,e){var o=i.getFill(),s=i.getStroke();if(o||s){var a=t.getBuilder(i.getZIndex(),Ah);a.setFillStrokeStyle(o,s),a.drawPolygon(n,r)}var u=i.getText();if(u&&u.getText()){var c=(e||t).getBuilder(i.getZIndex(),Ch);c.setTextStyle(u),c.drawText(n,r)}},MultiPoint:function(t,n,i,r,e){var o,s=i.getImage(),a=i.getText();e&&(t=e,o=s&&a&&a.getText()?{}:void 0);if(s){if(s.getImageState()!=bo)return;var u=t.getBuilder(i.getZIndex(),Th);u.setImageStyle(s,o),u.drawMultiPoint(n,r)}if(a&&a.getText()){var c=(e||t).getBuilder(i.getZIndex(),Ch);c.setTextStyle(a,o),c.drawText(n,r)}},MultiLineString:function(t,n,i,r,e){var o=i.getStroke();if(o){var s=t.getBuilder(i.getZIndex(),Eh);s.setFillStrokeStyle(null,o),s.drawMultiLineString(n,r)}var a=i.getText();if(a&&a.getText()){var u=(e||t).getBuilder(i.getZIndex(),Ch);u.setTextStyle(a),u.drawText(n,r)}},MultiPolygon:function(t,n,i,r,e){var o=i.getFill(),s=i.getStroke();if(s||o){var a=t.getBuilder(i.getZIndex(),Ah);a.setFillStrokeStyle(o,s),a.drawMultiPolygon(n,r)}var u=i.getText();if(u&&u.getText()){var c=(e||t).getBuilder(i.getZIndex(),Ch);c.setTextStyle(u),c.drawText(n,r)}},GeometryCollection:function(t,n,i,r,e){var o,s,a=n.getGeometriesArray();for(o=0,s=a.length;o<s;++o){(0,Rh[a[o].getType()])(t,a[o],i,r,e)}},Circle:function(t,n,i,r,e){var o=i.getFill(),s=i.getStroke();if(o||s){var a=t.getBuilder(i.getZIndex(),_h);a.setFillStrokeStyle(o,s),a.drawCircle(n,r)}var u=i.getText();if(u&&u.getText()){var c=(e||t).getBuilder(i.getZIndex(),Ch);c.setTextStyle(u),c.drawText(n,r)}}};function Ph(t,n){return parseInt(o(t),10)-parseInt(o(n),10)}function Ih(t,n){var i=Nh(t,n);return i*i}function Nh(t,n){return.5*t/n}function zh(t,n,i,r,e,o,s){var a=!1,u=i.getImage();if(u){var c=u.getImageState();c==bo||c==go?u.unlistenImageChange(e):(c==mo&&u.load(),c=u.getImageState(),u.listenImageChange(e),a=!0)}return function(t,n,i,r,e,o){var s=i.getGeometryFunction()(n);if(!s)return;var a=s.simplifyTransformed(r,e);if(i.getRenderer())Fh(t,a,i,n);else{(0,Rh[a.getType()])(t,a,i,n,o)}}(t,n,i,r,o,s),a}function Fh(t,n,i,r){if(n.getType()!=Pt.GEOMETRY_COLLECTION)t.getBuilder(i.getZIndex(),Oh).drawCustom(n,r,i.getRenderer(),i.getHitDetectionRenderer());else for(var e=n.getGeometries(),o=0,s=e.length;o<s;++o)Fh(t,e[o],i,r)}function Lh(t){if(!(t.context instanceof CanvasRenderingContext2D))throw new Error("Only works for render events from Canvas 2D layers");var n,i=t.inversePixelTransform[0],r=t.frameState,e=Qt(t.inversePixelTransform.slice(),r.coordinateToPixelTransform),o=Ih(r.viewState.resolution,i),s=Nr();return s&&(n=Er(s,r.viewState.projection)),new Mh(t.context,i,r.extent,e,r.viewState.rotation,o,n)}var Gh,Dh={imageSmoothingEnabled:!1,msImageSmoothingEnabled:!1},Uh={imageSmoothingEnabled:!0,msImageSmoothingEnabled:!0};function qh(t,n,i,r,e){t.beginPath(),t.moveTo(0,0),t.lineTo(n,i),t.lineTo(r,e),t.closePath(),t.save(),t.clip(),t.fillRect(0,0,Math.max(n,r)+1,Math.max(i,e)),t.restore()}function Bh(t,n){return Math.abs(t[4*n]-210)>2||Math.abs(t[4*n+3]-191.25)>2}function Wh(t,n,i,r){var e=Cr(i,n,t),o=xr(n,r,i),s=n.getMetersPerUnit();void 0!==s&&(o*=s);var a=t.getMetersPerUnit();void 0!==a&&(o/=a);var u=t.getExtent();if(!u||_n(u,e)){var c=xr(t,o,e)/o;isFinite(c)&&c>0&&(o/=c)}return o}function Vh(t,n,i,r){var e=Hn(i),o=Wh(t,n,e,r);return(!isFinite(o)||o<=0)&&Bn(i,(function(i){return o=Wh(t,n,i,r),isFinite(o)&&o>0})),o}function Xh(t,n,i,r,e,o,s,a,u,c,h,f){var l=Oo(Math.round(i*t),Math.round(i*n));if(f||E(l,Dh),0===u.length)return l.canvas;function v(t){return Math.round(t*i)/i}l.scale(i,i),l.globalCompositeOperation="lighter";var d=[1/0,1/0,-1/0,-1/0];u.forEach((function(t,n,i){Fn(d,t.extent)}));var p=ti(d),y=Yn(d),m=Oo(Math.round(i*p/r),Math.round(i*y/r));f||E(m,Dh);var w=i/r;u.forEach((function(t,n,i){var r=t.extent[0]-d[0],e=-(t.extent[3]-d[3]),o=ti(t.extent),s=Yn(t.extent);t.image.width>0&&t.image.height>0&&m.drawImage(t.image,c,c,t.image.width-2*c,t.image.height-2*c,r*w,e*w,o*w,s*w)}));var b=$n(s);return a.getTriangles().forEach((function(t,n,e){var s=t.source,a=t.target,u=s[0][0],c=s[0][1],h=s[1][0],p=s[1][1],y=s[2][0],w=s[2][1],g=v((a[0][0]-b[0])/o),x=v(-(a[0][1]-b[1])/o),j=v((a[1][0]-b[0])/o),S=v(-(a[1][1]-b[1])/o),k=v((a[2][0]-b[0])/o),M=v(-(a[2][1]-b[1])/o),_=u,O=c;u=0,c=0;var T=di([[h-=_,p-=O,0,0,j-g],[y-=_,w-=O,0,0,k-g],[0,0,h,p,S-x],[0,0,y,w,M-x]]);if(T){if(l.save(),l.beginPath(),function(){if(void 0===Gh){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",qh(t,4,5,4,0),qh(t,4,5,0,5);var n=t.getImageData(0,0,3,3).data;Gh=Bh(n,0)||Bh(n,4)||Bh(n,8)}return Gh}()||!f){l.moveTo(j,S);for(var E=g-j,A=x-S,C=0;C<4;C++)l.lineTo(j+v((C+1)*E/4),S+v(C*A/3)),3!=C&&l.lineTo(j+v((C+1)*E/4),S+v((C+1)*A/3));l.lineTo(k,M)}else l.moveTo(j,S),l.lineTo(g,x),l.lineTo(k,M);l.clip(),l.transform(T[0],T[2],T[1],T[3],g,x),l.translate(d[0]-_,d[3]-O),l.scale(r/i,-r/i),l.drawImage(m.canvas,0,0),l.restore()}})),h&&(l.save(),l.globalCompositeOperation="source-over",l.strokeStyle="black",l.lineWidth=1,a.getTriangles().forEach((function(t,n,i){var r=t.target,e=(r[0][0]-b[0])/o,s=-(r[0][1]-b[1])/o,a=(r[1][0]-b[0])/o,u=-(r[1][1]-b[1])/o,c=(r[2][0]-b[0])/o,h=-(r[2][1]-b[1])/o;l.beginPath(),l.moveTo(a,u),l.lineTo(e,s),l.lineTo(c,h),l.closePath(),l.stroke()})),l.restore()),l.canvas}var Hh=[0,0,0],Jh=function(){function t(t){var n;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.Ti=t.resolutions,Mt(S(this.Ti,(function(t,n){return n-t}),!0),17),!t.origins)for(var i=0,r=this.Ti.length-1;i<r;++i)if(n){if(this.Ti[i]/this.Ti[i+1]!==n){n=void 0;break}}else n=this.Ti[i]/this.Ti[i+1];this.Oi=n,this.maxZoom=this.Ti.length-1,this.ko=void 0!==t.origin?t.origin:null,this.Mo=null,void 0!==t.origins&&(this.Mo=t.origins,Mt(this.Mo.length==this.Ti.length,20));var e=t.extent;void 0===e||this.ko||this.Mo||(this.ko=$n(e)),Mt(!this.ko&&this.Mo||this.ko&&!this.Mo,18),this._o=null,void 0!==t.tileSizes&&(this._o=t.tileSizes,Mt(this._o.length==this.Ti.length,19)),this.Oo=void 0!==t.tileSize?t.tileSize:this._o?null:Ga,Mt(!this.Oo&&this._o||this.Oo&&!this._o,22),this.st=void 0!==e?e:null,this.To=null,this.Eo=[0,0],this.Ao=[0,0,0,0],void 0!==t.sizes?this.To=t.sizes.map((function(t,n){var i=new nh(Math.min(0,t[0]),Math.max(t[0]-1,-1),Math.min(0,t[1]),Math.max(t[1]-1,-1));if(e){var r=this.getTileRangeForExtentAndZ(e,n);i.minX=Math.max(r.minX,i.minX),i.maxX=Math.min(r.maxX,i.maxX),i.minY=Math.max(r.minY,i.minY),i.maxY=Math.min(r.maxY,i.maxY)}return i}),this):e&&this.Co(e)}return t.prototype.forEachTileCoord=function(t,n,i){for(var r=this.getTileRangeForExtentAndZ(t,n),e=r.minX,o=r.maxX;e<=o;++e)for(var s=r.minY,a=r.maxY;s<=a;++s)i([n,e,s])},t.prototype.forEachTileCoordParentTileRange=function(t,n,i,r){var e,o,s=null,a=t[0]-1;for(2===this.Oi?(e=t[1],o=t[2]):s=this.getTileCoordExtent(t,r);a>=this.minZoom;){if(n(a,2===this.Oi?th(e=Math.floor(e/2),e,o=Math.floor(o/2),o,i):this.getTileRangeForExtentAndZ(s,a,i)))return!0;--a}return!1},t.prototype.getExtent=function(){return this.st},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.ko?this.ko:this.Mo[t]},t.prototype.getResolution=function(t){return this.Ti[t]},t.prototype.getResolutions=function(){return this.Ti},t.prototype.getTileCoordChildTileRange=function(t,n,i){if(t[0]<this.maxZoom){if(2===this.Oi){var r=2*t[1],e=2*t[2];return th(r,r+1,e,e+1,n)}var o=this.getTileCoordExtent(t,i||this.Ao);return this.getTileRangeForExtentAndZ(o,t[0]+1,n)}return null},t.prototype.getTileRangeForTileCoordAndZ=function(t,n,i){if(n>this.maxZoom||n<this.minZoom)return null;var r=t[0],e=t[1],o=t[2];if(n===r)return th(e,o,e,o,i);if(this.Oi){var s=Math.pow(this.Oi,n-r),a=Math.floor(e*s),u=Math.floor(o*s);return n<r?th(a,a,u,u,i):th(a,Math.floor(s*(e+1))-1,u,Math.floor(s*(o+1))-1,i)}var c=this.getTileCoordExtent(t,this.Ao);return this.getTileRangeForExtentAndZ(c,n,i)},t.prototype.getTileRangeExtent=function(t,n,i){var r=this.getOrigin(t),e=this.getResolution(t),o=uu(this.getTileSize(t),this.Eo),s=r[0]+n.minX*o[0]*e,a=r[0]+(n.maxX+1)*o[0]*e;return Cn(s,r[1]+n.minY*o[1]*e,a,r[1]+(n.maxY+1)*o[1]*e,i)},t.prototype.getTileRangeForExtentAndZ=function(t,n,i){var r=Hh;this.Ro(t[0],t[3],n,!1,r);var e=r[1],o=r[2];return this.Ro(t[2],t[1],n,!0,r),th(e,r[1],o,r[2],i)},t.prototype.getTileCoordCenter=function(t){var n=this.getOrigin(t[0]),i=this.getResolution(t[0]),r=uu(this.getTileSize(t[0]),this.Eo);return[n[0]+(t[1]+.5)*r[0]*i,n[1]-(t[2]+.5)*r[1]*i]},t.prototype.getTileCoordExtent=function(t,n){var i=this.getOrigin(t[0]),r=this.getResolution(t[0]),e=uu(this.getTileSize(t[0]),this.Eo),o=i[0]+t[1]*e[0]*r,s=i[1]-(t[2]+1)*e[1]*r;return Cn(o,s,o+e[0]*r,s+e[1]*r,n)},t.prototype.getTileCoordForCoordAndResolution=function(t,n,i){return this.Po(t[0],t[1],n,!1,i)},t.prototype.Po=function(t,n,i,r,e){var o=this.getZForResolution(i),s=i/this.getResolution(o),a=this.getOrigin(o),u=uu(this.getTileSize(o),this.Eo),c=s*(t-a[0])/i/u[0],h=s*(a[1]-n)/i/u[1];return r?(c=ji(c,5)-1,h=ji(h,5)-1):(c=xi(c,5),h=xi(h,5)),Wc(o,c,h,e)},t.prototype.Ro=function(t,n,i,r,e){var o=this.getOrigin(i),s=this.getResolution(i),a=uu(this.getTileSize(i),this.Eo),u=(t-o[0])/s/a[0],c=(o[1]-n)/s/a[1];return r?(u=ji(u,5)-1,c=ji(c,5)-1):(u=xi(u,5),c=xi(c,5)),Wc(i,u,c,e)},t.prototype.getTileCoordForCoordAndZ=function(t,n,i){return this.Ro(t[0],t[1],n,!1,i)},t.prototype.getTileCoordResolution=function(t){return this.Ti[t[0]]},t.prototype.getTileSize=function(t){return this.Oo?this.Oo:this._o[t]},t.prototype.getFullTileRange=function(t){return this.To?this.To[t]:this.st?this.getTileRangeForExtentAndZ(this.st,t):null},t.prototype.getZForResolution=function(t,n){return ci(m(this.Ti,t,n||0),this.minZoom,this.maxZoom)},t.prototype.Co=function(t){for(var n=this.Ti.length,i=new Array(n),r=this.minZoom;r<n;++r)i[r]=this.getTileRangeForExtentAndZ(t,r);this.To=i},t}();function Kh(t){var n=t.getDefaultTileGrid();return n||(n=tf(t),t.setDefaultTileGrid(n)),n}function Yh(t,n,i){var r=n[0],e=t.getTileCoordCenter(n),o=nf(i);if(_n(o,e))return n;var s=ti(o),a=Math.ceil((o[0]-e[0])/s);return e[0]+=s*a,t.getTileCoordForCoordAndZ(e,r)}function Zh(t,n,i,r){var e=void 0!==r?r:dn,o=Qh(t,n,i);return new Jh({extent:t,origin:Jn(t,e),resolutions:o,tileSize:i})}function $h(t){var n=t||{},i=n.extent||gr("EPSG:3857").getExtent(),r={extent:i,minZoom:n.minZoom,tileSize:n.tileSize,resolutions:Qh(i,n.maxZoom,n.tileSize,n.maxResolution)};return new Jh(r)}function Qh(t,n,i,r){for(var e=void 0!==n?n:42,o=Yn(t),s=ti(t),a=uu(void 0!==i?i:Ga),u=r>0?r:Math.max(s/a[0],o/a[1]),c=e+1,h=new Array(c),f=0;f<c;++f)h[f]=u/Math.pow(2,f);return h}function tf(t,n,i,r){return Zh(nf(t),n,i,r)}function nf(t){var n=(t=gr(t)).getExtent();if(!n){var i=180*Ft[Gt.DEGREES]/t.getMetersPerUnit();n=Cn(-i,-i,i,i)}return n}function rf(t,n){var i=/\{z\}/g,r=/\{x\}/g,e=/\{y\}/g,o=/\{-y\}/g;return function(s,a,u){return s?t.replace(i,s[0].toString()).replace(r,s[1].toString()).replace(e,s[2].toString()).replace(o,(function(){var t=s[0],i=n.getFullTileRange(t);return Mt(i,55),(i.getHeight()-s[2]-1).toString()})):void 0}}function ef(t,n){for(var i=t.length,r=new Array(i),e=0;e<i;++e)r[e]=rf(t[e],n);return of(r)}function of(t){return 1===t.length?t[0]:function(n,i,r){if(n){var e=mi(Kc(n),t.length);return t[e](n,i,r)}}}function sf(t,n,i){}function af(t){var n=[],i=/\{([a-z])-([a-z])\}/.exec(t);if(i){var r=i[1].charCodeAt(0),e=i[2].charCodeAt(0),o=void 0;for(o=r;o<=e;++o)n.push(t.replace(i[0],String.fromCharCode(o)));return n}if(i=/\{(\d+)-(\d+)\}/.exec(t)){for(var s=parseInt(i[2],10),a=parseInt(i[1],10);a<=s;a++)n.push(t.replace(i[0],a.toString()));return n}return n.push(t),n}function uf(t,n){var i=[];Object.keys(n).forEach((function(t){null!==n[t]&&void 0!==n[t]&&i.push(t+"="+encodeURIComponent(n[t]))}));var r=i.join("&");return(t=-1===(t=t.replace(/[?&]$/,"")).indexOf("?")?t+"?":t+"&")+r}var cf,hf=34962,ff=34963,lf=35044,vf=35048,df=5126,pf=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function yf(t,n){for(var i=E({preserveDrawingBuffer:!0,antialias:!Bt},n),r=pf.length,e=0;e<r;++e)try{var o=t.getContext(pf[e],i);if(o)return o}catch(t){}return null}var mf="http://www.w3.org/2001/XMLSchema-instance";function wf(t,n){return qf().createElementNS(t,n)}function bf(t,n){return gf(t,n,[]).join("")}function gf(t,n,i){if(t.nodeType==Node.CDATA_SECTION_NODE||t.nodeType==Node.TEXT_NODE)n?i.push(String(t.nodeValue).replace(/(\r\n|\r|\n)/g,"")):i.push(t.nodeValue);else{var r=void 0;for(r=t.firstChild;r;r=r.nextSibling)gf(r,n,i)}return i}function xf(t){return"documentElement"in t}function jf(t,n,i){return t.getAttributeNS(n,i)||""}function Sf(t){return(new DOMParser).parseFromString(t,"application/xml")}function kf(t,n){return function(i,r){var e=t.call(void 0!==n?n:this,i,r);void 0!==e&&b(r[r.length-1],e)}}function Mf(t,n){return function(i,r){var e=t.call(void 0!==n?n:this,i,r);void 0!==e&&r[r.length-1].push(e)}}function _f(t,n){return function(i,r){var e=t.call(void 0!==n?n:this,i,r);void 0!==e&&(r[r.length-1]=e)}}function Of(t,n,i){return function(r,e){var o=t.call(void 0!==i?i:this,r,e);if(void 0!==o){var s=e[e.length-1],a=void 0!==n?n:r.localName,u=void 0;a in s?u=s[a]:(u=[],s[a]=u),u.push(o)}}}function Tf(t,n,i){return function(r,e){var o=t.call(void 0!==i?i:this,r,e);void 0!==o&&(e[e.length-1][void 0!==n?n:r.localName]=o)}}function Ef(t,n){return function(i,r,e){t.call(void 0!==n?n:this,i,r,e),e[e.length-1].node.appendChild(i)}}function Af(t,n){var i,r;return function(n,e,o){if(void 0===i){i={};var s={};s[n.localName]=t,i[n.namespaceURI]=s,r=Cf(n.localName)}Ff(i,r,e,o)}}function Cf(t,n){var i=t;return function(t,r,e){var o=r[r.length-1].node,s=i;return void 0===s&&(s=e),wf(void 0!==n?n:o.namespaceURI,s)}}var Rf=Cf();function Pf(t,n){for(var i=n.length,r=new Array(i),e=0;e<i;++e)r[e]=t[n[e]];return r}function If(t,n,i){var r,e,o=void 0!==i?i:{};for(r=0,e=t.length;r<e;++r)o[t[r]]=n;return o}function Nf(t,n,i,r){var e;for(e=n.firstElementChild;e;e=e.nextElementSibling){var o=t[e.namespaceURI];if(void 0!==o){var s=o[e.localName];void 0!==s&&s.call(r,e,i)}}}function zf(t,n,i,r,e){return r.push(t),Nf(n,i,r,e),r.pop()}function Ff(t,n,i,r,e,o){for(var s,a,u=(void 0!==e?e:i).length,c=0;c<u;++c)void 0!==(s=i[c])&&void 0!==(a=n.call(void 0!==o?o:this,s,r,void 0!==e?e[c]:void 0))&&t[a.namespaceURI][a.localName].call(o,a,s,r)}function Lf(t,n,i,r,e,o,s){return e.push(t),Ff(n,i,r,e,o,s),e.pop()}var Gf=void 0;function Df(){return void 0===Gf&&"undefined"!=typeof XMLSerializer&&(Gf=new XMLSerializer),Gf}var Uf=void 0;function qf(){return void 0===Uf&&"undefined"!=typeof document&&(Uf=document.implementation.createDocument("","",null)),Uf}var Bf=lf;function Wf(t){switch(t){case hf:return Float32Array;case ff:return Uint32Array;default:return Float32Array}}var Vf=function(){function t(t,n){this.array=null,this.type=t,Mt(t===hf||t===ff,62),this.usage=void 0!==n?n:Bf}return t.prototype.ofSize=function(t){this.array=new(Wf(this.type))(t)},t.prototype.fromArray=function(t){var n=Wf(this.type);this.array=n.from?n.from(t):new n(t)},t.prototype.fromArrayBuffer=function(t){this.array=new(Wf(this.type))(t)},t.prototype.getType=function(){return this.type},t.prototype.getArray=function(){return this.array},t.prototype.getUsage=function(){return this.usage},t.prototype.getSize=function(){return this.array?this.array.length:0},t}(),Xf="webglcontextlost",Hf="webglcontextrestored",Jf=function(){function t(t){this.Io=t.webGlContext;var n=this.Io;this.No=t.scaleRatio||1,this.zo=n.createTexture(),this.Fo=null,this.Lo=n.createFramebuffer();var i=n.createShader(n.VERTEX_SHADER);n.shaderSource(i,t.vertexShader||"\n  precision mediump float;\n  \n  attribute vec2 a_position;\n  varying vec2 v_texCoord;\n  varying vec2 v_screenCoord;\n  \n  uniform vec2 u_screenSize;\n   \n  void main() {\n    v_texCoord = a_position * 0.5 + 0.5;\n    v_screenCoord = v_texCoord * u_screenSize;\n    gl_Position = vec4(a_position, 0.0, 1.0);\n  }\n"),n.compileShader(i);var r=n.createShader(n.FRAGMENT_SHADER);n.shaderSource(r,t.fragmentShader||"\n  precision mediump float;\n   \n  uniform sampler2D u_image;\n  uniform float u_opacity;\n   \n  varying vec2 v_texCoord;\n   \n  void main() {\n    gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n  }\n"),n.compileShader(r),this.Go=n.createProgram(),n.attachShader(this.Go,i),n.attachShader(this.Go,r),n.linkProgram(this.Go),this.Do=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,this.Do),n.bufferData(n.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,-1,1,1,-1,1]),n.STATIC_DRAW),this.Uo=n.getAttribLocation(this.Go,"a_position"),this.qo=n.getUniformLocation(this.Go,"u_screenSize"),this.Bo=n.getUniformLocation(this.Go,"u_opacity"),this.Wo=n.getUniformLocation(this.Go,"u_image"),this.Vo=[],t.uniforms&&Object.keys(t.uniforms).forEach(function(i){this.Vo.push({value:t.uniforms[i],location:n.getUniformLocation(this.Go,i)})}.bind(this))}return t.prototype.getGL=function(){return this.Io},t.prototype.init=function(t){var n=this.getGL(),i=[n.drawingBufferWidth*this.No,n.drawingBufferHeight*this.No];if(n.bindFramebuffer(n.FRAMEBUFFER,this.getFrameBuffer()),n.viewport(0,0,i[0],i[1]),!this.Fo||this.Fo[0]!==i[0]||this.Fo[1]!==i[1]){this.Fo=i;var r=n.RGBA,e=n.RGBA,o=n.UNSIGNED_BYTE;n.bindTexture(n.TEXTURE_2D,this.zo),n.texImage2D(n.TEXTURE_2D,0,r,i[0],i[1],0,e,o,null),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,this.zo,0)}},t.prototype.apply=function(t,n,i,r){var e=this.getGL(),s=t.size;if(e.bindFramebuffer(e.FRAMEBUFFER,n?n.getFrameBuffer():null),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this.zo),!n){var a=o(e.canvas);if(!t.renderTargets[a]){var u=e.getContextAttributes();u&&u.preserveDrawingBuffer&&(e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)),t.renderTargets[a]=!0}}e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA),e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),e.bindBuffer(e.ARRAY_BUFFER,this.Do),e.useProgram(this.Go),e.enableVertexAttribArray(this.Uo),e.vertexAttribPointer(this.Uo,2,e.FLOAT,!1,0,0),e.uniform2f(this.qo,s[0],s[1]),e.uniform1i(this.Wo,0);var c=t.layerStatesArray[t.layerIndex].opacity;e.uniform1f(this.Bo,c),this.applyUniforms(t),i&&i(e,t),e.drawArrays(e.TRIANGLES,0,6),r&&r(e,t)},t.prototype.getFrameBuffer=function(){return this.Lo},t.prototype.applyUniforms=function(t){var n,i=this.getGL(),r=1;this.Vo.forEach((function(e){if((n="function"==typeof e.value?e.value(t):e.value)instanceof HTMLCanvasElement||n instanceof ImageData)e.texture||(e.texture=i.createTexture()),i.activeTexture(i["TEXTURE".concat(r)]),i.bindTexture(i.TEXTURE_2D,e.texture),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),n instanceof ImageData?i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,n.width,n.height,0,i.UNSIGNED_BYTE,new Uint8Array(n.data)):i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,n),i.uniform1i(e.location,r++);else if(Array.isArray(n))switch(n.length){case 2:return void i.uniform2f(e.location,n[0],n[1]);case 3:return void i.uniform3f(e.location,n[0],n[1],n[2]);case 4:return void i.uniform4f(e.location,n[0],n[1],n[2],n[3]);default:return}else"number"==typeof n&&i.uniform1f(e.location,n)}))},t}();function Kf(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Yf(t,n){return t[0]=n[0],t[1]=n[1],t[4]=n[2],t[5]=n[3],t[12]=n[4],t[13]=n[5],t}var Zf=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),$f="u_projectionMatrix",Qf="u_offsetScaleMatrix",tl="u_offsetRotateMatrix",nl="u_time",il="u_zoom",rl="u_resolution",el={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:df},ol={};function sl(t){return"shared/"+t}var al=0;function ul(t){for(var n=0,i=0;i<t.length;i++){var r=t[i];n+=r.size*cl(r.type)}return n}function cl(t){switch(t){case el.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case el.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case el.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case el.FLOAT:default:return Float32Array.BYTES_PER_ELEMENT}}var hl=function(t){function n(n){var i,r=t.call(this)||this,e=n||{};r.Xo=r.handleWebGLContextLost.bind(r),r.Ho=r.handleWebGLContextRestored.bind(r),r.Jo=e.canvasCacheKey?sl(e.canvasCacheKey):(i="unique/"+al,al+=1,i),r.Ut=function(t){var n=ol[t];if(!n){var i=document.createElement("canvas");i.style.position="absolute",i.style.left="0",n={users:0,canvas:i},ol[t]=n}return n.users+=1,n.canvas}(r.Jo),r.Io=yf(r.Ut),r.Ko={},r.Yo={},r.Zo=null,r.Ut.addEventListener(Xf,r.Xo),r.Ut.addEventListener(Hf,r.Ho),r.$o=[1,0,0,1,0,0],r.Qo=[1,0,0,1,0,0],r.ts=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],r.ns={},r.rs={},r.Vo=[],e.uniforms&&r.setUniforms(e.uniforms);var o=r.getGL();return r.es=e.postProcesses?e.postProcesses.map((function(t){return new Jf({webGlContext:o,scaleRatio:t.scaleRatio,vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms})})):[new Jf({webGlContext:o})],r.os=null,r.de=Date.now(),r}return Zf(n,t),n.prototype.setUniforms=function(t){for(var n in this.Vo=[],t)this.Vo.push({name:n,value:t[n]});this.ns={}},n.prototype.canvasCacheKeyMatches=function(t){return this.Jo===sl(t)},n.prototype.getExtension=function(t){if(t in this.Yo)return this.Yo[t];var n=this.Io.getExtension(t);return this.Yo[t]=n,n},n.prototype.bindBuffer=function(t){var n=this.getGL(),i=o(t),r=this.Ko[i];r||(r={buffer:t,webGlBuffer:n.createBuffer()},this.Ko[i]=r);n.bindBuffer(t.getType(),r.webGlBuffer)},n.prototype.flushBufferData=function(t){var n=this.getGL();this.bindBuffer(t),n.bufferData(t.getType(),t.getArray(),t.getUsage())},n.prototype.deleteBuffer=function(t){var n=this.getGL(),i=o(t),r=this.Ko[i];r&&!n.isContextLost()&&n.deleteBuffer(r.webGlBuffer),delete this.Ko[i]},n.prototype.disposeInternal=function(){this.Ut.removeEventListener(Xf,this.Xo),this.Ut.removeEventListener(Hf,this.Ho),function(t){var n=ol[t];if(n&&(n.users-=1,!(n.users>0))){var i=yf(n.canvas).getExtension("WEBGL_lose_context");i&&i.loseContext(),delete ol[t]}}(this.Jo),delete this.Io,delete this.Ut},n.prototype.prepareDraw=function(t,n){var i=this.getGL(),r=this.getCanvas(),e=t.size,o=t.pixelRatio;r.width=e[0]*o,r.height=e[1]*o,r.style.width=e[0]+"px",r.style.height=e[1]+"px",i.useProgram(this.Zo);for(var s=this.es.length-1;s>=0;s--)this.es[s].init(t);i.bindTexture(i.TEXTURE_2D,null),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT),i.enable(i.BLEND),i.blendFunc(i.ONE,n?i.ZERO:i.ONE_MINUS_SRC_ALPHA),i.useProgram(this.Zo),this.applyFrameState(t),this.applyUniforms(t)},n.prototype.prepareDrawToRenderTarget=function(t,n,i){var r=this.getGL(),e=n.getSize();r.bindFramebuffer(r.FRAMEBUFFER,n.getFramebuffer()),r.viewport(0,0,e[0],e[1]),r.bindTexture(r.TEXTURE_2D,n.getTexture()),r.clearColor(0,0,0,0),r.clear(r.COLOR_BUFFER_BIT),r.enable(r.BLEND),r.blendFunc(r.ONE,i?r.ZERO:r.ONE_MINUS_SRC_ALPHA),r.useProgram(this.Zo),this.applyFrameState(t),this.applyUniforms(t)},n.prototype.drawElements=function(t,n){var i=this.getGL();this.getExtension("OES_element_index_uint");var r=i.UNSIGNED_INT,e=n-t,o=4*t;i.drawElements(i.TRIANGLES,e,r,o)},n.prototype.finalizeDraw=function(t,n,i){for(var r=0,e=this.es.length;r<e;r++)r===e-1?this.es[r].apply(t,null,n,i):this.es[r].apply(t,this.es[r+1])},n.prototype.getCanvas=function(){return this.Ut},n.prototype.getGL=function(){return this.Io},n.prototype.applyFrameState=function(t){var n=t.size,i=t.viewState.rotation,r=$t(this.Qo);on(r,2/n[0],2/n[1]);var e=$t(this.$o);0!==i&&en(e,-i),this.setUniformMatrixValue(Qf,Yf(this.ts,r)),this.setUniformMatrixValue(tl,Yf(this.ts,e)),this.setUniformFloatValue(nl,.001*(Date.now()-this.de)),this.setUniformFloatValue(il,t.viewState.zoom),this.setUniformFloatValue(rl,t.viewState.resolution)},n.prototype.applyUniforms=function(t){var n,i=this.getGL(),r=0;this.Vo.forEach(function(e){if((n="function"==typeof e.value?e.value(t):e.value)instanceof HTMLCanvasElement||n instanceof HTMLImageElement||n instanceof ImageData)e.texture||(e.prevValue=void 0,e.texture=i.createTexture()),i.activeTexture(i["TEXTURE".concat(r)]),i.bindTexture(i.TEXTURE_2D,e.texture),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),(!(n instanceof HTMLImageElement)||n.complete)&&e.prevValue!==n&&(e.prevValue=n,i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,n)),i.uniform1i(this.getUniformLocation(e.name),r++);else if(Array.isArray(n)&&6===n.length)this.setUniformMatrixValue(e.name,Yf(this.ts,n));else if(Array.isArray(n)&&n.length<=4)switch(n.length){case 2:return void i.uniform2f(this.getUniformLocation(e.name),n[0],n[1]);case 3:return void i.uniform3f(this.getUniformLocation(e.name),n[0],n[1],n[2]);case 4:return void i.uniform4f(this.getUniformLocation(e.name),n[0],n[1],n[2],n[3]);default:return}else"number"==typeof n&&i.uniform1f(this.getUniformLocation(e.name),n)}.bind(this))},n.prototype.useProgram=function(t){return t!=this.Zo&&(this.getGL().useProgram(t),this.Zo=t,this.ns={},this.rs={},!0)},n.prototype.compileShader=function(t,n){var i=this.getGL(),r=i.createShader(n);return i.shaderSource(r,t),i.compileShader(r),r},n.prototype.getProgram=function(t,n){var i=this.getGL(),r=this.compileShader(t,i.FRAGMENT_SHADER),e=this.compileShader(n,i.VERTEX_SHADER),o=i.createProgram();if(i.attachShader(o,r),i.attachShader(o,e),i.linkProgram(o),!i.getShaderParameter(r,i.COMPILE_STATUS)){var s="Fragment shader compliation failed: ".concat(i.getShaderInfoLog(r));throw new Error(s)}if(i.deleteShader(r),!i.getShaderParameter(e,i.COMPILE_STATUS)){s="Vertex shader compilation failed: ".concat(i.getShaderInfoLog(e));throw new Error(s)}if(i.deleteShader(e),!i.getProgramParameter(o,i.LINK_STATUS)){s="GL program linking failed: ".concat(i.getShaderInfoLog(e));throw new Error(s)}return o},n.prototype.getUniformLocation=function(t){return void 0===this.ns[t]&&(this.ns[t]=this.getGL().getUniformLocation(this.Zo,t)),this.ns[t]},n.prototype.getAttributeLocation=function(t){return void 0===this.rs[t]&&(this.rs[t]=this.getGL().getAttribLocation(this.Zo,t)),this.rs[t]},n.prototype.makeProjectionTransform=function(t,n){var i=t.size,r=t.viewState.rotation,e=t.viewState.resolution,o=t.viewState.center;return $t(n),un(n,0,0,2/(e*i[0]),2/(e*i[1]),-r,-o[0],-o[1]),n},n.prototype.setUniformFloatValue=function(t,n){this.getGL().uniform1f(this.getUniformLocation(t),n)},n.prototype.setUniformFloatVec4=function(t,n){this.getGL().uniform4fv(this.getUniformLocation(t),n)},n.prototype.setUniformMatrixValue=function(t,n){this.getGL().uniformMatrix4fv(this.getUniformLocation(t),!1,n)},n.prototype.ss=function(t,n,i,r,e){var o=this.getAttributeLocation(t);o<0||(this.getGL().enableVertexAttribArray(o),this.getGL().vertexAttribPointer(o,n,i,!1,r,e))},n.prototype.enableAttributes=function(t){for(var n=ul(t),i=0,r=0;r<t.length;r++){var e=t[r];this.ss(e.name,e.size,e.type||df,n,i),i+=e.size*cl(e.type)}},n.prototype.handleWebGLContextLost=function(){A(this.Ko),this.Zo=null},n.prototype.handleWebGLContextRestored=function(){},n.prototype.createTexture=function(t,n,i){var r=this.getGL(),e=i||r.createTexture(),o=r.RGBA,s=r.RGBA,a=r.UNSIGNED_BYTE;return r.bindTexture(r.TEXTURE_2D,e),n?r.texImage2D(r.TEXTURE_2D,0,o,s,a,n):r.texImage2D(r.TEXTURE_2D,0,o,t[0],t[1],0,s,a,null),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),e},n}(v),fl=function(){function t(t,n){this.name=t,this.data=n,this.us=null}return t.prototype.getTexture=function(t){if(!this.us){var n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.data.length/4,1,0,t.RGBA,t.UNSIGNED_BYTE,this.data),this.us=n}return this.us},t}(),ll=new Uint8Array(4),vl=function(){function t(t,n){this.cs=t;var i=t.getGL();this.us=i.createTexture(),this.hs=i.createFramebuffer(),this.fs=n||[1,1],this.B=new Uint8Array(0),this.ls=!0,this.vs()}return t.prototype.setSize=function(t){x(t,this.fs)||(this.fs[0]=t[0],this.fs[1]=t[1],this.vs())},t.prototype.getSize=function(){return this.fs},t.prototype.clearCachedData=function(){this.ls=!0},t.prototype.readAll=function(){if(this.ls){var t=this.fs,n=this.cs.getGL();n.bindFramebuffer(n.FRAMEBUFFER,this.hs),n.readPixels(0,0,t[0],t[1],n.RGBA,n.UNSIGNED_BYTE,this.B),this.ls=!1}return this.B},t.prototype.readPixel=function(t,n){if(t<0||n<0||t>this.fs[0]||n>=this.fs[1])return ll[0]=0,ll[1]=0,ll[2]=0,ll[3]=0,ll;this.readAll();var i=Math.floor(t)+(this.fs[1]-Math.floor(n)-1)*this.fs[0];return ll[0]=this.B[4*i],ll[1]=this.B[4*i+1],ll[2]=this.B[4*i+2],ll[3]=this.B[4*i+3],ll},t.prototype.getTexture=function(){return this.us},t.prototype.getFramebuffer=function(){return this.hs},t.prototype.vs=function(){var t=this.fs,n=this.cs.getGL();this.us=this.cs.createTexture(t,null,this.us),n.bindFramebuffer(n.FRAMEBUFFER,this.hs),n.viewport(0,0,t[0],t[1]),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,this.us,0),this.B=new Uint8Array(t[0]*t[1]*4)},t}(),dl=!0,pl=function(){function t(t,n,i,r,e,o){this.ds=t,this.ps=n;var s={},a=Ar(this.ps,this.ds);this.ys=function(t){var n=t[0]+"/"+t[1];return s[n]||(s[n]=a(t)),s[n]},this.ws=r,this.bs=e*e,this.gs=[],this.xs=!1,this.Ss=this.ds.canWrapX()&&!!r&&!!this.ds.getExtent()&&ti(r)==ti(this.ds.getExtent()),this.ks=this.ds.getExtent()?ti(this.ds.getExtent()):null,this.Ms=this.ps.getExtent()?ti(this.ps.getExtent()):null;var u=$n(i),c=Qn(i),h=Xn(i),f=Vn(i),l=this.ys(u),v=this.ys(c),d=this.ys(h),p=this.ys(f),y=10+(o?Math.max(0,Math.ceil(fi(Wn(i)/(o*o*256*256)))):0);if(this._s(u,c,h,f,l,v,d,p,y),this.xs){var m=1/0;this.gs.forEach((function(t,n,i){m=Math.min(m,t.source[0][0],t.source[1][0],t.source[2][0])})),this.gs.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-m>this.ks/2){var n=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];n[0][0]-m>this.ks/2&&(n[0][0]-=this.ks),n[1][0]-m>this.ks/2&&(n[1][0]-=this.ks),n[2][0]-m>this.ks/2&&(n[2][0]-=this.ks);var i=Math.min(n[0][0],n[1][0],n[2][0]);Math.max(n[0][0],n[1][0],n[2][0])-i<this.ks/2&&(t.source=n)}}.bind(this))}s={}}return t.prototype.Os=function(t,n,i,r,e,o){this.gs.push({source:[r,e,o],target:[t,n,i]})},t.prototype._s=function(t,n,i,r,e,o,s,a,u){var c=jn([e,o,s,a]),h=this.ks?ti(c)/this.ks:null,f=this.ks,l=this.ds.canWrapX()&&h>.5&&h<1,v=!1;if(u>0){if(this.ps.isGlobal()&&this.Ms)v=ti(jn([t,n,i,r]))/this.Ms>.25||v;!l&&this.ds.isGlobal()&&h&&(v=h>.25||v)}if(!(!v&&this.ws&&isFinite(c[0])&&isFinite(c[1])&&isFinite(c[2])&&isFinite(c[3]))||ni(c,this.ws)){var d=0;if(!(v||isFinite(e[0])&&isFinite(e[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(a[0])&&isFinite(a[1])))if(u>0)v=!0;else if(1!=(d=(isFinite(e[0])&&isFinite(e[1])?0:8)+(isFinite(o[0])&&isFinite(o[1])?0:4)+(isFinite(s[0])&&isFinite(s[1])?0:2)+(isFinite(a[0])&&isFinite(a[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(u>0){if(!v){var p=[(t[0]+i[0])/2,(t[1]+i[1])/2],y=this.ys(p),m=void 0;if(l)m=(mi(e[0],f)+mi(s[0],f))/2-mi(y[0],f);else m=(e[0]+s[0])/2-y[0];var w=(e[1]+s[1])/2-y[1];v=m*m+w*w>this.bs}if(v){if(Math.abs(t[0]-i[0])<=Math.abs(t[1]-i[1])){var b=[(n[0]+i[0])/2,(n[1]+i[1])/2],g=this.ys(b),x=[(r[0]+t[0])/2,(r[1]+t[1])/2],j=this.ys(x);this._s(t,n,b,x,e,o,g,j,u-1),this._s(x,b,i,r,j,g,s,a,u-1)}else{var S=[(t[0]+n[0])/2,(t[1]+n[1])/2],k=this.ys(S),M=[(i[0]+r[0])/2,(i[1]+r[1])/2],_=this.ys(M);this._s(t,S,M,r,e,k,_,a,u-1),this._s(S,n,i,M,k,o,s,_,u-1)}return}}if(l){if(!this.Ss)return;this.xs=!0}0==(11&d)&&this.Os(t,i,r,e,s,a),0==(14&d)&&this.Os(t,i,n,e,s,o),d&&(0==(13&d)&&this.Os(n,r,t,o,a,e),0==(7&d)&&this.Os(n,r,i,o,a,s))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.gs.forEach((function(n,i,r){var e=n.source;Ln(t,e[0]),Ln(t,e[1]),Ln(t,e[2])})),t},t.prototype.getTriangles=function(){return this.gs},t}(),yl=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ml=function(t){function n(n,i,r,e,o,s,a,u,c,h,f,l){var v=t.call(this,o,lt,{interpolate:!!l})||this;v.Ts=void 0!==f&&f,v.Rt=a,v.Es=u,v.Ut=null,v.As=i,v.Cs=e,v.Rs=s||o,v.Ps=[],v.Is=null,v.Ns=0;var d=e.getTileCoordExtent(v.Rs),p=v.Cs.getExtent(),y=v.As.getExtent(),m=p?Zn(d,p):d;if(0===Wn(m))return v.state=yt,v;var w=n.getExtent();w&&(y=y?Zn(y,w):w);var b=e.getResolution(v.Rs[0]),g=Vh(n,r,m,b);if(!isFinite(g)||g<=0)return v.state=yt,v;var x=void 0!==h?h:.5;if(v.zs=new pl(n,r,m,y,g*x,b),0===v.zs.getTriangles().length)return v.state=yt,v;v.Ns=i.getZForResolution(g);var j=v.zs.calculateSourceExtent();if(y&&(n.canWrapX()?(j[1]=ci(j[1],y[1],y[3]),j[3]=ci(j[3],y[1],y[3])):j=Zn(j,y)),Wn(j)){for(var S=i.getTileRangeForExtentAndZ(j,v.Ns),k=S.minX;k<=S.maxX;k++)for(var M=S.minY;M<=S.maxY;M++){var _=c(v.Ns,k,M,a);_&&v.Ps.push(_)}0===v.Ps.length&&(v.state=yt)}else v.state=yt;return v}return yl(n,t),n.prototype.getImage=function(){return this.Ut},n.prototype.Fs=function(){var t=[];if(this.Ps.forEach(function(n,i,r){n&&n.getState()==dt&&t.push({extent:this.As.getTileCoordExtent(n.tileCoord),image:n.getImage()})}.bind(this)),this.Ps.length=0,0===t.length)this.state=pt;else{var n=this.Rs[0],i=this.Cs.getTileSize(n),r="number"==typeof i?i:i[0],e="number"==typeof i?i:i[1],o=this.Cs.getResolution(n),s=this.As.getResolution(this.Ns),a=this.Cs.getTileCoordExtent(this.Rs);this.Ut=Xh(r,e,this.Rt,s,this.As.getExtent(),o,a,this.zs,t,this.Es,this.Ts,this.interpolate),this.state=dt}this.changed()},n.prototype.load=function(){if(this.state==lt){this.state=vt,this.changed();var t=0;this.Is=[],this.Ps.forEach(function(n,i,r){var e=n.getState();if(e==lt||e==vt){t++;var o=Y(n,N,(function(i){var r=n.getState();r!=dt&&r!=pt&&r!=yt||($(o),0===--t&&(this.Ls(),this.Fs()))}),this);this.Is.push(o)}}.bind(this)),0===t?setTimeout(this.Fs.bind(this),0):this.Ps.forEach((function(t,n,i){t.getState()==lt&&t.load()}))}},n.prototype.Ls=function(){this.Is.forEach($),this.Is=null},n}(jt),wl=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function bl(t,n,i){var r=i?t.LINEAR:t.NEAREST;t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,r)}function gl(t,n,i,r,e,o){var s,a,u=t.getGL();i instanceof Float32Array?(s=u.FLOAT,t.getExtension("OES_texture_float"),a=null!==t.getExtension("OES_texture_float_linear")):(s=u.UNSIGNED_BYTE,a=!0);bl(u,n,o&&a);var c,h=i.byteLength/r[1],f=1;switch(h%8==0?f=8:h%4==0?f=4:h%2==0&&(f=2),e){case 1:c=u.LUMINANCE;break;case 2:c=u.LUMINANCE_ALPHA;break;case 3:c=u.RGB;break;case 4:c=u.RGBA;break;default:throw new Error("Unsupported number of bands: ".concat(e))}var l=u.getParameter(u.UNPACK_ALIGNMENT);u.pixelStorei(u.UNPACK_ALIGNMENT,f),u.texImage2D(u.TEXTURE_2D,0,c,r[0],r[1],0,c,s,i),u.pixelStorei(u.UNPACK_ALIGNMENT,l)}var xl=null;var jl=function(t){function n(n){var i=t.call(this)||this;i.tile,i.textures=[],i.hr=i.hr.bind(i),i.size=uu(n.grid.getTileSize(n.tile.tileCoord[0])),i.Gs=n.tilePixelRatio||1,i.Es=n.gutter||0,i.bandCount=NaN,i.cs=n.helper;var r=new Vf(hf,lf);return r.fromArray([0,1,1,1,1,0,0,0]),i.cs.flushBufferData(r),i.coords=r,i.setTile(n.tile),i}return wl(n,t),n.prototype.setTile=function(t){if(t!==this.tile)if(this.tile&&this.tile.removeEventListener(N,this.hr),this.tile=t,this.textures.length=0,this.loaded=t.getState()===dt,this.loaded)this.Ds();else{if(t instanceof No){var n=t.getImage();n instanceof Image&&!n.crossOrigin&&(n.crossOrigin="anonymous")}t.addEventListener(N,this.hr)}},n.prototype.Ds=function(){var t=this.cs,n=t.getGL(),i=this.tile;if(i instanceof No||i instanceof ml){var r=i.getImage();if(0!==this.Es){var e=this.Gs*this.Es,o=Math.round(r.width-2*e),s=Math.round(r.height-2*e),a=Oo(o,s);i.interpolate||E(a,Dh),a.drawImage(r,e,e,o,s,0,0,o,s),r=a.canvas}var u=n.createTexture();return this.textures.push(u),this.bandCount=4,void function(t,n,i,r){bl(t,n,r),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,i)}(n,u,r,i.interpolate)}var c=[this.size[0]*this.Gs,this.size[1]*this.Gs],h=i.getData(),f=h instanceof Float32Array,l=c[0]*c[1],v=f?Float32Array:Uint8Array,d=v.BYTES_PER_ELEMENT,p=h.byteLength/c[1];this.bandCount=Math.floor(p/d/c[0]);var y=Math.ceil(this.bandCount/4);if(1===y){u=n.createTexture();return this.textures.push(u),void gl(t,u,h,c,this.bandCount,i.interpolate)}for(var m=new Array(y),w=0;w<y;++w){u=n.createTexture();this.textures.push(u);var b=w<y-1?4:this.bandCount%4;m[w]=new v(l*b)}for(var g=0,x=0,j=c[0]*this.bandCount,S=0;S<c[1];++S){for(var k=0;k<j;++k){var M=h[x+k],_=Math.floor(g/this.bandCount),O=k%this.bandCount;(T=m[w=Math.floor(O/4)])[_*(b=T.length/l)+O%4]=M,++g}x+=p/d}for(w=0;w<y;++w){var T;gl(t,u=this.textures[w],T=m[w],c,b=T.length/l,i.interpolate)}},n.prototype.hr=function(){this.tile.getState()===dt&&(this.loaded=!0,this.Ds(),this.dispatchEvent(N))},n.prototype.disposeInternal=function(){var t=this.cs.getGL();this.cs.deleteBuffer(this.coords);for(var n=0;n<this.textures.length;++n)t.deleteTexture(this.textures[n]);this.tile.removeEventListener(N,this.hr)},n.prototype.getPixelData=function(t,n){if(!this.loaded)return null;if(t=Math.floor(this.Gs*t),n=Math.floor(this.Gs*n),this.tile instanceof kt){var i=this.tile.getData(),r=Math.floor(this.Gs*this.size[0]);if(i instanceof DataView){var e=i.byteLength/(this.size[0]*this.size[1]),o=n*r*e+t*e,s=i.buffer.slice(o,o+e);return new DataView(s)}var a=n*r*this.bandCount+t*this.bandCount;return i.slice(a,a+this.bandCount)}var u,c;xl||((u=document.createElement("canvas")).width=1,u.height=1,xl=u.getContext("2d")),xl.clearRect(0,0,1,1);var h=this.tile.getImage();try{xl.drawImage(h,t,n,1,1,0,0,1,1),c=xl.getImageData(0,0,1,1).data}catch(t){return null}return c},n}(I),Sl=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),kl=function(t){function n(n){var i=t.call(this)||this;return i.ready=!0,i.Us=i.qs.bind(i),i.Bs=n,i.declutterExecutorGroup=null,i}return Sl(n,t),n.prototype.getFeatures=function(t){return r()},n.prototype.getData=function(t){return null},n.prototype.prepareFrame=function(t){return r()},n.prototype.renderFrame=function(t,n){return r()},n.prototype.loadedTileCallback=function(t,n,i){t[n]||(t[n]={}),t[n][i.tileCoord.toString()]=i},n.prototype.createLoadedTileFinder=function(t,n,i){return function(r,e){var o=this.loadedTileCallback.bind(this,i,r);return t.forEachLoadedTile(n,r,e,o)}.bind(this)},n.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e){},n.prototype.getDataAtPixel=function(t,n,i){return null},n.prototype.getLayer=function(){return this.Bs},n.prototype.handleFontsChanged=function(){},n.prototype.qs=function(t){t.target.getState()===bo&&this.renderIfReadyAndVisible()},n.prototype.loadImage=function(t){var n=t.getState();return n!=bo&&n!=go&&t.addEventListener(N,this.Us),n==mo&&(t.load(),n=t.getState()),n==bo},n.prototype.renderIfReadyAndVisible=function(){var t=this.getLayer();t.getVisible()&&t.getSourceState()==ys&&t.changed()},n.prototype.disposeInternal=function(){delete this.Bs,t.prototype.disposeInternal.call(this)},n}(it),Ml=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_l="GENERATE_BUFFERS",Ol=function(t){function n(n,i){var r=t.call(this,n)||this,e=i||{};return r.Ws=[1,0,0,1,0,0],r.Vs=null,r.Xs=e.postProcesses,r.Vo=e.uniforms,r.helper,n.addChangeListener(os,r.removeHelper.bind(r)),r.dispatchPreComposeEvent=r.dispatchPreComposeEvent.bind(r),r.dispatchPostComposeEvent=r.dispatchPostComposeEvent.bind(r),r}return Ml(n,t),n.prototype.dispatchPreComposeEvent=function(t,n){var i=this.getLayer();if(i.hasListener(fs)){var r=new Ms(fs,void 0,n,t);i.dispatchEvent(r)}},n.prototype.dispatchPostComposeEvent=function(t,n){var i=this.getLayer();if(i.hasListener(ls)){var r=new Ms(ls,void 0,n,t);i.dispatchEvent(r)}},n.prototype.reset=function(t){this.Vo=t.uniforms,this.helper&&this.helper.setUniforms(this.Vo)},n.prototype.removeHelper=function(){this.helper&&(this.helper.dispose(),delete this.helper)},n.prototype.prepareFrame=function(t){if(this.getLayer().getRenderSource()){for(var i=!0,r=-1,e=void 0,o=0,s=t.layerStatesArray.length;o<s;o++){var a=t.layerStatesArray[o].layer,u=a.getRenderer();if(u instanceof n){var c=a.getClassName();if((i||c!==e)&&(r+=1,i=!1),e=c,u===this)break}else i=!0}var h="map/"+t.mapId+"/group/"+r;this.helper&&this.helper.canvasCacheKeyMatches(h)||(this.removeHelper(),this.helper=new hl({postProcesses:this.Xs,uniforms:this.Vo,canvasCacheKey:h}),e&&(this.helper.getCanvas().className=e),this.afterHelperCreated())}return this.prepareFrameInternal(t)},n.prototype.afterHelperCreated=function(){},n.prototype.prepareFrameInternal=function(t){return!0},n.prototype.disposeInternal=function(){this.removeHelper(),t.prototype.disposeInternal.call(this)},n.prototype.Hs=function(t,n,i){var r=this.getLayer();if(r.hasListener(t)){un(this.Ws,0,0,i.pixelRatio,-i.pixelRatio,0,0,-i.size[1]);var e=new Ms(t,this.Ws,i,n);r.dispatchEvent(e)}},n.prototype.preRender=function(t,n){this.Hs(cs,t,n)},n.prototype.postRender=function(t,n){this.Hs(hs,t,n)},n.prototype.getDataAtPixel=function(t,n,i){var r=rn([n.pixelRatio,0,0,n.pixelRatio,0,0],t.slice()),e=this.helper.getGL();if(!e)return null;var o=this.getLayer().getExtent();if(o&&!_n(o,rn(n.pixelToCoordinateTransform,t.slice())))return null;var s=e.getContextAttributes();if(!s||!s.preserveDrawingBuffer)return new Uint8Array;var a,u=Math.round(r[0]),c=Math.round(r[1]),h=this.Vs;if(!h){var f=document.createElement("canvas");f.width=1,f.height=1,h=f.getContext("2d"),this.Vs=h}h.clearRect(0,0,1,1);try{h.drawImage(e.canvas,u,c,1,1,0,0,1,1),a=h.getImageData(0,0,1,1).data}catch(t){return a}return 0===a[3]?null:a},n}(kl),Tl=[],El={vertexPosition:0,indexPosition:0};function Al(t,n,i,r,e){t[n+0]=i,t[n+1]=r,t[n+2]=e}function Cl(t,n){var i=n||[],r=256,e=255;return i[0]=Math.floor(t/r/r/r)/e,i[1]=Math.floor(t/r/r)%r/e,i[2]=Math.floor(t/r)%r/e,i[3]=t%r/e,i}function Rl(t){var n=0,i=256,r=255;return n+=Math.round(t[0]*i*i*i*r),n+=Math.round(t[1]*i*i*r),n+=Math.round(t[2]*i*r),n+=Math.round(t[3]*r)}var Pl=Ol,Il=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Nl={TILE_TEXTURE_ARRAY:"u_tileTextures",TILE_TRANSFORM:"u_tileTransform",TRANSITION_ALPHA:"u_transitionAlpha",DEPTH:"u_depth",TEXTURE_PIXEL_WIDTH:"u_texturePixelWidth",TEXTURE_PIXEL_HEIGHT:"u_texturePixelHeight",TEXTURE_RESOLUTION:"u_textureResolution",TEXTURE_ORIGIN_X:"u_textureOriginX",TEXTURE_ORIGIN_Y:"u_textureOriginY",RENDER_EXTENT:"u_renderExtent",RESOLUTION:"u_resolution",ZOOM:"u_zoom"},zl={TEXTURE_COORD:"a_textureCoord"},Fl=[{name:zl.TEXTURE_COORD,size:2,type:el.FLOAT}],Ll={};function Gl(t){return 2*(1-1/(t+1))-1}function Dl(t,n,i){i in t||(t[i]=[]),t[i].push(n)}function Ul(t,n){var i=t.layerStatesArray[t.layerIndex];i.extent&&(n=Zn(n,Gr(i.extent,t.viewState.projection)));var r=i.layer.getRenderSource();if(!r.getWrapX()){var e=r.getTileGridForProjection(t.viewState.projection).getExtent();e&&(n=Zn(n,e))}return n}function ql(t,n){return"".concat(t.getKey(),",").concat(Xc(n))}var Bl=function(t){function n(n,i){var r=t.call(this,n,{uniforms:i.uniforms})||this;r.renderComplete=!1,r.Js=[1,0,0,1,0,0],r.Ks=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],r.Ys=new nh(0,0,0,0),r.Zs=Wc(0,0,0),r.$s=[0,0],r.Qs,r.ta=i.vertexShader,r.na=i.fragmentShader,r.ia=new Vf(ff,lf),r.ia.fromArray([0,1,3,1,2,3]);var e=void 0!==i.cacheSize?i.cacheSize:512;return r.ra=new Bc(e),r.ea=i.paletteTextures||[],r.Ji=null,r}return Il(n,t),n.prototype.reset=function(n){t.prototype.reset.call(this,{uniforms:n.uniforms}),this.ta=n.vertexShader,this.na=n.fragmentShader,this.ea=n.paletteTextures||[],this.helper&&(this.Qs=this.helper.getProgram(this.na,this.ta))},n.prototype.afterHelperCreated=function(){this.Qs=this.helper.getProgram(this.na,this.ta),this.helper.flushBufferData(this.ia)},n.prototype.oa=function(t){var n=this.getLayer(),i=t.getState(),r=n.getUseInterimTilesOnError();return i==dt||i==yt||i==pt&&!r},n.prototype.prepareFrameInternal=function(t){var n=this.getLayer().getRenderSource();return!!n&&(!ii(Ul(t,t.extent))&&n.getState()===ys)},n.prototype.enqueueTiles=function(t,n,i,r){var e=t.viewState,s=this.getLayer(),a=s.getRenderSource(),u=a.getTileGridForProjection(e.projection),c=a.getTilePixelRatio(t.pixelRatio),h=a.getGutterForProjection(e.projection),f=o(a);f in t.wantedTiles||(t.wantedTiles[f]={});for(var l=t.wantedTiles[f],v=this.ra,d=Math.max(i-s.getPreload(),u.getMinZoom(),s.getMinZoom()),p=i;p>=d;--p)for(var y=u.getTileRangeForExtentAndZ(n,p,this.Ys),m=u.getResolution(p),w=y.minX;w<=y.maxX;++w)for(var b=y.minY;b<=y.maxY;++b){var g=Wc(p,w,b,this.Zs),x=ql(a,g),j=void 0,S=void 0;if(v.containsKey(x)&&(S=(j=v.get(x)).tile),!j||j.tile.key!==a.getKey())if(S=a.getTile(p,w,b,t.pixelRatio,e.projection),j)if(this.oa(S))j.setTile(S);else{var k=S.getInterimTile();j.setTile(k)}else j=new jl({tile:S,grid:u,helper:this.helper,tilePixelRatio:c,gutter:h}),v.set(x,j);Dl(r,j,p);var M=S.getKey();l[M]=!0,S.getState()===lt&&(t.tileQueue.isKeyQueued(M)||t.tileQueue.enqueue([S,f,u.getTileCoordCenter(g),m]))}},n.prototype.renderFrame=function(t){this.Ji=t,this.renderComplete=!0;var n=this.helper.getGL();this.preRender(n,t);var i=t.viewState,r=this.getLayer().getRenderSource(),e=r.getTileGridForProjection(i.projection),s=Ul(t,t.extent),a=e.getZForResolution(i.resolution,r.zDirection),u={};if(t.nextExtent){var c=e.getZForResolution(i.nextResolution,r.zDirection),h=Ul(t,t.nextExtent);this.enqueueTiles(t,h,c,u)}this.enqueueTiles(t,s,a,u);for(var f={},l=o(this),v=t.time,d=!1,y=u[a],m=0,w=y.length;m<w;++m){var b=(z=(K=y[m]).tile).tileCoord;if(K.loaded){if(1===(F=z.getAlpha(l,v))){z.endTransition(l);continue}d=!0,f[L=Xc(b)]=F}if(this.renderComplete=!1,!this.sa(e,b,a+1,u))for(var g=e.getMinZoom(),x=a-1;x>=g;--x){if(this.sa(e,b,x,u))break}}this.helper.useProgram(this.Qs),this.helper.prepareDraw(t,!d);for(var j=Object.keys(u).map(Number).sort(p),S=i.center[0],k=i.center[1],M=0,_=j.length;M<_;++M){var O=j[M],T=e.getResolution(O),E=uu(e.getTileSize(O),this.$s),A=e.getOrigin(O),C=(S-A[0])/(E[0]*T),R=(A[1]-k)/(E[1]*T),P=i.resolution/T,I=Gl(O),N=u[O];for(m=0,w=N.length;m<w;++m){if((K=N[m]).loaded){var z,F,L=Xc(b=(z=K.tile).tileCoord),G=b[1],D=b[2];un(this.Js,0,0,2/(t.size[0]*P/E[0]),-2/(t.size[1]*P/E[1]),i.rotation,-(C-G),-(R-D)),this.helper.setUniformMatrixValue(Nl.TILE_TRANSFORM,Yf(this.Ks,this.Js)),this.helper.bindBuffer(K.coords),this.helper.bindBuffer(this.ia),this.helper.enableAttributes(Fl);for(var U=0;U<K.textures.length;){var q="TEXTURE"+U,B="".concat(Nl.TILE_TEXTURE_ARRAY,"[").concat(U,"]");n.activeTexture(n[q]),n.bindTexture(n.TEXTURE_2D,K.textures[U]),n.uniform1i(this.helper.getUniformLocation(B),U),++U}for(var W=0;W<this.ea.length;++W){var V=this.ea[W];n.activeTexture(n["TEXTURE"+U]);var X=V.getTexture(n);n.bindTexture(n.TEXTURE_2D,X),n.uniform1i(this.helper.getUniformLocation(V.name),U),++U}(F=L in f?f[L]:1)<1&&(t.animate=!0),this.helper.setUniformFloatValue(Nl.TRANSITION_ALPHA,F),this.helper.setUniformFloatValue(Nl.DEPTH,I),this.helper.setUniformFloatValue(Nl.TEXTURE_PIXEL_WIDTH,E[0]),this.helper.setUniformFloatValue(Nl.TEXTURE_PIXEL_HEIGHT,E[1]),this.helper.setUniformFloatValue(Nl.TEXTURE_RESOLUTION,T),this.helper.setUniformFloatValue(Nl.TEXTURE_ORIGIN_X,A[0]+G*E[0]*T),this.helper.setUniformFloatValue(Nl.TEXTURE_ORIGIN_Y,A[1]-D*E[1]*T),this.helper.setUniformFloatVec4(Nl.RENDER_EXTENT,s),this.helper.setUniformFloatValue(Nl.RESOLUTION,i.resolution),this.helper.setUniformFloatValue(Nl.ZOOM,i.zoom),this.helper.drawElements(0,this.ia.getSize())}}}this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent);for(var H=this.helper.getCanvas(),J=this.ra;J.canExpireCache();){var K;(K=J.pop()).dispose()}return t.postRenderFunctions.push((function(t,n){r.expireCache(n.viewState.projection,Ll)})),this.postRender(n,t),H},n.prototype.getData=function(t){if(!this.helper.getGL())return null;var n=this.Ji;if(!n)return null;var i=this.getLayer(),r=rn(n.pixelToCoordinateTransform,t.slice()),e=n.viewState,o=i.getExtent();if(o&&!_n(Gr(o,e.projection),r))return null;var s=i.getRenderSource(),a=s.getTileGridForProjection(e.projection);if(!s.getWrapX()){var u=a.getExtent();if(u&&!_n(u,r))return null}for(var c=this.ra,h=a.getZForResolution(e.resolution);h>=a.getMinZoom();--h){var f=a.getTileCoordForCoordAndZ(r,h),l=ql(s,f);if(c.containsKey(l)){var v=c.get(l);if(v.loaded){var d=a.getOrigin(h),p=uu(a.getTileSize(h)),y=a.getResolution(h),m=(r[0]-d[0])/y-f[1]*p[0],w=(d[1]-r[1])/y-f[2]*p[1];return v.getPixelData(m,w)}}}return null},n.prototype.sa=function(t,n,i,r){var e=t.getTileRangeForTileCoordAndZ(n,i,this.Ys);if(!e)return!1;for(var o=!0,s=this.ra,a=this.getLayer().getRenderSource(),u=e.minX;u<=e.maxX;++u)for(var c=e.minY;c<=e.maxY;++c){var h=ql(a,[i,u,c]),f=!1;if(s.containsKey(h)){var l=s.get(h);l.loaded&&(Dl(r,l,i),f=!0)}f||(o=!1)}return o},n.prototype.removeHelper=function(){if(this.helper){var n=this.ra;n.forEach((function(t){return t.dispose()})),n.clear()}t.prototype.removeHelper.call(this)},n.prototype.disposeInternal=function(){var n=this.helper;n&&(n.getGL().deleteProgram(this.Qs),delete this.Qs,n.deleteBuffer(this.ia));t.prototype.disposeInternal.call(this),delete this.ia,delete this.ra,delete this.Ji},n}(Pl),Wl=1,Vl=2,Xl=4,Hl=8,Jl=16,Kl=31,Yl=0,Zl={};function $l(t){if("number"==typeof t)return Wl;if("boolean"==typeof t)return Hl;if("string"==typeof t)return Vo(t)?Xl|Vl:Vl;if(!Array.isArray(t))throw new Error("Unhandled value type: ".concat(JSON.stringify(t)));var n=t;if(n.every((function(t){return"number"==typeof t})))return 3===n.length||4===n.length?Xl|Jl:Jl;if("string"!=typeof n[0])throw new Error("Expected an expression operator but received: ".concat(JSON.stringify(n)));var i=Zl[n[0]];if(void 0===i)throw new Error("Unrecognized expression operator: ".concat(JSON.stringify(n)));return i.getReturnType(n.slice(1))}function Ql(t){return fi(t)%1==0}function tv(t){var n=t.toString();return-1===n.indexOf(".")?n+".0":n}function nv(t){if(t.length<2||t.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return"vec".concat(t.length,"(").concat(t.map(tv).join(", "),")")}function iv(t){var n=qo(t).slice();return n.length<4&&n.push(1),nv(n.map((function(t,n){return n<3?t/255:t})))}function rv(t,n){return void 0===t.stringLiteralsMap[n]&&(t.stringLiteralsMap[n]=Object.keys(t.stringLiteralsMap).length),t.stringLiteralsMap[n]}function ev(t,n){return tv(rv(t,n))}function ov(t,n,i){if(Array.isArray(n)&&"string"==typeof n[0]){var r=Zl[n[0]];if(void 0===r)throw new Error("Unrecognized expression operator: ".concat(JSON.stringify(n)));return r.toGlsl(t,n.slice(1),i)}var e=$l(n);if((e&Wl)>0)return tv(n);if((e&Hl)>0)return n.toString();if((e&Vl)>0&&(void 0===i||i==Vl))return ev(t,n.toString());if((e&Xl)>0&&(void 0===i||i==Xl))return iv(n);if((e&Jl)>0)return nv(n);throw new Error("Unexpected expression ".concat(n," (expected type ").concat(i,")"))}function sv(t){if(!($l(t)&Wl))throw new Error("A numeric value was expected, got ".concat(JSON.stringify(t)," instead"))}function av(t){for(var n=0;n<t.length;n++)sv(t[n])}function uv(t){if(!($l(t)&Vl))throw new Error("A string value was expected, got ".concat(JSON.stringify(t)," instead"))}function cv(t){if(!($l(t)&Hl))throw new Error("A boolean value was expected, got ".concat(JSON.stringify(t)," instead"))}function hv(t,n){if(t.length!==n)throw new Error("Exactly ".concat(n," arguments were expected, got ").concat(t.length," instead"))}function fv(t,n){if(t.length<n)throw new Error("At least ".concat(n," arguments were expected, got ").concat(t.length," instead"))}function lv(t,n){if(t.length>n)throw new Error("At most ".concat(n," arguments were expected, got ").concat(t.length," instead"))}function vv(t){if(t.length%2!=0)throw new Error("An even amount of arguments was expected, got ".concat(t," instead"))}function dv(t,n){if(!Ql(n))throw new Error("Could not infer only one type from the following expression: ".concat(JSON.stringify(t)))}function pv(t){return"u_var_"+t}Zl.get={getReturnType:function(t){return Kl},toGlsl:function(t,n){hv(n,1),uv(n[0]);var i=n[0].toString();return-1===t.attributes.indexOf(i)&&t.attributes.push(i),(t.inFragmentShader?"v_":"a_")+i}},Zl.var={getReturnType:function(t){return Kl},toGlsl:function(t,n){hv(n,1),uv(n[0]);var i=n[0].toString();return-1===t.variables.indexOf(i)&&t.variables.push(i),pv(i)}};var yv="u_paletteTextures";Zl.palette={getReturnType:function(t){return Xl},toGlsl:function(t,n){hv(n,2),sv(n[0]);var i=ov(t,n[0]),r=n[1];if(!Array.isArray(r))throw new Error("The second argument of palette must be an array");for(var e=r.length,o=new Uint8Array(4*e),s=0;s<e;s++){var a=r[s],u=void 0;if("string"==typeof a)u=Uo(a);else{if(!Array.isArray(a))throw new Error("The second argument of palette must be an array of strings or colors");var c=a.length;if(4===c)u=a;else{if(3!==c)throw new Error("Expected palette color to have 3 or 4 values, got ".concat(c));u=[a[0],a[1],a[2],1]}}var h=4*s;o[h]=u[0],o[h+1]=u[1],o[h+2]=u[2],o[h+3]=255*u[3]}t.paletteTextures||(t.paletteTextures=[]);var f="".concat(yv,"[").concat(t.paletteTextures.length,"]"),l=new fl(f,o);return t.paletteTextures.push(l),"texture2D(".concat(f,", vec2((").concat(i," + 0.5) / ").concat(e,".0, 0.5))")}};var mv="getBandValue";function wv(t){return{getReturnType:function(t){return Hl},toGlsl:function(n,i){hv(i,2);for(var r=Kl,e=0;e<i.length;e++)r&=$l(i[e]);if(r===Yl)throw new Error("All arguments should be of compatible type, got ".concat(JSON.stringify(i)," instead"));return r&=~Xl,"(".concat(ov(n,i[0],r)," ").concat(t," ").concat(ov(n,i[1],r),")")}}}function bv(t){return{getReturnType:function(t){return Hl},toGlsl:function(n,i){fv(i,2);for(var r=0;r<i.length;r++)cv(i[r]);var e="";return e=i.map((function(t){return ov(n,t)})).join(" ".concat(t," ")),e="(".concat(e,")")}}}Zl.band={getReturnType:function(t){return Wl},toGlsl:function(t,n){fv(n,1),lv(n,3);var i=n[0];if(!(mv in t.functions)){for(var r="",e=t.bandCount||1,o=0;o<e;o++){var s=Math.floor(o/4),a=o%4;a===e-1&&1===a&&(a=3);var u="".concat(Nl.TILE_TEXTURE_ARRAY,"[").concat(s,"]");r+="\n          if (band == ".concat(o+1,".0) {\n            return texture2D(").concat(u,", v_textureCoord + vec2(dx, dy))[").concat(a,"];\n          }\n        ")}t.functions.getBandValue="\n        float getBandValue(float band, float xOffset, float yOffset) {\n          float dx = xOffset / ".concat(Nl.TEXTURE_PIXEL_WIDTH,";\n          float dy = yOffset / ").concat(Nl.TEXTURE_PIXEL_HEIGHT,";\n          ").concat(r,"\n        }\n      ")}var c=ov(t,i),h=ov(t,n[1]||0),f=ov(t,n[2]||0);return"".concat(mv,"(").concat(c,", ").concat(h,", ").concat(f,")")}},Zl.time={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,0),"u_time"}},Zl.zoom={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,0),"u_zoom"}},Zl.resolution={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,0),"u_resolution"}},Zl["*"]={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,2),av(n),"(".concat(ov(t,n[0])," * ").concat(ov(t,n[1]),")")}},Zl["/"]={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,2),av(n),"(".concat(ov(t,n[0])," / ").concat(ov(t,n[1]),")")}},Zl["+"]={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,2),av(n),"(".concat(ov(t,n[0])," + ").concat(ov(t,n[1]),")")}},Zl["-"]={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,2),av(n),"(".concat(ov(t,n[0])," - ").concat(ov(t,n[1]),")")}},Zl.clamp={getReturnType:function(t){return Wl},toGlsl:function(t,n){hv(n,3),av(n);var i=ov(t,n[1]),r=ov(t,n[2]);return"clamp(".concat(ov(t,n[0]),", ").concat(i,", ").concat(r,")")}},Zl["%"]={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,2),av(n),"mod(".concat(ov(t,n[0]),", ").concat(ov(t,n[1]),")")}},Zl["^"]={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,2),av(n),"pow(".concat(ov(t,n[0]),", ").concat(ov(t,n[1]),")")}},Zl.abs={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,1),av(n),"abs(".concat(ov(t,n[0]),")")}},Zl.floor={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,1),av(n),"floor(".concat(ov(t,n[0]),")")}},Zl.round={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,1),av(n),"floor(".concat(ov(t,n[0])," + 0.5)")}},Zl.ceil={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,1),av(n),"ceil(".concat(ov(t,n[0]),")")}},Zl.sin={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,1),av(n),"sin(".concat(ov(t,n[0]),")")}},Zl.cos={getReturnType:function(t){return Wl},toGlsl:function(t,n){return hv(n,1),av(n),"cos(".concat(ov(t,n[0]),")")}},Zl.atan={getReturnType:function(t){return Wl},toGlsl:function(t,n){return fv(n,1),lv(n,2),av(n),2===n.length?"atan(".concat(ov(t,n[0]),", ").concat(ov(t,n[1]),")"):"atan(".concat(ov(t,n[0]),")")}},Zl[">"]={getReturnType:function(t){return Hl},toGlsl:function(t,n){return hv(n,2),av(n),"(".concat(ov(t,n[0])," > ").concat(ov(t,n[1]),")")}},Zl[">="]={getReturnType:function(t){return Hl},toGlsl:function(t,n){return hv(n,2),av(n),"(".concat(ov(t,n[0])," >= ").concat(ov(t,n[1]),")")}},Zl["<"]={getReturnType:function(t){return Hl},toGlsl:function(t,n){return hv(n,2),av(n),"(".concat(ov(t,n[0])," < ").concat(ov(t,n[1]),")")}},Zl["<="]={getReturnType:function(t){return Hl},toGlsl:function(t,n){return hv(n,2),av(n),"(".concat(ov(t,n[0])," <= ").concat(ov(t,n[1]),")")}},Zl["=="]=wv("=="),Zl["!="]=wv("!="),Zl["!"]={getReturnType:function(t){return Hl},toGlsl:function(t,n){return hv(n,1),cv(n[0]),"(!".concat(ov(t,n[0]),")")}},Zl.all=bv("&&"),Zl.any=bv("||"),Zl.between={getReturnType:function(t){return Hl},toGlsl:function(t,n){hv(n,3),av(n);var i=ov(t,n[1]),r=ov(t,n[2]),e=ov(t,n[0]);return"(".concat(e," >= ").concat(i," && ").concat(e," <= ").concat(r,")")}},Zl.array={getReturnType:function(t){return Jl},toGlsl:function(t,n){fv(n,2),lv(n,4),av(n);var i=n.map((function(n){return ov(t,n,Wl)}));return"vec".concat(n.length,"(").concat(i.join(", "),")")}},Zl.color={getReturnType:function(t){return Xl},toGlsl:function(t,n){fv(n,3),lv(n,4),av(n);var i=n;3===n.length&&i.push(1);var r=n.map((function(n,i){return ov(t,n,Wl)+(i<3?" / 255.0":"")}));return"vec".concat(n.length,"(").concat(r.join(", "),")")}},Zl.interpolate={getReturnType:function(t){for(var n=Xl|Wl,i=3;i<t.length;i+=2)n&=$l(t[i]);return n},toGlsl:function(t,n,i){vv(n),fv(n,6);var r,e=n[0];switch(e[0]){case"linear":r=1;break;case"exponential":r=e[1];break;default:r=null}if(!r)throw new Error('Invalid interpolation type for "interpolate" operator, received: '.concat(JSON.stringify(e)));var o=void 0!==i?i:Kl,s=Zl.interpolate.getReturnType(n)&o;dv(n,s);for(var a=ov(t,n[1]),u=tv(r),c="",h=2;h<n.length-2;h+=2){var f=ov(t,n[h]),l=c||ov(t,n[h+1],s),v=ov(t,n[h+2]),d=ov(t,n[h+3],s);c="mix(".concat(l,", ").concat(d,", pow(clamp((").concat(a," - ").concat(f,") / (").concat(v," - ").concat(f,"), 0.0, 1.0), ").concat(u,"))")}return c}},Zl.match={getReturnType:function(t){for(var n=Kl,i=2;i<t.length;i+=2)n&=$l(t[i]);return n&=$l(t[t.length-1])},toGlsl:function(t,n,i){vv(n),fv(n,4);var r=void 0!==i?i:Kl,e=Zl.match.getReturnType(n)&r;dv(n,e);for(var o=ov(t,n[0]),s=ov(t,n[n.length-1],e),a=null,u=n.length-3;u>=1;u-=2){var c=ov(t,n[u]),h=ov(t,n[u+1],e);a="(".concat(o," == ").concat(c," ? ").concat(h," : ").concat(a||s,")")}return a}},Zl.case={getReturnType:function(t){for(var n=Kl,i=1;i<t.length;i+=2)n&=$l(t[i]);return n&=$l(t[t.length-1])},toGlsl:function(t,n,i){!function(t){if(t.length%2==0)throw new Error("An odd amount of arguments was expected, got ".concat(t," instead"))}(n),fv(n,3);var r=void 0!==i?i:Kl,e=Zl.case.getReturnType(n)&r;dv(n,e);for(var o=0;o<n.length-1;o+=2)cv(n[o]);var s=ov(t,n[n.length-1],e),a=null;for(o=n.length-3;o>=0;o-=2){var u=ov(t,n[o]),c=ov(t,n[o+1],e);a="(".concat(u," ? ").concat(c," : ").concat(a||s,")")}return a}};var gv=function(){function t(){this.uniforms=[],this.attributes=[],this.varyings=[],this.sizeExpression="vec2(1.0)",this.rotationExpression="0.0",this.offsetExpression="vec2(0.0)",this.colorExpression="vec4(1.0)",this.texCoordExpression="vec4(0.0, 0.0, 1.0, 1.0)",this.discardExpression="false",this.rotateWithView=!1}return t.prototype.addUniform=function(t){return this.uniforms.push(t),this},t.prototype.addAttribute=function(t){return this.attributes.push(t),this},t.prototype.addVarying=function(t,n,i){return this.varyings.push({name:t,type:n,expression:i}),this},t.prototype.setSizeExpression=function(t){return this.sizeExpression=t,this},t.prototype.setRotationExpression=function(t){return this.rotationExpression=t,this},t.prototype.setSymbolOffsetExpression=function(t){return this.offsetExpression=t,this},t.prototype.setColorExpression=function(t){return this.colorExpression=t,this},t.prototype.setTextureCoordinateExpression=function(t){return this.texCoordExpression=t,this},t.prototype.setFragmentDiscardExpression=function(t){return this.discardExpression=t,this},t.prototype.setSymbolRotateWithView=function(t){return this.rotateWithView=t,this},t.prototype.getSizeExpression=function(){return this.sizeExpression},t.prototype.getOffsetExpression=function(){return this.offsetExpression},t.prototype.getColorExpression=function(){return this.colorExpression},t.prototype.getTextureCoordinateExpression=function(){return this.texCoordExpression},t.prototype.getFragmentDiscardExpression=function(){return this.discardExpression},t.prototype.getSymbolVertexShader=function(t){var n=this.rotateWithView?"u_offsetScaleMatrix * u_offsetRotateMatrix":"u_offsetScaleMatrix",i=this.attributes,r=this.varyings;return t&&(i=i.concat("vec4 a_hitColor"),r=r.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n".concat(this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n"),"\nattribute vec2 a_position;\nattribute float a_index;\n").concat(i.map((function(t){return"attribute "+t+";"})).join("\n"),"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n").concat(r.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n"),"\nvoid main(void) {\n  mat4 offsetMatrix = ").concat(n,";\n  vec2 halfSize = ").concat(this.sizeExpression," * 0.5;\n  vec2 offset = ").concat(this.offsetExpression,";\n  float angle = ").concat(this.rotationExpression,";\n  float offsetX;\n  float offsetY;\n  if (a_index == 0.0) {\n    offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n    offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n  } else if (a_index == 1.0) {\n    offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n    offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n  } else if (a_index == 2.0) {\n    offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n    offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n  } else {\n    offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n    offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n  }\n  vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n  gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n  vec4 texCoord = ").concat(this.texCoordExpression,";\n  float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n  float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n  v_texCoord = vec2(u, v);\n  u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n  v = a_index == 2.0 || a_index == 3.0 ? 0.0 : 1.0;\n  v_quadCoord = vec2(u, v);\n").concat(r.map((function(t){return"  "+t.name+" = "+t.expression+";"})).join("\n"),"\n}")},t.prototype.getSymbolFragmentShader=function(t){var n=t?"  if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;":"",i=this.varyings;return t&&(i=i.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n".concat(this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n"),"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n").concat(i.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n"),"\nvoid main(void) {\n  if (").concat(this.discardExpression,") { discard; }\n  gl_FragColor = ").concat(this.colorExpression,";\n  gl_FragColor.rgb *= gl_FragColor.a;\n").concat(n,"\n}")},t}();function xv(t){var n=t.symbol,i=void 0!==n.size?n.size:1,r=n.color||"white",e=n.textureCoord||[0,0,1,1],o=n.offset||[0,0],s=void 0!==n.opacity?n.opacity:1,a=void 0!==n.rotation?n.rotation:0,u={inFragmentShader:!1,variables:[],attributes:[],stringLiteralsMap:{},functions:{}},c=ov(u,i,Jl|Wl),h=ov(u,o,Jl),f=ov(u,e,Jl),l=ov(u,a,Wl),v={inFragmentShader:!0,variables:u.variables,attributes:[],stringLiteralsMap:u.stringLiteralsMap,functions:{}},d=ov(v,r,Xl),p=ov(v,s,Wl),y="1.0",m="vec2(".concat(ov(v,i,Jl|Wl),").x");switch(n.symbolType){case"square":case"image":break;case"circle":y="(1.0-smoothstep(1.-4./".concat(m,",1.,dot(v_quadCoord-.5,v_quadCoord-.5)*4.))");break;case"triangle":var w="(v_quadCoord*2.-1.)",b="(atan(".concat(w,".x,").concat(w,".y))");y="(1.0-smoothstep(.5-3./".concat(m,",.5,cos(floor(.5+").concat(b,"/2.094395102)*2.094395102-").concat(b,")*length(").concat(w,")))");break;default:throw new Error("Unexpected symbol type: "+n.symbolType)}var g=(new gv).setSizeExpression("vec2(".concat(c,")")).setRotationExpression(l).setSymbolOffsetExpression(h).setTextureCoordinateExpression(f).setSymbolRotateWithView(!!n.rotateWithView).setColorExpression("vec4(".concat(d,".rgb, ").concat(d,".a * ").concat(p," * ").concat(y,")"));if(t.filter){var x=ov(v,t.filter,Hl);g.setFragmentDiscardExpression("!".concat(x))}var j={};if(v.variables.forEach((function(n){var i=pv(n);g.addUniform("float ".concat(i)),j[i]=function(){if(!t.variables||void 0===t.variables[n])throw new Error("The following variable is missing from the style: ".concat(n));var i=t.variables[n];return"string"==typeof i&&(i=rv(u,i)),void 0!==i?i:-9999999}})),"image"===n.symbolType&&n.src){var S=new Image;S.crossOrigin=void 0===n.crossOrigin?"anonymous":n.crossOrigin,S.src=n.src,g.addUniform("sampler2D u_texture").setColorExpression(g.getColorExpression()+" * texture2D(u_texture, v_texCoord)"),j.u_texture=S}return v.attributes.forEach((function(t){-1===u.attributes.indexOf(t)&&u.attributes.push(t),g.addVarying("v_".concat(t),"float","a_".concat(t))})),u.attributes.forEach((function(t){g.addAttribute("float a_".concat(t))})),{builder:g,attributes:u.attributes.map((function(t){return{name:t,callback:function(n,i){var r=i[t];return"string"==typeof r&&(r=rv(u,r)),void 0!==r?r:-9999999}}})),uniforms:j}}var jv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Sv=function(t){function n(n){var i=t.call(this,{extent:n.extent,origin:n.origin,origins:n.origins,resolutions:n.resolutions,tileSize:n.tileSize,tileSizes:n.tileSizes,sizes:n.sizes})||this;return i.aa=n.matrixIds,i}return jv(n,t),n.prototype.getMatrixId=function(t){return this.aa[t]},n.prototype.getMatrixIds=function(){return this.aa},n}(Jh),kv=Sv;function Mv(t,n,i){var r=[],e=[],o=[],s=[],a=[],u=void 0!==i?i:[],c=gr(t.SupportedCRS),h=c.getMetersPerUnit(),f="ne"==c.getAxisOrientation().substr(0,2);return t.TileMatrix.sort((function(t,n){return n.ScaleDenominator-t.ScaleDenominator})),t.TileMatrix.forEach((function(n){if(!(u.length>0)||g(u,(function(i){return n.Identifier==i.TileMatrix||-1===n.Identifier.indexOf(":")&&t.Identifier+":"+n.Identifier===i.TileMatrix}))){e.push(n.Identifier);var i=28e-5*n.ScaleDenominator/h,c=n.TileWidth,l=n.TileHeight;f?o.push([n.TopLeftCorner[1],n.TopLeftCorner[0]]):o.push(n.TopLeftCorner),r.push(i),s.push(c==l?c:[c,l]),a.push([n.MatrixWidth,n.MatrixHeight])}})),new Sv({extent:n,origins:o,resolutions:r,matrixIds:e,tileSizes:s,sizes:a})}var _v=function(){function t(t){this.ua=t.opacity,this.ca=t.rotateWithView,this.Dr=t.rotation,this.ha=t.scale,this.fa=uu(t.scale),this.la=t.displacement}return t.prototype.clone=function(){var n=this.getScale();return new t({opacity:this.getOpacity(),scale:Array.isArray(n)?n.slice():n,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()})},t.prototype.getOpacity=function(){return this.ua},t.prototype.getRotateWithView=function(){return this.ca},t.prototype.getRotation=function(){return this.Dr},t.prototype.getScale=function(){return this.ha},t.prototype.getScaleArray=function(){return this.fa},t.prototype.getDisplacement=function(){return this.la},t.prototype.getAnchor=function(){return r()},t.prototype.getImage=function(t){return r()},t.prototype.getHitDetectionImage=function(){return r()},t.prototype.getPixelRatio=function(t){return 1},t.prototype.getImageState=function(){return r()},t.prototype.getImageSize=function(){return r()},t.prototype.getOrigin=function(){return r()},t.prototype.getSize=function(){return r()},t.prototype.setDisplacement=function(t){this.la=t},t.prototype.setOpacity=function(t){this.ua=t},t.prototype.setRotateWithView=function(t){this.ca=t},t.prototype.setRotation=function(t){this.Dr=t},t.prototype.setScale=function(t){this.ha=t,this.fa=uu(t)},t.prototype.listenImageChange=function(t){r()},t.prototype.load=function(){r()},t.prototype.unlistenImageChange=function(t){r()},t}(),Ov=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Tv=function(t){function n(n){var i=this,r=void 0!==n.rotateWithView&&n.rotateWithView;return(i=t.call(this,{opacity:1,rotateWithView:r,rotation:void 0!==n.rotation?n.rotation:0,scale:void 0!==n.scale?n.scale:1,displacement:void 0!==n.displacement?n.displacement:[0,0]})||this).Ut=void 0,i.va=null,i.da=void 0!==n.fill?n.fill:null,i.ko=[0,0],i.Jt=n.points,i.pa=void 0!==n.radius?n.radius:n.radius1,i.ya=n.radius2,i.Kt=void 0!==n.angle?n.angle:0,i.ma=void 0!==n.stroke?n.stroke:null,i.fs=null,i.wa=null,i.render(),i}return Ov(n,t),n.prototype.clone=function(){var t=this.getScale(),i=new n({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice()});return i.setOpacity(this.getOpacity()),i},n.prototype.getAnchor=function(){var t=this.fs;if(!t)return null;var n=this.getDisplacement();return[t[0]/2-n[0],t[1]/2+n[1]]},n.prototype.getAngle=function(){return this.Kt},n.prototype.getFill=function(){return this.da},n.prototype.getHitDetectionImage=function(){return this.va||this.ba(this.wa),this.va},n.prototype.getImage=function(t){var n=this.Ut[t];if(!n){var i=this.wa,r=Oo(i.size*t,i.size*t);this.ga(i,r,t),n=r.canvas,this.Ut[t]=n}return n},n.prototype.getPixelRatio=function(t){return t},n.prototype.getImageSize=function(){return this.fs},n.prototype.getImageState=function(){return bo},n.prototype.getOrigin=function(){return this.ko},n.prototype.getPoints=function(){return this.Jt},n.prototype.getRadius=function(){return this.pa},n.prototype.getRadius2=function(){return this.ya},n.prototype.getSize=function(){return this.fs},n.prototype.getStroke=function(){return this.ma},n.prototype.listenImageChange=function(t){},n.prototype.load=function(){},n.prototype.unlistenImageChange=function(t){},n.prototype.xa=function(t,n,i){if(0===n||this.Jt===1/0||"bevel"!==t&&"miter"!==t)return n;var r=this.pa,e=void 0===this.ya?r:this.ya;if(r<e){var o=r;r=e,e=o}var s=void 0===this.ya?this.Jt:2*this.Jt,a=2*Math.PI/s,u=e*Math.sin(a),c=r-Math.sqrt(e*e-u*u),h=Math.sqrt(u*u+c*c),f=h/u;if("miter"===t&&f<=i)return f*n;var l=n/2/f,v=n/2*(c/h),d=Math.sqrt((r+l)*(r+l)+v*v)-r;if(void 0===this.ya||"bevel"===t)return 2*d;var p=r*Math.sin(a),y=e-Math.sqrt(r*r-p*p),m=Math.sqrt(p*p+y*y)/p;if(m<=i){var w=m*n/2-e-r;return 2*Math.max(d,w)}return 2*d},n.prototype.createRenderOptions=function(){var t,n=Ds,i=0,r=null,e=0,o=0;this.ma&&(null===(t=this.ma.getColor())&&(t=qs),t=ah(t),void 0===(o=this.ma.getWidth())&&(o=1),r=this.ma.getLineDash(),e=this.ma.getLineDashOffset(),void 0===(n=this.ma.getLineJoin())&&(n=Ds),void 0===(i=this.ma.getMiterLimit())&&(i=Us));var s=this.xa(n,o,i),a=Math.max(this.pa,this.ya||0);return{strokeStyle:t,strokeWidth:o,size:Math.ceil(2*a+s),lineDash:r,lineDashOffset:e,lineJoin:n,miterLimit:i}},n.prototype.render=function(){this.wa=this.createRenderOptions();var t=this.wa.size;this.Ut={},this.fs=[t,t]},n.prototype.ga=function(t,n,i){if(n.scale(i,i),n.translate(t.size/2,t.size/2),this.ja(n),this.da){var r=this.da.getColor();null===r&&(r=Fs),n.fillStyle=ah(r),n.fill()}this.ma&&(n.strokeStyle=t.strokeStyle,n.lineWidth=t.strokeWidth,n.setLineDash&&t.lineDash&&(n.setLineDash(t.lineDash),n.lineDashOffset=t.lineDashOffset),n.lineJoin=t.lineJoin,n.miterLimit=t.miterLimit,n.stroke())},n.prototype.ba=function(t){if(this.da){var n=this.da.getColor(),i=0;if("string"==typeof n&&(n=qo(n)),null===n?i=1:Array.isArray(n)&&(i=4===n.length?n[3]:1),0===i){var r=Oo(t.size,t.size);this.va=r.canvas,this.Sa(t,r)}}this.va||(this.va=this.getImage(1))},n.prototype.ja=function(t){var n=this.Jt,i=this.pa;if(n===1/0)t.arc(0,0,i,0,2*Math.PI);else{var r=void 0===this.ya?i:this.ya;void 0!==this.ya&&(n*=2);for(var e=this.Kt-Math.PI/2,o=2*Math.PI/n,s=0;s<n;s++){var a=e+s*o,u=s%2==0?i:r;t.lineTo(u*Math.cos(a),u*Math.sin(a))}t.closePath()}},n.prototype.Sa=function(t,n){n.translate(t.size/2,t.size/2),this.ja(n),n.fillStyle=Fs,n.fill(),this.ma&&(n.strokeStyle=t.strokeStyle,n.lineWidth=t.strokeWidth,t.lineDash&&(n.setLineDash(t.lineDash),n.lineDashOffset=t.lineDashOffset),n.lineJoin=t.lineJoin,n.miterLimit=t.miterLimit,n.stroke())},n}(_v),Ev=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Av=function(t){function n(n){var i=n||{};return t.call(this,{points:1/0,fill:i.fill,radius:i.radius,stroke:i.stroke,scale:void 0!==i.scale?i.scale:1,rotation:void 0!==i.rotation?i.rotation:0,rotateWithView:void 0!==i.rotateWithView&&i.rotateWithView,displacement:void 0!==i.displacement?i.displacement:[0,0]})||this}return Ev(n,t),n.prototype.clone=function(){var t=this.getScale(),i=new n({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()});return i.setOpacity(this.getOpacity()),i},n.prototype.setRadius=function(t){this.pa=t,this.render()},n}(Tv),Cv=function(){function t(t){var n=t||{};this.ka=void 0!==n.color?n.color:null}return t.prototype.clone=function(){var n=this.getColor();return new t({color:Array.isArray(n)?n.slice():n||void 0})},t.prototype.getColor=function(){return this.ka},t.prototype.setColor=function(t){this.ka=t},t}(),Rv="fraction",Pv="pixels",Iv="bottom-left",Nv="bottom-right",zv="top-left",Fv="top-right",Lv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Gv=null,Dv=function(t){function n(n,i,r,e,o,s){var a=t.call(this)||this;return a.Ma=null,a.Nt=n||new Image,null!==e&&(a.Nt.crossOrigin=e),a.Ut={},a.ka=s,a.zt=null,a._a=o,a.fs=r,a.Pt=i,a.Oa,a}return Lv(n,t),n.prototype.Ta=function(){if(void 0===this.Oa&&this._a===bo){Gv||(Gv=Oo(1,1)),Gv.drawImage(this.Nt,0,0);try{Gv.getImageData(0,0,1,1),this.Oa=!1}catch(t){Gv=null,this.Oa=!0}}return!0===this.Oa},n.prototype.Ea=function(){this.dispatchEvent(N)},n.prototype.Lt=function(){this._a=go,this.Gt(),this.Ea()},n.prototype.Dt=function(){this._a=bo,this.fs?(this.Nt.width=this.fs[0],this.Nt.height=this.fs[1]):this.fs=[this.Nt.width,this.Nt.height],this.Gt(),this.Ea()},n.prototype.getImage=function(t){return this.Aa(t),this.Ut[t]?this.Ut[t]:this.Nt},n.prototype.getPixelRatio=function(t){return this.Aa(t),this.Ut[t]?t:1},n.prototype.getImageState=function(){return this._a},n.prototype.getHitDetectionImage=function(){if(!this.Ma)if(this.Ta()){var t=this.fs[0],n=this.fs[1],i=Oo(t,n);i.fillRect(0,0,t,n),this.Ma=i.canvas}else this.Ma=this.Nt;return this.Ma},n.prototype.getSize=function(){return this.fs},n.prototype.getSrc=function(){return this.Pt},n.prototype.load=function(){if(this._a==mo){this._a=wo;try{this.Nt.src=this.Pt}catch(t){this.Lt()}this.zt=So(this.Nt,this.Dt.bind(this),this.Lt.bind(this))}},n.prototype.Aa=function(t){if(this.ka&&!this.Ut[t]&&this._a===bo){var n=document.createElement("canvas");this.Ut[t]=n,n.width=Math.ceil(this.Nt.width*t),n.height=Math.ceil(this.Nt.height*t);var i=n.getContext("2d");if(i.scale(t,t),i.drawImage(this.Nt,0,0),i.globalCompositeOperation="multiply","multiply"===i.globalCompositeOperation||this.Ta())i.fillStyle=Go(this.ka),i.fillRect(0,0,n.width/t,n.height/t),i.globalCompositeOperation="destination-in",i.drawImage(this.Nt,0,0);else{for(var r=i.getImageData(0,0,n.width,n.height),e=r.data,o=this.ka[0]/255,s=this.ka[1]/255,a=this.ka[2]/255,u=this.ka[3],c=0,h=e.length;c<h;c+=4)e[c]*=o,e[c+1]*=s,e[c+2]*=a,e[c+3]*=u;i.putImageData(r,0,0)}}},n.prototype.Gt=function(){this.zt&&(this.zt(),this.zt=null)},n}(I);function Uv(t,n,i,r,e,o){var s=Ko.get(n,r,o);return s||(s=new Dv(t,n,i,r,e,o),Ko.set(n,r,o,s)),s}var qv=Dv,Bv=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Wv=function(t){function n(n){var i=this,r=n||{},e=void 0!==r.opacity?r.opacity:1,s=void 0!==r.rotation?r.rotation:0,a=void 0!==r.scale?r.scale:1,u=void 0!==r.rotateWithView&&r.rotateWithView;(i=t.call(this,{opacity:e,rotation:s,scale:a,displacement:void 0!==r.displacement?r.displacement:[0,0],rotateWithView:u})||this).je=void 0!==r.anchor?r.anchor:[.5,.5],i.Ca=null,i.Ra=void 0!==r.anchorOrigin?r.anchorOrigin:zv,i.Pa=void 0!==r.anchorXUnits?r.anchorXUnits:Rv,i.Ia=void 0!==r.anchorYUnits?r.anchorYUnits:Rv,i.Bt=void 0!==r.crossOrigin?r.crossOrigin:null;var c=void 0!==r.img?r.img:null;i.Na=r.imgSize;var h=r.src;Mt(!(void 0!==h&&c),4),Mt(!c||c&&i.Na,5),void 0!==h&&0!==h.length||!c||(h=c.src||o(c)),Mt(void 0!==h&&h.length>0,6);var f=void 0!==r.src?mo:bo;return i.ka=void 0!==r.color?qo(r.color):null,i.za=Uv(c,h,void 0!==i.Na?i.Na:null,i.Bt,f,i.ka),i.Fa=void 0!==r.offset?r.offset:[0,0],i.La=void 0!==r.offsetOrigin?r.offsetOrigin:zv,i.ko=null,i.fs=void 0!==r.size?r.size:null,i}return Bv(n,t),n.prototype.clone=function(){var t=this.getScale();return new n({anchor:this.je.slice(),anchorOrigin:this.Ra,anchorXUnits:this.Pa,anchorYUnits:this.Ia,color:this.ka&&this.ka.slice?this.ka.slice():this.ka||void 0,crossOrigin:this.Bt,imgSize:this.Na,offset:this.Fa.slice(),offsetOrigin:this.La,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:Array.isArray(t)?t.slice():t,size:null!==this.fs?this.fs.slice():void 0,src:this.getSrc()})},n.prototype.getAnchor=function(){var t=this.Ca;if(!t){t=this.je;var n=this.getSize();if(this.Pa==Rv||this.Ia==Rv){if(!n)return null;t=this.je.slice(),this.Pa==Rv&&(t[0]*=n[0]),this.Ia==Rv&&(t[1]*=n[1])}if(this.Ra!=zv){if(!n)return null;t===this.je&&(t=this.je.slice()),this.Ra!=Fv&&this.Ra!=Nv||(t[0]=-t[0]+n[0]),this.Ra!=Iv&&this.Ra!=Nv||(t[1]=-t[1]+n[1])}this.Ca=t}var i=this.getDisplacement();return[t[0]-i[0],t[1]+i[1]]},n.prototype.setAnchor=function(t){this.je=t,this.Ca=null},n.prototype.getColor=function(){return this.ka},n.prototype.getImage=function(t){return this.za.getImage(t)},n.prototype.getPixelRatio=function(t){return this.za.getPixelRatio(t)},n.prototype.getImageSize=function(){return this.za.getSize()},n.prototype.getImageState=function(){return this.za.getImageState()},n.prototype.getHitDetectionImage=function(){return this.za.getHitDetectionImage()},n.prototype.getOrigin=function(){if(this.ko)return this.ko;var t=this.Fa;if(this.La!=zv){var n=this.getSize(),i=this.za.getSize();if(!n||!i)return null;t=t.slice(),this.La!=Fv&&this.La!=Nv||(t[0]=i[0]-n[0]-t[0]),this.La!=Iv&&this.La!=Nv||(t[1]=i[1]-n[1]-t[1])}return this.ko=t,this.ko},n.prototype.getSrc=function(){return this.za.getSrc()},n.prototype.getSize=function(){return this.fs?this.fs:this.za.getSize()},n.prototype.listenImageChange=function(t){this.za.addEventListener(N,t)},n.prototype.load=function(){this.za.load()},n.prototype.unlistenImageChange=function(t){this.za.removeEventListener(N,t)},n}(_v),Vv=function(){function t(t){var n=t||{};this.ka=void 0!==n.color?n.color:null,this.Ga=n.lineCap,this.Da=void 0!==n.lineDash?n.lineDash:null,this.Ua=n.lineDashOffset,this.qa=n.lineJoin,this.Ba=n.miterLimit,this.Wa=n.width}return t.prototype.clone=function(){var n=this.getColor();return new t({color:Array.isArray(n)?n.slice():n||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.ka},t.prototype.getLineCap=function(){return this.Ga},t.prototype.getLineDash=function(){return this.Da},t.prototype.getLineDashOffset=function(){return this.Ua},t.prototype.getLineJoin=function(){return this.qa},t.prototype.getMiterLimit=function(){return this.Ba},t.prototype.getWidth=function(){return this.Wa},t.prototype.setColor=function(t){this.ka=t},t.prototype.setLineCap=function(t){this.Ga=t},t.prototype.setLineDash=function(t){this.Da=t},t.prototype.setLineDashOffset=function(t){this.Ua=t},t.prototype.setLineJoin=function(t){this.qa=t},t.prototype.setMiterLimit=function(t){this.Ba=t},t.prototype.setWidth=function(t){this.Wa=t},t}();function Xv(t){return(Xv="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Hv=function(){function t(t){var n=t||{};this.$r=null,this.Va=$v,void 0!==n.geometry&&this.setGeometry(n.geometry),this.da=void 0!==n.fill?n.fill:null,this.Nt=void 0!==n.image?n.image:null,this.cn=void 0!==n.renderer?n.renderer:null,this.Xa=void 0!==n.hitDetectionRenderer?n.hitDetectionRenderer:null,this.ma=void 0!==n.stroke?n.stroke:null,this.oo=void 0!==n.text?n.text:null,this.Ha=n.zIndex}return t.prototype.clone=function(){var n=this.getGeometry();return n&&"object"===Xv(n)&&(n=n.clone()),new t({geometry:n,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer(),stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.cn},t.prototype.setRenderer=function(t){this.cn=t},t.prototype.setHitDetectionRenderer=function(t){this.Xa=t},t.prototype.getHitDetectionRenderer=function(){return this.Xa},t.prototype.getGeometry=function(){return this.$r},t.prototype.getGeometryFunction=function(){return this.Va},t.prototype.getFill=function(){return this.da},t.prototype.setFill=function(t){this.da=t},t.prototype.getImage=function(){return this.Nt},t.prototype.setImage=function(t){this.Nt=t},t.prototype.getStroke=function(){return this.ma},t.prototype.setStroke=function(t){this.ma=t},t.prototype.getText=function(){return this.oo},t.prototype.setText=function(t){this.oo=t},t.prototype.getZIndex=function(){return this.Ha},t.prototype.setGeometry=function(t){"function"==typeof t?this.Va=t:"string"==typeof t?this.Va=function(n){return n.get(t)}:t?void 0!==t&&(this.Va=function(){return t}):this.Va=$v,this.$r=t},t.prototype.setZIndex=function(t){this.Ha=t},t}();function Jv(t){var n;if("function"==typeof t)n=t;else{var i;if(Array.isArray(t))i=t;else Mt("function"==typeof t.getZIndex,41),i=[t];n=function(){return i}}return n}var Kv=null;function Yv(t,n){if(!Kv){var i=new Cv({color:"rgba(255,255,255,0.4)"}),r=new Vv({color:"#3399CC",width:1.25});Kv=[new Hv({image:new Av({fill:i,stroke:r,radius:5}),fill:i,stroke:r})]}return Kv}function Zv(){var t={},n=[255,255,255,1],i=[0,153,255,1];return t[Pt.POLYGON]=[new Hv({fill:new Cv({color:[255,255,255,.5]})})],t[Pt.MULTI_POLYGON]=t[Pt.POLYGON],t[Pt.LINE_STRING]=[new Hv({stroke:new Vv({color:n,width:5})}),new Hv({stroke:new Vv({color:i,width:3})})],t[Pt.MULTI_LINE_STRING]=t[Pt.LINE_STRING],t[Pt.CIRCLE]=t[Pt.POLYGON].concat(t[Pt.LINE_STRING]),t[Pt.POINT]=[new Hv({image:new Av({radius:6,fill:new Cv({color:i}),stroke:new Vv({color:n,width:1.5})}),zIndex:1/0})],t[Pt.MULTI_POINT]=t[Pt.POINT],t[Pt.GEOMETRY_COLLECTION]=t[Pt.POLYGON].concat(t[Pt.LINE_STRING],t[Pt.POINT]),t}function $v(t){return t.getGeometry()}var Qv=Hv,td="point",nd="line",id=function(){function t(t){var n=t||{};this.Ja=n.font,this.Dr=n.rotation,this.ca=n.rotateWithView,this.ha=n.scale,this.fa=uu(void 0!==n.scale?n.scale:1),this.oo=n.text,this.Ka=n.textAlign,this.Ya=n.textBaseline,this.da=void 0!==n.fill?n.fill:new Cv({color:"#333"}),this.Za=void 0!==n.maxAngle?n.maxAngle:Math.PI/4,this.$a=void 0!==n.placement?n.placement:td,this.Qa=!!n.overflow,this.ma=void 0!==n.stroke?n.stroke:null,this.tu=void 0!==n.offsetX?n.offsetX:0,this.nu=void 0!==n.offsetY?n.offsetY:0,this.iu=n.backgroundFill?n.backgroundFill:null,this.ru=n.backgroundStroke?n.backgroundStroke:null,this.Ei=void 0===n.padding?null:n.padding}return t.prototype.clone=function(){var n=this.getScale();return new t({font:this.getFont(),placement:this.getPlacement(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(n)?n.slice():n,text:this.getText(),textAlign:this.getTextAlign(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0})},t.prototype.getOverflow=function(){return this.Qa},t.prototype.getFont=function(){return this.Ja},t.prototype.getMaxAngle=function(){return this.Za},t.prototype.getPlacement=function(){return this.$a},t.prototype.getOffsetX=function(){return this.tu},t.prototype.getOffsetY=function(){return this.nu},t.prototype.getFill=function(){return this.da},t.prototype.getRotateWithView=function(){return this.ca},t.prototype.getRotation=function(){return this.Dr},t.prototype.getScale=function(){return this.ha},t.prototype.getScaleArray=function(){return this.fa},t.prototype.getStroke=function(){return this.ma},t.prototype.getText=function(){return this.oo},t.prototype.getTextAlign=function(){return this.Ka},t.prototype.getTextBaseline=function(){return this.Ya},t.prototype.getBackgroundFill=function(){return this.iu},t.prototype.getBackgroundStroke=function(){return this.ru},t.prototype.getPadding=function(){return this.Ei},t.prototype.setOverflow=function(t){this.Qa=t},t.prototype.setFont=function(t){this.Ja=t},t.prototype.setMaxAngle=function(t){this.Za=t},t.prototype.setOffsetX=function(t){this.tu=t},t.prototype.setOffsetY=function(t){this.nu=t},t.prototype.setPlacement=function(t){this.$a=t},t.prototype.setRotateWithView=function(t){this.ca=t},t.prototype.setFill=function(t){this.da=t},t.prototype.setRotation=function(t){this.Dr=t},t.prototype.setScale=function(t){this.ha=t,this.fa=uu(void 0!==t?t:1)},t.prototype.setStroke=function(t){this.ma=t},t.prototype.setText=function(t){this.oo=t},t.prototype.setTextAlign=function(t){this.Ka=t},t.prototype.setTextBaseline=function(t){this.Ya=t},t.prototype.setBackgroundFill=function(t){this.iu=t},t.prototype.setBackgroundStroke=function(t){this.ru=t},t.prototype.setPadding=function(t){this.Ei=t},t}(),rd=function(){function t(t){this.eu,this.ou,this.su,this.au=void 0===t||t,this.uu=0}return t.prototype.insertItem=function(t){var n={prev:void 0,next:void 0,data:t},i=this.su;if(i){var r=i.next;n.prev=i,n.next=r,i.next=n,r&&(r.prev=n),i===this.ou&&(this.ou=n)}else this.eu=n,this.ou=n,this.au&&(n.next=n,n.prev=n);this.su=n,this.uu++},t.prototype.removeItem=function(){var t=this.su;if(t){var n=t.next,i=t.prev;n&&(n.prev=i),i&&(i.next=n),this.su=n||i,this.eu===this.ou?(this.su=void 0,this.eu=void 0,this.ou=void 0):this.eu===t?this.eu=this.su:this.ou===t&&(this.ou=i?this.su.prev:this.su),this.uu--}},t.prototype.firstItem=function(){if(this.su=this.eu,this.su)return this.su.data},t.prototype.lastItem=function(){if(this.su=this.ou,this.su)return this.su.data},t.prototype.nextItem=function(){if(this.su&&this.su.next)return this.su=this.su.next,this.su.data},t.prototype.getNextItem=function(){if(this.su&&this.su.next)return this.su.next.data},t.prototype.prevItem=function(){if(this.su&&this.su.prev)return this.su=this.su.prev,this.su.data},t.prototype.getPrevItem=function(){if(this.su&&this.su.prev)return this.su.prev.data},t.prototype.getCurrItem=function(){if(this.su)return this.su.data},t.prototype.setFirstItem=function(){this.au&&this.su&&(this.eu=this.su,this.ou=this.su.prev)},t.prototype.concat=function(t){if(t.su){if(this.su){var n=this.su.next;this.su.next=t.eu,t.eu.prev=this.su,n.prev=t.ou,t.ou.next=n,this.uu+=t.uu}else this.su=t.su,this.eu=t.eu,this.ou=t.ou,this.uu=t.uu;t.su=void 0,t.eu=void 0,t.ou=void 0,t.uu=0}},t.prototype.getLength=function(){return this.uu},t}(),ed=i(72),od=function(){function t(t){this.cu=new ed(t),this.hu={}}return t.prototype.insert=function(t,n){var i={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:n};this.cu.insert(i),this.hu[o(n)]=i},t.prototype.load=function(t,n){for(var i=new Array(n.length),r=0,e=n.length;r<e;r++){var s=t[r],a=n[r],u={minX:s[0],minY:s[1],maxX:s[2],maxY:s[3],value:a};i[r]=u,this.hu[o(a)]=u}this.cu.load(i)},t.prototype.remove=function(t){var n=o(t),i=this.hu[n];return delete this.hu[n],null!==this.cu.remove(i)},t.prototype.update=function(t,n){var i=this.hu[o(n)];Nn([i.minX,i.minY,i.maxX,i.maxY],t)||(this.remove(n),this.insert(t,n))},t.prototype.getAll=function(){return this.cu.all().map((function(t){return t.value}))},t.prototype.getInExtent=function(t){var n={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3]};return this.cu.search(n).map((function(t){return t.value}))},t.prototype.forEach=function(t){return this.fu(this.getAll(),t)},t.prototype.forEachInExtent=function(t,n){return this.fu(this.getInExtent(t),n)},t.prototype.fu=function(t,n){for(var i,r=0,e=t.length;r<e;r++)if(i=n(t[r]))return i;return i},t.prototype.isEmpty=function(){return R(this.hu)},t.prototype.clear=function(){this.cu.clear(),this.hu={}},t.prototype.getExtent=function(t){var n=this.cu.toJSON();return Cn(n.minX,n.minY,n.maxX,n.maxY,t)},t.prototype.concat=function(t){for(var n in this.cu.load(t.cu.all()),t.hu)this.hu[n]=t.hu[n]},t}(),sd="tileloadstart",ad="tileloadend",ud="tileloaderror",cd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function hd(t){return t?Array.isArray(t)?function(n){return t}:"function"==typeof t?t:function(n){return[t]}:null}var fd=function(t){function n(n){var i=t.call(this)||this;i.projection=gr(n.projection),i.lu=hd(n.attributions),i.vu=void 0===n.attributionsCollapsible||n.attributionsCollapsible,i.loading=!1,i.rn=void 0!==n.state?n.state:ys,i.du=void 0!==n.wrapX&&n.wrapX,i.pu=!!n.interpolate,i.viewResolver=null,i.viewRejector=null;var r=i;return i.yu=new Promise((function(t,n){r.viewResolver=t,r.viewRejector=n})),i}return cd(n,t),n.prototype.getAttributions=function(){return this.lu},n.prototype.getAttributionsCollapsible=function(){return this.vu},n.prototype.getProjection=function(){return this.projection},n.prototype.getResolutions=function(){return r()},n.prototype.getView=function(){return this.yu},n.prototype.getState=function(){return this.rn},n.prototype.getWrapX=function(){return this.du},n.prototype.getInterpolate=function(){return this.pu},n.prototype.refresh=function(){this.changed()},n.prototype.setAttributions=function(t){this.lu=hd(t),this.changed()},n.prototype.setState=function(t){this.rn=t,this.changed()},n}(ot),ld=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),vd=function(t){function n(n){var i=t.call(this,{attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,projection:n.projection,state:n.state,wrapX:n.wrapX,interpolate:n.interpolate})||this;i.on,i.once,i.un,i.mu=void 0!==n.opaque&&n.opaque,i.Gs=void 0!==n.tilePixelRatio?n.tilePixelRatio:1,i.tileGrid=void 0!==n.tileGrid?n.tileGrid:null;return i.tileGrid&&uu(i.tileGrid.getTileSize(i.tileGrid.getMinZoom()),[256,256]),i.tileCache=new $c(n.cacheSize||0),i.tmpSize=[0,0],i.Pe=n.key||"",i.tileOptions={transition:n.transition,interpolate:n.interpolate},i.zDirection=n.zDirection?n.zDirection:0,i}return ld(n,t),n.prototype.canExpireCache=function(){return this.tileCache.canExpireCache()},n.prototype.expireCache=function(t,n){var i=this.getTileCacheForProjection(t);i&&i.expireCache(n)},n.prototype.forEachLoadedTile=function(t,n,i,r){var e=this.getTileCacheForProjection(t);if(!e)return!1;for(var o,s,a,u=!0,c=i.minX;c<=i.maxX;++c)for(var h=i.minY;h<=i.maxY;++h)s=Vc(n,c,h),a=!1,e.containsKey(s)&&(a=(o=e.get(s)).getState()===dt)&&(a=!1!==r(o)),a||(u=!1);return u},n.prototype.getGutterForProjection=function(t){return 0},n.prototype.getKey=function(){return this.Pe},n.prototype.setKey=function(t){this.Pe!==t&&(this.Pe=t,this.changed())},n.prototype.getOpaque=function(t){return this.mu},n.prototype.getResolutions=function(){return this.tileGrid?this.tileGrid.getResolutions():null},n.prototype.getTile=function(t,n,i,e,o){return r()},n.prototype.getTileGrid=function(){return this.tileGrid},n.prototype.getTileGridForProjection=function(t){return this.tileGrid?this.tileGrid:Kh(t)},n.prototype.getTileCacheForProjection=function(t){return Mt(Tr(this.getProjection(),t),68),this.tileCache},n.prototype.getTilePixelRatio=function(t){return this.Gs},n.prototype.getTilePixelSize=function(t,n,i){var r=this.getTileGridForProjection(i),e=this.getTilePixelRatio(n),o=uu(r.getTileSize(t),this.tmpSize);return 1==e?o:au(o,e,this.tmpSize)},n.prototype.getTileCoordForTileUrlFunction=function(t,n){var i=void 0!==n?n:this.getProjection(),r=this.getTileGridForProjection(i);return this.getWrapX()&&i.isGlobal()&&(t=Yh(r,t,i)),Yc(t,r)?t:null},n.prototype.clear=function(){this.tileCache.clear()},n.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},n.prototype.updateCacheSize=function(t,n){var i=this.getTileCacheForProjection(n);t>i.highWaterMark&&(i.highWaterMark=t)},n.prototype.useTile=function(t,n,i,r){},n}(fd),dd=function(t){function n(n,i){var r=t.call(this,n)||this;return r.tile=i,r}return ld(n,t),n}(f),pd=vd,yd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),md=function(t){function n(i){var r=t.call(this,{attributions:i.attributions,cacheSize:i.cacheSize,opaque:i.opaque,projection:i.projection,state:i.state,tileGrid:i.tileGrid,tilePixelRatio:i.tilePixelRatio,wrapX:i.wrapX,transition:i.transition,interpolate:i.interpolate,key:i.key,attributionsCollapsible:i.attributionsCollapsible,zDirection:i.zDirection})||this;return r.wu=r.tileUrlFunction===n.prototype.tileUrlFunction,r.tileLoadFunction=i.tileLoadFunction,i.tileUrlFunction&&(r.tileUrlFunction=i.tileUrlFunction),r.urls=null,i.urls?r.setUrls(i.urls):i.url&&r.setUrl(i.url),r.bu={},r}return yd(n,t),n.prototype.getTileLoadFunction=function(){return this.tileLoadFunction},n.prototype.getTileUrlFunction=function(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction},n.prototype.getUrls=function(){return this.urls},n.prototype.handleTileChange=function(t){var n,i=t.target,r=o(i),e=i.getState();e==vt?(this.bu[r]=!0,n=sd):r in this.bu&&(delete this.bu[r],n=e==pt?ud:e==dt?ad:void 0),null!=n&&this.dispatchEvent(new dd(n,i))},n.prototype.setTileLoadFunction=function(t){this.tileCache.clear(),this.tileLoadFunction=t,this.changed()},n.prototype.setTileUrlFunction=function(t,n){this.tileUrlFunction=t,this.tileCache.pruneExceptNewestZ(),void 0!==n?this.setKey(n):this.changed()},n.prototype.setUrl=function(t){var n=af(t);this.urls=n,this.setUrls(n)},n.prototype.setUrls=function(t){this.urls=t;var n=t.join("\n");this.wu?this.setTileUrlFunction(ef(t,this.tileGrid),n):this.setKey(n)},n.prototype.tileUrlFunction=function(t,n,i){},n.prototype.useTile=function(t,n,i){var r=Vc(t,n,i);this.tileCache.containsKey(r)&&this.tileCache.get(r)},n}(pd),wd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function bd(t,n){t.getImage().src=n}var gd=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,opaque:n.opaque,projection:n.projection,state:n.state,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction?n.tileLoadFunction:bd,tilePixelRatio:n.tilePixelRatio,tileUrlFunction:n.tileUrlFunction,url:n.url,urls:n.urls,wrapX:n.wrapX,transition:n.transition,interpolate:r,key:n.key,attributionsCollapsible:n.attributionsCollapsible,zDirection:n.zDirection})||this).crossOrigin=void 0!==n.crossOrigin?n.crossOrigin:null,i.tileClass=void 0!==n.tileClass?n.tileClass:No,i.tileCacheForProjection={},i.tileGridForProjection={},i.gu=n.reprojectionErrorThreshold,i.xu=!1,i}return wd(n,t),n.prototype.canExpireCache=function(){if(this.tileCache.canExpireCache())return!0;for(var t in this.tileCacheForProjection)if(this.tileCacheForProjection[t].canExpireCache())return!0;return!1},n.prototype.expireCache=function(t,n){var i=this.getTileCacheForProjection(t);for(var r in this.tileCache.expireCache(this.tileCache==i?n:{}),this.tileCacheForProjection){var e=this.tileCacheForProjection[r];e.expireCache(e==i?n:{})}},n.prototype.getGutterForProjection=function(t){return this.getProjection()&&t&&!Tr(this.getProjection(),t)?0:this.getGutter()},n.prototype.getGutter=function(){return 0},n.prototype.getKey=function(){var n=t.prototype.getKey.call(this);return this.getInterpolate()||(n+=":disable-interpolation"),n},n.prototype.getOpaque=function(n){return!(this.getProjection()&&n&&!Tr(this.getProjection(),n))&&t.prototype.getOpaque.call(this,n)},n.prototype.getTileGridForProjection=function(t){var n=this.getProjection();if(!this.tileGrid||n&&!Tr(n,t)){var i=o(t);return i in this.tileGridForProjection||(this.tileGridForProjection[i]=Kh(t)),this.tileGridForProjection[i]}return this.tileGrid},n.prototype.getTileCacheForProjection=function(t){var n=this.getProjection();if(!n||Tr(n,t))return this.tileCache;var i=o(t);return i in this.tileCacheForProjection||(this.tileCacheForProjection[i]=new $c(this.tileCache.highWaterMark)),this.tileCacheForProjection[i]},n.prototype.ju=function(t,n,i,r,e,o){var s=[t,n,i],a=this.getTileCoordForTileUrlFunction(s,e),u=a?this.tileUrlFunction(a,r,e):void 0,c=new this.tileClass(s,void 0!==u?lt:yt,void 0!==u?u:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return c.key=o,c.addEventListener(N,this.handleTileChange.bind(this)),c},n.prototype.getTile=function(t,n,i,r,e){var o=this.getProjection();if(o&&e&&!Tr(o,e)){var s=this.getTileCacheForProjection(e),a=[t,n,i],u=void 0,c=Xc(a);s.containsKey(c)&&(u=s.get(c));var h=this.getKey();if(u&&u.key==h)return u;var f=this.getTileGridForProjection(o),l=this.getTileGridForProjection(e),v=this.getTileCoordForTileUrlFunction(a,e),d=new ml(o,f,e,l,a,v,this.getTilePixelRatio(r),this.getGutter(),function(t,n,i,r){return this.getTileInternal(t,n,i,r,o)}.bind(this),this.gu,this.xu,this.getInterpolate());return d.key=h,u?(d.interimTile=u,d.refreshInterimChain(),s.replace(c,d)):s.set(c,d),d}return this.getTileInternal(t,n,i,r,o||e)},n.prototype.getTileInternal=function(t,n,i,r,e){var o=null,s=Vc(t,n,i),a=this.getKey();if(this.tileCache.containsKey(s)){if((o=this.tileCache.get(s)).key!=a){var u=o;o=this.ju(t,n,i,r,e,a),u.getState()==lt?o.interimTile=u.interimTile:o.interimTile=u,o.refreshInterimChain(),this.tileCache.replace(s,o)}}else o=this.ju(t,n,i,r,e,a),this.tileCache.set(s,o);return o},n.prototype.setRenderReprojectionEdges=function(t){if(this.xu!=t){for(var n in this.xu=t,this.tileCacheForProjection)this.tileCacheForProjection[n].clear();this.changed()}},n.prototype.setTileGridForProjection=function(t,n){var i=gr(t);if(i){var r=o(i);r in this.tileGridForProjection||(this.tileGridForProjection[r]=n)}},n}(md),xd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function jd(t){var n,i,r=t[0],e=new Array(r),o=1<<r-1;for(n=0;n<r;++n)i=48,t[1]&o&&(i+=1),t[2]&o&&(i+=2),e[n]=String.fromCharCode(i),o>>=1;return e.join("")}for(var Sd=function(t){function n(n){var i=this,r=void 0!==n.hidpi&&n.hidpi,e=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(e=n.interpolate),(i=t.call(this,{cacheSize:n.cacheSize,crossOrigin:"anonymous",interpolate:e,opaque:!0,projection:gr("EPSG:3857"),reprojectionErrorThreshold:n.reprojectionErrorThreshold,state:ps,tileLoadFunction:n.tileLoadFunction,tilePixelRatio:r?2:1,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:n.zDirection})||this).Su=r,i.ku=void 0!==n.culture?n.culture:"en-us",i.Mu=void 0!==n.maxZoom?n.maxZoom:-1,i._u=n.key,i.Ou=n.imagerySet,mh("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+i.Ou+"?uriScheme=https&include=ImageryProviders&key="+i._u+"&c="+i.ku,i.handleImageryMetadataResponse.bind(i),void 0,"jsonp"),i}return xd(n,t),n.prototype.getApiKey=function(){return this._u},n.prototype.getImagerySet=function(){return this.Ou},n.prototype.handleImageryMetadataResponse=function(t){if(200==t.statusCode&&"OK"==t.statusDescription&&"ValidCredentials"==t.authenticationResultCode&&1==t.resourceSets.length&&1==t.resourceSets[0].resources.length){var n=t.resourceSets[0].resources[0],i=-1==this.Mu?n.zoomMax:this.Mu,r=nf(this.getProjection()),e=this.Su?2:1,o=n.imageWidth==n.imageHeight?n.imageWidth/e:[n.imageWidth/e,n.imageHeight/e],s=$h({extent:r,minZoom:n.zoomMin,maxZoom:i,tileSize:o});this.tileGrid=s;var a=this.ku,u=this.Su;if(this.tileUrlFunction=of(n.imageUrlSubdomains.map((function(t){var i=[0,0,0],r=n.imageUrl.replace("{subdomain}",t).replace("{culture}",a);return function(t,n,e){if(t){Wc(t[0],t[1],t[2],i);var o=r;return u&&(o+="&dpi=d1&device=mobile"),o.replace("{quadkey}",jd(i))}}}))),n.imageryProviders){var c=Er(gr("EPSG:4326"),this.getProjection());this.setAttributions(function(t){var i=[],r=t.viewState,e=this.getTileGrid(),o=e.getZForResolution(r.resolution,this.zDirection),s=e.getTileCoordForCoordAndZ(r.center,o)[0];return n.imageryProviders.map((function(n){for(var r=!1,e=n.coverageAreas,o=0,a=e.length;o<a;++o){var u=e[o];if(s>=u.zoomMin&&s<=u.zoomMax){var h=u.bbox;if(ni(si([h[1],h[0],h[3],h[2]],c),t.extent)){r=!0;break}}}r&&i.push(n.attribution)})),i.push('<a class="ol-attribution-bing-tos" href="https://www.microsoft.com/maps/product/terms.html" target="_blank">Terms of Use</a>'),i}.bind(this))}this.setState(ys)}else this.setState(ms)},n}(gd),kd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Md=function(t){function n(n){var i=n||{},r=void 0===i.imageSmoothing||i.imageSmoothing;void 0!==i.interpolate&&(r=i.interpolate);var e=void 0!==i.projection?i.projection:"EPSG:3857",o=void 0!==i.tileGrid?i.tileGrid:$h({extent:nf(e),maxResolution:i.maxResolution,maxZoom:i.maxZoom,minZoom:i.minZoom,tileSize:i.tileSize});return t.call(this,{attributions:i.attributions,cacheSize:i.cacheSize,crossOrigin:i.crossOrigin,interpolate:r,opaque:i.opaque,projection:e,reprojectionErrorThreshold:i.reprojectionErrorThreshold,tileGrid:o,tileLoadFunction:i.tileLoadFunction,tilePixelRatio:i.tilePixelRatio,tileUrlFunction:i.tileUrlFunction,url:i.url,urls:i.urls,wrapX:void 0===i.wrapX||i.wrapX,transition:i.transition,attributionsCollapsible:i.attributionsCollapsible,zDirection:i.zDirection})||this}return kd(n,t),n}(gd),_d=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Od=function(t){function n(n){var i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,maxZoom:void 0!==n.maxZoom?n.maxZoom:18,minZoom:n.minZoom,projection:n.projection,transition:n.transition,wrapX:n.wrapX,zDirection:n.zDirection})||this;return i.Tu=n.account,i.Eu=n.map||"",i.Au=n.config||{},i.Cu={},i.Ru(),i}return _d(n,t),n.prototype.getConfig=function(){return this.Au},n.prototype.updateConfig=function(t){E(this.Au,t),this.Ru()},n.prototype.setConfig=function(t){this.Au=t||{},this.Ru()},n.prototype.Ru=function(){var t=JSON.stringify(this.Au);if(this.Cu[t])this.Pu(this.Cu[t]);else{var n="https://"+this.Tu+".carto.com/api/v1/map";this.Eu&&(n+="/named/"+this.Eu);var i=new XMLHttpRequest;i.addEventListener("load",this.Iu.bind(this,t)),i.addEventListener("error",this.Nu.bind(this)),i.open("POST",n),i.setRequestHeader("Content-type","application/json"),i.send(JSON.stringify(this.Au))}},n.prototype.Iu=function(t,n){var i=n.target;if(!i.status||i.status>=200&&i.status<300){var r=void 0;try{r=JSON.parse(i.responseText)}catch(t){return void this.setState(ms)}this.Pu(r),this.Cu[t]=r,this.setState(ys)}else this.setState(ms)},n.prototype.Nu=function(t){this.setState(ms)},n.prototype.Pu=function(t){var n="https://"+t.cdn_url.https+"/"+this.Tu+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(n)},n}(Md),Td="addfeature",Ed="changefeature",Ad="clear",Cd="removefeature",Rd="featuresloadstart",Pd="featuresloadend",Id="featuresloaderror",Nd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),zd=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.feature=i,e.features=r,e}return Nd(n,t),n}(f),Fd=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{attributions:r.attributions,interpolate:!0,projection:void 0,state:ys,wrapX:void 0===r.wrapX||r.wrapX})||this).on,i.once,i.un,i.q=_,i.Fe=r.format,i.zu=void 0===r.overlaps||r.overlaps,i.Ge=r.url,void 0!==r.loader?i.q=r.loader:void 0!==i.Ge&&(Mt(i.Fe,7),i.q=dh(i.Ge,i.Fe)),i.Fu=void 0!==r.strategy?r.strategy:ph;var e,o,s=void 0===r.useSpatialIndex||r.useSpatialIndex;return i.Lu=s?new od:null,i.Gu=new od,i.Du=0,i.Uu={},i.qu={},i.Bu={},i.Wu={},i.Vu=null,Array.isArray(r.features)?o=r.features:r.features&&(o=(e=r.features).getArray()),s||void 0!==e||(e=new ft(o)),void 0!==o&&i.addFeaturesInternal(o),void 0!==e&&i.Xu(e),i}return Nd(n,t),n.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},n.prototype.addFeatureInternal=function(t){var n=o(t);if(this.Hu(n,t)){this.Ju(n,t);var i=t.getGeometry();if(i){var r=i.getExtent();this.Lu&&this.Lu.insert(r,t)}else this.Uu[n]=t;this.dispatchEvent(new zd(Td,t))}else this.Vu&&this.Vu.remove(t)},n.prototype.Ju=function(t,n){this.Wu[t]=[Y(n,N,this.Ku,this),Y(n,l,this.Ku,this)]},n.prototype.Hu=function(t,n){var i=!0,r=n.getId();return void 0!==r&&(r.toString()in this.qu?i=!1:this.qu[r.toString()]=n),i&&(Mt(!(t in this.Bu),30),this.Bu[t]=n),i},n.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},n.prototype.addFeaturesInternal=function(t){for(var n=[],i=[],r=[],e=0,s=t.length;e<s;e++){var a=o(c=t[e]);this.Hu(a,c)&&i.push(c)}e=0;for(var u=i.length;e<u;e++){var c;a=o(c=i[e]);this.Ju(a,c);var h=c.getGeometry();if(h){var f=h.getExtent();n.push(f),r.push(c)}else this.Uu[a]=c}if(this.Lu&&this.Lu.load(n,r),this.hasListener(Td)){e=0;for(var l=i.length;e<l;e++)this.dispatchEvent(new zd(Td,i[e]))}},n.prototype.Xu=function(t){var n=!1;this.addEventListener(Td,(function(i){n||(n=!0,t.push(i.feature),n=!1)})),this.addEventListener(Cd,(function(i){n||(n=!0,t.remove(i.feature),n=!1)})),t.addEventListener(st,function(t){n||(n=!0,this.addFeature(t.element),n=!1)}.bind(this)),t.addEventListener(at,function(t){n||(n=!0,this.removeFeature(t.element),n=!1)}.bind(this)),this.Vu=t},n.prototype.clear=function(t){if(t){for(var n in this.Wu){this.Wu[n].forEach($)}this.Vu||(this.Wu={},this.qu={},this.Bu={})}else if(this.Lu){var i=function(t){this.removeFeatureInternal(t)}.bind(this);for(var r in this.Lu.forEach(i),this.Uu)this.removeFeatureInternal(this.Uu[r])}this.Vu&&this.Vu.clear(),this.Lu&&this.Lu.clear(),this.Uu={};var e=new zd(Ad);this.dispatchEvent(e),this.changed()},n.prototype.forEachFeature=function(t){if(this.Lu)return this.Lu.forEach(t);this.Vu&&this.Vu.forEach(t)},n.prototype.forEachFeatureAtCoordinateDirect=function(t,n){var i=[t[0],t[1],t[0],t[1]];return this.forEachFeatureInExtent(i,(function(i){return i.getGeometry().intersectsCoordinate(t)?n(i):void 0}))},n.prototype.forEachFeatureInExtent=function(t,n){if(this.Lu)return this.Lu.forEachInExtent(t,n);this.Vu&&this.Vu.forEach(n)},n.prototype.forEachFeatureIntersectingExtent=function(t,n){return this.forEachFeatureInExtent(t,(function(i){if(i.getGeometry().intersectsExtent(t)){var r=n(i);if(r)return r}}))},n.prototype.getFeaturesCollection=function(){return this.Vu},n.prototype.getFeatures=function(){var t;return this.Vu?t=this.Vu.getArray().slice(0):this.Lu&&(t=this.Lu.getAll(),R(this.Uu)||b(t,C(this.Uu))),t},n.prototype.getFeaturesAtCoordinate=function(t){var n=[];return this.forEachFeatureAtCoordinateDirect(t,(function(t){n.push(t)})),n},n.prototype.getFeaturesInExtent=function(t){return this.Lu?this.Lu.getInExtent(t):this.Vu?this.Vu.getArray().slice(0):[]},n.prototype.getClosestFeatureToCoordinate=function(t,n){var i=t[0],r=t[1],e=null,o=[NaN,NaN],s=1/0,a=[-1/0,-1/0,1/0,1/0],u=n||k;return this.Lu.forEachInExtent(a,(function(t){if(u(t)){var n=t.getGeometry(),c=s;if((s=n.closestPointXY(i,r,o,s))<c){e=t;var h=Math.sqrt(s);a[0]=i-h,a[1]=r-h,a[2]=i+h,a[3]=r+h}}})),e},n.prototype.getExtent=function(t){return this.Lu.getExtent(t)},n.prototype.getFeatureById=function(t){var n=this.qu[t.toString()];return void 0!==n?n:null},n.prototype.getFeatureByUid=function(t){var n=this.Bu[t];return void 0!==n?n:null},n.prototype.getFormat=function(){return this.Fe},n.prototype.getOverlaps=function(){return this.zu},n.prototype.getUrl=function(){return this.Ge},n.prototype.Ku=function(t){var n=t.target,i=o(n),r=n.getGeometry();if(r){var e=r.getExtent();i in this.Uu?(delete this.Uu[i],this.Lu&&this.Lu.insert(e,n)):this.Lu&&this.Lu.update(e,n)}else i in this.Uu||(this.Lu&&this.Lu.remove(n),this.Uu[i]=n);var s=n.getId();if(void 0!==s){var a=s.toString();this.qu[a]!==n&&(this.Yu(n),this.qu[a]=n)}else this.Yu(n),this.Bu[i]=n;this.changed(),this.dispatchEvent(new zd(Ed,n))},n.prototype.hasFeature=function(t){var n=t.getId();return void 0!==n?n in this.qu:o(t)in this.Bu},n.prototype.isEmpty=function(){return this.Lu?this.Lu.isEmpty()&&R(this.Uu):!this.Vu||0===this.Vu.getLength()},n.prototype.loadFeatures=function(t,n,i){for(var r=this.Gu,e=this.Fu(t,n,i),o=function(t,o){var a=e[t];r.forEachInExtent(a,(function(t){return On(t.extent,a)}))||(++s.Du,s.dispatchEvent(new zd(Rd)),s.q.call(s,a,n,i,function(t){--this.Du,this.dispatchEvent(new zd(Pd,void 0,t))}.bind(s),function(){--this.Du,this.dispatchEvent(new zd(Id))}.bind(s)),r.insert(a,{extent:a.slice()}))},s=this,a=0,u=e.length;a<u;++a)o(a);this.loading=!(this.q.length<4)&&this.Du>0},n.prototype.refresh=function(){this.clear(!0),this.Gu.clear(),t.prototype.refresh.call(this)},n.prototype.removeLoadedExtent=function(t){var n,i=this.Gu;i.forEachInExtent(t,(function(i){if(Nn(i.extent,t))return n=i,!0})),n&&i.remove(n)},n.prototype.removeFeature=function(t){if(t){var n=o(t);n in this.Uu?delete this.Uu[n]:this.Lu&&this.Lu.remove(t),this.removeFeatureInternal(t)&&this.changed()}},n.prototype.removeFeatureInternal=function(t){var n=o(t),i=this.Wu[n];if(i){i.forEach($),delete this.Wu[n];var r=t.getId();return void 0!==r&&delete this.qu[r.toString()],delete this.Bu[n],this.dispatchEvent(new zd(Cd,t)),t}},n.prototype.Yu=function(t){var n=!1;for(var i in this.qu)if(this.qu[i]===t){delete this.qu[i],n=!0;break}return n},n.prototype.setLoader=function(t){this.q=t},n.prototype.setUrl=function(t){Mt(this.Fe,7),this.Ge=t,this.setLoader(dh(t,this.Fe))},n}(fd),Ld=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Gd=function(t){function n(n){var i=t.call(this,{attributions:n.attributions,wrapX:n.wrapX})||this;return i.resolution=void 0,i.distance=void 0!==n.distance?n.distance:20,i.minDistance=n.minDistance||0,i.interpolationRatio=0,i.features=[],i.geometryFunction=n.geometryFunction||function(t){var n=t.getGeometry();return Mt(n.getType()==Pt.POINT,10),n},i.Zu=n.createCluster,i.source=null,i.$u=i.refresh.bind(i),i.updateDistance(i.distance,i.minDistance),i.setSource(n.source||null),i}return Ld(n,t),n.prototype.clear=function(n){this.features.length=0,t.prototype.clear.call(this,n)},n.prototype.getDistance=function(){return this.distance},n.prototype.getSource=function(){return this.source},n.prototype.loadFeatures=function(t,n,i){this.source.loadFeatures(t,n,i),n!==this.resolution&&(this.resolution=n,this.refresh())},n.prototype.setDistance=function(t){this.updateDistance(t,this.minDistance)},n.prototype.setMinDistance=function(t){this.updateDistance(this.distance,t)},n.prototype.getMinDistance=function(){return this.minDistance},n.prototype.setSource=function(t){this.source&&this.source.removeEventListener(N,this.$u),this.source=t,t&&t.addEventListener(N,this.$u),this.refresh()},n.prototype.refresh=function(){this.clear(),this.cluster(),this.addFeatures(this.features)},n.prototype.updateDistance=function(t,n){var i=0===t?0:Math.min(n,t)/t,r=t!==this.distance||this.interpolationRatio!==i;this.distance=t,this.minDistance=n,this.interpolationRatio=i,r&&this.refresh()},n.prototype.cluster=function(){if(void 0!==this.resolution&&this.source)for(var t=[1/0,1/0,-1/0,-1/0],n=this.distance*this.resolution,i=this.source.getFeatures(),r={},e=0,s=i.length;e<s;e++){var a=i[e];if(!(o(a)in r)){var u=this.geometryFunction(a);if(u){Pn(u.getCoordinates(),t),Sn(t,n,t);var c=this.source.getFeaturesInExtent(t).filter((function(t){var n=o(t);return!(n in r)&&(r[n]=!0,!0)}));this.features.push(this.createCluster(c,t))}}}},n.prototype.createCluster=function(t,n){for(var i=[0,0],r=t.length-1;r>=0;--r){var e=this.geometryFunction(t[r]);e?Ki(i,e.getCoordinates()):t.splice(r,1)}ir(i,1/t.length);var o=Hn(n),s=this.interpolationRatio,a=new Te([i[0]*(1-s)+o[0]*s,i[1]*(1-s)+o[1]*s]);return this.Zu?this.Zu(a,t):new Tt({geometry:a,features:t})},n}(Fd),Dd=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ud=function(t){function n(n){var i=this,r=void 0===n.projection?"EPSG:3857":n.projection,e=n.tileGrid;return void 0===e&&r&&(e=$h({extent:nf(r),maxResolution:n.maxResolution,maxZoom:n.maxZoom,minZoom:n.minZoom,tileSize:n.tileSize})),(i=t.call(this,{cacheSize:.1,attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,projection:r,tileGrid:e,opaque:n.opaque,state:n.state,tilePixelRatio:n.tilePixelRatio,wrapX:n.wrapX,transition:n.transition,interpolate:n.interpolate})||this).bu={},i.q=n.loader,i.hr=i.hr.bind(i),i.bandCount=void 0===n.bandCount?4:n.bandCount,i}return Dd(n,t),n.prototype.setLoader=function(t){this.q=t},n.prototype.getTile=function(t,n,i,r,e){var o=Vc(t,n,i);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var s=this.q;var a=new kt(E({tileCoord:[t,n,i],loader:function(){return T((function(){return s(t,n,i)}))}},this.tileOptions));return a.key=this.getKey(),a.addEventListener(N,this.hr),this.tileCache.set(o,a),a},n.prototype.hr=function(t){var n,i=t.target,r=o(i),e=i.getState();e==vt?(this.bu[r]=!0,n=sd):r in this.bu&&(delete this.bu[r],n=e==pt?ud:e==dt?ad:void 0),n&&this.dispatchEvent(new dd(n,i))},n}(pd),qd=new ArrayBuffer(4),Bd=new Float32Array(qd),Wd=new Uint32Array(qd),Vd=new Uint32Array(512),Xd=new Uint32Array(512),Hd=0;Hd<256;++Hd){var Jd=Hd-127;Jd<-27?(Vd[Hd]=0,Vd[256|Hd]=32768,Xd[Hd]=24,Xd[256|Hd]=24):Jd<-14?(Vd[Hd]=1024>>-Jd-14,Vd[256|Hd]=1024>>-Jd-14|32768,Xd[Hd]=-Jd-1,Xd[256|Hd]=-Jd-1):Jd<=15?(Vd[Hd]=Jd+15<<10,Vd[256|Hd]=Jd+15<<10|32768,Xd[Hd]=13,Xd[256|Hd]=13):Jd<128?(Vd[Hd]=31744,Vd[256|Hd]=64512,Xd[Hd]=24,Xd[256|Hd]=24):(Vd[Hd]=31744,Vd[256|Hd]=64512,Xd[Hd]=13,Xd[256|Hd]=13)}var Kd=new Uint32Array(2048),Yd=new Uint32Array(64),Zd=new Uint32Array(64);Kd[0]=0;for(var $d=1;$d<1024;++$d){for(var Qd=$d<<13,tp=0;0==(8388608&Qd);)tp-=8388608,Qd<<=1;Qd&=-8388609,tp+=947912704,Kd[$d]=Qd|tp}for(var np=1024;np<2048;++np)Kd[np]=939524096+(np-1024<<13);Yd[0]=0;for(var ip=1;ip<31;++ip)Yd[ip]=ip<<23;Yd[31]=1199570944,Yd[32]=2147483648;for(var rp=33;rp<63;++rp)Yd[rp]=2147483648+(rp-32<<23);Yd[63]=3347054592,Zd[0]=0;for(var ep=1;ep<64;++ep)Zd[ep]=32===ep?0:1024;function op(t){var n=t>>10;return Wd[0]=Kd[Zd[n]+(1023&t)]+Yd[n],Bd[0]}var sp=Reflect.getPrototypeOf(Uint8Array).prototype,ap=Reflect.getOwnPropertyDescriptor(sp,Symbol.toStringTag).get;function up(t){return void 0!==ap.call(t)}var cp=Object.prototype.toString;function hp(t){return!!ArrayBuffer.isView(t)&&(!up(t)&&"[object DataView]"===cp.call(t))}function fp(t,n){if(!hp(t))throw new TypeError("First argument to getFloat16 function must be a DataView");for(var i=arguments.length,r=new Array(i>2?i-2:0),e=2;e<i;e++)r[e-2]=arguments[e];return op(t.getUint16.apply(t,[n].concat(r)))}var lp=i(802),vp=i(51),dp=i(150);function pp(t,n){for(var i,r=t.width,e=t.height,o=new Uint8Array(r*e*3),s=0,a=0;s<t.length;++s,a+=3)i=256-t[s]/n*256,o[a]=i,o[a+1]=i,o[a+2]=i;return o}function yp(t,n){for(var i,r=t.width,e=t.height,o=new Uint8Array(r*e*3),s=0,a=0;s<t.length;++s,a+=3)i=t[s]/n*256,o[a]=i,o[a+1]=i,o[a+2]=i;return o}function mp(t,n){for(var i=t.width,r=t.height,e=new Uint8Array(i*r*3),o=n.length/3,s=n.length/3*2,a=0,u=0;a<t.length;++a,u+=3){var c=t[a];e[u]=n[c]/65536*256,e[u+1]=n[c+o]/65536*256,e[u+2]=n[c+s]/65536*256}return e}function wp(t){for(var n=t.width,i=t.height,r=new Uint8Array(n*i*3),e=0,o=0;e<t.length;e+=4,o+=3){var s=t[e],a=t[e+1],u=t[e+2],c=t[e+3];r[o]=(255-s)/256*255*((255-c)/256),r[o+1]=(255-a)/256*255*((255-c)/256),r[o+2]=(255-u)/256*255*((255-c)/256)}return r}function bp(t){for(var n=t.width,i=t.height,r=new Uint8ClampedArray(n*i*3),e=0,o=0;e<t.length;e+=3,o+=3){var s=t[e],a=t[e+1],u=t[e+2];r[o]=s+1.402*(u-128),r[o+1]=s-.34414*(a-128)-.71414*(u-128),r[o+2]=s+1.772*(a-128)}return r}function gp(t){for(var n=t.width,i=t.height,r=new Uint8Array(n*i*3),e=0,o=0;e<t.length;e+=3,o+=3){var s=(t[e+0]+16)/116,a=(t[e+1]<<24>>24)/500+s,u=s-(t[e+2]<<24>>24)/200,c=void 0,h=void 0,f=void 0;h=-.9689*(a=.95047*(a*a*a>.008856?a*a*a:(a-16/116)/7.787))+1.8758*(s=1*(s*s*s>.008856?s*s*s:(s-16/116)/7.787))+.0415*(u=1.08883*(u*u*u>.008856?u*u*u:(u-16/116)/7.787)),f=.0557*a+-.204*s+1.057*u,c=(c=3.2406*a+-1.5372*s+-.4986*u)>.0031308?1.055*Math.pow(c,1/2.4)-.055:12.92*c,h=h>.0031308?1.055*Math.pow(h,1/2.4)-.055:12.92*h,f=f>.0031308?1.055*Math.pow(f,1/2.4)-.055:12.92*f,r[o]=255*Math.max(0,Math.min(1,c)),r[o+1]=255*Math.max(0,Math.min(1,h)),r[o+2]=255*Math.max(0,Math.min(1,f))}return r}function xp(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function jp(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){xp(o,r,e,s,a,"next",t)}function a(t){xp(o,r,e,s,a,"throw",t)}s(void 0)}))}}var Sp=new Map;function kp(t,n){Array.isArray(t)||(t=[t]),t.forEach((function(t){return Sp.set(t,n)}))}function Mp(t){return _p.apply(this,arguments)}function _p(){return(_p=jp(regeneratorRuntime.mark((function t(n){var i,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=Sp.get(n.Compression)){t.next=3;break}throw new Error("Unknown compression method identifier: ".concat(n.Compression));case 3:return t.next=5,i();case 5:return r=t.sent,t.abrupt("return",new r(n));case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Op(t,n,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return new(Object.getPrototypeOf(t).constructor)(n*i*r)}function Tp(t,n,i,r,e){var o=n/r,s=i/e;return t.map((function(t){for(var a=Op(t,r,e),u=0;u<e;++u)for(var c=Math.min(Math.round(s*u),i-1),h=0;h<r;++h){var f=Math.min(Math.round(o*h),n-1),l=t[c*n+f];a[u*r+h]=l}return a}))}function Ep(t,n,i){return(1-i)*t+i*n}function Ap(t,n,i,r,e){var o=n/r,s=i/e;return t.map((function(t){for(var a=Op(t,r,e),u=0;u<e;++u)for(var c=s*u,h=Math.floor(c),f=Math.min(Math.ceil(c),i-1),l=0;l<r;++l){var v=o*l,d=v%1,p=Math.floor(v),y=Math.min(Math.ceil(v),n-1),m=t[h*n+p],w=t[h*n+y],b=t[f*n+p],g=t[f*n+y],x=Ep(Ep(m,w,d),Ep(b,g,d),c%1);a[u*r+l]=x}return a}))}function Cp(t,n,i,r,e){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"nearest";switch(o.toLowerCase()){case"nearest":return Tp(t,n,i,r,e);case"bilinear":case"linear":return Ap(t,n,i,r,e);default:throw new Error("Unsupported resampling method: '".concat(o,"'"))}}function Rp(t,n,i,r,e,o){for(var s=n/r,a=i/e,u=Op(t,r,e,o),c=0;c<e;++c)for(var h=Math.min(Math.round(a*c),i-1),f=0;f<r;++f)for(var l=Math.min(Math.round(s*f),n-1),v=0;v<o;++v){var d=t[h*n*o+l*o+v];u[c*r*o+f*o+v]=d}return u}function Pp(t,n,i,r,e,o){for(var s=n/r,a=i/e,u=Op(t,r,e,o),c=0;c<e;++c)for(var h=a*c,f=Math.floor(h),l=Math.min(Math.ceil(h),i-1),v=0;v<r;++v)for(var d=s*v,p=d%1,y=Math.floor(d),m=Math.min(Math.ceil(d),n-1),w=0;w<o;++w){var b=t[f*n*o+y*o+w],g=t[f*n*o+m*o+w],x=t[l*n*o+y*o+w],j=t[l*n*o+m*o+w],S=Ep(Ep(b,g,p),Ep(x,j,p),h%1);u[c*r*o+v*o+w]=S}return u}function Ip(t,n,i,r,e,o){var s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"nearest";switch(s.toLowerCase()){case"nearest":return Rp(t,n,i,r,e,o);case"bilinear":case"linear":return Pp(t,n,i,r,e,o);default:throw new Error("Unsupported resampling method: '".concat(s,"'"))}}function Np(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==i)return;var r,e,o=[],s=!0,a=!1;try{for(i=i.call(t);!(s=(r=i.next()).done)&&(o.push(r.value),!n||o.length!==n);s=!0);}catch(t){a=!0,e=t}finally{try{s||null==i.return||i.return()}finally{if(a)throw e}}return o}(t,n)||function(t,n){if(!t)return;if("string"==typeof t)return zp(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return zp(t,n)}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function zp(t,n){(null==n||n>t.length)&&(n=t.length);for(var i=0,r=new Array(n);i<n;i++)r[i]=t[i];return r}function Fp(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function Lp(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){Fp(o,r,e,s,a,"next",t)}function a(t){Fp(o,r,e,s,a,"throw",t)}s(void 0)}))}}function Gp(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function Dp(t,n,i){for(var r=0,e=n;e<i;++e)r+=t[e];return r}function Up(t,n,i){switch(t){case 1:if(n<=8)return new Uint8Array(i);if(n<=16)return new Uint16Array(i);if(n<=32)return new Uint32Array(i);break;case 2:if(8===n)return new Int8Array(i);if(16===n)return new Int16Array(i);if(32===n)return new Int32Array(i);break;case 3:switch(n){case 16:case 32:return new Float32Array(i);case 64:return new Float64Array(i)}}throw Error("Unsupported data format/bitsPerSample")}function qp(t,n){return(1!==t&&2!==t||!(n<=32)||n%8!=0)&&(3!==t||16!==n&&32!==n&&64!==n)}function Bp(t,n,i,r,e,o,s){var a=new DataView(t),u=2===i?1:r,c=Up(n,e,2===i?s*o:s*o*r),h=parseInt("1".repeat(e),2);if(1===n){var f=o*(1===i?r*e:e);0!=(7&f)&&(f=f+7&-8);for(var l=0;l<s;++l)for(var v=l*f,d=0;d<o;++d)for(var p=v+d*u*e,y=0;y<u;++y){var m=p+y*e,w=(l*o+d)*u+y,b=Math.floor(m/8),g=m%8;if(g+e<=8)c[w]=a.getUint8(b)>>8-e-g&h;else if(g+e<=16)c[w]=a.getUint16(b)>>16-e-g&h;else if(g+e<=24){var x=a.getUint16(b)<<8|a.getUint8(b+2);c[w]=x>>24-e-g&h}else c[w]=a.getUint32(b)>>32-e-g&h}}return c.buffer}kp([void 0,1],(function(){return i.e(226).then(i.bind(i,966)).then((function(t){return t.default}))})),kp(5,(function(){return i.e(611).then(i.bind(i,611)).then((function(t){return t.default}))})),kp(6,(function(){throw new Error("old style JPEG compression is not supported.")})),kp(7,(function(){return i.e(382).then(i.bind(i,382)).then((function(t){return t.default}))})),kp([8,32946],(function(){return Promise.all([i.e(247),i.e(356)]).then(i.bind(i,356)).then((function(t){return t.default}))})),kp(32773,(function(){return i.e(395).then(i.bind(i,395)).then((function(t){return t.default}))})),kp(34887,(function(){return Promise.all([i.e(247),i.e(54)]).then(i.bind(i,54)).then((function(t){return t.default}))})),kp(50001,(function(){return i.e(629).then(i.bind(i,629)).then((function(t){return t.default}))}));var Wp=function(){function t(n,i,r,e,o,s){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t),this.fileDirectory=n,this.geoKeys=i,this.dataView=r,this.littleEndian=e,this.tiles=o?{}:null,this.isTiled=!n.StripOffsets;var a=n.PlanarConfiguration;if(this.planarConfiguration=void 0===a?1:a,1!==this.planarConfiguration&&2!==this.planarConfiguration)throw new Error("Invalid planar configuration.");this.source=s}var n,i,r,e,o,s,a;return n=t,(i=[{key:"getFileDirectory",value:function(){return this.fileDirectory}},{key:"getGeoKeys",value:function(){return this.geoKeys}},{key:"getWidth",value:function(){return this.fileDirectory.ImageWidth}},{key:"getHeight",value:function(){return this.fileDirectory.ImageLength}},{key:"getSamplesPerPixel",value:function(){return void 0!==this.fileDirectory.SamplesPerPixel?this.fileDirectory.SamplesPerPixel:1}},{key:"getTileWidth",value:function(){return this.isTiled?this.fileDirectory.TileWidth:this.getWidth()}},{key:"getTileHeight",value:function(){return this.isTiled?this.fileDirectory.TileLength:void 0!==this.fileDirectory.RowsPerStrip?Math.min(this.fileDirectory.RowsPerStrip,this.getHeight()):this.getHeight()}},{key:"getBlockWidth",value:function(){return this.getTileWidth()}},{key:"getBlockHeight",value:function(t){return this.isTiled||(t+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-t*this.getTileHeight()}},{key:"getBytesPerPixel",value:function(){for(var t=0,n=0;n<this.fileDirectory.BitsPerSample.length;++n)t+=this.getSampleByteSize(n);return t}},{key:"getSampleByteSize",value:function(t){if(t>=this.fileDirectory.BitsPerSample.length)throw new RangeError("Sample index ".concat(t," is out of range."));return Math.ceil(this.fileDirectory.BitsPerSample[t]/8)}},{key:"getReaderForSample",value:function(t){var n=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1,i=this.fileDirectory.BitsPerSample[t];switch(n){case 1:if(i<=8)return DataView.prototype.getUint8;if(i<=16)return DataView.prototype.getUint16;if(i<=32)return DataView.prototype.getUint32;break;case 2:if(i<=8)return DataView.prototype.getInt8;if(i<=16)return DataView.prototype.getInt16;if(i<=32)return DataView.prototype.getInt32;break;case 3:switch(i){case 16:return function(t,n){return fp(this,t,n)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}},{key:"getSampleFormat",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1}},{key:"getBitsPerSample",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.fileDirectory.BitsPerSample[t]}},{key:"getArrayForSample",value:function(t,n){return Up(this.getSampleFormat(t),this.getBitsPerSample(t),n)}},{key:"getTileOrStrip",value:(a=Lp(regeneratorRuntime.mark((function t(n,i,r,e,o){var s,a,u,c,h,f,l,v,d=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s=Math.ceil(this.getWidth()/this.getTileWidth()),a=Math.ceil(this.getHeight()/this.getTileHeight()),c=this.tiles,1===this.planarConfiguration?u=i*s+n:2===this.planarConfiguration&&(u=r*s*a+i*s+n),this.isTiled?(h=this.fileDirectory.TileOffsets[u],f=this.fileDirectory.TileByteCounts[u]):(h=this.fileDirectory.StripOffsets[u],f=this.fileDirectory.StripByteCounts[u]),t.next=7,this.source.fetch([{offset:h,length:f}],o);case 7:return l=t.sent[0],null!==c&&c[u]?v=c[u]:(v=Lp(regeneratorRuntime.mark((function t(){var n,r,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.decode(d.fileDirectory,l);case 2:return n=t.sent,r=d.getSampleFormat(),o=d.getBitsPerSample(),qp(r,o)&&(n=Bp(n,r,d.planarConfiguration,d.getSamplesPerPixel(),o,d.getTileWidth(),d.getBlockHeight(i))),t.abrupt("return",n);case 7:case"end":return t.stop()}}),t)})))(),null!==c&&(c[u]=v)),t.t0=n,t.t1=i,t.t2=r,t.next=14,v;case 14:return t.t3=t.sent,t.abrupt("return",{x:t.t0,y:t.t1,sample:t.t2,data:t.t3});case 16:case"end":return t.stop()}}),t,this)}))),function(t,n,i,r,e){return a.apply(this,arguments)})},{key:"_readRaster",value:(s=Lp(regeneratorRuntime.mark((function t(n,i,r,e,o,s,a,u,c){var h,f,l,v,d,p,y,m,w,b,g,x,j,S,k,M,_,O,T,E,A=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(h=this.getTileWidth(),f=this.getTileHeight(),l=this.getWidth(),v=this.getHeight(),d=Math.max(Math.floor(n[0]/h),0),p=Math.min(Math.ceil(n[2]/h),Math.ceil(l/h)),y=Math.max(Math.floor(n[1]/f),0),m=Math.min(Math.ceil(n[3]/f),Math.ceil(v/f)),w=n[2]-n[0],b=this.getBytesPerPixel(),g=[],x=[],j=0;j<i.length;++j)1===this.planarConfiguration?g.push(Dp(this.fileDirectory.BitsPerSample,0,i[j])/8):g.push(0),x.push(this.getReaderForSample(i[j]));for(S=[],k=this.littleEndian,M=y;M<m;++M)for(_=d;_<p;++_)for(O=function(t){var s=t,a=i[t];2===A.planarConfiguration&&(b=A.getSampleByteSize(t));var u=A.getTileOrStrip(_,M,a,o,c);S.push(u),u.then((function(t){for(var o=t.data,a=new DataView(o),u=A.getBlockHeight(t.y),c=t.y*f,d=t.x*h,p=c+u,y=(t.x+1)*h,m=x[s],j=Math.min(u,u-(p-n[3]),v-c),S=Math.min(h,h-(y-n[2]),l-d),M=Math.max(0,n[1]-c);M<j;++M)for(var _=Math.max(0,n[0]-d);_<S;++_){var O=(M*h+_)*b,T=m.call(a,O+g[s],k),E=void 0;e?(E=(M+c-n[1])*w*i.length+(_+d-n[0])*i.length+s,r[E]=T):(E=(M+c-n[1])*w+_+d-n[0],r[s][E]=T)}}))},T=0;T<i.length;++T)O(T);return t.next=18,Promise.all(S);case 18:if(!(s&&n[2]-n[0]!==s||a&&n[3]-n[1]!==a)){t.next=23;break}return(E=e?Ip(r,n[2]-n[0],n[3]-n[1],s,a,i.length,u):Cp(r,n[2]-n[0],n[3]-n[1],s,a,u)).width=s,E.height=a,t.abrupt("return",E);case 23:return r.width=s||n[2]-n[0],r.height=a||n[3]-n[1],t.abrupt("return",r);case 26:case"end":return t.stop()}}),t,this)}))),function(t,n,i,r,e,o,a,u,c){return s.apply(this,arguments)})},{key:"readRasters",value:(o=Lp(regeneratorRuntime.mark((function t(){var n,i,r,e,o,s,a,u,c,h,f,l,v,d,p,y,m,w,b,g,x,j,S,k,M,_,O=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=O.length>0&&void 0!==O[0]?O[0]:{},i=n.window,r=n.samples,e=void 0===r?[]:r,o=n.interleave,s=n.pool,a=void 0===s?null:s,u=n.width,c=n.height,h=n.resampleMethod,f=n.fillValue,l=n.signal,!((v=i||[0,0,this.getWidth(),this.getHeight()])[0]>v[2]||v[1]>v[3])){t.next=4;break}throw new Error("Invalid subsets");case 4:if(d=v[2]-v[0],p=v[3]-v[1],y=d*p,m=this.getSamplesPerPixel(),e&&e.length){t.next=12;break}for(w=0;w<m;++w)e.push(w);t.next=19;break;case 12:b=0;case 13:if(!(b<e.length)){t.next=19;break}if(!(e[b]>=m)){t.next=16;break}return t.abrupt("return",Promise.reject(new RangeError("Invalid sample index '".concat(e[b],"'."))));case 16:++b,t.next=13;break;case 19:if(o)x=this.fileDirectory.SampleFormat?Math.max.apply(null,this.fileDirectory.SampleFormat):1,j=Math.max.apply(null,this.fileDirectory.BitsPerSample),g=Up(x,j,y*e.length),f&&g.fill(f);else for(g=[],S=0;S<e.length;++S)k=this.getArrayForSample(e[S],y),Array.isArray(f)&&S<f.length?k.fill(f[S]):f&&!Array.isArray(f)&&k.fill(f),g.push(k);if(t.t0=a,t.t0){t.next=25;break}return t.next=24,Mp(this.fileDirectory);case 24:t.t0=t.sent;case 25:return M=t.t0,t.next=28,this._readRaster(v,e,g,o,M,u,c,h,l);case 28:return _=t.sent,t.abrupt("return",_);case 30:case"end":return t.stop()}}),t,this)}))),function(){return o.apply(this,arguments)})},{key:"readRGB",value:(e=Lp(regeneratorRuntime.mark((function t(){var n,i,r,e,o,s,a,u,c,h,f,l,v,d,p,y,m,w,b,g,x,j,S,k,M,_,O,T=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=T.length>0&&void 0!==T[0]?T[0]:{},i=n.window,r=n.interleave,e=void 0===r||r,o=n.pool,s=void 0===o?null:o,a=n.width,u=n.height,c=n.resampleMethod,h=n.enableAlpha,f=void 0!==h&&h,l=n.signal,!((v=i||[0,0,this.getWidth(),this.getHeight()])[0]>v[2]||v[1]>v[3])){t.next=4;break}throw new Error("Invalid subsets");case 4:if((d=this.fileDirectory.PhotometricInterpretation)!==dp.Ie.RGB){t.next=9;break}if(p=[0,1,2],this.fileDirectory.ExtraSamples!==dp.pd.Unspecified&&f)for(p=[],y=0;y<this.fileDirectory.BitsPerSample.length;y+=1)p.push(y);return t.abrupt("return",this.readRasters({window:i,interleave:e,samples:p,pool:s,width:a,height:u,resampleMethod:c,signal:l}));case 9:t.t0=d,t.next=t.t0===dp.Ie.WhiteIsZero||t.t0===dp.Ie.BlackIsZero||t.t0===dp.Ie.Palette?12:t.t0===dp.Ie.CMYK?14:t.t0===dp.Ie.YCbCr||t.t0===dp.Ie.CIELab?16:18;break;case 12:return m=[0],t.abrupt("break",19);case 14:return m=[0,1,2,3],t.abrupt("break",19);case 16:return m=[0,1,2],t.abrupt("break",19);case 18:throw new Error("Invalid or unsupported photometric interpretation.");case 19:return w={window:v,interleave:!0,samples:m,pool:s,width:a,height:u,resampleMethod:c,signal:l},b=this.fileDirectory,t.next=23,this.readRasters(w);case 23:g=t.sent,x=Math.pow(2,this.fileDirectory.BitsPerSample[0]),t.t1=d,t.next=t.t1===dp.Ie.WhiteIsZero?28:t.t1===dp.Ie.BlackIsZero?30:t.t1===dp.Ie.Palette?32:t.t1===dp.Ie.CMYK?34:t.t1===dp.Ie.YCbCr?36:t.t1===dp.Ie.CIELab?38:40;break;case 28:return j=pp(g,x),t.abrupt("break",41);case 30:return j=yp(g,x),t.abrupt("break",41);case 32:return j=mp(g,b.ColorMap),t.abrupt("break",41);case 34:return j=wp(g),t.abrupt("break",41);case 36:return j=bp(g),t.abrupt("break",41);case 38:return j=gp(g),t.abrupt("break",41);case 40:throw new Error("Unsupported photometric interpretation.");case 41:if(!e){for(S=new Uint8Array(j.length/3),k=new Uint8Array(j.length/3),M=new Uint8Array(j.length/3),_=0,O=0;_<j.length;_+=3,++O)S[O]=j[_],k[O]=j[_+1],M[O]=j[_+2];j=[S,k,M]}return j.width=g.width,j.height=g.height,t.abrupt("return",j);case 45:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"getTiePoints",value:function(){if(!this.fileDirectory.ModelTiepoint)return[];for(var t=[],n=0;n<this.fileDirectory.ModelTiepoint.length;n+=6)t.push({i:this.fileDirectory.ModelTiepoint[n],j:this.fileDirectory.ModelTiepoint[n+1],k:this.fileDirectory.ModelTiepoint[n+2],x:this.fileDirectory.ModelTiepoint[n+3],y:this.fileDirectory.ModelTiepoint[n+4],z:this.fileDirectory.ModelTiepoint[n+5]});return t}},{key:"getGDALMetadata",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n={};if(!this.fileDirectory.GDAL_METADATA)return null;var i=this.fileDirectory.GDAL_METADATA,r=vp(i,"Item");r=null===t?r.filter((function(t){return void 0===lp(t,"sample")})):r.filter((function(n){return Number(lp(n,"sample"))===t}));for(var e=0;e<r.length;++e){var o=r[e];n[lp(o,"name")]=o.inner}return n}},{key:"getGDALNoData",value:function(){if(!this.fileDirectory.GDAL_NODATA)return null;var t=this.fileDirectory.GDAL_NODATA;return Number(t.substring(0,t.length-1))}},{key:"getOrigin",value:function(){var t=this.fileDirectory.ModelTiepoint,n=this.fileDirectory.ModelTransformation;if(t&&6===t.length)return[t[3],t[4],t[5]];if(n)return[n[3],n[7],n[11]];throw new Error("The image does not have an affine transformation.")}},{key:"getResolution",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=this.fileDirectory.ModelPixelScale,i=this.fileDirectory.ModelTransformation;if(n)return[n[0],-n[1],n[2]];if(i)return[i[0],i[5],i[10]];if(t){var r=t.getResolution(),e=Np(r,3),o=e[0],s=e[1],a=e[2];return[o*t.getWidth()/this.getWidth(),s*t.getHeight()/this.getHeight(),a*t.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}},{key:"pixelIsArea",value:function(){return 1===this.geoKeys.GTRasterTypeGeoKey}},{key:"getBoundingBox",value:function(){var t=this.getOrigin(),n=this.getResolution(),i=t[0],r=t[1],e=i+n[0]*this.getWidth(),o=r+n[1]*this.getHeight();return[Math.min(i,e),Math.min(r,o),Math.max(i,e),Math.max(r,o)]}}])&&Gp(n.prototype,i),r&&Gp(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();function Vp(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var Xp=function(){function t(n){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t),this._dataView=new DataView(n)}var n,i,r;return n=t,(i=[{key:"buffer",get:function(){return this._dataView.buffer}},{key:"getUint64",value:function(t,n){var i,r=this.getUint32(t,n),e=this.getUint32(t+4,n);if(n){if(i=r+Math.pow(2,32)*e,!Number.isSafeInteger(i))throw new Error("".concat(i," exceeds MAX_SAFE_INTEGER. ")+"Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues");return i}if(i=Math.pow(2,32)*r+e,!Number.isSafeInteger(i))throw new Error("".concat(i," exceeds MAX_SAFE_INTEGER. ")+"Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues");return i}},{key:"getInt64",value:function(t,n){for(var i=0,r=(128&this._dataView.getUint8(t+(n?7:0)))>0,e=!0,o=0;o<8;o++){var s=this._dataView.getUint8(t+(n?o:7-o));r&&(e?0!==s&&(s=255&~(s-1),e=!1):s=255&~s),i+=s*Math.pow(256,o)}return r&&(i=-i),i}},{key:"getUint8",value:function(t,n){return this._dataView.getUint8(t,n)}},{key:"getInt8",value:function(t,n){return this._dataView.getInt8(t,n)}},{key:"getUint16",value:function(t,n){return this._dataView.getUint16(t,n)}},{key:"getInt16",value:function(t,n){return this._dataView.getInt16(t,n)}},{key:"getUint32",value:function(t,n){return this._dataView.getUint32(t,n)}},{key:"getInt32",value:function(t,n){return this._dataView.getInt32(t,n)}},{key:"getFloat16",value:function(t,n){return fp(this._dataView,t,n)}},{key:"getFloat32",value:function(t,n){return this._dataView.getFloat32(t,n)}},{key:"getFloat64",value:function(t,n){return this._dataView.getFloat64(t,n)}}])&&Vp(n.prototype,i),r&&Vp(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();function Hp(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var Jp=function(){function t(n,i,r,e){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t),this._dataView=new DataView(n),this._sliceOffset=i,this._littleEndian=r,this._bigTiff=e}var n,i,r;return n=t,(i=[{key:"sliceOffset",get:function(){return this._sliceOffset}},{key:"sliceTop",get:function(){return this._sliceOffset+this.buffer.byteLength}},{key:"littleEndian",get:function(){return this._littleEndian}},{key:"bigTiff",get:function(){return this._bigTiff}},{key:"buffer",get:function(){return this._dataView.buffer}},{key:"covers",value:function(t,n){return this.sliceOffset<=t&&this.sliceTop>=t+n}},{key:"readUint8",value:function(t){return this._dataView.getUint8(t-this._sliceOffset,this._littleEndian)}},{key:"readInt8",value:function(t){return this._dataView.getInt8(t-this._sliceOffset,this._littleEndian)}},{key:"readUint16",value:function(t){return this._dataView.getUint16(t-this._sliceOffset,this._littleEndian)}},{key:"readInt16",value:function(t){return this._dataView.getInt16(t-this._sliceOffset,this._littleEndian)}},{key:"readUint32",value:function(t){return this._dataView.getUint32(t-this._sliceOffset,this._littleEndian)}},{key:"readInt32",value:function(t){return this._dataView.getInt32(t-this._sliceOffset,this._littleEndian)}},{key:"readFloat32",value:function(t){return this._dataView.getFloat32(t-this._sliceOffset,this._littleEndian)}},{key:"readFloat64",value:function(t){return this._dataView.getFloat64(t-this._sliceOffset,this._littleEndian)}},{key:"readUint64",value:function(t){var n,i=this.readUint32(t),r=this.readUint32(t+4);if(this._littleEndian){if(n=i+Math.pow(2,32)*r,!Number.isSafeInteger(n))throw new Error("".concat(n," exceeds MAX_SAFE_INTEGER. ")+"Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues");return n}if(n=Math.pow(2,32)*i+r,!Number.isSafeInteger(n))throw new Error("".concat(n," exceeds MAX_SAFE_INTEGER. ")+"Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues");return n}},{key:"readInt64",value:function(t){for(var n=0,i=(128&this._dataView.getUint8(t+(this._littleEndian?7:0)))>0,r=!0,e=0;e<8;e++){var o=this._dataView.getUint8(t+(this._littleEndian?e:7-e));i&&(r?0!==o&&(o=255&~(o-1),r=!1):o=255&~o),n+=o*Math.pow(256,e)}return i&&(n=-n),n}},{key:"readOffset",value:function(t){return this._bigTiff?this.readUint64(t):this.readUint32(t)}}])&&Hp(n.prototype,i),r&&Hp(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}();function Kp(t){return $p(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Qp(t)||Zp()}function Yp(t,n){return $p(t)||function(t,n){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==i)return;var r,e,o=[],s=!0,a=!1;try{for(i=i.call(t);!(s=(r=i.next()).done)&&(o.push(r.value),!n||o.length!==n);s=!0);}catch(t){a=!0,e=t}finally{try{s||null==i.return||i.return()}finally{if(a)throw e}}return o}(t,n)||Qp(t,n)||Zp()}function Zp(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function $p(t){if(Array.isArray(t))return t}function Qp(t,n){if(t){if("string"==typeof t)return ty(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?ty(t,n):void 0}}function ty(t,n){(null==n||n>t.length)&&(n=t.length);for(var i=0,r=new Array(n);i<n;i++)r[i]=t[i];return r}var ny="\r\n\r\n";function iy(t){if(void 0!==Object.fromEntries)return Object.fromEntries(t);var n,i={},r=function(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=Qp(t))||n&&t&&"number"==typeof t.length){i&&(t=i);var r=0,e=function(){};return{s:e,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw o}}}}(t);try{for(r.s();!(n=r.n()).done;){var e=Yp(n.value,2),o=e[0],s=e[1];i[o.toLowerCase()]=s}}catch(t){r.e(t)}finally{r.f()}return i}function ry(t){return iy(t.split("\r\n").map((function(t){var n=t.split(":").map((function(t){return t.trim()}));return n[0]=n[0].toLowerCase(),n})))}function ey(t){var n,i,r;if(t){var e=Yp(t.match(/bytes (\d+)-(\d+)\/(\d+)/),4);n=e[1],i=e[2],r=e[3],n=parseInt(n,10),i=parseInt(i,10),r=parseInt(r,10)}return{start:n,end:i,total:r}}function oy(t,n){for(var i=null,r=new TextDecoder("ascii"),e=[],o="--".concat(n),s="".concat(o,"--"),a=0;a<10;++a){r.decode(new Uint8Array(t,a,o.length))===o&&(i=a)}if(null===i)throw new Error("Could not find initial boundary");for(;i<t.byteLength;){var u=r.decode(new Uint8Array(t,i,Math.min(o.length+1024,t.byteLength-i)));if(0===u.length||u.startsWith(s))break;if(!u.startsWith(o))throw new Error("Part does not start with boundary");var c=u.substr(o.length+2);if(0===c.length)break;var h=c.indexOf(ny),f=ry(c.substr(0,h)),l=ey(f["content-range"]),v=l.start,d=l.end,p=l.total,y=i+o.length+h+ny.length,m=parseInt(d,10)+1-parseInt(v,10);e.push({headers:f,data:t.slice(y,y+m),offset:v,length:m,fileSize:p}),i=y+m+4}return e}function sy(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function ay(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){sy(o,r,e,s,a,"next",t)}function a(t){sy(o,r,e,s,a,"throw",t)}s(void 0)}))}}function uy(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var cy=function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,i,r,e,o,s;return n=t,(i=[{key:"fetch",value:(s=ay(regeneratorRuntime.mark((function t(n){var i,r=this,e=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=e.length>1&&void 0!==e[1]?e[1]:void 0,t.abrupt("return",Promise.all(n.map((function(t){return r.fetchSlice(t,i)}))));case 2:case"end":return t.stop()}}),t)}))),function(t){return s.apply(this,arguments)})},{key:"fetchSlice",value:(o=ay(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:throw new Error("fetching of slice ".concat(n," not possible, not implemented"));case 1:case"end":return t.stop()}}),t)}))),function(t){return o.apply(this,arguments)})},{key:"fileSize",get:function(){return null}},{key:"close",value:(e=ay(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(){return e.apply(this,arguments)})}])&&uy(n.prototype,i),r&&uy(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}(),hy=i(875);function fy(t){return(fy="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ly(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function vy(t,n,i){return n&&ly(t.prototype,n),i&&ly(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function dy(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function py(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&jy(t,n)}function yy(t){var n=xy();return function(){var i,r=Sy(t);if(n){var e=Sy(this).constructor;i=Reflect.construct(r,arguments,e)}else i=r.apply(this,arguments);return my(this,i)}}function my(t,n){if(n&&("object"===fy(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return wy(t)}function wy(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function by(t){var n="function"==typeof Map?new Map:void 0;return(by=function(t){if(null===t||(i=t,-1===Function.toString.call(i).indexOf("[native code]")))return t;var i;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(t))return n.get(t);n.set(t,r)}function r(){return gy(t,arguments,Sy(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),jy(r,t)})(t)}function gy(t,n,i){return(gy=xy()?Reflect.construct:function(t,n,i){var r=[null];r.push.apply(r,n);var e=new(Function.bind.apply(t,r));return i&&jy(e,i.prototype),e}).apply(null,arguments)}function xy(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function jy(t,n){return(jy=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function Sy(t){return(Sy=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function ky(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function My(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){ky(o,r,e,s,a,"next",t)}function a(t){ky(o,r,e,s,a,"throw",t)}s(void 0)}))}}function _y(t){return Oy.apply(this,arguments)}function Oy(){return(Oy=My(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new Promise((function(t){return setTimeout(t,n)})));case 1:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Ty(t,n){var i=Array.isArray(t)?t:Array.from(t),r=Array.isArray(n)?n:Array.from(n);return i.map((function(t,n){return[t,r[n]]}))}var Ey=function(t){py(i,t);var n=yy(i);function i(t){var r;return dy(this,i),r=n.call(this,t),Error.captureStackTrace&&Error.captureStackTrace(wy(r),i),r.name="AbortError",r}return vy(i)}(by(Error)),Ay=function(t){py(i,t);var n=yy(i);function i(t,r){var e;return dy(this,i),(e=n.call(this,r)).errors=t,e.message=r,e.name="AggregateError",e}return vy(i)}(by(Error));function Cy(t){return(Cy="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Ry(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==i)return;var r,e,o=[],s=!0,a=!1;try{for(i=i.call(t);!(s=(r=i.next()).done)&&(o.push(r.value),!n||o.length!==n);s=!0);}catch(t){a=!0,e=t}finally{try{s||null==i.return||i.return()}finally{if(a)throw e}}return o}(t,n)||Iy(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Py(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=Iy(t))||n&&t&&"number"==typeof t.length){i&&(t=i);var r=0,e=function(){};return{s:e,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw o}}}}function Iy(t,n){if(t){if("string"==typeof t)return Ny(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Ny(t,n):void 0}}function Ny(t,n){(null==n||n>t.length)&&(n=t.length);for(var i=0,r=new Array(n);i<n;i++)r[i]=t[i];return r}function zy(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function Fy(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){zy(o,r,e,s,a,"next",t)}function a(t){zy(o,r,e,s,a,"throw",t)}s(void 0)}))}}function Ly(t,n){return(Ly=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function Gy(t){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,r=Uy(t);if(n){var e=Uy(this).constructor;i=Reflect.construct(r,arguments,e)}else i=r.apply(this,arguments);return Dy(this,i)}}function Dy(t,n){if(n&&("object"===Cy(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Uy(t){return(Uy=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function qy(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function By(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function Wy(t,n,i){return n&&By(t.prototype,n),i&&By(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}var Vy=function(){function t(n,i){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;qy(this,t),this.offset=n,this.length=i,this.data=r}return Wy(t,[{key:"top",get:function(){return this.offset+this.length}}]),t}(),Xy=Wy((function t(n,i,r){qy(this,t),this.offset=n,this.length=i,this.blockIds=r})),Hy=function(t){!function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&Ly(t,n)}(r,t);var n,i=Gy(r);function r(t){var n,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e.blockSize,s=void 0===o?65536:o,a=e.cacheSize,u=void 0===a?100:a;return qy(this,r),(n=i.call(this)).source=t,n.blockSize=s,n.blockCache=new hy({max:u}),n.blockRequests=new Map,n.blockIdsToFetch=new Set,n}return Wy(r,[{key:"fileSize",get:function(){return this.source.fileSize}},{key:"fetch",value:(n=Fy(regeneratorRuntime.mark((function t(n,i){var r,e,o,s,a,u,c,h,f,l,v,d,p,y,m,w,b,g,x,j,S,k,M,_,O,T,E,A,C,R,P,I,N,z,F,L,G,D;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=new Map,e=new Map,o=new Set,s=Py(n);try{for(s.s();!(a=s.n()).done;)for(u=a.value,c=u.offset,h=u.length,f=c+h,null!==(l=this.fileSize)&&(f=Math.min(f,l)),v=Math.floor(c/this.blockSize)*this.blockSize,d=v;d<f;d+=this.blockSize)p=Math.floor(d/this.blockSize),this.blockCache.has(p)?r.set(p,this.blockCache.get(p)):this.blockRequests.has(p)?e.set(p,this.blockRequests.get(p)):(this.blockIdsToFetch.has(p)||this.blockIdsToFetch.add(p),o.add(p))}catch(t){s.e(t)}finally{s.f()}return t.next=7,_y();case 7:this.fetchBlocks(i),y=Py(o),t.prev=9,y.s();case 11:if((m=y.n()).done){t.next=26;break}if(w=m.value,b=this.blockRequests.get(w),g=this.blockCache.get(w),!b){t.next=19;break}e.set(w,b),t.next=24;break;case 19:if(!g){t.next=23;break}r.set(w,g),t.next=24;break;case 23:throw new Error("Block ".concat(w," is not in the block requests"));case 24:t.next=11;break;case 26:t.next=31;break;case 28:t.prev=28,t.t0=t.catch(9),y.e(t.t0);case 31:return t.prev=31,y.f(),t.finish(31);case 34:return t.next=36,Promise.allSettled(Array.from(e.values()));case 36:if(!(x=t.sent).some((function(t){return"rejected"===t.status}))){t.next=65;break}j=new Set,S=Py(Ty(e.keys(),x));try{for(S.s();!(k=S.n()).done;)M=Ry(k.value,2),_=M[0],O=M[1],T=O.rejected,E=O.reason,T&&"AbortError"===E.name&&E.signal!==i&&(this.blockIdsToFetch.add(_),j.add(_))}catch(t){S.e(t)}finally{S.f()}if(!(this.blockIdsToFetch.length>0)){t.next=65;break}this.fetchBlocks(i),A=Py(j),t.prev=44,A.s();case 46:if((C=A.n()).done){t.next=54;break}if(R=C.value,P=this.blockRequests.get(R)){t.next=51;break}throw new Error("Block ".concat(R," is not in the block requests"));case 51:e.set(R,P);case 52:t.next=46;break;case 54:t.next=59;break;case 56:t.prev=56,t.t1=t.catch(44),A.e(t.t1);case 59:return t.prev=59,A.f(),t.finish(59);case 62:return t.next=64,Promise.allSettled(Array.from(e.values()));case 64:x=t.sent;case 65:if(!x.some((function(t){return"rejected"===t.status}))){t.next=69;break}if(!i||!i.aborted){t.next=68;break}throw new Ey("Request was aborted");case 68:throw new Ay(x.filter((function(t){return"rejected"===t.status})).map((function(t){return t.reason})),"Request failed");case 69:I=x.map((function(t){return t.value})),N=new Map(Ty(Array.from(e.keys()),I)),z=Py(r);try{for(z.s();!(F=z.n()).done;)L=Ry(F.value,2),G=L[0],D=L[1],N.set(G,D)}catch(t){z.e(t)}finally{z.f()}return t.abrupt("return",this.readSliceData(n,N));case 74:case"end":return t.stop()}}),t,this,[[9,28,31,34],[44,56,59,62]])}))),function(t,i){return n.apply(this,arguments)})},{key:"fetchBlocks",value:function(t){var n=this;this.blockIdsToFetch.size>0&&function(){for(var i=n.groupBlocks(n.blockIdsToFetch),r=n.source.fetch(i,t),e=function(e){var o,s=Py(i[e].blockIds);try{var a=function(){var i=o.value,s=Fy(regeneratorRuntime.mark((function o(){var s,a,u,c,h,f;return regeneratorRuntime.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.prev=0,o.next=3,r;case 3:return o.t0=e,s=o.sent[o.t0],a=i*n.blockSize,u=a-s.offset,c=Math.min(u+n.blockSize,s.data.byteLength),h=s.data.slice(u,c),f=new Vy(a,h.byteLength,h),n.blockCache.set(i,f),o.abrupt("return",f);case 14:throw o.prev=14,o.t1=o.catch(0),"AbortError"===o.t1.name&&(o.t1.signal=t),o.t1;case 18:return o.prev=18,n.blockRequests.delete(i),o.finish(18);case 21:case"end":return o.stop()}}),o,null,[[0,14,18,21]])})))();n.blockRequests.set(i,s)};for(s.s();!(o=s.n()).done;)a()}catch(t){s.e(t)}finally{s.f()}},o=0;o<i.length;++o)e(o);n.blockIdsToFetch.clear()}()}},{key:"groupBlocks",value:function(t){var n=Array.from(t).sort((function(t,n){return t-n}));if(0===n.length)return[];var i,r=[],e=null,o=[],s=Py(n);try{for(s.s();!(i=s.n()).done;){var a=i.value;null===e||e+1===a?(r.push(a),e=a):(o.push(new Xy(r[0]*this.blockSize,r.length*this.blockSize,r)),r=[a],e=a)}}catch(t){s.e(t)}finally{s.f()}return o.push(new Xy(r[0]*this.blockSize,r.length*this.blockSize,r)),o}},{key:"readSliceData",value:function(t,n){var i=this;return t.map((function(t){for(var r=t.offset+t.length,e=Math.floor(t.offset/i.blockSize),o=Math.floor((t.offset+t.length)/i.blockSize),s=new ArrayBuffer(t.length),a=new Uint8Array(s),u=e;u<=o;++u){var c=n.get(u),h=c.offset-t.offset,f=0,l=0,v=void 0;h<0?f=-h:h>0&&(l=h),v=c.top-r<0?c.length-f:r-c.offset-f;var d=new Uint8Array(c.data,f,v);a.set(d,l)}return s}))}}]),r}(cy);function Jy(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function Ky(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){Jy(o,r,e,s,a,"next",t)}function a(t){Jy(o,r,e,s,a,"throw",t)}s(void 0)}))}}function Yy(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function Zy(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function $y(t,n,i){return n&&Zy(t.prototype,n),i&&Zy(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}var Qy=function(){function t(){Yy(this,t)}var n;return $y(t,[{key:"ok",get:function(){return this.status>=200&&this.status<=299}},{key:"status",get:function(){throw new Error("not implemented")}},{key:"getHeader",value:function(t){throw new Error("not implemented")}},{key:"getData",value:(n=Ky(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:throw new Error("not implemented");case 1:case"end":return t.stop()}}),t)}))),function(){return n.apply(this,arguments)})}]),t}(),tm=function(){function t(n){Yy(this,t),this.url=n}var n;return $y(t,[{key:"request",value:(n=Ky(regeneratorRuntime.mark((function t(){var n,i=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:throw(n=i.length>0&&void 0!==i[0]?i[0]:{}).headers,n.credentials,n.signal,new Error("request is not implemented");case 2:case"end":return t.stop()}}),t)}))),function(){return n.apply(this,arguments)})}]),t}();function nm(t){return(nm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function im(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function rm(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){im(o,r,e,s,a,"next",t)}function a(t){im(o,r,e,s,a,"throw",t)}s(void 0)}))}}function em(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function om(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function sm(t,n,i){return n&&om(t.prototype,n),i&&om(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function am(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&um(t,n)}function um(t,n){return(um=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function cm(t){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,r=fm(t);if(n){var e=fm(this).constructor;i=Reflect.construct(r,arguments,e)}else i=r.apply(this,arguments);return hm(this,i)}}function hm(t,n){if(n&&("object"===nm(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function fm(t){return(fm=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var lm=function(t){am(r,t);var n,i=cm(r);function r(t){var n;return em(this,r),(n=i.call(this)).response=t,n}return sm(r,[{key:"status",get:function(){return this.response.status}},{key:"getHeader",value:function(t){return this.response.headers.get(t)}},{key:"getData",value:(n=rm(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.response.arrayBuffer){t.next=6;break}return t.next=3,this.response.arrayBuffer();case 3:t.t0=t.sent,t.next=9;break;case 6:return t.next=8,this.response.buffer();case 8:t.t0=t.sent.buffer;case 9:return n=t.t0,t.abrupt("return",n);case 11:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})}]),r}(Qy),vm=function(t){am(r,t);var n,i=cm(r);function r(t,n){var e;return em(this,r),(e=i.call(this,t)).credentials=n,e}return sm(r,[{key:"request",value:(n=rm(regeneratorRuntime.mark((function t(){var n,i,r,e,o,s=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=s.length>0&&void 0!==s[0]?s[0]:{},i=n.headers,r=n.credentials,e=n.signal,t.next=3,fetch(this.url,{headers:i,credentials:r,signal:e});case 3:return o=t.sent,t.abrupt("return",new lm(o));case 5:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})}]),r}(tm);function dm(t){return(dm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function pm(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==i)return;var r,e,o=[],s=!0,a=!1;try{for(i=i.call(t);!(s=(r=i.next()).done)&&(o.push(r.value),!n||o.length!==n);s=!0);}catch(t){a=!0,e=t}finally{try{s||null==i.return||i.return()}finally{if(a)throw e}}return o}(t,n)||function(t,n){if(!t)return;if("string"==typeof t)return ym(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return ym(t,n)}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ym(t,n){(null==n||n>t.length)&&(n=t.length);for(var i=0,r=new Array(n);i<n;i++)r[i]=t[i];return r}function mm(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function wm(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){mm(o,r,e,s,a,"next",t)}function a(t){mm(o,r,e,s,a,"throw",t)}s(void 0)}))}}function bm(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function gm(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function xm(t,n,i){return n&&gm(t.prototype,n),i&&gm(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function jm(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&Sm(t,n)}function Sm(t,n){return(Sm=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function km(t){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,r=_m(t);if(n){var e=_m(this).constructor;i=Reflect.construct(r,arguments,e)}else i=r.apply(this,arguments);return Mm(this,i)}}function Mm(t,n){if(n&&("object"===dm(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function _m(t){return(_m=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Om=function(t){jm(r,t);var n,i=km(r);function r(t,n){var e;return bm(this,r),(e=i.call(this)).xhr=t,e.data=n,e}return xm(r,[{key:"status",get:function(){return this.xhr.status}},{key:"getHeader",value:function(t){return this.xhr.getResponseHeader(t)}},{key:"getData",value:(n=wm(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this.data);case 1:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})}]),r}(Qy),Tm=function(t){jm(r,t);var n,i=km(r);function r(){return bm(this,r),i.apply(this,arguments)}return xm(r,[{key:"constructRequest",value:function(t,n){var i=this;return new Promise((function(r,e){var o=new XMLHttpRequest;o.open("GET",i.url),o.responseType="arraybuffer";for(var s=0,a=Object.entries(t);s<a.length;s++){var u=pm(a[s],2),c=u[0],h=u[1];o.setRequestHeader(c,h)}o.onload=function(){var t=o.response;r(new Om(o,t))},o.onerror=e,o.onabort=function(){return e(new Ey("Request aborted"))},o.send(),n&&(n.aborted&&o.abort(),n.addEventListener("abort",(function(){return o.abort()})))}))}},{key:"request",value:(n=wm(regeneratorRuntime.mark((function t(){var n,i,r,e,o=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=o.length>0&&void 0!==o[0]?o[0]:{},i=n.headers,r=n.signal,t.next=3,this.constructRequest(i,r);case 3:return e=t.sent,t.abrupt("return",e);case 5:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})}]),r}(tm),Em=i(752),Am=i(640),Cm=i(630);function Rm(t){return(Rm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Pm(t,n){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),i.push.apply(i,r)}return i}function Im(t){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?Pm(Object(i),!0).forEach((function(n){Nm(t,n,i[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):Pm(Object(i)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(i,n))}))}return t}function Nm(t,n,i){return n in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i,t}function zm(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function Fm(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){zm(o,r,e,s,a,"next",t)}function a(t){zm(o,r,e,s,a,"throw",t)}s(void 0)}))}}function Lm(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function Gm(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function Dm(t,n,i){return n&&Gm(t.prototype,n),i&&Gm(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function Um(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&qm(t,n)}function qm(t,n){return(qm=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function Bm(t){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,r=Vm(t);if(n){var e=Vm(this).constructor;i=Reflect.construct(r,arguments,e)}else i=r.apply(this,arguments);return Wm(this,i)}}function Wm(t,n){if(n&&("object"===Rm(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Vm(t){return(Vm=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Xm=function(t){Um(r,t);var n,i=Bm(r);function r(t,n){var e;return Lm(this,r),(e=i.call(this)).response=t,e.dataPromise=n,e}return Dm(r,[{key:"status",get:function(){return this.response.statusCode}},{key:"getHeader",value:function(t){return this.response.headers[t]}},{key:"getData",value:(n=Fm(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.dataPromise;case 2:return n=t.sent,t.abrupt("return",n);case 4:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})}]),r}(Qy),Hm=function(t){Um(r,t);var n,i=Bm(r);function r(t){var n;return Lm(this,r),(n=i.call(this,t)).parsedUrl=Cm.parse(n.url),n.httpApi="http:"===n.parsedUrl.protocol?Em:Am,n}return Dm(r,[{key:"constructRequest",value:function(t,n){var i=this;return new Promise((function(r,e){var o=i.httpApi.get(Im(Im({},i.parsedUrl),{},{headers:t}),(function(t){var n=new Promise((function(n){var i=[];t.on("data",(function(t){i.push(t)})),t.on("end",(function(){var t=Buffer.concat(i).buffer;n(t)})),t.on("error",e)}));r(new Xm(t,n))}));o.on("error",e),n&&(n.aborted&&o.destroy(new Ey("Request aborted")),n.addEventListener("abort",(function(){return o.destroy(new Ey("Request aborted"))})))}))}},{key:"request",value:(n=Fm(regeneratorRuntime.mark((function t(){var n,i,r,e,o=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=o.length>0&&void 0!==o[0]?o[0]:{},i=n.headers,r=n.signal,t.next=3,this.constructRequest(i,r);case 3:return e=t.sent,t.abrupt("return",e);case 5:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})}]),r}(tm);function Jm(t){return(Jm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Km=["headers","credentials","maxRanges","allowFullFile"],Ym=["headers","maxRanges","allowFullFile"],Zm=["headers","maxRanges","allowFullFile"],$m=["forceXHR"];function Qm(t,n){if(null==t)return{};var i,r,e=function(t,n){if(null==t)return{};var i,r,e={},o=Object.keys(t);for(r=0;r<o.length;r++)i=o[r],n.indexOf(i)>=0||(e[i]=t[i]);return e}(t,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r<o.length;r++)i=o[r],n.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(t,i)&&(e[i]=t[i])}return e}function tw(t,n){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),i.push.apply(i,r)}return i}function nw(t){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?tw(Object(i),!0).forEach((function(n){iw(t,n,i[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):tw(Object(i)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(i,n))}))}return t}function iw(t,n,i){return n in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i,t}function rw(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function ew(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){rw(o,r,e,s,a,"next",t)}function a(t){rw(o,r,e,s,a,"throw",t)}s(void 0)}))}}function ow(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function sw(t,n){return(sw=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function aw(t){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,r=cw(t);if(n){var e=cw(this).constructor;i=Reflect.construct(r,arguments,e)}else i=r.apply(this,arguments);return uw(this,i)}}function uw(t,n){if(n&&("object"===Jm(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function cw(t){return(cw=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var hw=function(t){!function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&sw(t,n)}(u,t);var n,i,r,e,o,s,a=aw(u);function u(t,n,i,r){var e;return function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,u),(e=a.call(this)).client=t,e.headers=n,e.maxRanges=i,e.allowFullFile=r,e._fileSize=null,e}return n=u,(i=[{key:"fetch",value:(s=ew(regeneratorRuntime.mark((function t(n,i){var r=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(this.maxRanges>=n.length)){t.next=4;break}return t.abrupt("return",this.fetchSlices(n,i));case 4:this.maxRanges>0&&n.length;case 5:return t.abrupt("return",Promise.all(n.map((function(t){return r.fetchSlice(t,i)}))));case 6:case"end":return t.stop()}}),t,this)}))),function(t,n){return s.apply(this,arguments)})},{key:"fetchSlices",value:(o=ew(regeneratorRuntime.mark((function t(n,i){var r,e,o,s,a,u,c,h,f,l,v,d,p=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.client.request({headers:nw(nw({},this.headers),{},{Range:"bytes=".concat(n.map((function(t){var n=t.offset,i=t.length;return"".concat(n,"-").concat(n+i)})).join(","))}),signal:i});case 2:if((r=t.sent).ok){t.next=7;break}throw new Error("Error fetching data.");case 7:if(206!==r.status){t.next=32;break}if(y=r.getHeader("content-type"),m=void 0,m=Kp(y.split(";").map((function(t){return t.trim()}))),e={type:m[0],params:iy(m.slice(1).map((function(t){return t.split("=")})))},o=e.params,"multipart/byteranges"!==e.type){t.next=18;break}return t.t0=oy,t.next=13,r.getData();case 13:return t.t1=t.sent,t.t2=o.boundary,s=(0,t.t0)(t.t1,t.t2),this._fileSize=s[0].fileSize||null,t.abrupt("return",s);case 18:return t.next=20,r.getData();case 20:if(a=t.sent,u=ey(r.getHeader("content-range")),c=u.start,h=u.end,f=u.total,this._fileSize=f||null,l=[{data:a,offset:c,length:h-c}],!(n.length>1)){t.next=29;break}return t.next=27,Promise.all(n.slice(1).map((function(t){return p.fetchSlice(t,i)})));case 27:return v=t.sent,t.abrupt("return",l.concat(v));case 29:return t.abrupt("return",l);case 32:if(this.allowFullFile){t.next=34;break}throw new Error("Server responded with full file");case 34:return t.next=36,r.getData();case 36:return d=t.sent,this._fileSize=d.byteLength,t.abrupt("return",[{data:d,offset:0,length:d.byteLength}]);case 39:case"end":return t.stop()}var y,m}),t,this)}))),function(t,n){return o.apply(this,arguments)})},{key:"fetchSlice",value:(e=ew(regeneratorRuntime.mark((function t(n,i){var r,e,o,s,a,u,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=n.offset,e=n.length,t.next=3,this.client.request({headers:nw(nw({},this.headers),{},{Range:"bytes=".concat(r,"-").concat(r+e)}),signal:i});case 3:if((o=t.sent).ok){t.next=8;break}throw new Error("Error fetching data.");case 8:if(206!==o.status){t.next=17;break}return t.next=11,o.getData();case 11:return s=t.sent,a=ey(o.getHeader("content-range")),u=a.total,this._fileSize=u||null,t.abrupt("return",{data:s,offset:r,length:e});case 17:if(this.allowFullFile){t.next=19;break}throw new Error("Server responded with full file");case 19:return t.next=21,o.getData();case 21:return c=t.sent,this._fileSize=c.byteLength,t.abrupt("return",{data:c,offset:0,length:c.byteLength});case 24:case"end":return t.stop()}}),t,this)}))),function(t,n){return e.apply(this,arguments)})},{key:"fileSize",get:function(){return this._fileSize}}])&&ow(n.prototype,i),r&&ow(n,r),Object.defineProperty(n,"prototype",{writable:!1}),u}(cy);function fw(t,n){var i=n.blockSize,r=n.cacheSize;return null===i?t:new Hy(t,i,r)}function lw(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=n.headers,r=void 0===i?{}:i,e=n.credentials,o=n.maxRanges,s=void 0===o?0:o,a=n.allowFullFile,u=void 0!==a&&a,c=Qm(n,Km),h=new vm(t,e),f=new hw(h,r,s,u);return fw(f,c)}function vw(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=n.headers,r=void 0===i?{}:i,e=n.maxRanges,o=void 0===e?0:e,s=n.allowFullFile,a=void 0!==s&&s,u=Qm(n,Ym),c=new Tm(t),h=new hw(c,r,o,a);return fw(h,u)}function dw(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=n.headers,r=void 0===i?{}:i,e=n.maxRanges,o=void 0===e?0:e,s=n.allowFullFile,a=void 0!==s&&s,u=Qm(n,Zm),c=new Hm(t),h=new hw(c,r,o,a);return fw(h,u)}function pw(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=n.forceXHR,r=void 0!==i&&i,e=Qm(n,$m);return"function"!=typeof fetch||r?"undefined"!=typeof XMLHttpRequest?vw(t,e):dw(t,e):lw(t,e)}function yw(t){return(yw="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function mw(t,n){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),i.push.apply(i,r)}return i}function ww(t){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?mw(Object(i),!0).forEach((function(n){bw(t,n,i[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):mw(Object(i)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(i,n))}))}return t}function bw(t,n,i){return n in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i,t}function gw(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==i)return;var r,e,o=[],s=!0,a=!1;try{for(i=i.call(t);!(s=(r=i.next()).done)&&(o.push(r.value),!n||o.length!==n);s=!0);}catch(t){a=!0,e=t}finally{try{s||null==i.return||i.return()}finally{if(a)throw e}}return o}(t,n)||function(t,n){if(!t)return;if("string"==typeof t)return xw(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return xw(t,n)}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function xw(t,n){(null==n||n>t.length)&&(n=t.length);for(var i=0,r=new Array(n);i<n;i++)r[i]=t[i];return r}function jw(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function Sw(t){return function(){var n=this,i=arguments;return new Promise((function(r,e){var o=t.apply(n,i);function s(t){jw(o,r,e,s,a,"next",t)}function a(t){jw(o,r,e,s,a,"throw",t)}s(void 0)}))}}function kw(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&Aw(t,n)}function Mw(t){var n=Ew();return function(){var i,r=Cw(t);if(n){var e=Cw(this).constructor;i=Reflect.construct(r,arguments,e)}else i=r.apply(this,arguments);return _w(this,i)}}function _w(t,n){if(n&&("object"===yw(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Ow(t){var n="function"==typeof Map?new Map:void 0;return(Ow=function(t){if(null===t||(i=t,-1===Function.toString.call(i).indexOf("[native code]")))return t;var i;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(t))return n.get(t);n.set(t,r)}function r(){return Tw(t,arguments,Cw(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),Aw(r,t)})(t)}function Tw(t,n,i){return(Tw=Ew()?Reflect.construct:function(t,n,i){var r=[null];r.push.apply(r,n);var e=new(Function.bind.apply(t,r));return i&&Aw(e,i.prototype),e}).apply(null,arguments)}function Ew(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function Aw(t,n){return(Aw=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function Cw(t){return(Cw=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function Rw(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function Pw(t,n,i){return n&&Rw(t.prototype,n),i&&Rw(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function Iw(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function Nw(t){switch(t){case dp.sf.BYTE:case dp.sf.ASCII:case dp.sf.SBYTE:case dp.sf.UNDEFINED:return 1;case dp.sf.SHORT:case dp.sf.SSHORT:return 2;case dp.sf.LONG:case dp.sf.SLONG:case dp.sf.FLOAT:case dp.sf.IFD:return 4;case dp.sf.RATIONAL:case dp.sf.SRATIONAL:case dp.sf.DOUBLE:case dp.sf.LONG8:case dp.sf.SLONG8:case dp.sf.IFD8:return 8;default:throw new RangeError("Invalid field type: ".concat(t))}}function zw(t){var n=t.GeoKeyDirectory;if(!n)return null;for(var i={},r=4;r<=4*n[3];r+=4){var e=dp.P1[n[r]],o=n[r+1]?dp.L[n[r+1]]:null,s=n[r+2],a=n[r+3],u=null;if(o){if(null==(u=t[o]))throw new Error("Could not get value of geoKey '".concat(e,"'."));"string"==typeof u?u=u.substring(a,a+s-1):u.subarray&&(u=u.subarray(a,a+s),1===s&&(u=u[0]))}else u=a;i[e]=u}return i}function Fw(t,n,i,r){var e=null,o=null,s=Nw(n);switch(n){case dp.sf.BYTE:case dp.sf.ASCII:case dp.sf.UNDEFINED:e=new Uint8Array(i),o=t.readUint8;break;case dp.sf.SBYTE:e=new Int8Array(i),o=t.readInt8;break;case dp.sf.SHORT:e=new Uint16Array(i),o=t.readUint16;break;case dp.sf.SSHORT:e=new Int16Array(i),o=t.readInt16;break;case dp.sf.LONG:case dp.sf.IFD:e=new Uint32Array(i),o=t.readUint32;break;case dp.sf.SLONG:e=new Int32Array(i),o=t.readInt32;break;case dp.sf.LONG8:case dp.sf.IFD8:e=new Array(i),o=t.readUint64;break;case dp.sf.SLONG8:e=new Array(i),o=t.readInt64;break;case dp.sf.RATIONAL:e=new Uint32Array(2*i),o=t.readUint32;break;case dp.sf.SRATIONAL:e=new Int32Array(2*i),o=t.readInt32;break;case dp.sf.FLOAT:e=new Float32Array(i),o=t.readFloat32;break;case dp.sf.DOUBLE:e=new Float64Array(i),o=t.readFloat64;break;default:throw new RangeError("Invalid field type: ".concat(n))}if(n!==dp.sf.RATIONAL&&n!==dp.sf.SRATIONAL)for(var a=0;a<i;++a)e[a]=o.call(t,r+a*s);else for(var u=0;u<i;u+=2)e[u]=o.call(t,r+u*s),e[u+1]=o.call(t,r+(u*s+4));return n===dp.sf.ASCII?new TextDecoder("utf-8").decode(e):e}var Lw=Pw((function t(n,i,r){Iw(this,t),this.fileDirectory=n,this.geoKeyDirectory=i,this.nextIFDByteOffset=r})),Gw=function(t){kw(i,t);var n=Mw(i);function i(t){var r;return Iw(this,i),(r=n.call(this,"No image at index ".concat(t))).index=t,r}return Pw(i)}(Ow(Error)),Dw=function(){function t(){Iw(this,t)}var n;return Pw(t,[{key:"readRasters",value:(n=Sw(regeneratorRuntime.mark((function t(){var n,i,r,e,o,s,a,u,c,h,f,l,v,d,p,y,m,w,b,g,x,j,S,k,M,_,O,T,E,A,C,R,P,I,N,z,F,L,G,D=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=D.length>0&&void 0!==D[0]?D[0]:{},i=n.window,r=n.width,e=n.height,o=n.resX,s=n.resY,a=n.bbox,t.next=5,this.getImage();case 5:return u=t.sent,c=u,t.next=9,this.getImageCount();case 9:if(h=t.sent,f=u.getBoundingBox(),!i||!a){t.next=13;break}throw new Error('Both "bbox" and "window" passed.');case 13:if(!r&&!e){t.next=24;break}if(i&&(l=u.getOrigin(),v=gw(l,2),d=v[0],p=v[1],y=u.getResolution(),m=gw(y,2),w=m[0],b=m[1],a=[d+i[0]*w,p+i[1]*b,d+i[2]*w,p+i[3]*b]),g=a||f,!r){t.next=20;break}if(!o){t.next=19;break}throw new Error("Both width and resX passed");case 19:o=(g[2]-g[0])/r;case 20:if(!e){t.next=24;break}if(!s){t.next=23;break}throw new Error("Both width and resY passed");case 23:s=(g[3]-g[1])/e;case 24:if(!o&&!s){t.next=48;break}x=[],j=0;case 27:if(!(j<h)){t.next=36;break}return t.next=30,this.getImage(j);case 30:S=t.sent,k=S.fileDirectory,M=k.SubfileType,_=k.NewSubfileType,(0===j||2===M||1&_)&&x.push(S);case 33:++j,t.next=27;break;case 36:x.sort((function(t,n){return t.getWidth()-n.getWidth()})),O=0;case 38:if(!(O<x.length)){t.next=48;break}if(T=x[O],E=(f[2]-f[0])/T.getWidth(),A=(f[3]-f[1])/T.getHeight(),c=T,!(o&&o>E||s&&s>A)){t.next=45;break}return t.abrupt("break",48);case 45:++O,t.next=38;break;case 48:return C=i,a&&(R=u.getOrigin(),P=gw(R,2),I=P[0],N=P[1],z=c.getResolution(u),F=gw(z,2),L=F[0],G=F[1],C=[Math.round((a[0]-I)/L),Math.round((a[1]-N)/G),Math.round((a[2]-I)/L),Math.round((a[3]-N)/G)],C=[Math.min(C[0],C[2]),Math.min(C[1],C[3]),Math.max(C[0],C[2]),Math.max(C[1],C[3])]),t.abrupt("return",c.readRasters(ww(ww({},n),{},{window:C})));case 51:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})}]),t}(),Uw=function(t){kw(c,t);var n,i,r,e,o,s,a,u=Mw(c);function c(t,n,i,r){var e,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return Iw(this,c),(e=u.call(this)).source=t,e.littleEndian=n,e.bigTiff=i,e.firstIFDOffset=r,e.cache=o.cache||!1,e.ifdRequests=[],e.ghostValues=null,e}return Pw(c,[{key:"getSlice",value:(a=Sw(regeneratorRuntime.mark((function t(n,i){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=this.bigTiff?4048:1024,t.t0=Jp,t.next=4,this.source.fetch([{offset:n,length:void 0!==i?i:r}]);case 4:return t.t1=t.sent[0],t.t2=n,t.t3=this.littleEndian,t.t4=this.bigTiff,t.abrupt("return",new t.t0(t.t1,t.t2,t.t3,t.t4));case 9:case"end":return t.stop()}}),t,this)}))),function(t,n){return a.apply(this,arguments)})},{key:"parseFileDirectoryAt",value:(s=Sw(regeneratorRuntime.mark((function t(n){var i,r,e,o,s,a,u,c,h,f,l,v,d,p,y,m,w,b,g,x;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=this.bigTiff?20:12,r=this.bigTiff?8:2,t.next=4,this.getSlice(n);case 4:if(e=t.sent,o=this.bigTiff?e.readUint64(n):e.readUint16(n),s=o*i+(this.bigTiff?16:6),e.covers(n,s)){t.next=11;break}return t.next=10,this.getSlice(n,s);case 10:e=t.sent;case 11:a={},u=n+(this.bigTiff?8:2),c=0;case 14:if(!(c<o)){t.next=41;break}if(h=e.readUint16(u),f=e.readUint16(u+2),l=this.bigTiff?e.readUint64(u+4):e.readUint32(u+4),v=void 0,d=void 0,p=Nw(f),y=u+(this.bigTiff?12:8),!(p*l<=(this.bigTiff?8:4))){t.next=26;break}v=Fw(e,f,l,y),t.next=36;break;case 26:if(m=e.readOffset(y),w=Nw(f)*l,!e.covers(m,w)){t.next=32;break}v=Fw(e,f,l,m),t.next=36;break;case 32:return t.next=34,this.getSlice(m,w);case 34:b=t.sent,v=Fw(b,f,l,m);case 36:d=1===l&&-1===dp.It.indexOf(h)&&f!==dp.sf.RATIONAL&&f!==dp.sf.SRATIONAL?v[0]:v,a[dp.L[h]]=d;case 38:u+=i,++c,t.next=14;break;case 41:return g=zw(a),x=e.readOffset(n+r+i*o),t.abrupt("return",new Lw(a,g,x));case 44:case"end":return t.stop()}}),t,this)}))),function(t){return s.apply(this,arguments)})},{key:"requestIFD",value:(o=Sw(regeneratorRuntime.mark((function t(n){var i=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.ifdRequests[n]){t.next=4;break}return t.abrupt("return",this.ifdRequests[n]);case 4:if(0!==n){t.next=9;break}return this.ifdRequests[n]=this.parseFileDirectoryAt(this.firstIFDOffset),t.abrupt("return",this.ifdRequests[n]);case 9:if(this.ifdRequests[n-1]){t.next=19;break}t.prev=10,this.ifdRequests[n-1]=this.requestIFD(n-1),t.next=19;break;case 14:if(t.prev=14,t.t0=t.catch(10),!(t.t0 instanceof Gw)){t.next=18;break}throw new Gw(n);case 18:throw t.t0;case 19:return this.ifdRequests[n]=Sw(regeneratorRuntime.mark((function t(){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,i.ifdRequests[n-1];case 2:if(0!==(r=t.sent).nextIFDByteOffset){t.next=5;break}throw new Gw(n);case 5:return t.abrupt("return",i.parseFileDirectoryAt(r.nextIFDByteOffset));case 6:case"end":return t.stop()}}),t)})))(),t.abrupt("return",this.ifdRequests[n]);case 21:case"end":return t.stop()}}),t,this,[[10,14]])}))),function(t){return o.apply(this,arguments)})},{key:"getImage",value:(e=Sw(regeneratorRuntime.mark((function t(){var n,i,r=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=r.length>0&&void 0!==r[0]?r[0]:0,t.next=3,this.requestIFD(n);case 3:return i=t.sent,t.abrupt("return",new Wp(i.fileDirectory,i.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source));case 5:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"getImageCount",value:(r=Sw(regeneratorRuntime.mark((function t(){var n,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=0,i=!0;case 2:if(!i){t.next=18;break}return t.prev=3,t.next=6,this.requestIFD(n);case 6:++n,t.next=16;break;case 9:if(t.prev=9,t.t0=t.catch(3),!(t.t0 instanceof Gw)){t.next=15;break}i=!1,t.next=16;break;case 15:throw t.t0;case 16:t.next=2;break;case 18:return t.abrupt("return",n);case 19:case"end":return t.stop()}}),t,this,[[3,9]])}))),function(){return r.apply(this,arguments)})},{key:"getGhostValues",value:(i=Sw(regeneratorRuntime.mark((function t(){var n,i,r,e,o,s,a,u,c=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=this.bigTiff?16:8,!this.ghostValues){t.next=3;break}return t.abrupt("return",this.ghostValues);case 3:return r=(i="GDAL_STRUCTURAL_METADATA_SIZE=").length+100,t.next=7,this.getSlice(n,r);case 7:if(e=t.sent,i!==Fw(e,dp.sf.ASCII,i.length,n)){t.next=19;break}if(o=Fw(e,dp.sf.ASCII,r,n),s=o.split("\n")[0],!((a=Number(s.split("=")[1].split(" ")[0])+s.length)>r)){t.next=16;break}return t.next=15,this.getSlice(n,a);case 15:e=t.sent;case 16:u=Fw(e,dp.sf.ASCII,a,n),this.ghostValues={},u.split("\n").filter((function(t){return t.length>0})).map((function(t){return t.split("=")})).forEach((function(t){var n=gw(t,2),i=n[0],r=n[1];c.ghostValues[i]=r}));case 19:return t.abrupt("return",this.ghostValues);case 20:case"end":return t.stop()}}),t,this)}))),function(){return i.apply(this,arguments)})},{key:"close",value:function(){return"function"==typeof this.source.close&&this.source.close()}}],[{key:"fromSource",value:(n=Sw(regeneratorRuntime.mark((function t(n,i,r){var e,o,s,a,u,h,f;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.fetch([{offset:0,length:1024}],r);case 2:if(e=t.sent[0],o=new Xp(e),18761!==(s=o.getUint16(0,0))){t.next=9;break}a=!0,t.next=14;break;case 9:if(19789!==s){t.next=13;break}a=!1,t.next=14;break;case 13:throw new TypeError("Invalid byte order value.");case 14:if(42!==(u=o.getUint16(2,a))){t.next=19;break}h=!1,t.next=27;break;case 19:if(43!==u){t.next=26;break}if(h=!0,8===o.getUint16(4,a)){t.next=24;break}throw new Error("Unsupported offset byte-size.");case 24:t.next=27;break;case 26:throw new TypeError("Invalid magic number.");case 27:return f=h?o.getUint64(8,a):o.getUint32(4,a),t.abrupt("return",new c(n,a,h,f,i));case 29:case"end":return t.stop()}}),t)}))),function(t,i,r){return n.apply(this,arguments)})}]),c}(Dw),qw=function(t){kw(o,t);var n,i,r,e=Mw(o);function o(t,n){var i;return Iw(this,o),(i=e.call(this)).mainFile=t,i.overviewFiles=n,i.imageFiles=[t].concat(n),i.fileDirectoriesPerFile=null,i.fileDirectoriesPerFileParsing=null,i.imageCount=null,i}return Pw(o,[{key:"parseFileDirectoriesPerFile",value:(r=Sw(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=[this.mainFile.parseFileDirectoryAt(this.mainFile.firstIFDOffset)].concat(this.overviewFiles.map((function(t){return t.parseFileDirectoryAt(t.firstIFDOffset)}))),t.next=3,Promise.all(n);case 3:return this.fileDirectoriesPerFile=t.sent,t.abrupt("return",this.fileDirectoriesPerFile);case 5:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})},{key:"getImage",value:(i=Sw(regeneratorRuntime.mark((function t(){var n,i,r,e,o,s,a,u=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.length>0&&void 0!==u[0]?u[0]:0,t.next=3,this.getImageCount();case 3:return t.next=5,this.parseFileDirectoriesPerFile();case 5:i=0,r=0,e=0;case 8:if(!(e<this.imageFiles.length)){t.next=26;break}o=this.imageFiles[e],s=0;case 11:if(!(s<this.imageCounts[e])){t.next=22;break}if(n!==i){t.next=17;break}return t.next=15,o.requestIFD(r);case 15:return a=t.sent,t.abrupt("return",new Wp(a.fileDirectory,a.geoKeyDirectory,o.dataView,o.littleEndian,o.cache,o.source));case 17:i++,r++;case 19:s++,t.next=11;break;case 22:r=0;case 23:e++,t.next=8;break;case 26:throw new RangeError("Invalid image index");case 27:case"end":return t.stop()}}),t,this)}))),function(){return i.apply(this,arguments)})},{key:"getImageCount",value:(n=Sw(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(null===this.imageCount){t.next=2;break}return t.abrupt("return",this.imageCount);case 2:return n=[this.mainFile.getImageCount()].concat(this.overviewFiles.map((function(t){return t.getImageCount()}))),t.next=5,Promise.all(n);case 5:return this.imageCounts=t.sent,this.imageCount=this.imageCounts.reduce((function(t,n){return t+n}),0),t.abrupt("return",this.imageCount);case 8:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})}]),o}(Dw);function Bw(){return(Bw=Sw(regeneratorRuntime.mark((function t(n){var i,r,e=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=e.length>1&&void 0!==e[1]?e[1]:{},r=e.length>2?e[2]:void 0,t.abrupt("return",Uw.fromSource(pw(n,i),r));case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Ww(){return(Ww=Sw(regeneratorRuntime.mark((function t(n){var i,r,e,o,s,a=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=a.length>1&&void 0!==a[1]?a[1]:[],r=a.length>2&&void 0!==a[2]?a[2]:{},e=a.length>3?a[3]:void 0,t.next=5,Uw.fromSource(pw(n,r),e);case 5:return o=t.sent,t.next=8,Promise.all(i.map((function(t){return Uw.fromSource(pw(t,r))})));case 8:return s=t.sent,t.abrupt("return",new qw(o,s));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Vw(t,n,i,r,e,o,s){try{var a=t[o](s),u=a.value}catch(t){return void i(t)}a.done?n(u):Promise.resolve(u).then(r,e)}function Xw(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function Hw(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var Jw,Kw="undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,Yw=function(){function t(){var n=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Kw,e=arguments.length>1?arguments[1]:void 0;Xw(this,t),this.workers=null,this._awaitingDecoder=null,this.size=r,this.messageId=0,r&&(this._awaitingDecoder=e?Promise.resolve(e):new Promise((function(t){i.e(231).then(i.bind(i,231)).then((function(n){t(n.create)}))})),this._awaitingDecoder.then((function(t){n._awaitingDecoder=null,n.workers=[];for(var i=0;i<r;i++)n.workers.push({worker:t(),idle:!0})})))}var n,r,e,o,s;return n=t,(r=[{key:"decode",value:(o=regeneratorRuntime.mark((function t(n,i){var r=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this._awaitingDecoder){t.next=3;break}return t.next=3,this._awaitingDecoder;case 3:return t.abrupt("return",0===this.size?Mp(n).then((function(t){return t.decode(n,i)})):new Promise((function(t){var e=r.workers.find((function(t){return t.idle}))||r.workers[Math.floor(Math.random()*r.size)];e.idle=!1;var o=r.messageId++;e.worker.addEventListener("message",(function n(i){i.data.id===o&&(e.idle=!0,t(i.data.decoded),e.worker.removeEventListener("message",n))})),e.worker.postMessage({fileDirectory:n,buffer:i,id:o},[i])})));case 4:case"end":return t.stop()}}),t,this)})),s=function(){var t=this,n=arguments;return new Promise((function(i,r){var e=o.apply(t,n);function s(t){Vw(e,i,r,s,a,"next",t)}function a(t){Vw(e,i,r,s,a,"throw",t)}s(void 0)}))},function(t,n){return s.apply(this,arguments)})},{key:"destroy",value:function(){this.workers&&(this.workers.forEach((function(t){t.worker.terminate()})),this.workers=null)}}])&&Hw(n.prototype,r),e&&Hw(n,e),Object.defineProperty(n,"prototype",{writable:!1}),t}(),Zw=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),$w="STATISTICS_MAXIMUM",Qw="STATISTICS_MINIMUM";function tb(t){try{return t.getBoundingBox()}catch(i){var n=t.fileDirectory;return[0,0,n.ImageWidth,n.ImageLength]}}function nb(t){try{return t.getOrigin().slice(0,2)}catch(n){return[0,t.fileDirectory.ImageLength]}}function ib(t,n){try{return t.getResolution(n)[0]}catch(i){return n.fileDirectory.ImageWidth/t.fileDirectory.ImageWidth}}function rb(t){var n=t.geoKeys;if(!n)return null;if(n.ProjectedCSTypeGeoKey){if(!(r=gr(i="EPSG:"+n.ProjectedCSTypeGeoKey)))(e=zt(n.ProjLinearUnitsGeoKey))&&(r=new ui({code:i,units:e}));return r}if(n.GeographicTypeGeoKey){var i,r,e;if(!(r=gr(i="EPSG:"+n.GeographicTypeGeoKey)))(e=zt(n.GeogAngularUnitsGeoKey))&&(r=new ui({code:i,units:e}));return r}return null}function eb(t){return t.getImageCount().then((function(n){for(var i=new Array(n),r=0;r<n;++r)i[r]=t.getImage(r);return Promise.all(i)}))}function ob(t,n){return(t.overviews?function(t){return Ww.apply(this,arguments)}(t.url,t.overviews,n):function(t){return Bw.apply(this,arguments)}(t.url,n)).then(eb)}function sb(t,n,i,r,e){if(Array.isArray(t)){var o=t.length;if(!Array.isArray(n)||o!=n.length){var s=new Error(r);throw e(s),s}for(var a=0;a<o;++a)sb(t[a],n[a],i,r,e)}else if(n=n,Math.abs(t-n)>i*t)throw new Error(r)}function ab(t){return t instanceof Int8Array?-128:t instanceof Int16Array?-32768:t instanceof Int32Array?-2147483648:t instanceof Float32Array?12e-39:0}function ub(t){return t instanceof Int8Array?127:t instanceof Uint8Array||t instanceof Uint8ClampedArray?255:t instanceof Int16Array?32767:t instanceof Uint16Array?65535:t instanceof Int32Array?2147483647:t instanceof Uint32Array?4294967295:t instanceof Float32Array?34e37:255}var cb=function(t){function n(n){var i=t.call(this,{state:ps,tileGrid:null,projection:null,opaque:n.opaque,transition:n.transition,interpolate:!1!==n.interpolate,wrapX:n.wrapX})||this;i.Qu=n.sources;var r=i.Qu.length;i.tc=n.sourceOptions,i.ic=new Array(r),i.rc=new Array(r),i.ec,i.oc,i.sc,i.ac=!1!==n.normalize,i.uc=!1,i.W=null,i.cc=n.convertToRGB?"readRGB":"readRasters",i.setKey(i.Qu.map((function(t){return t.url})).join(","));for(var e=i,o=new Array(r),s=0;s<r;++s)o[s]=ob(i.Qu[s],i.tc);return Promise.all(o).then((function(t){e.hc(t)})).catch((function(t){console.error(t),e.W=t,e.setState(ms)})),i}return Zw(n,t),n.prototype.getError=function(){return this.W},n.prototype.hc=function(t){for(var n,i,r,e,o=new Array(t.length),s=new Array(t.length),a=new Array(t.length),u=0,c=t.length,h=function(c){var h=t[c],l=h.length,v=void 0,d=void 0,p=new Array(l),y=new Array(l);s[c]=new Array(l),a[c]=new Array(l);for(var m=0;m<l;++m){var w=h[m],b=w.getGDALNoData();a[c][m]=w.getGDALMetadata(0),s[c][m]=null===b?NaN:b;var g=f.Qu[c].bands;o[c]=g?g.length:w.getSamplesPerPixel();var x=l-(m+1);v||(v=tb(w)),d||(d=nb(w)),y[x]=ib(w,h[0]),p[x]=[w.getTileWidth(),w.getTileHeight()]}if(n?Zn(n,v,n):n=v,i){var j="Origin mismatch for source ".concat(c,", got [").concat(d,"] but expected [").concat(i,"]");sb(i,d,0,j,f.viewRejector)}else i=d;if(e){e.length-u>y.length&&(u=e.length-y.length);var S=e[e.length-1]/y[y.length-1];f.rc[c]=S;var k=y.map((function(t){return t*S}));j="Resolution mismatch for source ".concat(c,", got [").concat(k,"] but expected [").concat(e,"]");sb(e.slice(u,e.length),k,.02,j,f.viewRejector)}else e=y,f.rc[c]=1;r?sb(r.slice(u,r.length),p,0,"Tile size mismatch for source ".concat(c),f.viewRejector):r=p,f.ic[c]=h.reverse()},f=this,l=0;l<c;++l)h(l);for(var v=0,d=this.ic.length;v<d;++v)for(var p=this.ic[v];p.length<e.length;)p.unshift(void 0);if(!this.getProjection()){var y=t[0];for(v=y.length-1;v>=0;--v){var m=rb(y[v]);if(m){this.projection=m;break}}}this.ec=o,this.oc=s,this.sc=a;t:for(l=0;l<c;++l){if(void 0!==this.Qu[l].nodata){this.uc=!0;break}var w=s[l],b=this.Qu[l].bands;if(b){for(v=0;v<b.length;++v)if(!isNaN(w[b[v]-1])){this.uc=!0;break t}}else for(var g=0;g<w.length;++g)if(!isNaN(w[g])){this.uc=!0;break t}}var x=this.uc?1:0;this.bandCount=o.reduce((function(t,n){return t+=n}),0)+x;var j=new Jh({extent:n,minZoom:u,origin:i,resolutions:e,tileSizes:r});this.tileGrid=j,this.setLoader(this.fc.bind(this)),this.setState(ys),this.viewResolver({projection:this.projection,resolutions:e,center:zr(Hn(n),this.projection),extent:Lr(n,this.projection),zoom:0})},n.prototype.fc=function(t,n,i){for(var r=uu(this.tileGrid.getTileSize(t)),e=this.ic.length,o=new Array(e),s=this.uc,a=this.bandCount,u=this.ec,c=this.oc,h=this.Qu,f=function(e){var s=h[e],a=l.rc[e],u=[Math.round(n*(r[0]*a)),Math.round(i*(r[1]*a)),Math.round((n+1)*(r[0]*a)),Math.round((i+1)*(r[1]*a))],f=l.ic[e][t],v=void 0;s.bands&&(v=s.bands.map((function(t){return t-1})));var d=void 0;d=isNaN(s.nodata)?v?v.map((function(t){return c[e][t]})):c[e]:s.nodata,o[e]=f[l.cc]({window:u,width:r[0],height:r[1],samples:v,fillValue:d,pool:(Jw||(Jw=new Yw),Jw),interleave:!1})},l=this,v=0;v<e;++v)f(v);var d=r[0]*r[1],p=d*a,y=this.ac,m=this.sc;return Promise.all(o).then((function(t){var n;n=y?new Uint8Array(p):new Float32Array(p);for(var i=0,r=0;r<d;++r){for(var o=s,a=0;a<e;++a){var f=h[a],l=f.min,v=f.max,w=void 0,b=void 0;if(y){var g=m[a][0];void 0===l&&(l=g&&Qw in g?parseFloat(g.STATISTICS_MINIMUM):ab(t[a][0])),void 0===v&&(v=g&&$w in g?parseFloat(g.STATISTICS_MAXIMUM):ub(t[a][0])),b=-l*(w=255/(v-l))}for(var x=0;x<u[a];++x){var j=t[a][x][r],S=void 0;if(S=y?ci(w*j+b,0,255):j,s){var k=f.nodata;if(void 0===k){var M=void 0;M=f.bands?f.bands[x]-1:x,k=c[a][M]}j!==k&&(o=!1,n[i]=S)}else n[i]=S;i++}}s&&(o||(n[i]=255),i++)}return n}))},n}(Ud);cb.prototype.getView;var hb=cb,fb=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),lb="default",vb="truncated",db=function(t){function n(n,i,r,e,o,s,a){var u=t.call(this,i,r,e,o,s,a)||this;return u.lc=null,u.Oo=n,u}return fb(n,t),n.prototype.getImage=function(){if(this.lc)return this.lc;var n=t.prototype.getImage.call(this);if(this.state==dt){var i=this.Oo;if(n.width==i[0]&&n.height==i[1])return this.lc=n,n;var r=Oo(i[0],i[1]);return r.drawImage(n,0,0),this.lc=r.canvas,r.canvas}return n},n}(No),pb=function(t){function n(n){var i=this,r=n,e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate);var o=r.size,s=void 0!==r.tierSizeCalculation?r.tierSizeCalculation:lb,a=r.tilePixelRatio||1,u=o[0],c=o[1],h=[],f=r.tileSize||Ga,l=f*a;switch(s){case lb:for(;u>l||c>l;)h.push([Math.ceil(u/l),Math.ceil(c/l)]),l+=l;break;case vb:for(var v=u,d=c;v>l||d>l;)h.push([Math.ceil(v/l),Math.ceil(d/l)]),v>>=1,d>>=1;break;default:Mt(!1,53)}h.push([1,1]),h.reverse();for(var p=[a],y=[0],m=1,w=h.length;m<w;m++)p.push(a<<m),y.push(h[m-1][0]*h[m-1][1]+y[m-1]);p.reverse();var b=new Jh({tileSize:f,extent:r.extent||[0,-c,u,0],resolutions:p}),g=r.url;g&&-1==g.indexOf("{TileGroup}")&&-1==g.indexOf("{tileIndex}")&&(g+="{TileGroup}/{z}-{x}-{y}.jpg");var x=af(g),j=f*a;var S=of(x.map((function(t){return function(n,i,r){if(n){var e=n[0],o=n[1],s=n[2],a=o+s*h[e][0],u={z:e,x:o,y:s,tileIndex:a,TileGroup:"TileGroup"+((a+y[e])/j|0)};return t.replace(/\{(\w+?)\}/g,(function(t,n){return u[n]}))}}}))),k=db.bind(null,uu(f*a));(i=t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,projection:r.projection,tilePixelRatio:a,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileClass:k,tileGrid:b,tileUrlFunction:S,transition:r.transition})||this).zDirection=r.zDirection;var M=S(b.getTileCoordForCoordAndResolution(Hn(b.getExtent()),p[p.length-1]),1,null),_=new Image;return _.addEventListener("error",function(){j=f,this.changed()}.bind(i)),_.src=M,i}return fb(n,t),n}(gd),yb=function(t,n,i){if(i||2===arguments.length)for(var r,e=0,o=n.length;e<o;e++)!r&&e in n||(r||(r=Array.prototype.slice.call(n,0,e)),r[e]=n[e]);return t.concat(r||Array.prototype.slice.call(n))},mb="version1",wb="version2",bb="version3",gb={};gb[mb]={level0:{supports:[],formats:[],qualities:["native"]},level1:{supports:["regionByPx","sizeByW","sizeByH","sizeByPct"],formats:["jpg"],qualities:["native"]},level2:{supports:["regionByPx","regionByPct","sizeByW","sizeByH","sizeByPct","sizeByConfinedWh","sizeByWh"],formats:["jpg","png"],qualities:["native","color","grey","bitonal"]}},gb[wb]={level0:{supports:[],formats:["jpg"],qualities:["default"]},level1:{supports:["regionByPx","sizeByW","sizeByH","sizeByPct"],formats:["jpg"],qualities:["default"]},level2:{supports:["regionByPx","regionByPct","sizeByW","sizeByH","sizeByPct","sizeByConfinedWh","sizeByDistortedWh","sizeByWh"],formats:["jpg","png"],qualities:["default","bitonal"]}},gb[bb]={level0:{supports:[],formats:["jpg"],qualities:["default"]},level1:{supports:["regionByPx","regionSquare","sizeByW","sizeByH","sizeByWh"],formats:["jpg"],qualities:["default"]},level2:{supports:["regionByPx","regionSquare","regionByPct","sizeByW","sizeByH","sizeByPct","sizeByConfinedWh","sizeByWh"],formats:["jpg","png"],qualities:["default"]}},gb.none={none:{supports:[],formats:[],qualities:[]}};var xb=/^https?:\/\/library\.stanford\.edu\/iiif\/image-api\/(?:1\.1\/)?compliance\.html#level[0-2]$/,jb=/^https?:\/\/iiif\.io\/api\/image\/2\/level[0-2](?:\.json)?$/,Sb=/(^https?:\/\/iiif\.io\/api\/image\/3\/level[0-2](?:\.json)?$)|(^level[0-2]$)/;var kb={};kb[mb]=function(t){var n=t.getComplianceLevelSupportedFeatures();return void 0===n&&(n=gb[mb].level0),{url:void 0===t.imageInfo["@id"]?void 0:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),supports:n.supports,formats:yb(yb([],n.formats,!0),[void 0===t.imageInfo.formats?[]:t.imageInfo.formats],!1),qualities:yb(yb([],n.qualities,!0),[void 0===t.imageInfo.qualities?[]:t.imageInfo.qualities],!1),resolutions:t.imageInfo.scale_factors,tileSize:void 0!==t.imageInfo.tile_width?void 0!==t.imageInfo.tile_height?[t.imageInfo.tile_width,t.imageInfo.tile_height]:[t.imageInfo.tile_width,t.imageInfo.tile_width]:null!=t.imageInfo.tile_height?[t.imageInfo.tile_height,t.imageInfo.tile_height]:void 0}},kb[wb]=function(t){var n=t.getComplianceLevelSupportedFeatures(),i=Array.isArray(t.imageInfo.profile)&&t.imageInfo.profile.length>1,r=i&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],e=i&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],o=i&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:yb(yb([],n.supports,!0),r,!0),formats:yb(yb([],n.formats,!0),e,!0),qualities:yb(yb([],n.qualities,!0),o,!0)}},kb[bb]=function(t){var n=t.getComplianceLevelSupportedFeatures(),i=void 0===t.imageInfo.extraFormats?n.formats:yb(yb([],n.formats,!0),t.imageInfo.extraFormats,!0),r=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return y(["jpg","png","gif"],t)})).reduce((function(t,n){return void 0===t&&y(i,n)?n:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?n.supports:yb(yb([],n.supports,!0),t.imageInfo.extraFeatures,!0),formats:i,qualities:void 0===t.imageInfo.extraQualities?n.qualities:yb(yb([],n.qualities,!0),t.imageInfo.extraQualities,!0),preferredFormat:r}};var Mb=function(){function t(t){this.setImageInfo(t)}return t.prototype.setImageInfo=function(t){this.imageInfo="string"==typeof t?JSON.parse(t):t},t.prototype.getImageApiVersion=function(){if(void 0!==this.imageInfo){var t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(var n=0;n<t.length;n++)switch(t[n]){case"http://library.stanford.edu/iiif/image-api/1.1/context.json":case"http://iiif.io/api/image/1/context.json":return mb;case"http://iiif.io/api/image/2/context.json":return wb;case"http://iiif.io/api/image/3/context.json":return bb;case"ol-no-context":if(this.getComplianceLevelEntryFromProfile(mb)&&this.imageInfo.identifier)return mb}Mt(!1,61)}},t.prototype.getComplianceLevelEntryFromProfile=function(t){if(void 0!==this.imageInfo&&void 0!==this.imageInfo.profile)switch(void 0===t&&(t=this.getImageApiVersion()),t){case mb:if(xb.test(this.imageInfo.profile))return this.imageInfo.profile;break;case bb:if(Sb.test(this.imageInfo.profile))return this.imageInfo.profile;break;case wb:if("string"==typeof this.imageInfo.profile&&jb.test(this.imageInfo.profile))return this.imageInfo.profile;if(Array.isArray(this.imageInfo.profile)&&this.imageInfo.profile.length>0&&"string"==typeof this.imageInfo.profile[0]&&jb.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}},t.prototype.getComplianceLevelFromProfile=function(t){var n=this.getComplianceLevelEntryFromProfile(t);if(void 0!==n){var i=n.match(/level[0-2](?:\.json)?$/g);return Array.isArray(i)?i[0].replace(".json",""):void 0}},t.prototype.getComplianceLevelSupportedFeatures=function(){if(void 0!==this.imageInfo){var t=this.getImageApiVersion(),n=this.getComplianceLevelFromProfile(t);return void 0===n?gb.none.none:gb[t][n]}},t.prototype.getTileSourceOptions=function(t){var n=t||{},i=this.getImageApiVersion();if(void 0!==i){var r=void 0===i?void 0:kb[i](this);if(void 0!==r)return{url:r.url,version:i,size:[this.imageInfo.width,this.imageInfo.height],sizes:r.sizes,format:void 0!==n.format&&y(r.formats,n.format)?n.format:void 0!==r.preferredFormat?r.preferredFormat:"jpg",supports:r.supports,quality:n.quality&&y(r.qualities,n.quality)?n.quality:y(r.qualities,"native")?"native":"default",resolutions:Array.isArray(r.resolutions)?r.resolutions.sort((function(t,n){return n-t})):void 0,tileSize:r.tileSize}}},t}(),_b=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function Ob(t){return t.toLocaleString("en",{maximumFractionDigits:10})}var Tb=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate);var o=r.url||"";o+=o.lastIndexOf("/")===o.length-1||""===o?"":"/";var s=r.version||wb,a=r.sizes||[],u=r.size;Mt(null!=u&&Array.isArray(u)&&2==u.length&&!isNaN(u[0])&&u[0]>0&&!isNaN(u[1])&&u[1]>0,60);var c,h,f,l=u[0],v=u[1],d=r.tileSize,p=r.tilePixelRatio||1,m=r.format||"jpg",w=r.quality||(r.version==mb?"native":"default"),b=r.resolutions||[],g=r.supports||[],x=r.extent||[0,-v,l,0],j=null!=a&&Array.isArray(a)&&a.length>0,S=void 0!==d&&("number"==typeof d&&Number.isInteger(d)&&d>0||Array.isArray(d)&&d.length>0),k=null!=g&&Array.isArray(g)&&(y(g,"regionByPx")||y(g,"regionByPct"))&&(y(g,"sizeByWh")||y(g,"sizeByH")||y(g,"sizeByW")||y(g,"sizeByPct"));if(b.sort((function(t,n){return n-t})),S||k)if(null!=d&&("number"==typeof d&&Number.isInteger(d)&&d>0?(c=d,h=d):Array.isArray(d)&&d.length>0&&((1==d.length||null==d[1]&&Number.isInteger(d[0]))&&(c=d[0],h=d[0]),2==d.length&&(Number.isInteger(d[0])&&Number.isInteger(d[1])?(c=d[0],h=d[1]):null==d[0]&&Number.isInteger(d[1])&&(c=d[1],h=d[1])))),void 0!==c&&void 0!==h||(c=Ga,h=Ga),0==b.length)for(var M=f=Math.max(Math.ceil(Math.log(l/c)/Math.LN2),Math.ceil(Math.log(v/h)/Math.LN2));M>=0;M--)b.push(Math.pow(2,M));else{var _=Math.max.apply(Math,b);f=Math.round(Math.log(_)/Math.LN2)}else if(c=l,h=v,b=[],j){a.sort((function(t,n){return t[0]-n[0]})),f=-1;var O=[];for(M=0;M<a.length;M++){var T=l/a[M][0];b.length>0&&b[b.length-1]==T?O.push(M):(b.push(T),f++)}if(O.length>0)for(M=0;M<O.length;M++)a.splice(O[M]-M,1)}else b.push(1),a.push([l,v]),f=0;var E=new Jh({tileSize:[c,h],extent:x,origin:$n(x),resolutions:b}),A=db.bind(null,uu(d||256).map((function(t){return t*p})));return(i=t.call(this,{attributions:r.attributions,attributionsCollapsible:r.attributionsCollapsible,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,projection:r.projection,reprojectionErrorThreshold:r.reprojectionErrorThreshold,state:r.state,tileClass:A,tileGrid:E,tilePixelRatio:r.tilePixelRatio,tileUrlFunction:function(t,n,i){var r,e,u=t[0];if(!(u>f)){var d=t[1],p=t[2],x=b[u];if(!(void 0===d||void 0===p||void 0===x||d<0||Math.ceil(l/x/c)<=d||p<0||Math.ceil(v/x/h)<=p)){if(k||S){var M=d*c*x,_=p*h*x,O=c*x,T=h*x,E=c,A=h;if(M+O>l&&(O=l-M),_+T>v&&(T=v-_),M+c*x>l&&(E=Math.floor((l-M+x-1)/x)),_+h*x>v&&(A=Math.floor((v-_+x-1)/x)),0==M&&O==l&&0==_&&T==v)r="full";else if(!k||y(g,"regionByPx"))r=M+","+_+","+O+","+T;else if(y(g,"regionByPct")){r="pct:"+Ob(M/l*100)+","+Ob(_/v*100)+","+Ob(O/l*100)+","+Ob(T/v*100)}s!=bb||k&&!y(g,"sizeByWh")?!k||y(g,"sizeByW")?e=E+",":y(g,"sizeByH")?e=","+A:y(g,"sizeByWh")?e=E+","+A:y(g,"sizeByPct")&&(e="pct:"+Ob(100/x)):e=E+","+A}else if(r="full",j){var C=a[u][0],R=a[u][1];e=s==bb?C==l&&R==v?"max":C+","+R:C==l?"full":C+","}else e=s==bb?"max":"full";return o+r+"/"+e+"/0/"+w+"."+m}}},transition:r.transition})||this).zDirection=r.zDirection,i}return _b(n,t),n}(gd),Eb=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ab=function(t){function n(n,i,r,e,o,s,a){var u=this,c=n.getExtent(),h=i.getExtent(),f=h?Zn(r,h):r,l=Wh(n,i,Hn(f),e),v=new pl(n,i,f,c,.5*l,e),d=s(v.calculateSourceExtent(),l,o),p=d?mo:xo,y=d?d.getPixelRatio():1;return(u=t.call(this,r,e,y,p)||this).ps=i,u.ws=c,u.zs=v,u.wi=e,u.vc=r,u.dc=d,u.yc=y,u.pu=a,u.Ut=null,u.mc=null,u}return Eb(n,t),n.prototype.disposeInternal=function(){this.state==wo&&this.wc(),t.prototype.disposeInternal.call(this)},n.prototype.getImage=function(){return this.Ut},n.prototype.getProjection=function(){return this.ps},n.prototype.Fs=function(){var t=this.dc.getState();if(t==bo){var n=ti(this.vc)/this.wi,i=Yn(this.vc)/this.wi;this.Ut=Xh(n,i,this.yc,this.dc.getResolution(),this.ws,this.wi,this.vc,this.zs,[{extent:this.dc.getExtent(),image:this.dc.getImage()}],0,void 0,this.pu)}this.state=t,this.changed()},n.prototype.load=function(){if(this.state==mo){this.state=wo,this.changed();var t=this.dc.getState();t==bo||t==go?this.Fs():(this.mc=Y(this.dc,N,(function(t){var n=this.dc.getState();n!=bo&&n!=go||(this.wc(),this.Fs())}),this),this.dc.load())}},n.prototype.wc=function(){$(this.mc),this.mc=null},n}(yo),Cb=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Rb="imageloadstart",Pb="imageloadend",Ib="imageloaderror",Nb=function(t){function n(n,i){var r=t.call(this,n)||this;return r.image=i,r}return Cb(n,t),n}(f);function zb(t,n){t.getImage().src=n}var Fb=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{attributions:n.attributions,projection:n.projection,state:n.state,interpolate:r})||this).on,i.once,i.un,i.Ti=void 0!==n.resolutions?n.resolutions:null,i.bc=null,i.gc=0,i}return Cb(n,t),n.prototype.getResolutions=function(){return this.Ti},n.prototype.findNearestResolution=function(t){if(this.Ti){var n=m(this.Ti,t,0);t=this.Ti[n]}return t},n.prototype.getImage=function(t,n,i,r){var e=this.getProjection();if(e&&r&&!Tr(e,r)){if(this.bc){if(this.gc==this.getRevision()&&Tr(this.bc.getProjection(),r)&&this.bc.getResolution()==n&&Nn(this.bc.getExtent(),t))return this.bc;this.bc.dispose(),this.bc=null}return this.bc=new Ab(e,r,t,n,i,function(t,n,i){return this.getImageInternal(t,n,i,e)}.bind(this),this.getInterpolate()),this.gc=this.getRevision(),this.bc}return e&&(r=e),this.getImageInternal(t,n,i,r)},n.prototype.getImageInternal=function(t,n,i,e){return r()},n.prototype.handleImageChange=function(t){var n,i=t.target;switch(i.getState()){case wo:this.loading=!0,n=Rb;break;case bo:this.loading=!1,n=Pb;break;case go:this.loading=!1,n=Ib;break;default:return}this.hasListener(n)&&this.dispatchEvent(new Nb(n,i))},n}(fd),Lb=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Gb=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,interpolate:e,projection:r.projection,resolutions:r.resolutions})||this).Bt=void 0!==r.crossOrigin?r.crossOrigin:null,i.Su=void 0===r.hidpi||r.hidpi,i.Ge=r.url,i.Ft=void 0!==r.imageLoadFunction?r.imageLoadFunction:zb,i.xc=r.params||{},i.Nt=null,i.jc=[0,0],i.Sc=0,i.kc=void 0!==r.ratio?r.ratio:1.5,i}return Lb(n,t),n.prototype.getParams=function(){return this.xc},n.prototype.getImageInternal=function(t,n,i,r){if(void 0===this.Ge)return null;n=this.findNearestResolution(n),i=this.Su?i:1;var e=this.Nt;if(e&&this.Sc==this.getRevision()&&e.getResolution()==n&&e.getPixelRatio()==i&&On(e.getExtent(),t))return e;var o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};E(o,this.xc);var s=((t=t.slice())[0]+t[2])/2,a=(t[1]+t[3])/2;if(1!=this.kc){var u=this.kc*ti(t)/2,c=this.kc*Yn(t)/2;t[0]=s-u,t[1]=a-c,t[2]=s+u,t[3]=a+c}var h=n/i,f=Math.ceil(ti(t)/h),l=Math.ceil(Yn(t)/h);t[0]=s-h*f/2,t[2]=s+h*f/2,t[1]=a-h*l/2,t[3]=a+h*l/2,this.jc[0]=f,this.jc[1]=l;var v=this.Mc(t,this.jc,i,r,o);return this.Nt=new ko(t,n,i,v,this.Bt,this.Ft),this.Sc=this.getRevision(),this.Nt.addEventListener(N,this.handleImageChange.bind(this)),this.Nt},n.prototype.getImageLoadFunction=function(){return this.Ft},n.prototype.Mc=function(t,n,i,r,e){var o=r.getCode().split(/:(?=\d+$)/).pop();e.SIZE=n[0]+","+n[1],e.BBOX=t.join(","),e.BBOXSR=o,e.IMAGESR=o,e.DPI=Math.round(90*i);var s=this.Ge,a=s.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");return a==s&&Mt(!1,50),uf(a,e)},n.prototype.getUrl=function(){return this.Ge},n.prototype.setImageLoadFunction=function(t){this.Nt=null,this.Ft=t,this.changed()},n.prototype.setUrl=function(t){t!=this.Ge&&(this.Ge=t,this.Nt=null,this.changed())},n.prototype.updateParams=function(t){E(this.xc,t),this.Nt=null,this.changed()},n}(Fb),Db=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ub=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,interpolate:e,projection:r.projection,resolutions:r.resolutions,state:r.state})||this)._c=r.canvasFunction,i.Ut=null,i.Sc=0,i.kc=void 0!==r.ratio?r.ratio:1.5,i}return Db(n,t),n.prototype.getImageInternal=function(t,n,i,r){n=this.findNearestResolution(n);var e=this.Ut;if(e&&this.Sc==this.getRevision()&&e.getResolution()==n&&e.getPixelRatio()==i&&On(e.getExtent(),t))return e;ei(t=t.slice(),this.kc);var o=[ti(t)/n*i,Yn(t)/n*i],s=this._c.call(this,t,n,i,o,r);return s&&(e=new _o(t,n,i,s)),this.Ut=e,this.Sc=this.getRevision(),e},n}(Fb),qb=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();var Bb=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{interpolate:r,projection:n.projection,resolutions:n.resolutions})||this).Bt=void 0!==n.crossOrigin?n.crossOrigin:null,i.Oc=void 0!==n.displayDpi?n.displayDpi:96,i.xc=n.params||{},i.Ge=n.url,i.Ft=void 0!==n.imageLoadFunction?n.imageLoadFunction:zb,i.Su=void 0===n.hidpi||n.hidpi,i.dt=void 0!==n.metersPerUnit?n.metersPerUnit:1,i.kc=void 0!==n.ratio?n.ratio:1,i.Tc=void 0!==n.useOverlay&&n.useOverlay,i.Nt=null,i.Sc=0,i}return qb(n,t),n.prototype.getParams=function(){return this.xc},n.prototype.getImageInternal=function(t,n,i,r){n=this.findNearestResolution(n),i=this.Su?i:1;var e=this.Nt;if(e&&this.Sc==this.getRevision()&&e.getResolution()==n&&e.getPixelRatio()==i&&On(e.getExtent(),t))return e;1!=this.kc&&ei(t=t.slice(),this.kc);var o=[ti(t)/n*i,Yn(t)/n*i];if(void 0!==this.Ge){var s=this.getUrl(this.Ge,this.xc,t,o,r);(e=new ko(t,n,i,s,this.Bt,this.Ft)).addEventListener(N,this.handleImageChange.bind(this))}else e=null;return this.Nt=e,this.Sc=this.getRevision(),e},n.prototype.getImageLoadFunction=function(){return this.Ft},n.prototype.updateParams=function(t){E(this.xc,t),this.changed()},n.prototype.getUrl=function(t,n,i,r,e){var o=function(t,n,i,r){var e=ti(t),o=Yn(t),s=n[0],a=n[1],u=.0254/r;return a*e>s*o?e*i/(s*u):o*i/(a*u)}(i,r,this.dt,this.Oc),s=Hn(i),a={OPERATION:this.Tc?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.Oc,SETDISPLAYWIDTH:Math.round(r[0]),SETDISPLAYHEIGHT:Math.round(r[1]),SETVIEWSCALE:o,SETVIEWCENTERX:s[0],SETVIEWCENTERY:s[1]};return E(a,n),uf(t,a)},n.prototype.setImageLoadFunction=function(t){this.Nt=null,this.Ft=t,this.changed()},n}(Fb),Wb=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Vb=function(t){function n(n){var i=this,r=void 0!==n.crossOrigin?n.crossOrigin:null,e=void 0!==n.imageLoadFunction?n.imageLoadFunction:zb,o=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(o=n.interpolate),(i=t.call(this,{attributions:n.attributions,interpolate:o,projection:gr(n.projection)})||this).Ge=n.url,i.Ec=n.imageExtent,i.Nt=new ko(i.Ec,void 0,1,i.Ge,r,e),i.jc=n.imageSize?n.imageSize:null,i.Nt.addEventListener(N,i.handleImageChange.bind(i)),i}return Wb(n,t),n.prototype.getImageExtent=function(){return this.Ec},n.prototype.getImageInternal=function(t,n,i,r){return ni(t,this.Nt.getExtent())?this.Nt:null},n.prototype.getUrl=function(){return this.Ge},n.prototype.handleImageChange=function(n){if(this.Nt.getState()==bo){var i=this.Nt.getExtent(),r=this.Nt.getImage(),e=void 0,o=void 0;this.jc?(e=this.jc[0],o=this.jc[1]):(e=r.width,o=r.height);var s=ti(i),a=Yn(i),u=s/e,c=a/o,h=e,f=o;if(u>c?h=Math.round(s/c):f=Math.round(a/u),h!==e||f!==o){var l=Oo(h,f);this.getInterpolate()||E(l,Dh);var v=l.canvas;l.drawImage(r,0,0,e,o,0,0,v.width,v.height),this.Nt.setImage(v)}}t.prototype.handleImageChange.call(this,n)},n}(Fb),Xb="1.3.0",Hb="carmentaserver",Jb="geoserver",Kb="mapserver",Yb="qgis",Zb=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),$b=[101,101],Qb=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,interpolate:e,projection:r.projection,resolutions:r.resolutions})||this).Bt=void 0!==r.crossOrigin?r.crossOrigin:null,i.Ge=r.url,i.Ft=void 0!==r.imageLoadFunction?r.imageLoadFunction:zb,i.xc=r.params||{},i.Ac=!0,i.Cc(),i.Rc=r.serverType,i.Su=void 0===r.hidpi||r.hidpi,i.Nt=null,i.jc=[0,0],i.Sc=0,i.kc=void 0!==r.ratio?r.ratio:1.5,i}return Zb(n,t),n.prototype.getFeatureInfoUrl=function(t,n,i,r){if(void 0!==this.Ge){var e=gr(i),o=this.getProjection();o&&o!==e&&(n=Wh(o,e,t,n),t=Cr(t,e,o));var s=Kn(t,n,0,$b),a={SERVICE:"WMS",VERSION:Xb,REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.xc.LAYERS};E(a,this.xc,r);var u=xi((t[0]-s[0])/n,4),c=xi((s[3]-t[1])/n,4);return a[this.Ac?"I":"X"]=u,a[this.Ac?"J":"Y"]=c,this.Mc(s,$b,1,o||e,a)}},n.prototype.getLegendUrl=function(t,n){if(void 0!==this.Ge){var i={SERVICE:"WMS",VERSION:Xb,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===n||void 0===n.LAYER){var r=this.xc.LAYERS;if(!(!Array.isArray(r)||1===r.length))return;i.LAYER=r}if(void 0!==t){var e=this.getProjection()?this.getProjection().getMetersPerUnit():1;i.SCALE=t*e/28e-5}return E(i,n),uf(this.Ge,i)}},n.prototype.getParams=function(){return this.xc},n.prototype.getImageInternal=function(t,n,i,r){if(void 0===this.Ge)return null;n=this.findNearestResolution(n),1==i||this.Su&&void 0!==this.Rc||(i=1);var e=n/i,o=Hn(t),s=Kn(o,e,0,[ji(ti(t)/e,4),ji(Yn(t)/e,4)]),a=Kn(o,e,0,[ji(this.kc*ti(t)/e,4),ji(this.kc*Yn(t)/e,4)]),u=this.Nt;if(u&&this.Sc==this.getRevision()&&u.getResolution()==n&&u.getPixelRatio()==i&&On(u.getExtent(),s))return u;var c={SERVICE:"WMS",VERSION:Xb,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};E(c,this.xc),this.jc[0]=gi(ti(a)/e,4),this.jc[1]=gi(Yn(a)/e,4);var h=this.Mc(a,this.jc,i,r,c);return this.Nt=new ko(a,n,i,h,this.Bt,this.Ft),this.Sc=this.getRevision(),this.Nt.addEventListener(N,this.handleImageChange.bind(this)),this.Nt},n.prototype.getImageLoadFunction=function(){return this.Ft},n.prototype.Mc=function(t,n,i,r,e){if(Mt(void 0!==this.Ge,9),e[this.Ac?"CRS":"SRS"]=r.getCode(),"STYLES"in this.xc||(e.STYLES=""),1!=i)switch(this.Rc){case Jb:var o=90*i+.5|0;"FORMAT_OPTIONS"in e?e.FORMAT_OPTIONS+=";dpi:"+o:e.FORMAT_OPTIONS="dpi:"+o;break;case Kb:e.MAP_RESOLUTION=90*i;break;case Hb:case Yb:e.DPI=90*i;break;default:Mt(!1,8)}e.WIDTH=n[0],e.HEIGHT=n[1];var s,a=r.getAxisOrientation();return s=this.Ac&&"ne"==a.substr(0,2)?[t[1],t[0],t[3],t[2]]:t,e.BBOX=s.join(","),uf(this.Ge,e)},n.prototype.getUrl=function(){return this.Ge},n.prototype.setImageLoadFunction=function(t){this.Nt=null,this.Ft=t,this.changed()},n.prototype.setUrl=function(t){t!=this.Ge&&(this.Ge=t,this.Nt=null,this.changed())},n.prototype.updateParams=function(t){E(this.xc,t),this.Cc(),this.Nt=null,this.changed()},n.prototype.Cc=function(){var t=this.xc.VERSION||Xb;this.Ac=Ji(t,"1.3")>=0},n}(Fb),tg={"image/png":!0,"image/jpeg":!0,"image/gif":!0,"image/webp":!0},ng={"application/vnd.mapbox-vector-tile":!0,"application/geo+json":!0};function ig(t,n){for(var i,r,e=0;e<t.length;++e){var o=t[e];if("item"===o.rel){if(o.type===n){i=o.href;break}tg[o.type]?r=o.href:r||0!==o.type.indexOf("image/")||(r=o.href)}}if(!i){if(!r)throw new Error('Could not find "item" link');i=r}return i}function rg(t,n,i){for(var r,e,o={},s=0;s<t.length;++s){var a=t[s];if(o[a.type]=a.href,"item"===a.rel){if(a.type===n){r=a.href;break}ng[a.type]&&(e=a.href)}}if(!r&&i)for(s=0;s<i.length;++s){var u=i[s];if(o[u]){r=o[u];break}}if(!r){if(!e)throw new Error('Could not find "item" link');r=e}return r}function eg(t,n,i,r){var e=t.projection;if(!e&&!(e=gr(n.crs)))throw new Error("Unsupported CRS: ".concat(n.crs));for(var o="en"!==e.getAxisOrientation().substr(0,2),s=n.tileMatrices,a={},u=0;u<s.length;++u){var c=s[u];a[c.id]=c}var h={},f=[];if(r)for(u=0;u<r.length;++u){var l=(b=r[u]).tileMatrix;f.push(l),h[l]=b}else for(u=0;u<s.length;++u){l=s[u].id;f.push(l)}var v=f.length,d=new Array(v),p=new Array(v),y=new Array(v),m=new Array(v),w=[-1/0,-1/0,1/0,1/0];for(u=0;u<v;++u){l=f[u];var b,g=(c=a[l]).pointOfOrigin;if(d[u]=o?[g[1],g[0]]:g,p[u]=c.cellSize,y[u]=[c.matrixWidth,c.matrixHeight],m[u]=[c.tileWidth,c.tileHeight],b=h[l]){var x=c.cellSize*c.tileWidth,j=d[u][0]+b.minTileCol*x,S=d[u][0]+(b.maxTileCol+1)*x,k=c.cellSize*c.tileHeight,M=void 0,_=void 0;"bottomLeft"===c.cornerOfOrigin?(M=d[u][1]+b.minTileRow*k,_=d[u][1]+(b.maxTileRow+1)*k):(M=d[u][1]-(b.maxTileRow+1)*k,_=d[u][1]-b.minTileRow*k),Zn(w,[j,M,S,_],w)}}var O=new Jh({origins:d,resolutions:p,sizes:y,tileSizes:m,extent:r?w:void 0}),T=t.context,A=t.url;return{grid:O,urlTemplate:i,urlFunction:function(t,n,e){if(t){var o=f[t[0]],s=a[o],u="bottomLeft"===s.cornerOfOrigin,c={tileMatrix:o,tileCol:t[1],tileRow:u?-t[2]-1:t[2]};if(r){var l=h[s.id];if(c.tileCol<l.minTileCol||c.tileCol>l.maxTileCol||c.tileRow<l.minTileRow||c.tileRow>l.maxTileRow)return}E(c,T);var v=i.replace(/\{(\w+?)\}/g,(function(t,n){return c[n]}));return jh(A,v)}}}}function og(t){return xh(t.url).then((function(n){return function(t,n){var i,r=n.tileMatrixSetLimits;if("map"===n.dataType)i=ig(n.links,t.mediaType);else{if("vector"!==n.dataType)throw new Error('Expected tileset data type to be "map" or "vector"');i=rg(n.links,t.mediaType,t.supportedMediaTypes)}if(n.tileMatrixSet)return eg(t,n.tileMatrixSet,i,r);var e=n.links.find((function(t){return"http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme"===t.rel}));if(!e)throw new Error("Expected http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme link or tileMatrixSet");var o=e.href;return xh(jh(t.url,o)).then((function(n){return eg(t,n,i,r)}))}(t,n)}))}var sg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ag=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(r=n.interpolate),i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:r,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,state:ps,tileLoadFunction:n.tileLoadFunction,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this,og({url:n.url,projection:i.getProjection(),mediaType:n.mediaType,context:n.context||null}).then(i.Pc.bind(i)).catch(i.Ic.bind(i)),i}return sg(n,t),n.prototype.Pc=function(t){this.tileGrid=t.grid,this.setTileUrlFunction(t.urlFunction,t.urlTemplate),this.setState(ys)},n.prototype.Ic=function(t){console.error(t),this.setState(ms)},n}(gd),ug=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),cg=function(t){function n(n){var i=this,r=n.projection||"EPSG:3857",e=n.extent||nf(r),o=n.tileGrid||$h({extent:e,maxResolution:n.maxResolution,maxZoom:void 0!==n.maxZoom?n.maxZoom:22,minZoom:n.minZoom,tileSize:n.tileSize||512});return(i=t.call(this,{attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,cacheSize:n.cacheSize,interpolate:!0,opaque:!1,projection:r,state:n.state,tileGrid:o,tileLoadFunction:n.tileLoadFunction?n.tileLoadFunction:hg,tileUrlFunction:n.tileUrlFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:void 0===n.zDirection?1:n.zDirection})||this).Fe=n.format?n.format:null,i.sourceTileCache=new $c(i.tileCache.highWaterMark),i.zu=null==n.overlaps||n.overlaps,i.tileClass=n.tileClass?n.tileClass:sh,i.Nc={},i}return ug(n,t),n.prototype.getFeaturesInExtent=function(t){var n=[],i=this.tileCache;if(0===i.getCount())return n;var r=Jc(i.peekFirstKey())[0],e=this.tileGrid;return i.forEach((function(i){if(i.tileCoord[0]===r&&i.getState()===dt)for(var o=i.getSourceTiles(),s=0,a=o.length;s<a;++s){var u=o[s],c=u.tileCoord;if(ni(t,e.getTileCoordExtent(c))){var h=u.getFeatures();if(h)for(var f=0,l=h.length;f<l;++f){var v=h[f],d=v.getGeometry();ni(t,d.getExtent())&&n.push(v)}}}})),n},n.prototype.getOverlaps=function(){return this.zu},n.prototype.clear=function(){this.tileCache.clear(),this.sourceTileCache.clear()},n.prototype.expireCache=function(n,i){var r=this.getTileCacheForProjection(n),e=Object.keys(i).reduce((function(t,n){var i=Hc(n);if(r.containsKey(i))for(var e=r.get(i).sourceTiles,o=0,s=e.length;o<s;++o)t[e[o].getKey()]=!0;return t}),{});t.prototype.expireCache.call(this,n,i),this.sourceTileCache.expireCache(e)},n.prototype.getSourceTiles=function(t,n,i){var r=this;if(i.getState()===lt){i.setState(vt);var e=i.wrappedTileCoord,o=this.getTileGridForProjection(n),s=o.getTileCoordExtent(e),a=e[0],u=o.getResolution(a);Sn(s,-u,s);var c=this.tileGrid,h=c.getExtent();h&&Zn(s,h,s);var f=c.getZForResolution(u,1);c.forEachTileCoord(s,f,(function(e){var o=r.tileUrlFunction(e,t,n),s=r.sourceTileCache.containsKey(o)?r.sourceTileCache.get(o):new r.tileClass(e,o?lt:yt,o,r.Fe,r.tileLoadFunction);i.sourceTiles.push(s);var a=s.getState();if(a<dt){s.addEventListener(N,(function t(n){r.handleTileChange(n);var e=s.getState();if(e===dt||e===pt){var o=s.getKey();o in i.errorTileKeys?s.getState()===dt&&delete i.errorTileKeys[o]:i.loadingSourceTiles--,e===pt?i.errorTileKeys[o]=!0:s.removeEventListener(N,t),0===i.loadingSourceTiles&&i.setState(R(i.errorTileKeys)?dt:pt)}})),i.loadingSourceTiles++}a===lt&&(s.extent=c.getTileCoordExtent(e),s.projection=n,s.resolution=c.getResolution(e[0]),r.sourceTileCache.set(o,s),s.load())})),i.loadingSourceTiles||i.setState(i.sourceTiles.some((function(t){return t.getState()===pt}))?pt:dt)}return i.sourceTiles},n.prototype.getTile=function(t,n,i,r,e){var o,s=Vc(t,n,i),a=this.getKey();if(this.tileCache.containsKey(s)&&(o=this.tileCache.get(s)).key===a)return o;var u=[t,n,i],c=this.getTileCoordForTileUrlFunction(u,e),h=this.getTileGrid().getExtent(),f=this.getTileGridForProjection(e);if(c&&h){var l=f.getTileCoordExtent(c);Sn(l,-f.getResolution(t),l),ni(h,l)||(c=null)}var v=!0;if(null!==c){var d=this.tileGrid,p=f.getResolution(t),y=d.getZForResolution(p,1),m=f.getTileCoordExtent(c);Sn(m,-p,m),d.forEachTileCoord(m,y,function(t){v=v&&!this.tileUrlFunction(t,r,e)}.bind(this))}var w=new eh(u,v?yt:lt,c,this.getSourceTiles.bind(this,r,e));return w.key=a,o?(w.interimTile=o,w.refreshInterimChain(),this.tileCache.replace(s,w)):this.tileCache.set(s,w),w},n.prototype.getTileGridForProjection=function(t){var n=t.getCode(),i=this.Nc[n];if(!i){var r=this.tileGrid;i=tf(t,void 0,r?r.getTileSize(r.getMinZoom()):void 0),this.Nc[n]=i}return i},n.prototype.getTilePixelRatio=function(t){return t},n.prototype.getTilePixelSize=function(t,n,i){var r=uu(this.getTileGridForProjection(i).getTileSize(t),this.tmpSize);return[Math.round(r[0]*n),Math.round(r[1]*n)]},n.prototype.updateCacheSize=function(n,i){t.prototype.updateCacheSize.call(this,2*n,i),this.sourceTileCache.highWaterMark=this.getTileCacheForProjection(i).highWaterMark},n}(md);function hg(t,n){t.setLoader((function(i,r,e){vh(n,t.getFormat(),i,r,e,t.onLoad.bind(t),t.onError.bind(t))}))}var fg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),lg=function(t){function n(n){var i=t.call(this,{attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,cacheSize:n.cacheSize,format:n.format,overlaps:n.overlaps,projection:n.projection,tileClass:n.tileClass,transition:n.transition,wrapX:n.wrapX,zDirection:n.zDirection,state:ps})||this;return og({url:n.url,projection:i.getProjection(),mediaType:n.mediaType,supportedMediaTypes:n.format.supportedMediaTypes,context:n.context||null}).then(i.Pc.bind(i)).catch(i.Ic.bind(i)),i}return fg(n,t),n.prototype.Pc=function(t){this.tileGrid=t.grid,this.setTileUrlFunction(t.urlFunction,t.urlTemplate),this.setState(ys)},n.prototype.Ic=function(t){console.error(t),this.setState(ms)},n}(cg),vg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),dg='&#169; <a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> contributors.',pg=function(t){function n(n){var i,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate),i=void 0!==r.attributions?r.attributions:[dg];var o=void 0!==r.crossOrigin?r.crossOrigin:"anonymous",s=void 0!==r.url?r.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:i,attributionsCollapsible:!1,cacheSize:r.cacheSize,crossOrigin:o,interpolate:e,maxZoom:void 0!==r.maxZoom?r.maxZoom:19,opaque:void 0===r.opaque||r.opaque,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileLoadFunction:r.tileLoadFunction,transition:r.transition,url:s,wrapX:r.wrapX,zDirection:r.zDirection})||this}return vg(n,t),n}(Md),yg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),mg=function(t){function n(n){var i=n||{};return t.call(this,i)||this}return yg(n,t),n}(gs),wg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),bg=null;var gg,xg=function(t){function n(n){var i=t.call(this,n)||this;return i.container=null,i.renderedResolution,i.tempTransform=[1,0,0,1,0,0],i.pixelTransform=[1,0,0,1,0,0],i.inversePixelTransform=[1,0,0,1,0,0],i.context=null,i.containerReused=!1,i.Vs=null,i.frameState=null,i}return wg(n,t),n.prototype.getImageData=function(t,n,i){var r,e;bg||((r=document.createElement("canvas")).width=1,r.height=1,bg=r.getContext("2d")),bg.clearRect(0,0,1,1);try{bg.drawImage(t,n,i,1,1,0,0,1,1),e=bg.getImageData(0,0,1,1).data}catch(t){return null}return e},n.prototype.getBackground=function(t){var n=this.getLayer().getBackground();return"function"==typeof n&&(n=n(t.viewState.resolution)),n||void 0},n.prototype.useContainer=function(t,n,i,r){var e,o,s=this.getLayer().getClassName();t&&t.className===s&&""===t.style.opacity&&1===i&&(!r||t.style.backgroundColor&&x(qo(t.style.backgroundColor),qo(r)))&&((u=t.firstElementChild)instanceof HTMLCanvasElement&&(o=u.getContext("2d")));if(o&&o.canvas.style.transform===n?(this.container=t,this.context=o,this.containerReused=!0):this.containerReused&&(this.container=null,this.context=null,this.containerReused=!1),!this.container){(e=document.createElement("div")).className=s;var a=e.style;a.position="absolute",a.width="100%",a.height="100%",r&&(a.backgroundColor=r);var u=(o=Oo()).canvas;e.appendChild(u),(a=u.style).position="absolute",a.left="0",a.transformOrigin="top left",this.container=e,this.context=o}},n.prototype.clipUnrotated=function(t,n,i){var r=$n(i),e=Qn(i),o=Xn(i),s=Vn(i);rn(n.coordinateToPixelTransform,r),rn(n.coordinateToPixelTransform,e),rn(n.coordinateToPixelTransform,o),rn(n.coordinateToPixelTransform,s);var a=this.inversePixelTransform;rn(a,r),rn(a,e),rn(a,o),rn(a,s),t.save(),t.beginPath(),t.moveTo(Math.round(r[0]),Math.round(r[1])),t.lineTo(Math.round(e[0]),Math.round(e[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.lineTo(Math.round(s[0]),Math.round(s[1])),t.clip()},n.prototype.Hs=function(t,n,i){var r=this.getLayer();if(r.hasListener(t)){var e=new Ms(t,this.inversePixelTransform,i,n);r.dispatchEvent(e)}},n.prototype.preRender=function(t,n){this.frameState=n,this.Hs(cs,t,n)},n.prototype.postRender=function(t,n){this.Hs(hs,t,n)},n.prototype.getRenderTransform=function(t,n,i,r,e,o,s){var a=e/2,u=o/2,c=r/n,h=-c,f=-t[0]+s,l=-t[1];return un(this.tempTransform,a,u,c,h,-i,f,l)},n.prototype.getDataAtPixel=function(t,n,i){var r=rn(this.inversePixelTransform,t.slice()),e=this.context,o=this.getLayer().getExtent();if(o&&!_n(o,rn(n.pixelToCoordinateTransform,t.slice())))return null;var s,a=Math.round(r[0]),u=Math.round(r[1]),c=this.Vs;if(!c){var h=document.createElement("canvas");h.width=1,h.height=1,c=h.getContext("2d"),this.Vs=c}c.clearRect(0,0,1,1);try{c.drawImage(e.canvas,a,u,1,1,0,0,1,1),s=c.getImageData(0,0,1,1).data}catch(t){return"SecurityError"===t.name?(this.Vs=null,new Uint8Array):s}return 0===s[3]?null:s},n.prototype.disposeInternal=function(){delete this.frameState,t.prototype.disposeInternal.call(this)},n}(kl),jg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Sg=function(t){function n(n){var i=t.call(this,n)||this;return i.Nt=null,i}return jg(n,t),n.prototype.getImage=function(){return this.Nt?this.Nt.getImage():null},n.prototype.prepareFrame=function(t){var n=t.layerStatesArray[t.layerIndex],i=t.pixelRatio,r=t.viewState,e=r.resolution,o=this.getLayer().getSource(),s=t.viewHints,a=t.extent;if(void 0!==n.extent&&(a=Zn(a,Gr(n.extent,r.projection))),!s[za]&&!s[Fa]&&!ii(a))if(o){var u=r.projection,c=o.getImage(a,e,i,u);c&&(this.loadImage(c)?this.Nt=c:c.getState()===xo&&(this.Nt=null))}else this.Nt=null;return!!this.Nt},n.prototype.getData=function(t){var n=this.frameState;if(!n)return null;var i=this.getLayer(),r=rn(n.pixelToCoordinateTransform,t.slice()),e=i.getExtent();if(e&&!_n(e,r))return null;var o=this.Nt.getExtent(),s=this.Nt.getImage(),a=ti(o),u=Math.floor(s.width*((r[0]-o[0])/a));if(u<0||u>=s.width)return null;var c=Yn(o),h=Math.floor(s.height*((o[3]-r[1])/c));return h<0||h>=s.height?null:this.getImageData(s,u,h)},n.prototype.renderFrame=function(t,n){var i=this.Nt,r=i.getExtent(),e=i.getResolution(),o=i.getPixelRatio(),s=t.layerStatesArray[t.layerIndex],a=t.pixelRatio,u=t.viewState,c=u.center,h=u.resolution,f=t.size,l=a*e/(h*o),v=Math.round(f[0]*a),d=Math.round(f[1]*a),p=u.rotation;if(p){var y=Math.round(Math.sqrt(v*v+d*d));v=y,d=y}un(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/a,1/a,p,-v/2,-d/2),cn(this.inversePixelTransform,this.pixelTransform);var m=fn(this.pixelTransform);this.useContainer(n,m,s.opacity,this.getBackground(t));var w=this.context,b=w.canvas;b.width!=v||b.height!=d?(b.width=v,b.height=d):this.containerReused||w.clearRect(0,0,v,d);var g=!1,x=!0;if(s.extent){var j=Gr(s.extent,u.projection);(g=(x=ni(j,t.extent))&&!On(j,t.extent))&&this.clipUnrotated(w,t,j)}var S=i.getImage(),k=un(this.tempTransform,v/2,d/2,l,l,0,o*(r[0]-c[0])/e,o*(c[1]-r[3])/e);this.renderedResolution=e*a/o;var M=S.width*k[0],_=S.height*k[3];if(this.getLayer().getSource().getInterpolate()||E(w,Dh),this.preRender(w,t),x&&M>=.5&&_>=.5){var O=k[4],T=k[5],A=s.opacity,C=void 0;1!==A&&(C=w.globalAlpha,w.globalAlpha=A),w.drawImage(S,0,0,+S.width,+S.height,Math.round(O),Math.round(T),Math.round(M),Math.round(_)),1!==A&&(w.globalAlpha=C)}return this.postRender(w,t),g&&w.restore(),E(w,Uh),m!==b.style.transform&&(b.style.transform=m),this.container},n}(xg),kg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Mg=function(t){function n(n){return t.call(this,n)||this}return kg(n,t),n.prototype.createRenderer=function(){return new Sg(this)},n.prototype.getData=function(n){return t.prototype.getData.call(this,n)},n}(mg),_g="preload",Og="useInterimTilesOnError",Tg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Eg=function(t){function n(n){var i=this,r=n||{},e=E({},r);return delete e.preload,delete e.useInterimTilesOnError,(i=t.call(this,e)||this).on,i.once,i.un,i.setPreload(void 0!==r.preload?r.preload:0),i.setUseInterimTilesOnError(void 0===r.useInterimTilesOnError||r.useInterimTilesOnError),i}return Tg(n,t),n.prototype.getPreload=function(){return this.get(_g)},n.prototype.setPreload=function(t){this.set(_g,t)},n.prototype.getUseInterimTilesOnError=function(){return this.get(Og)},n.prototype.setUseInterimTilesOnError=function(t){this.set(Og,t)},n.prototype.getData=function(n){return t.prototype.getData.call(this,n)},n}(gs),Ag=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Cg=function(t){function n(n){var i=t.call(this,n)||this;return i.extentChanged=!0,i.zc=null,i.renderedPixelRatio,i.renderedProjection=null,i.renderedRevision,i.renderedTiles=[],i.Fc=!1,i.tmpExtent=[1/0,1/0,-1/0,-1/0],i.Lc=new nh(0,0,0,0),i}return Ag(n,t),n.prototype.isDrawableTile=function(t){var n=this.getLayer(),i=t.getState(),r=n.getUseInterimTilesOnError();return i==dt||i==yt||i==pt&&!r},n.prototype.getTile=function(t,n,i,r){var e=r.pixelRatio,o=r.viewState.projection,s=this.getLayer(),a=s.getSource().getTile(t,n,i,e,o);return a.getState()==pt&&(s.getUseInterimTilesOnError()?s.getPreload()>0&&(this.Fc=!0):a.setState(dt)),this.isDrawableTile(a)||(a=a.getInterimTile()),a},n.prototype.getData=function(t){var n=this.frameState;if(!n)return null;var i=this.getLayer(),r=rn(n.pixelToCoordinateTransform,t.slice()),e=i.getExtent();if(e&&!_n(e,r))return null;for(var o=n.pixelRatio,s=n.viewState.projection,a=n.viewState,u=i.getRenderSource(),c=u.getTileGridForProjection(a.projection),h=u.getTilePixelRatio(n.pixelRatio),f=c.getZForResolution(a.resolution);f>=c.getMinZoom();--f){var l=c.getTileCoordForCoordAndZ(r,f),v=u.getTile(f,l[1],l[2],o,s);if(!(v instanceof No||v instanceof ml))return null;if(v.getState()===dt){var d=c.getOrigin(f),p=uu(c.getTileSize(f)),y=c.getResolution(f),m=Math.floor(h*((r[0]-d[0])/y-l[1]*p[0])),w=Math.floor(h*((d[1]-r[1])/y-l[2]*p[1]));return this.getImageData(v.getImage(),m,w)}}return null},n.prototype.loadedTileCallback=function(n,i,r){return!!this.isDrawableTile(r)&&t.prototype.loadedTileCallback.call(this,n,i,r)},n.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},n.prototype.renderFrame=function(t,n){var i=t.layerStatesArray[t.layerIndex],r=t.viewState,e=r.projection,s=r.resolution,a=r.center,u=r.rotation,c=t.pixelRatio,h=this.getLayer(),f=h.getSource(),l=f.getRevision(),v=f.getTileGridForProjection(e),d=v.getZForResolution(s,f.zDirection),y=v.getResolution(d),m=t.extent,w=i.extent&&Gr(i.extent,e);w&&(m=Zn(m,Gr(i.extent,e)));var b=f.getTilePixelRatio(c),g=Math.round(t.size[0]*b),x=Math.round(t.size[1]*b);if(u){var j=Math.round(Math.sqrt(g*g+x*x));g=j,x=j}var S=y*g/2/b,k=y*x/2/b,M=[a[0]-S,a[1]-k,a[0]+S,a[1]+k],_=v.getTileRangeForExtentAndZ(m,d),O={};O[d]={};var T=this.createLoadedTileFinder(f,e,O),A=this.tmpExtent,C=this.Lc;this.Fc=!1;for(var R=_.minX;R<=_.maxX;++R)for(var P=_.minY;P<=_.maxY;++P){var I=this.getTile(d,R,P,t);if(this.isDrawableTile(I)){var N=o(this);if(I.getState()==dt){O[d][I.tileCoord.toString()]=I;var z=I.inTransition(N);this.Fc||!z&&-1!==this.renderedTiles.indexOf(I)||(this.Fc=!0)}if(1===I.getAlpha(N,t.time))continue}var F=v.getTileCoordChildTileRange(I.tileCoord,C,A),L=!1;F&&(L=T(d+1,F)),L||v.forEachTileCoordParentTileRange(I.tileCoord,T,C,A)}var G=y/s;un(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/b,1/b,u,-g/2,-x/2);var D=fn(this.pixelTransform);this.useContainer(n,D,i.opacity,this.getBackground(t));var U=this.context,q=U.canvas;cn(this.inversePixelTransform,this.pixelTransform),un(this.tempTransform,g/2,x/2,G,G,0,-g/2,-x/2),q.width!=g||q.height!=x?(q.width=g,q.height=x):this.containerReused||U.clearRect(0,0,g,x),w&&this.clipUnrotated(U,t,w),f.getInterpolate()||E(U,Dh),this.preRender(U,t),this.renderedTiles.length=0;var B,W,V,X=Object.keys(O).map(Number);X.sort(p),1!==i.opacity||this.containerReused&&!f.getOpaque(t.viewState.projection)?(B=[],W=[]):X=X.reverse();for(var H=X.length-1;H>=0;--H){var J=X[H],K=f.getTilePixelSize(J,c,e),Y=v.getResolution(J)/y,Z=K[0]*Y*G,$=K[1]*Y*G,Q=v.getTileCoordForCoordAndZ($n(M),J),tt=v.getTileCoordExtent(Q),nt=rn(this.tempTransform,[b*(tt[0]-M[0])/y,b*(M[3]-tt[3])/y]),it=b*f.getGutterForProjection(e),rt=O[J];for(var et in rt){var ot=(I=rt[et]).tileCoord,st=Q[1]-ot[1],at=Math.round(nt[0]-(st-1)*Z),ut=Q[2]-ot[2],ct=Math.round(nt[1]-(ut-1)*$),ht=at-(R=Math.round(nt[0]-st*Z)),ft=ct-(P=Math.round(nt[1]-ut*$)),lt=d===J,vt=!1;if(!(z=lt&&1!==I.getAlpha(o(this),t.time)))if(B){V=[R,P,R+ht,P,R+ht,P+ft,R,P+ft];for(var pt=0,yt=B.length;pt<yt;++pt)if(d!==J&&J<W[pt]){var mt=B[pt];ni([R,P,R+ht,P+ft],[mt[0],mt[3],mt[4],mt[7]])&&(vt||(U.save(),vt=!0),U.beginPath(),U.moveTo(V[0],V[1]),U.lineTo(V[2],V[3]),U.lineTo(V[4],V[5]),U.lineTo(V[6],V[7]),U.moveTo(mt[6],mt[7]),U.lineTo(mt[4],mt[5]),U.lineTo(mt[2],mt[3]),U.lineTo(mt[0],mt[1]),U.clip())}B.push(V),W.push(J)}else U.clearRect(R,P,ht,ft);this.drawTileImage(I,t,R,P,ht,ft,it,lt),B&&!z?(vt&&U.restore(),this.renderedTiles.unshift(I)):this.renderedTiles.push(I),this.updateUsedTiles(t.usedTiles,f,I)}}this.renderedRevision=l,this.renderedResolution=y,this.extentChanged=!this.zc||!Nn(this.zc,M),this.zc=M,this.renderedPixelRatio=c,this.renderedProjection=e,this.manageTilePyramid(t,f,v,c,e,m,d,h.getPreload()),this.scheduleExpireCache(t,f),this.postRender(U,t),i.extent&&U.restore(),E(U,Uh),D!==q.style.transform&&(q.style.transform=D);var wt=Ns(i.opacity),bt=this.container;return wt!==bt.style.opacity&&(bt.style.opacity=wt),this.container},n.prototype.drawTileImage=function(t,n,i,r,e,s,a,u){var c=this.getTileImage(t);if(c){var h=o(this),f=u?t.getAlpha(h,n.time):1,l=f!==this.context.globalAlpha;l&&(this.context.save(),this.context.globalAlpha=f),this.context.drawImage(c,a,a,c.width-2*a,c.height-2*a,i,r,e,s),l&&this.context.restore(),1!==f?n.animate=!0:u&&t.endTransition(h)}},n.prototype.getImage=function(){var t=this.context;return t?t.canvas:null},n.prototype.getTileImage=function(t){return t.getImage()},n.prototype.scheduleExpireCache=function(t,n){if(n.canExpireCache()){var i=function(t,n,i){var r=o(t);r in i.usedTiles&&t.expireCache(i.viewState.projection,i.usedTiles[r])}.bind(null,n);t.postRenderFunctions.push(i)}},n.prototype.updateUsedTiles=function(t,n,i){var r=o(n);r in t||(t[r]={}),t[r][i.getKey()]=!0},n.prototype.manageTilePyramid=function(t,n,i,r,e,s,a,u,c){var h=o(n);h in t.wantedTiles||(t.wantedTiles[h]={});var f,l,v,d,p,y,m=t.wantedTiles[h],w=t.tileQueue,b=0;for(y=i.getMinZoom();y<=a;++y)for(l=i.getTileRangeForExtentAndZ(s,y,l),v=i.getResolution(y),d=l.minX;d<=l.maxX;++d)for(p=l.minY;p<=l.maxY;++p)a-y<=u?(++b,(f=n.getTile(y,d,p,r,e)).getState()==lt&&(m[f.getKey()]=!0,w.isKeyQueued(f.getKey())||w.enqueue([f,h,i.getTileCoordCenter(f.tileCoord),v])),void 0!==c&&c(f)):n.useTile(y,d,p,e);n.updateCacheSize(b,e)},n}(xg),Rg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Pg=function(t){function n(n){return t.call(this,n)||this}return Rg(n,t),n.prototype.createRenderer=function(){return new Cg(this)},n}(Eg),Ig=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ng=!0;try{new ImageData(10,10)}catch(t){Ng=!1}function zg(t,n,i){if(Ng)return new ImageData(t,n,i);gg||(gg=document.createElement("canvas").getContext("2d"));var r=gg.createImageData(n,i);return r.data.set(t),r}function Fg(t){var n=!0;try{new ImageData(10,10)}catch(t){n=!1}function i(t,i,r){return n?new ImageData(t,i,r):{data:t,width:i,height:r}}return function(n){var r=n.buffers,e=n.meta,o=n.imageOps,s=n.width,a=n.height,u=r.length,c=r[0].byteLength;if(o){for(var h=new Array(u),f=0;f<u;++f)h[f]=i(new Uint8ClampedArray(r[f]),s,a);return t(h,e).data.buffer}var l=new Uint8ClampedArray(c),v=new Array(u),d=new Array(u);for(f=0;f<u;++f)v[f]=new Uint8ClampedArray(r[f]),d[f]=[0,0,0,0];for(var p=0;p<c;p+=4){for(var y=0;y<u;++y){var m=v[y];d[y][0]=m[p],d[y][1]=m[p+1],d[y][2]=m[p+2],d[y][3]=m[p+3]}var w=t(d,e);l[p]=w[0],l[p+1]=w[1],l[p+2]=w[2],l[p+3]=w[3]}return l.buffer}}function Lg(t,n){var i=Object.keys(t.lib||{}).map((function(n){return"var "+n+" = "+t.lib[n].toString()+";"})).concat(["var __minion__ = ("+Fg.toString()+")(",t.operation.toString(),");",'self.addEventListener("message", function(event) {',"  var buffer = __minion__(event.data);","  self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);","});"]),r=new Worker("undefined"==typeof Blob?"data:text/javascript;base64,"+Buffer.from(i.join("\n"),"binary").toString("base64"):URL.createObjectURL(new Blob(i,{type:"text/javascript"})));return r.addEventListener("message",n),r}var Gg=function(t){function n(n){var i,r=t.call(this)||this;r._imageOps=!!n.imageOps,i=0===n.threads?0:r._imageOps?1:n.threads||1;var e=new Array(i);if(i)for(var o=0;o<i;++o)e[o]=Lg(n,r._onWorkerMessage.bind(r,o));else e[0]=function(t,n){var i=Fg(t.operation),r=!1;return{postMessage:function(t){setTimeout((function(){r||n({data:{buffer:i(t),meta:t.meta}})}),0)},terminate:function(){r=!0}}}(n,r._onWorkerMessage.bind(r,0));return r._workers=e,r._queue=[],r._maxQueueLength=n.queue||1/0,r._running=0,r._dataLookup={},r._job=null,r}return Ig(n,t),n.prototype.process=function(t,n,i){this._enqueue({inputs:t,meta:n,callback:i}),this._dispatch()},n.prototype._enqueue=function(t){for(this._queue.push(t);this._queue.length>this._maxQueueLength;)this._queue.shift().callback(null,null)},n.prototype._dispatch=function(){if(!this._running&&0!==this._queue.length){var t=this._queue.shift();this._job=t;var n=t.inputs[0].width,i=t.inputs[0].height,r=t.inputs.map((function(t){return t.data.buffer})),e=this._workers.length;if(this._running=e,1!==e)for(var o=t.inputs[0].data.length,s=4*Math.ceil(o/4/e),a=0;a<e;++a){for(var u=a*s,c=[],h=0,f=r.length;h<f;++h)c.push(r[h].slice(u,u+s));this._workers[a].postMessage({buffers:c,meta:t.meta,imageOps:this._imageOps,width:n,height:i},c)}else this._workers[0].postMessage({buffers:r,meta:t.meta,imageOps:this._imageOps,width:n,height:i},r)}},n.prototype._onWorkerMessage=function(t,n){this.disposed||(this._dataLookup[t]=n.data,--this._running,0===this._running&&this._resolveJob())},n.prototype._resolveJob=function(){var t,n,i=this._job,r=this._workers.length;if(1===r)t=new Uint8ClampedArray(this._dataLookup[0].buffer),n=this._dataLookup[0].meta;else{var e=i.inputs[0].data.length;t=new Uint8ClampedArray(e),n=new Array(r);for(var o=4*Math.ceil(e/4/r),s=0;s<r;++s){var a=this._dataLookup[s].buffer,u=s*o;t.set(new Uint8ClampedArray(a),u),n[s]=this._dataLookup[s].meta}}this._job=null,this._dataLookup={},i.callback(null,zg(t,i.inputs[0].width,i.inputs[0].height),n),this._dispatch()},n.prototype.disposeInternal=function(){for(var t=0;t<this._workers.length;++t)this._workers[t].terminate();this._workers.length=0},n}(v),Dg="beforeoperations",Ug="afteroperations",qg="pixel",Bg="image",Wg=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.extent=i.extent,e.resolution=i.viewState.resolution/i.pixelRatio,e.data=r,e}return Ig(n,t),n}(f),Vg=function(t){function n(n){var i=t.call(this,{projection:null})||this;i.on,i.once,i.un,i.Gc=null,i.Dc=void 0!==n.operationType?n.operationType:qg,i.Uc=void 0!==n.threads?n.threads:1,i.qc=function(t){for(var n=t.length,i=new Array(n),r=0;r<n;++r)i[r]=Jg(t[r]);return i}(n.sources);for(var r,e=i.changed.bind(i),s=0,a=i.qc.length;s<a;++s)i.qc[s].addEventListener(N,e);return i.cr=new Ia((function(){return 1}),i.changed.bind(i)),i.Bc,i.Wc=null,i.Sc,i.Ji={animate:!1,coordinateToPixelTransform:[1,0,0,1,0,0],declutterTree:null,extent:null,index:0,layerIndex:0,layerStatesArray:(r=i.qc,r.map((function(t){return t.getLayerState()}))),pixelRatio:1,pixelToCoordinateTransform:[1,0,0,1,0,0],postRenderFunctions:[],size:[0,0],tileQueue:i.cr,time:Date.now(),usedTiles:{},viewState:{rotation:0},viewHints:[],wantedTiles:{},mapId:o(i),renderTargets:{}},i.setAttributions((function(t){for(var i=[],r=0,e=n.sources.length;r<e;++r){var o=n.sources[r],s=(o instanceof fd?o:o.getSource()).getAttributions();if("function"==typeof s){var a=s(t);i.push.apply(i,a)}}return 0!==i.length?i:null})),void 0!==n.operation&&i.setOperation(n.operation,n.lib),i}return Ig(n,t),n.prototype.setOperation=function(t,n){this.Gc&&this.Gc.dispose(),this.Gc=new Gg({operation:t,imageOps:this.Dc===Bg,queue:1,lib:n,threads:this.Uc}),this.changed()},n.prototype.Vc=function(t,n,i){var r=E({},this.Ji);r.viewState=E({},r.viewState);var e=Hn(t);r.extent=t.slice(),r.size[0]=Math.round(ti(t)/n),r.size[1]=Math.round(Yn(t)/n),r.time=Date.now();var o=r.viewState;return o.center=e,o.projection=i,o.resolution=n,r},n.prototype.Xc=function(){for(var t=!0,n=0,i=this.qc.length;n<i;++n)if(this.qc[n].getSource().getState()!==ys){t=!1;break}return t},n.prototype.getImage=function(t,n,i,r){if(!this.Xc())return null;var e=this.Vc(t,n,r);if(this.Bc=e,this.Wc){var o=this.Wc.getResolution(),s=this.Wc.getExtent();n===o&&Nn(t,s)||(this.Wc=null)}return this.Wc&&this.getRevision()===this.Sc||this.Hc(),e.tileQueue.loadMoreTiles(16,16),e.animate&&requestAnimationFrame(this.changed.bind(this)),this.Wc},n.prototype.Hc=function(){for(var t=this.Bc,n=this.qc.length,i=new Array(n),r=0;r<n;++r){t.layerIndex=r;var e=Hg(this.qc[r],t);if(!e)return;i[r]=e}var o={};this.dispatchEvent(new Wg(Dg,t,o)),this.Gc.process(i,o,this.Jc.bind(this,t))},n.prototype.Jc=function(t,n,i,r){if(!n&&i){var e=t.extent,o=t.viewState.resolution;if(o===this.Bc.viewState.resolution&&Nn(e,this.Bc.extent)){var s;if(this.Wc)s=this.Wc.getImage().getContext("2d");else s=Oo(Math.round(ti(e)/o),Math.round(Yn(e)/o)),this.Wc=new _o(e,o,1,s.canvas);s.putImageData(i,0,0),this.changed(),this.Sc=this.getRevision(),this.dispatchEvent(new Wg(Ug,t,r)),t.animate&&requestAnimationFrame(this.changed.bind(this))}}},n.prototype.disposeInternal=function(){this.Gc&&this.Gc.dispose(),t.prototype.disposeInternal.call(this)},n}(Fb);Vg.prototype.dispose;var Xg=null;function Hg(t,n){var i=t.getRenderer();if(!i)throw new Error("Unsupported layer type: "+t);if(!i.prepareFrame(n))return null;var r=n.size[0],e=n.size[1];if(0===r||0===e)return null;var o,s=i.renderFrame(n,null);if(s instanceof HTMLCanvasElement)o=s;else{if(s&&(o=s.firstElementChild),!(o instanceof HTMLCanvasElement))throw new Error("Unsupported rendered element: "+o);if(o.width===r&&o.height===e)return o.getContext("2d").getImageData(0,0,r,e)}if(Xg){var a=Xg.canvas;a.width!==r||a.height!==e?Xg=Oo(r,e):Xg.clearRect(0,0,r,e)}else Xg=Oo(r,e);return Xg.drawImage(o,0,0,r,e),Xg.getImageData(0,0,r,e)}function Jg(t){var n;return t instanceof fd?t instanceof pd?n=new Pg({source:t}):t instanceof Fb&&(n=new Mg({source:t})):n=t,n}var Kg=Vg,Yg=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Zg=['Map tiles by <a href="https://stamen.com/" target="_blank">Stamen Design</a>, under <a href="https://creativecommons.org/licenses/by/3.0/" target="_blank">CC BY 3.0</a>.',dg],$g={terrain:{extension:"jpg",opaque:!0},"terrain-background":{extension:"jpg",opaque:!0},"terrain-labels":{extension:"png",opaque:!1},"terrain-lines":{extension:"png",opaque:!1},"toner-background":{extension:"png",opaque:!0},toner:{extension:"png",opaque:!0},"toner-hybrid":{extension:"png",opaque:!1},"toner-labels":{extension:"png",opaque:!1},"toner-lines":{extension:"png",opaque:!1},"toner-lite":{extension:"png",opaque:!0},watercolor:{extension:"jpg",opaque:!0}},Qg={terrain:{minZoom:0,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:0,maxZoom:18}},tx=function(t){function n(n){var i=void 0===n.imageSmoothing||n.imageSmoothing;void 0!==n.interpolate&&(i=n.interpolate);var r=n.layer.indexOf("-"),e=-1==r?n.layer:n.layer.slice(0,r),o=Qg[e],s=$g[n.layer],a=void 0!==n.url?n.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+n.layer+"/{z}/{x}/{y}."+s.extension;return t.call(this,{attributions:Zg,cacheSize:n.cacheSize,crossOrigin:"anonymous",interpolate:i,maxZoom:null!=n.maxZoom?n.maxZoom:o.maxZoom,minZoom:null!=n.minZoom?n.minZoom:o.minZoom,opaque:s.opaque,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,transition:n.transition,url:a,wrapX:n.wrapX,zDirection:n.zDirection})||this}return Yg(n,t),n}(Md),nx=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ix=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;return void 0!==r.interpolate&&(e=r.interpolate),(i=t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,projection:r.projection,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:r.tileGrid,tileLoadFunction:r.tileLoadFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,zDirection:r.zDirection})||this).xc=r.params||{},i.Su=void 0===r.hidpi||r.hidpi,i.Ao=[1/0,1/0,-1/0,-1/0],i.setKey(i.Kc()),i}return nx(n,t),n.prototype.Kc=function(){var t=0,n=[];for(var i in this.xc)n[t++]=i+"-"+this.xc[i];return n.join("/")},n.prototype.getParams=function(){return this.xc},n.prototype.Mc=function(t,n,i,r,e,o){var s=this.urls;if(s){var a,u=e.getCode().split(/:(?=\d+$)/).pop();if(o.SIZE=n[0]+","+n[1],o.BBOX=i.join(","),o.BBOXSR=u,o.IMAGESR=u,o.DPI=Math.round(o.DPI?o.DPI*r:90*r),1==s.length)a=s[0];else a=s[mi(Kc(t),s.length)];return uf(a.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),o)}},n.prototype.getTilePixelRatio=function(t){return this.Su?t:1},n.prototype.updateParams=function(t){E(this.xc,t),this.setKey(this.Kc())},n.prototype.tileUrlFunction=function(t,n,i){var r=this.getTileGrid();if(r||(r=this.getTileGridForProjection(i)),!(r.getResolutions().length<=t[0])){1==n||this.Su||(n=1);var e=r.getTileCoordExtent(t,this.Ao),o=uu(r.getTileSize(t[0]),this.tmpSize);1!=n&&(o=au(o,n,this.tmpSize));var s={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return E(s,this.xc),this.Mc(t,o,e,n,i,s)}},n}(gd),rx=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ex=function(t){function n(n){var i=this,r=n||{};return i=t.call(this,{opaque:!1,projection:r.projection,tileGrid:r.tileGrid,wrapX:void 0===r.wrapX||r.wrapX,zDirection:r.zDirection,url:r.template||"z:{z} x:{x} y:{y}",tileLoadFunction:function(t,n){var r=t.getTileCoord()[0],e=uu(i.tileGrid.getTileSize(r)),o=Oo(e[0],e[1]);o.strokeStyle="grey",o.strokeRect(.5,.5,e[0]+.5,e[1]+.5),o.fillStyle="grey",o.strokeStyle="white",o.textAlign="center",o.textBaseline="middle",o.font="24px sans-serif",o.lineWidth=4,o.strokeText(n,e[0]/2,e[1]/2,e[0]),o.fillText(n,e[0]/2,e[1]/2,e[0]),t.setImage(o.canvas)}})||this}return rx(n,t),n}(Md),ox=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),sx=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;if(void 0!==n.interpolate&&(r=n.interpolate),(i=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:r,projection:gr("EPSG:3857"),reprojectionErrorThreshold:n.reprojectionErrorThreshold,state:ps,tileLoadFunction:n.tileLoadFunction,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:n.zDirection})||this).Yc=null,i.Oo=n.tileSize,n.url)if(n.jsonp)mh(n.url,i.handleTileJSONResponse.bind(i),i.handleTileJSONError.bind(i));else{var e=new XMLHttpRequest;e.addEventListener("load",i.Zc.bind(i)),e.addEventListener("error",i.$c.bind(i)),e.open("GET",n.url),e.send()}else n.tileJSON?i.handleTileJSONResponse(n.tileJSON):Mt(!1,51);return i}return ox(n,t),n.prototype.Zc=function(t){var n=t.target;if(!n.status||n.status>=200&&n.status<300){var i=void 0;try{i=JSON.parse(n.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(i)}else this.handleTileJSONError()},n.prototype.$c=function(t){this.handleTileJSONError()},n.prototype.getTileJSON=function(){return this.Yc},n.prototype.handleTileJSONResponse=function(t){var n,i=gr("EPSG:4326"),r=this.getProjection();if(void 0!==t.bounds){var e=Er(i,r);n=si(t.bounds,e)}var o=nf(r),s=t.minzoom||0,a=$h({extent:o,maxZoom:t.maxzoom||22,minZoom:s,tileSize:this.Oo});if(this.tileGrid=a,this.tileUrlFunction=ef(t.tiles,a),void 0!==t.attribution&&!this.getAttributions()){var u=void 0!==n?n:o;this.setAttributions((function(n){return ni(u,n.extent)?[t.attribution]:null}))}this.Yc=t,this.setState(ys)},n.prototype.handleTileJSONError=function(){this.setState(ms)},n}(gd),ax=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ux=function(t){function n(n){var i=this,r=n||{},e=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(e=r.interpolate);var o=r.params||{},s=!("TRANSPARENT"in o)||o.TRANSPARENT;return(i=t.call(this,{attributions:r.attributions,attributionsCollapsible:r.attributionsCollapsible,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:e,opaque:!s,projection:r.projection,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileClass:r.tileClass,tileGrid:r.tileGrid,tileLoadFunction:r.tileLoadFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,zDirection:r.zDirection})||this).Es=void 0!==r.gutter?r.gutter:0,i.xc=o,i.Ac=!0,i.Rc=r.serverType,i.Su=void 0===r.hidpi||r.hidpi,i.Ao=[1/0,1/0,-1/0,-1/0],i.Cc(),i.setKey(i.Kc()),i}return ax(n,t),n.prototype.getFeatureInfoUrl=function(t,n,i,r){var e=gr(i),o=this.getProjection(),s=this.getTileGrid();s||(s=this.getTileGridForProjection(e));var a=s.getZForResolution(n,this.zDirection),u=s.getTileCoordForCoordAndZ(t,a);if(!(s.getResolutions().length<=u[0])){var c=s.getResolution(u[0]),h=s.getTileCoordExtent(u,this.Ao),f=uu(s.getTileSize(u[0]),this.tmpSize),l=this.Es;0!==l&&(f=ou(f,l,this.tmpSize),h=Sn(h,c*l,h)),o&&o!==e&&(c=Wh(o,e,t,c),h=Rr(h,e,o),t=Cr(t,e,o));var v={SERVICE:"WMS",VERSION:Xb,REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.xc.LAYERS};E(v,this.xc,r);var d=Math.floor((t[0]-h[0])/c),p=Math.floor((h[3]-t[1])/c);return v[this.Ac?"I":"X"]=d,v[this.Ac?"J":"Y"]=p,this.Mc(u,f,h,1,o||e,v)}},n.prototype.getLegendUrl=function(t,n){if(void 0!==this.urls[0]){var i={SERVICE:"WMS",VERSION:Xb,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===n||void 0===n.LAYER){var r=this.xc.LAYERS;if(!(!Array.isArray(r)||1===r.length))return;i.LAYER=r}if(void 0!==t){var e=this.getProjection()?this.getProjection().getMetersPerUnit():1;i.SCALE=t*e/28e-5}return E(i,n),uf(this.urls[0],i)}},n.prototype.getGutter=function(){return this.Es},n.prototype.getParams=function(){return this.xc},n.prototype.Mc=function(t,n,i,r,e,o){var s=this.urls;if(s){if(o.WIDTH=n[0],o.HEIGHT=n[1],o[this.Ac?"CRS":"SRS"]=e.getCode(),"STYLES"in this.xc||(o.STYLES=""),1!=r)switch(this.Rc){case Jb:var a=90*r+.5|0;"FORMAT_OPTIONS"in o?o.FORMAT_OPTIONS+=";dpi:"+a:o.FORMAT_OPTIONS="dpi:"+a;break;case Kb:o.MAP_RESOLUTION=90*r;break;case Hb:case Yb:o.DPI=90*r;break;default:Mt(!1,52)}var u,c=e.getAxisOrientation(),h=i;if(this.Ac&&"ne"==c.substr(0,2)){var f=void 0;f=i[0],h[0]=i[1],h[1]=f,f=i[2],h[2]=i[3],h[3]=f}if(o.BBOX=h.join(","),1==s.length)u=s[0];else u=s[mi(Kc(t),s.length)];return uf(u,o)}},n.prototype.getTilePixelRatio=function(t){return this.Su&&void 0!==this.Rc?t:1},n.prototype.Kc=function(){var t=0,n=[];for(var i in this.xc)n[t++]=i+"-"+this.xc[i];return n.join("/")},n.prototype.updateParams=function(t){E(this.xc,t),this.Cc(),this.setKey(this.Kc())},n.prototype.Cc=function(){var t=this.xc.VERSION||Xb;this.Ac=Ji(t,"1.3")>=0},n.prototype.tileUrlFunction=function(t,n,i){var r=this.getTileGrid();if(r||(r=this.getTileGridForProjection(i)),!(r.getResolutions().length<=t[0])){1==n||this.Su&&void 0!==this.Rc||(n=1);var e=r.getResolution(t[0]),o=r.getTileCoordExtent(t,this.Ao),s=uu(r.getTileSize(t[0]),this.tmpSize),a=this.Es;0!==a&&(s=ou(s,a,this.tmpSize),o=Sn(o,e*a,o)),1!=n&&(s=au(s,n,this.tmpSize));var u={SERVICE:"WMS",VERSION:Xb,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};return E(u,this.xc),this.Mc(t,s,o,n,i,u)}},n}(gd),cx=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),hx=function(t){function n(n,i,r,e,o,s){var a=t.call(this,n,i)||this;return a.Pt=r,a.st=e,a.Qc=o,a.th=null,a.nh=null,a.B=null,a.ih=s,a}return cx(n,t),n.prototype.getImage=function(){return null},n.prototype.getData=function(t){if(!this.th||!this.nh)return null;var n=(t[0]-this.st[0])/(this.st[2]-this.st[0]),i=(t[1]-this.st[1])/(this.st[3]-this.st[1]),r=this.th[Math.floor((1-i)*this.th.length)];if("string"!=typeof r)return null;var e=r.charCodeAt(Math.floor(n*r.length));e>=93&&e--,e>=35&&e--;var o=null;if((e-=32)in this.nh){var s=this.nh[e];o=this.B&&s in this.B?this.B[s]:s}return o},n.prototype.forDataAtCoordinate=function(t,n,i){this.state==yt&&!0===i?(this.state=lt,Z(this,N,(function(i){n(this.getData(t))}),this),this.rh()):!0===i?setTimeout(function(){n(this.getData(t))}.bind(this),0):n(this.getData(t))},n.prototype.getKey=function(){return this.Pt},n.prototype.Ic=function(){this.state=pt,this.changed()},n.prototype.qt=function(t){this.th=t.grid,this.nh=t.keys,this.B=t.data,this.state=dt,this.changed()},n.prototype.rh=function(){if(this.state==lt)if(this.state=vt,this.ih)mh(this.Pt,this.qt.bind(this),this.Ic.bind(this));else{var t=new XMLHttpRequest;t.addEventListener("load",this.Zc.bind(this)),t.addEventListener("error",this.$c.bind(this)),t.open("GET",this.Pt),t.send()}},n.prototype.Zc=function(t){var n=t.target;if(!n.status||n.status>=200&&n.status<300){var i=void 0;try{i=JSON.parse(n.responseText)}catch(t){return void this.Ic()}this.qt(i)}else this.Ic()},n.prototype.$c=function(t){this.Ic()},n.prototype.load=function(){this.Qc?this.rh():this.setState(yt)},n}(jt),fx=function(t){function n(n){var i=t.call(this,{projection:gr("EPSG:3857"),state:ps,zDirection:n.zDirection})||this;if(i.Qc=void 0===n.preemptive||n.preemptive,i.eh=sf,i.oh=void 0,i.ih=n.jsonp||!1,n.url)if(i.ih)mh(n.url,i.handleTileJSONResponse.bind(i),i.handleTileJSONError.bind(i));else{var r=new XMLHttpRequest;r.addEventListener("load",i.Zc.bind(i)),r.addEventListener("error",i.$c.bind(i)),r.open("GET",n.url),r.send()}else n.tileJSON?i.handleTileJSONResponse(n.tileJSON):Mt(!1,51);return i}return cx(n,t),n.prototype.Zc=function(t){var n=t.target;if(!n.status||n.status>=200&&n.status<300){var i=void 0;try{i=JSON.parse(n.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(i)}else this.handleTileJSONError()},n.prototype.$c=function(t){this.handleTileJSONError()},n.prototype.getTemplate=function(){return this.oh},n.prototype.forDataAtCoordinateAndResolution=function(t,n,i,r){if(this.tileGrid){var e=this.tileGrid.getZForResolution(n,this.zDirection),o=this.tileGrid.getTileCoordForCoordAndZ(t,e);this.getTile(o[0],o[1],o[2],1,this.getProjection()).forDataAtCoordinate(t,i,r)}else!0===r?setTimeout((function(){i(null)}),0):i(null)},n.prototype.handleTileJSONError=function(){this.setState(ms)},n.prototype.handleTileJSONResponse=function(t){var n,i=gr("EPSG:4326"),r=this.getProjection();if(void 0!==t.bounds){var e=Er(i,r);n=si(t.bounds,e)}var o=nf(r),s=t.minzoom||0,a=$h({extent:o,maxZoom:t.maxzoom||22,minZoom:s});this.tileGrid=a,this.oh=t.template;var u=t.grids;if(u){if(this.eh=ef(u,a),void 0!==t.attribution){var c=void 0!==n?n:o;this.setAttributions((function(n){return ni(c,n.extent)?[t.attribution]:null}))}this.setState(ys)}else this.setState(ms)},n.prototype.getTile=function(t,n,i,r,e){var o=Vc(t,n,i);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var s=[t,n,i],a=this.getTileCoordForTileUrlFunction(s,e),u=this.eh(a,r,e),c=new hx(s,void 0!==u?lt:yt,void 0!==u?u:"",this.tileGrid.getTileCoordExtent(s),this.Qc,this.ih);return this.tileCache.set(o,c),c},n.prototype.useTile=function(t,n,i){var r=Vc(t,n,i);this.tileCache.containsKey(r)&&this.tileCache.get(r)},n}(pd),lx="KVP",vx="REST",dx=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),px=function(t){function n(n){var i=this,r=void 0===n.imageSmoothing||n.imageSmoothing;void 0!==n.interpolate&&(r=n.interpolate);var e=void 0!==n.requestEncoding?n.requestEncoding:lx,o=n.tileGrid,s=n.urls;return void 0===s&&void 0!==n.url&&(s=af(n.url)),(i=t.call(this,{attributions:n.attributions,attributionsCollapsible:n.attributionsCollapsible,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:r,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileClass:n.tileClass,tileGrid:o,tileLoadFunction:n.tileLoadFunction,tilePixelRatio:n.tilePixelRatio,urls:s,wrapX:void 0!==n.wrapX&&n.wrapX,transition:n.transition,zDirection:n.zDirection})||this).sh=void 0!==n.version?n.version:"1.0.0",i.Fe=void 0!==n.format?n.format:"image/jpeg",i.ah=void 0!==n.dimensions?n.dimensions:{},i.Bs=n.layer,i.uh=n.matrixSet,i.K=n.style,i.hh=e,i.setKey(i.fh()),s&&s.length>0&&(i.tileUrlFunction=of(s.map(i.createFromWMTSTemplate.bind(i)))),i}return dx(n,t),n.prototype.setUrls=function(t){this.urls=t;var n=t.join("\n");this.setTileUrlFunction(of(t.map(this.createFromWMTSTemplate.bind(this))),n)},n.prototype.getDimensions=function(){return this.ah},n.prototype.getFormat=function(){return this.Fe},n.prototype.getLayer=function(){return this.Bs},n.prototype.getMatrixSet=function(){return this.uh},n.prototype.getRequestEncoding=function(){return this.hh},n.prototype.getStyle=function(){return this.K},n.prototype.getVersion=function(){return this.sh},n.prototype.fh=function(){var t=0,n=[];for(var i in this.ah)n[t++]=i+"-"+this.ah[i];return n.join("/")},n.prototype.updateDimensions=function(t){E(this.ah,t),this.setKey(this.fh())},n.prototype.createFromWMTSTemplate=function(t){var n=this.hh,i={layer:this.Bs,style:this.K,tilematrixset:this.uh};n==lx&&E(i,{Service:"WMTS",Request:"GetTile",Version:this.sh,Format:this.Fe}),t=n==lx?uf(t,i):t.replace(/\{(\w+?)\}/g,(function(t,n){return n.toLowerCase()in i?i[n.toLowerCase()]:t}));var r=this.tileGrid,e=this.ah;return function(i,o,s){if(i){var a={TileMatrix:r.getMatrixId(i[0]),TileCol:i[1],TileRow:i[2]};E(a,e);var u=t;return u=n==lx?uf(u,a):u.replace(/\{(\w+?)\}/g,(function(t,n){return a[n]}))}}},n}(gd);var yx=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),mx="renderOrder",wx=function(t){function n(n){var i=this,r=n||{},e=E({},r);return delete e.style,delete e.renderBuffer,delete e.updateWhileAnimating,delete e.updateWhileInteracting,(i=t.call(this,e)||this).lh=void 0!==r.declutter&&r.declutter,i.dh=void 0!==r.renderBuffer?r.renderBuffer:100,i.K=null,i.tt=void 0,i.setStyle(r.style),i.ph=void 0!==r.updateWhileAnimating&&r.updateWhileAnimating,i.yh=void 0!==r.updateWhileInteracting&&r.updateWhileInteracting,i}return yx(n,t),n.prototype.getDeclutter=function(){return this.lh},n.prototype.getFeatures=function(n){return t.prototype.getFeatures.call(this,n)},n.prototype.getRenderBuffer=function(){return this.dh},n.prototype.getRenderOrder=function(){return this.get(mx)},n.prototype.getStyle=function(){return this.K},n.prototype.getStyleFunction=function(){return this.tt},n.prototype.getUpdateWhileAnimating=function(){return this.ph},n.prototype.getUpdateWhileInteracting=function(){return this.yh},n.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new ed(9)),this.getRenderer().renderDeclutter(t)},n.prototype.setRenderOrder=function(t){this.set(mx,t)},n.prototype.setStyle=function(t){this.K=void 0!==t?t:Yv,this.tt=null===t?void 0:Jv(this.K),this.changed()},n}(gs);var bx=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),gx=function(t){function n(n,i){var r=this,e=i.uniforms||{},s=[1,0,0,1,0,0];e[$f]=s,(r=t.call(this,n,{uniforms:e,postProcesses:i.postProcesses})||this).ready=!1,r.mh=-1,r.wh=new Vf(hf,vf),r.bh=new Vf(hf,vf),r.gh=new Vf(ff,vf),r.ta=i.vertexShader,r.na=i.fragmentShader,r.Qs,r.xh=!(!i.hitFragmentShader||!i.hitVertexShader),r.jh=i.hitVertexShader,r.Sh=i.hitFragmentShader,r.kh;var a=i.attributes?i.attributes.map((function(t){return{name:"a_"+t.name,size:1,type:el.FLOAT}})):[];r.attributes=[{name:"a_position",size:2,type:el.FLOAT},{name:"a_index",size:1,type:el.FLOAT}].concat(a),r.hitDetectionAttributes=[{name:"a_position",size:2,type:el.FLOAT},{name:"a_index",size:1,type:el.FLOAT},{name:"a_hitColor",size:4,type:el.FLOAT},{name:"a_featureUid",size:1,type:el.FLOAT}].concat(a),r.customAttributes=i.attributes?i.attributes:[],r.Ki=[1/0,1/0,-1/0,-1/0],r.Mh=s,r._h=[1,0,0,1,0,0],r.Oh=[1,0,0,1,0,0],r.Th=new Float32Array(0),r.Eh=new Float32Array(0),r.Ah,r.Ch=0,r.Rh=function(){var t='var e="function"==typeof Object.assign?Object.assign:function(e,n){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),r=1,o=arguments.length;r<o;++r){var i=arguments[r];if(null!=i)for(var f in i)i.hasOwnProperty(f)&&(t[f]=i[f])}return t},n="GENERATE_BUFFERS",t=[],r={vertexPosition:0,indexPosition:0};function o(e,n,t,r,o){e[n+0]=t,e[n+1]=r,e[n+2]=o}function i(e,n,i,f,s,a){var u=3+s,l=e[n+0],v=e[n+1],c=t;c.length=s;for(var g=0;g<c.length;g++)c[g]=e[n+2+g];var b=a?a.vertexPosition:0,h=a?a.indexPosition:0,d=b/u;return o(i,b,l,v,0),c.length&&i.set(c,b+3),o(i,b+=u,l,v,1),c.length&&i.set(c,b+3),o(i,b+=u,l,v,2),c.length&&i.set(c,b+3),o(i,b+=u,l,v,3),c.length&&i.set(c,b+3),b+=u,f[h++]=d,f[h++]=d+1,f[h++]=d+3,f[h++]=d+1,f[h++]=d+2,f[h++]=d+3,r.vertexPosition=b,r.indexPosition=h,r}var f=self;f.onmessage=function(t){var r=t.data;if(r.type===n){for(var o,s=r.customAttributesCount,a=2+s,u=new Float32Array(r.renderInstructions),l=u.length/a,v=4*l*(s+3),c=new Uint32Array(6*l),g=new Float32Array(v),b=0;b<u.length;b+=a)o=i(u,b,g,c,s,o);var h=e({vertexBuffer:g.buffer,indexBuffer:c.buffer,renderInstructions:u.buffer},r);f.postMessage(h,[g.buffer,c.buffer,u.buffer])}};';return new Worker("undefined"==typeof Blob?"data:application/javascript;base64,"+Buffer.from(t,"binary").toString("base64"):URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}(),r.Rh.addEventListener("message",function(t){var n=t.data;if(n.type===_l){var i=n.projectionTransform;n.hitDetection?(this.bh.fromArrayBuffer(n.vertexBuffer),this.helper.flushBufferData(this.bh)):(this.wh.fromArrayBuffer(n.vertexBuffer),this.helper.flushBufferData(this.wh)),this.gh.fromArrayBuffer(n.indexBuffer),this.helper.flushBufferData(this.gh),this._h=i,cn(this.Oh,this._h),n.hitDetection?this.Eh=new Float32Array(t.data.renderInstructions):(this.Th=new Float32Array(t.data.renderInstructions),n.generateBuffersRun===this.Ch&&(this.ready=!0)),this.getLayer().changed()}}.bind(r)),r.Ph={},r.Ih=0;var u=r.getLayer().getSource();return r.Nh=[Y(u,Td,r.zh,r),Y(u,Ed,r.Fh,r),Y(u,Cd,r.Lh,r),Y(u,Ad,r.Gh,r)],u.forEachFeature(function(t){this.Ph[o(t)]={feature:t,properties:t.getProperties(),geometry:t.getGeometry()},this.Ih++}.bind(r)),r}return bx(n,t),n.prototype.afterHelperCreated=function(){this.Qs=this.helper.getProgram(this.na,this.ta),this.xh&&(this.kh=this.helper.getProgram(this.Sh,this.jh),this.Ah=new vl(this.helper))},n.prototype.zh=function(t){var n=t.feature;this.Ph[o(n)]={feature:n,properties:n.getProperties(),geometry:n.getGeometry()},this.Ih++},n.prototype.Fh=function(t){var n=t.feature;this.Ph[o(n)]={feature:n,properties:n.getProperties(),geometry:n.getGeometry()}},n.prototype.Lh=function(t){var n=t.feature;delete this.Ph[o(n)],this.Ih--},n.prototype.Gh=function(){this.Ph={},this.Ih=0},n.prototype.renderFrame=function(t){var n=this.helper.getGL();this.preRender(n,t);var i=this.gh.getSize();this.helper.drawElements(0,i),this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent);var r=this.helper.getCanvas();return this.xh&&(this.renderHitDetection(t),this.Ah.clearCachedData()),this.postRender(n,t),r},n.prototype.prepareFrameInternal=function(t){var n=this.getLayer(),i=n.getSource(),r=t.viewState,e=!t.viewHints[za]&&!t.viewHints[Fa],o=!Nn(this.Ki,t.extent),s=this.mh<i.getRevision();if(s&&(this.mh=i.getRevision()),e&&(o||s)){var a=r.projection,u=r.resolution,c=n instanceof wx?n.getRenderBuffer():0,h=Sn(t.extent,c*u);i.loadFeatures(h,u,a),this.Dh(t),this.Ki=t.extent.slice()}return this.helper.makeProjectionTransform(t,this.Mh),Qt(this.Mh,this.Oh),this.helper.useProgram(this.Qs),this.helper.prepareDraw(t),this.helper.bindBuffer(this.wh),this.helper.bindBuffer(this.gh),this.helper.enableAttributes(this.attributes),!0},n.prototype.Dh=function(t){var n=[1,0,0,1,0,0];this.helper.makeProjectionTransform(t,n);var i,r,e=(2+this.customAttributes.length)*this.Ih;if(this.Th&&this.Th.length===e||(this.Th=new Float32Array(e)),this.xh){var o=(7+this.customAttributes.length)*this.Ih;this.Eh&&this.Eh.length===o||(this.Eh=new Float32Array(o))}var s,a=[],u=[],c=0,h=0;for(var f in this.Ph)if((r=(i=this.Ph[f]).geometry)&&r.getType()===Pt.POINT){a[0]=r.getFlatCoordinates()[0],a[1]=r.getFlatCoordinates()[1],rn(n,a),s=Cl(h+6,u),this.Th[c++]=a[0],this.Th[c++]=a[1],this.xh&&(this.Eh[h++]=a[0],this.Eh[h++]=a[1],this.Eh[h++]=s[0],this.Eh[h++]=s[1],this.Eh[h++]=s[2],this.Eh[h++]=s[3],this.Eh[h++]=Number(f));for(var l=void 0,v=0;v<this.customAttributes.length;v++)l=this.customAttributes[v].callback(i.feature,i.properties),this.Th[c++]=l,this.xh&&(this.Eh[h++]=l)}var d={type:_l,renderInstructions:this.Th.buffer,customAttributesCount:this.customAttributes.length};if(d.projectionTransform=n,d.generateBuffersRun=++this.Ch,this.ready=!1,this.Rh.postMessage(d,[this.Th.buffer]),this.Th=null,this.xh){var p={type:_l,renderInstructions:this.Eh.buffer,customAttributesCount:5+this.customAttributes.length};p.projectionTransform=n,p.hitDetection=!0,this.Rh.postMessage(p,[this.Eh.buffer]),this.Eh=null}},n.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e){if(Mt(this.xh,66),this.Eh){var o=rn(n.coordinateToPixelTransform,t.slice()),s=this.Ah.readPixel(o[0]/2,o[1]/2),a=Rl([s[0]/255,s[1]/255,s[2]/255,s[3]/255]),u=this.Eh[a],c=Math.floor(u).toString(),h=this.getLayer().getSource().getFeatureByUid(c);return h?r(h,this.getLayer(),null):void 0}},n.prototype.renderHitDetection=function(t){if(this.bh.getSize()){this.Ah.setSize([Math.floor(t.size[0]/2),Math.floor(t.size[1]/2)]),this.helper.useProgram(this.kh),this.helper.prepareDrawToRenderTarget(t,this.Ah,!0),this.helper.bindBuffer(this.bh),this.helper.bindBuffer(this.gh),this.helper.enableAttributes(this.hitDetectionAttributes);var n=this.gh.getSize();this.helper.drawElements(0,n)}},n.prototype.disposeInternal=function(){this.Rh.terminate(),this.Bs=null,this.Nh.forEach((function(t){$(t)})),this.Nh=null,t.prototype.disposeInternal.call(this)},n}(Pl),xx={BEGIN_GEOMETRY:0,BEGIN_PATH:1,CIRCLE:2,CLOSE_PATH:3,CUSTOM:4,DRAW_CHARS:5,DRAW_IMAGE:6,END_GEOMETRY:7,FILL:8,MOVE_TO_LINE_TO:9,SET_FILL_STYLE:10,SET_STROKE_STYLE:11,STROKE:12},jx=[xx.FILL],Sx=[xx.STROKE],kx=[xx.BEGIN_PATH],Mx=[xx.CLOSE_PATH],_x=xx,Ox=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Tx=function(t){function n(n,i,r,e){var o=t.call(this)||this;return o.tolerance=n,o.maxExtent=i,o.pixelRatio=e,o.maxLineWidth=0,o.resolution=r,o.Uh=null,o.qh=null,o.Bh=null,o.instructions=[],o.coordinates=[],o.Wh=[],o.hitDetectionInstructions=[],o.state={},o}return Ox(n,t),n.prototype.applyPixelRatio=function(t){var n=this.pixelRatio;return 1==n?t:t.map((function(t){return t*n}))},n.prototype.appendFlatPointCoordinates=function(t,n){for(var i=this.getBufferedMaxExtent(),r=this.Wh,e=this.coordinates,o=e.length,s=0,a=t.length;s<a;s+=n)r[0]=t[s],r[1]=t[s+1],_n(i,r)&&(e[o++]=r[0],e[o++]=r[1]);return o},n.prototype.appendFlatLineCoordinates=function(t,n,i,r,e,o){var s=this.coordinates,a=s.length,u=this.getBufferedMaxExtent();o&&(n+=r);var c,h,f,l=t[n],v=t[n+1],d=this.Wh,p=!0;for(c=n+r;c<i;c+=r)d[0]=t[c],d[1]=t[c+1],(f=En(u,d))!==h?(p&&(s[a++]=l,s[a++]=v,p=!1),s[a++]=d[0],s[a++]=d[1]):f===mn?(s[a++]=d[0],s[a++]=d[1],p=!1):p=!0,l=d[0],v=d[1],h=f;return(e&&p||c===n+r)&&(s[a++]=l,s[a++]=v),a},n.prototype.Vh=function(t,n,i,r,e){for(var o=0,s=i.length;o<s;++o){var a=i[o],u=this.appendFlatLineCoordinates(t,n,a,r,!1,!1);e.push(u),n=a}return n},n.prototype.drawCustom=function(t,n,i,r){this.beginGeometry(t,n);var e,o,s,a,u,c=t.getType(),h=t.getStride(),f=this.coordinates.length;switch(c){case Pt.MULTI_POLYGON:e=t.getOrientedFlatCoordinates(),a=[];var l=t.getEndss();u=0;for(var v=0,d=l.length;v<d;++v){var p=[];u=this.Vh(e,u,l[v],h,p),a.push(p)}this.instructions.push([_x.CUSTOM,f,a,t,i,xe]),this.hitDetectionInstructions.push([_x.CUSTOM,f,a,t,r||i,xe]);break;case Pt.POLYGON:case Pt.MULTI_LINE_STRING:s=[],e=c==Pt.POLYGON?t.getOrientedFlatCoordinates():t.getFlatCoordinates(),u=this.Vh(e,0,t.getEnds(),h,s),this.instructions.push([_x.CUSTOM,f,s,t,i,ge]),this.hitDetectionInstructions.push([_x.CUSTOM,f,s,t,r||i,ge]);break;case Pt.LINE_STRING:case Pt.CIRCLE:e=t.getFlatCoordinates(),o=this.appendFlatLineCoordinates(e,0,e.length,h,!1,!1),this.instructions.push([_x.CUSTOM,f,o,t,i,be]),this.hitDetectionInstructions.push([_x.CUSTOM,f,o,t,r||i,be]);break;case Pt.MULTI_POINT:e=t.getFlatCoordinates(),(o=this.appendFlatPointCoordinates(e,h))>f&&(this.instructions.push([_x.CUSTOM,f,o,t,i,be]),this.hitDetectionInstructions.push([_x.CUSTOM,f,o,t,r||i,be]));break;case Pt.POINT:e=t.getFlatCoordinates(),this.coordinates.push(e[0],e[1]),o=this.coordinates.length,this.instructions.push([_x.CUSTOM,f,o,t,i]),this.hitDetectionInstructions.push([_x.CUSTOM,f,o,t,r||i])}this.endGeometry(n)},n.prototype.beginGeometry=function(t,n){this.Uh=[_x.BEGIN_GEOMETRY,n,0,t],this.instructions.push(this.Uh),this.qh=[_x.BEGIN_GEOMETRY,n,0,t],this.hitDetectionInstructions.push(this.qh)},n.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},n.prototype.reverseHitDetectionInstructions=function(){var t,n=this.hitDetectionInstructions;n.reverse();var i,r,e=n.length,o=-1;for(t=0;t<e;++t)(r=(i=n[t])[0])==_x.END_GEOMETRY?o=t:r==_x.BEGIN_GEOMETRY&&(i[2]=t,w(this.hitDetectionInstructions,o,t),o=-1)},n.prototype.setFillStrokeStyle=function(t,n){var i=this.state;if(t){var r=t.getColor();i.fillStyle=ah(r||Fs)}else i.fillStyle=void 0;if(n){var e=n.getColor();i.strokeStyle=ah(e||qs);var o=n.getLineCap();i.lineCap=void 0!==o?o:Ls;var s=n.getLineDash();i.lineDash=s?s.slice():Gs;var a=n.getLineDashOffset();i.lineDashOffset=a||0;var u=n.getLineJoin();i.lineJoin=void 0!==u?u:Ds;var c=n.getWidth();i.lineWidth=void 0!==c?c:1;var h=n.getMiterLimit();i.miterLimit=void 0!==h?h:Us,i.lineWidth>this.maxLineWidth&&(this.maxLineWidth=i.lineWidth,this.Bh=null)}else i.strokeStyle=void 0,i.lineCap=void 0,i.lineDash=null,i.lineDashOffset=void 0,i.lineJoin=void 0,i.lineWidth=void 0,i.miterLimit=void 0},n.prototype.createFill=function(t){var n=t.fillStyle,i=[_x.SET_FILL_STYLE,n];return"string"!=typeof n&&i.push(!0),i},n.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},n.prototype.createStroke=function(t){return[_x.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},n.prototype.updateFillStyle=function(t,n){var i=t.fillStyle;"string"==typeof i&&t.currentFillStyle==i||(void 0!==i&&this.instructions.push(n.call(this,t)),t.currentFillStyle=i)},n.prototype.updateStrokeStyle=function(t,n){var i=t.strokeStyle,r=t.lineCap,e=t.lineDash,o=t.lineDashOffset,s=t.lineJoin,a=t.lineWidth,u=t.miterLimit;(t.currentStrokeStyle!=i||t.currentLineCap!=r||e!=t.currentLineDash&&!x(t.currentLineDash,e)||t.currentLineDashOffset!=o||t.currentLineJoin!=s||t.currentLineWidth!=a||t.currentMiterLimit!=u)&&(void 0!==i&&n.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=r,t.currentLineDash=e,t.currentLineDashOffset=o,t.currentLineJoin=s,t.currentLineWidth=a,t.currentMiterLimit=u)},n.prototype.endGeometry=function(t){this.Uh[2]=this.instructions.length,this.Uh=null,this.qh[2]=this.hitDetectionInstructions.length,this.qh=null;var n=[_x.END_GEOMETRY,t];this.instructions.push(n),this.hitDetectionInstructions.push(n)},n.prototype.getBufferedMaxExtent=function(){if(!this.Bh&&(this.Bh=kn(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;Sn(this.Bh,t,this.Bh)}return this.Bh},n}(Sh),Ex=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ax=function(t){function n(n,i,r,e){var o=t.call(this,n,i,r,e)||this;return o.Ma=null,o.Nt=null,o.Xh=void 0,o.Hh=void 0,o.Jh=void 0,o.Kh=void 0,o.ua=void 0,o.Yh=void 0,o.Zh=void 0,o.ca=void 0,o.Dr=void 0,o.ha=void 0,o.Wa=void 0,o.$h=void 0,o}return Ex(n,t),n.prototype.drawPoint=function(t,n){if(this.Nt){this.beginGeometry(t,n);var i=t.getFlatCoordinates(),r=t.getStride(),e=this.coordinates.length,o=this.appendFlatPointCoordinates(i,r);this.instructions.push([_x.DRAW_IMAGE,e,o,this.Nt,this.Hh*this.Xh,this.Jh*this.Xh,Math.ceil(this.Kh*this.Xh),this.ua,this.Yh,this.Zh,this.ca,this.Dr,[this.ha[0]*this.pixelRatio/this.Xh,this.ha[1]*this.pixelRatio/this.Xh],Math.ceil(this.Wa*this.Xh),this.$h]),this.hitDetectionInstructions.push([_x.DRAW_IMAGE,e,o,this.Ma,this.Hh,this.Jh,this.Kh,this.ua,this.Yh,this.Zh,this.ca,this.Dr,this.ha,this.Wa,this.$h]),this.endGeometry(n)}},n.prototype.drawMultiPoint=function(t,n){if(this.Nt){this.beginGeometry(t,n);var i=t.getFlatCoordinates(),r=t.getStride(),e=this.coordinates.length,o=this.appendFlatPointCoordinates(i,r);this.instructions.push([_x.DRAW_IMAGE,e,o,this.Nt,this.Hh*this.Xh,this.Jh*this.Xh,Math.ceil(this.Kh*this.Xh),this.ua,this.Yh,this.Zh,this.ca,this.Dr,[this.ha[0]*this.pixelRatio/this.Xh,this.ha[1]*this.pixelRatio/this.Xh],Math.ceil(this.Wa*this.Xh),this.$h]),this.hitDetectionInstructions.push([_x.DRAW_IMAGE,e,o,this.Ma,this.Hh,this.Jh,this.Kh,this.ua,this.Yh,this.Zh,this.ca,this.Dr,this.ha,this.Wa,this.$h]),this.endGeometry(n)}},n.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.Hh=void 0,this.Jh=void 0,this.Ma=null,this.Nt=null,this.Xh=void 0,this.Kh=void 0,this.ha=void 0,this.ua=void 0,this.Yh=void 0,this.Zh=void 0,this.ca=void 0,this.Dr=void 0,this.Wa=void 0,t.prototype.finish.call(this)},n.prototype.setImageStyle=function(t,n){var i=t.getAnchor(),r=t.getSize(),e=t.getHitDetectionImage(),o=t.getImage(this.pixelRatio),s=t.getOrigin();this.Xh=t.getPixelRatio(this.pixelRatio),this.Hh=i[0],this.Jh=i[1],this.Ma=e,this.Nt=o,this.Kh=r[1],this.ua=t.getOpacity(),this.Yh=s[0]*this.Xh,this.Zh=s[1]*this.Xh,this.ca=t.getRotateWithView(),this.Dr=t.getRotation(),this.ha=t.getScaleArray(),this.Wa=r[0],this.$h=n},n}(Tx),Cx=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Rx=function(t){function n(n,i,r,e){return t.call(this,n,i,r,e)||this}return Cx(n,t),n.prototype.Qh=function(t,n,i,r){var e=this.coordinates.length,o=this.appendFlatLineCoordinates(t,n,i,r,!1,!1),s=[_x.MOVE_TO_LINE_TO,e,o];return this.instructions.push(s),this.hitDetectionInstructions.push(s),i},n.prototype.drawLineString=function(t,n){var i=this.state,r=i.strokeStyle,e=i.lineWidth;if(void 0!==r&&void 0!==e){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,n),this.hitDetectionInstructions.push([_x.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,Gs,0],kx);var o=t.getFlatCoordinates(),s=t.getStride();this.Qh(o,0,o.length,s),this.hitDetectionInstructions.push(Sx),this.endGeometry(n)}},n.prototype.drawMultiLineString=function(t,n){var i=this.state,r=i.strokeStyle,e=i.lineWidth;if(void 0!==r&&void 0!==e){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,n),this.hitDetectionInstructions.push([_x.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],kx);for(var o=t.getEnds(),s=t.getFlatCoordinates(),a=t.getStride(),u=0,c=0,h=o.length;c<h;++c)u=this.Qh(s,u,o[c],a);this.hitDetectionInstructions.push(Sx),this.endGeometry(n)}},n.prototype.finish=function(){var n=this.state;return null!=n.lastStroke&&n.lastStroke!=this.coordinates.length&&this.instructions.push(Sx),this.reverseHitDetectionInstructions(),this.state=null,t.prototype.finish.call(this)},n.prototype.applyStroke=function(n){null!=n.lastStroke&&n.lastStroke!=this.coordinates.length&&(this.instructions.push(Sx),n.lastStroke=this.coordinates.length),n.lastStroke=0,t.prototype.applyStroke.call(this,n),this.instructions.push(kx)},n}(Tx),Px=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ix=function(t){function n(n,i,r,e){return t.call(this,n,i,r,e)||this}return Px(n,t),n.prototype.tf=function(t,n,i,r){var e=this.state,o=void 0!==e.fillStyle,s=void 0!==e.strokeStyle,a=i.length;this.instructions.push(kx),this.hitDetectionInstructions.push(kx);for(var u=0;u<a;++u){var c=i[u],h=this.coordinates.length,f=this.appendFlatLineCoordinates(t,n,c,r,!0,!s),l=[_x.MOVE_TO_LINE_TO,h,f];this.instructions.push(l),this.hitDetectionInstructions.push(l),s&&(this.instructions.push(Mx),this.hitDetectionInstructions.push(Mx)),n=c}return o&&(this.instructions.push(jx),this.hitDetectionInstructions.push(jx)),s&&(this.instructions.push(Sx),this.hitDetectionInstructions.push(Sx)),n},n.prototype.drawCircle=function(t,n){var i=this.state,r=i.fillStyle,e=i.strokeStyle;if(void 0!==r||void 0!==e){this.nf(),this.beginGeometry(t,n),void 0!==i.fillStyle&&this.hitDetectionInstructions.push([_x.SET_FILL_STYLE,Fs]),void 0!==i.strokeStyle&&this.hitDetectionInstructions.push([_x.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset]);var o=t.getFlatCoordinates(),s=t.getStride(),a=this.coordinates.length;this.appendFlatLineCoordinates(o,0,o.length,s,!1,!1);var u=[_x.CIRCLE,a];this.instructions.push(kx,u),this.hitDetectionInstructions.push(kx,u),void 0!==i.fillStyle&&(this.instructions.push(jx),this.hitDetectionInstructions.push(jx)),void 0!==i.strokeStyle&&(this.instructions.push(Sx),this.hitDetectionInstructions.push(Sx)),this.endGeometry(n)}},n.prototype.drawPolygon=function(t,n){var i=this.state,r=i.fillStyle,e=i.strokeStyle;if(void 0!==r||void 0!==e){this.nf(),this.beginGeometry(t,n),void 0!==i.fillStyle&&this.hitDetectionInstructions.push([_x.SET_FILL_STYLE,Fs]),void 0!==i.strokeStyle&&this.hitDetectionInstructions.push([_x.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset]);var o=t.getEnds(),s=t.getOrientedFlatCoordinates(),a=t.getStride();this.tf(s,0,o,a),this.endGeometry(n)}},n.prototype.drawMultiPolygon=function(t,n){var i=this.state,r=i.fillStyle,e=i.strokeStyle;if(void 0!==r||void 0!==e){this.nf(),this.beginGeometry(t,n),void 0!==i.fillStyle&&this.hitDetectionInstructions.push([_x.SET_FILL_STYLE,Fs]),void 0!==i.strokeStyle&&this.hitDetectionInstructions.push([_x.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset]);for(var o=t.getEndss(),s=t.getOrientedFlatCoordinates(),a=t.getStride(),u=0,c=0,h=o.length;c<h;++c)u=this.tf(s,u,o[c],a);this.endGeometry(n)}},n.prototype.finish=function(){this.reverseHitDetectionInstructions(),this.state=null;var n=this.tolerance;if(0!==n)for(var i=this.coordinates,r=0,e=i.length;r<e;++r)i[r]=pe(i[r],n);return t.prototype.finish.call(this)},n.prototype.nf=function(){var t=this.state;void 0!==t.fillStyle&&this.updateFillStyle(t,this.createFill),void 0!==t.strokeStyle&&this.updateStrokeStyle(t,this.applyStroke)},n}(Tx);function Nx(t,n,i,r,e){var o,s,a,u,c,h,f,l,v,d=i,p=i,y=0,m=0,w=i;for(o=i;o<r;o+=e){var b=n[o],g=n[o+1];void 0!==u&&(l=b-u,v=g-c,a=Math.sqrt(l*l+v*v),void 0!==h&&(m+=s,Math.acos((h*l+f*v)/(s*a))>t&&(m>y&&(y=m,d=w,p=o),m=0,w=o-e)),s=a,h=l,f=v),u=b,c=g}return(m+=a)>y?[w,o]:[d,p]}var zx=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Fx={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Lx=function(t){function n(n,i,r,e){var o=t.call(this,n,i,r,e)||this;return o.if=null,o.oo="",o.so=0,o.ao=0,o.uo=void 0,o.co=0,o.fo=null,o.fillStates={},o.lo=null,o.strokeStates={},o.vo={},o.textStates={},o.rf="",o.ef="",o.af="",o.$h=void 0,o}return zx(n,t),n.prototype.finish=function(){var n=t.prototype.finish.call(this);return n.textStates=this.textStates,n.fillStates=this.fillStates,n.strokeStates=this.strokeStates,n},n.prototype.drawText=function(t,n){var i=this.fo,r=this.lo,e=this.vo;if(""!==this.oo&&e&&(i||r)){var o=this.coordinates,s=o.length,a=t.getType(),u=null,c=t.getStride();if(e.placement!==nd||a!=Pt.LINE_STRING&&a!=Pt.MULTI_LINE_STRING&&a!=Pt.POLYGON&&a!=Pt.MULTI_POLYGON){var h=e.overflow?null:[];switch(a){case Pt.POINT:case Pt.MULTI_POINT:u=t.getFlatCoordinates();break;case Pt.LINE_STRING:u=t.getFlatMidpoint();break;case Pt.CIRCLE:u=t.getCenter();break;case Pt.MULTI_LINE_STRING:u=t.getFlatMidpoints(),c=2;break;case Pt.POLYGON:u=t.getFlatInteriorPoint(),e.overflow||h.push(u[2]/this.resolution),c=3;break;case Pt.MULTI_POLYGON:var f=t.getFlatInteriorPoints();u=[];for(j=0,S=f.length;j<S;j+=3)e.overflow||h.push(f[j+2]/this.resolution),u.push(f[j],f[j+1]);if(0===u.length)return;c=2}if((A=this.appendFlatPointCoordinates(u,c))===s)return;if(h&&(A-s)/2!=u.length/c){var l=s/2;h=h.filter((function(t,n){var i=o[2*(l+n)]===u[n*c]&&o[2*(l+n)+1]===u[n*c+1];return i||--l,i}))}this.uf(),(e.backgroundFill||e.backgroundStroke)&&(this.setFillStrokeStyle(e.backgroundFill,e.backgroundStroke),e.backgroundFill&&(this.updateFillStyle(this.state,this.createFill),this.hitDetectionInstructions.push(this.createFill(this.state))),e.backgroundStroke&&(this.updateStrokeStyle(this.state,this.applyStroke),this.hitDetectionInstructions.push(this.createStroke(this.state)))),this.beginGeometry(t,n);var v=e.padding;if(v!=Vs&&(e.scale[0]<0||e.scale[1]<0)){var d=e.padding[0],p=e.padding[1],y=e.padding[2],m=e.padding[3];e.scale[0]<0&&(p=-p,m=-m),e.scale[1]<0&&(d=-d,y=-y),v=[d,p,y,m]}var w=this.pixelRatio;this.instructions.push([_x.DRAW_IMAGE,s,A,null,NaN,NaN,NaN,1,0,0,this.uo,this.co,[1,1],NaN,this.$h,v==Vs?Vs:v.map((function(t){return t*w})),!!e.backgroundFill,!!e.backgroundStroke,this.oo,this.rf,this.af,this.ef,this.so,this.ao,h]);var b=1/w;this.hitDetectionInstructions.push([_x.DRAW_IMAGE,s,A,null,NaN,NaN,NaN,1,0,0,this.uo,this.co,[b,b],NaN,this.$h,v,!!e.backgroundFill,!!e.backgroundStroke,this.oo,this.rf,this.af,this.ef,this.so,this.ao,h]),this.endGeometry(n)}else{if(!ni(this.getBufferedMaxExtent(),t.getExtent()))return;var g=void 0;if(u=t.getFlatCoordinates(),a==Pt.LINE_STRING)g=[u.length];else if(a==Pt.MULTI_LINE_STRING)g=t.getEnds();else if(a==Pt.POLYGON)g=t.getEnds().slice(0,1);else if(a==Pt.MULTI_POLYGON){var x=t.getEndss();g=[];for(var j=0,S=x.length;j<S;++j)g.push(x[j][0])}this.beginGeometry(t,n);for(var k=e.textAlign,M=0,_=void 0,O=0,T=g.length;O<T;++O){if(null==k){var E=Nx(e.maxAngle,u,M,g[O],c);M=E[0],_=E[1]}else _=g[O];for(var j=M;j<_;j+=c)o.push(u[j],u[j+1]);var A=o.length;M=g[O],this.cf(s,A),s=A}this.endGeometry(n)}}},n.prototype.uf=function(){var t=this.lo,n=this.vo,i=this.fo,r=this.af;t&&(r in this.strokeStates||(this.strokeStates[r]={strokeStyle:t.strokeStyle,lineCap:t.lineCap,lineDashOffset:t.lineDashOffset,lineWidth:t.lineWidth,lineJoin:t.lineJoin,miterLimit:t.miterLimit,lineDash:t.lineDash}));var e=this.rf;e in this.textStates||(this.textStates[e]={font:n.font,textAlign:n.textAlign||Bs,textBaseline:n.textBaseline||Ws,scale:n.scale});var o=this.ef;i&&(o in this.fillStates||(this.fillStates[o]={fillStyle:i.fillStyle}))},n.prototype.cf=function(t,n){var i=this.lo,r=this.vo,e=this.af,o=this.rf,s=this.ef;this.uf();var a=this.pixelRatio,u=Fx[r.textBaseline],c=this.ao*a,h=this.oo,f=i?i.lineWidth*Math.abs(r.scale[0])/2:0;this.instructions.push([_x.DRAW_CHARS,t,n,u,r.overflow,s,r.maxAngle,a,c,e,f*a,h,o,1]),this.hitDetectionInstructions.push([_x.DRAW_CHARS,t,n,u,r.overflow,s,r.maxAngle,1,c,e,f,h,o,1/a])},n.prototype.setTextStyle=function(t,n){var i,r,e;if(t){var s=t.getFill();s?((r=this.fo)||(r={},this.fo=r),r.fillStyle=ah(s.getColor()||Fs)):(r=null,this.fo=r);var a=t.getStroke();if(a){(e=this.lo)||(e={},this.lo=e);var u=a.getLineDash(),c=a.getLineDashOffset(),h=a.getWidth(),f=a.getMiterLimit();e.lineCap=a.getLineCap()||Ls,e.lineDash=u?u.slice():Gs,e.lineDashOffset=void 0===c?0:c,e.lineJoin=a.getLineJoin()||Ds,e.lineWidth=void 0===h?1:h,e.miterLimit=void 0===f?Us:f,e.strokeStyle=ah(a.getColor()||qs)}else e=null,this.lo=e;i=this.vo;var l=t.getFont()||zs;$s(l);var v=t.getScaleArray();i.overflow=t.getOverflow(),i.font=l,i.maxAngle=t.getMaxAngle(),i.placement=t.getPlacement(),i.textAlign=t.getTextAlign(),i.textBaseline=t.getTextBaseline()||Ws,i.backgroundFill=t.getBackgroundFill(),i.backgroundStroke=t.getBackgroundStroke(),i.padding=t.getPadding()||Vs,i.scale=void 0===v?[1,1]:v;var d=t.getOffsetX(),p=t.getOffsetY(),y=t.getRotateWithView(),m=t.getRotation();this.oo=t.getText()||"",this.so=void 0===d?0:d,this.ao=void 0===p?0:p,this.uo=void 0!==y&&y,this.co=void 0===m?0:m,this.af=e?("string"==typeof e.strokeStyle?e.strokeStyle:o(e.strokeStyle))+e.lineCap+e.lineDashOffset+"|"+e.lineWidth+e.lineJoin+e.miterLimit+"["+e.lineDash.join()+"]":"",this.rf=i.font+i.scale+(i.textAlign||"?")+(i.textBaseline||"?"),this.ef=r?"string"==typeof r.fillStyle?r.fillStyle:"|"+o(r.fillStyle):""}else this.oo="";this.$h=n},n}(Tx),Gx={Circle:Ix,Default:Tx,Image:Ax,LineString:Rx,Polygon:Ix,Text:Lx},Dx=function(){function t(t,n,i,r){this.hf=t,this.ff=n,this.Rt=r,this.lf=i,this.vf={}}return t.prototype.finish=function(){var t={};for(var n in this.vf){t[n]=t[n]||{};var i=this.vf[n];for(var r in i){var e=i[r].finish();t[n][r]=e}}return t},t.prototype.getBuilder=function(t,n){var i=void 0!==t?t.toString():"0",r=this.vf[i];void 0===r&&(r={},this.vf[i]=r);var e=r[n];void 0===e&&(e=new(0,Gx[n])(this.hf,this.ff,this.lf,this.Rt),r[n]=e);return e},t}();function Ux(t,n,i,r,e,o,s,a,u,c,h,f){var l=t[n],v=t[n+1],d=0,p=0,y=0,m=0;function w(){d=l,p=v,l=t[n+=r],v=t[n+1],m+=y,y=Math.sqrt((l-d)*(l-d)+(v-p)*(v-p))}do{w()}while(n<i-r&&m+y<o);for(var b=0===y?0:(o-m)/y,g=wi(d,l,b),x=wi(p,v,b),j=n-r,S=m,k=o+a*u(c,e,h);n<i-r&&m+y<k;)w();var M,_=wi(d,l,b=0===y?0:(k-m)/y),O=wi(p,v,b);if(f){var T=[g,x,_,O];Vr(T,0,4,2,f,T,T),M=T[0]>T[2]}else M=g>_;var E,A=Math.PI,C=[],R=j+r===n;if(y=0,m=S,l=t[n=j],v=t[n+1],R){w(),E=Math.atan2(v-p,l-d),M&&(E+=E>0?-A:A);var P=(_+g)/2,I=(O+x)/2;return C[0]=[P,I,(k-o)/2,E,e],C}for(var N=0,z=e.length;N<z;){w();var F=Math.atan2(v-p,l-d);if(M&&(F+=F>0?-A:A),void 0!==E){var L=F-E;if(L+=L>A?-2*A:L<-A?2*A:0,Math.abs(L)>s)return null}E=F;for(var G=N,D=0;N<z;++N){var U=a*u(c,e[M?z-N-1:N],h);if(n+r<i&&m+y<o+D+U/2)break;D+=U}if(N!==G){var q=M?e.substring(z-G,z-N):e.substring(G,N);P=wi(d,l,b=0===y?0:(o+D/2-m)/y),I=wi(p,v,b);C.push([P,I,D/2,F,q]),o+=D}}return C}function qx(t,n,i,r){for(var e=t[n],o=t[n+1],s=0,a=n+r;a<i;a+=r){var u=t[a],c=t[a+1];s+=Math.sqrt((u-e)*(u-e)+(c-o)*(c-o)),e=u,o=c}return s}var Bx=[1/0,1/0,-1/0,-1/0],Wx=[],Vx=[],Xx=[],Hx=[];function Jx(t){return t[3].declutterBox}var Kx=new RegExp("["+String.fromCharCode(1425)+"-"+String.fromCharCode(2303)+String.fromCharCode(64285)+"-"+String.fromCharCode(65023)+String.fromCharCode(65136)+"-"+String.fromCharCode(65276)+String.fromCharCode(67584)+"-"+String.fromCharCode(69631)+String.fromCharCode(124928)+"-"+String.fromCharCode(126975)+"]");function Yx(t,n){return"start"!==n&&"end"!==n||Kx.test(t)||(n="start"===n?"left":"right"),Fx[n]}function Zx(t,n,i){return i>0&&t.push("\n",""),t.push(n,""),t}var $x=function(){function t(t,n,i,r){this.overlaps=i,this.pixelRatio=n,this.resolution=t,this.df,this.instructions=r.instructions,this.coordinates=r.coordinates,this.pf={},this.yf=[1,0,0,1,0,0],this.hitDetectionInstructions=r.hitDetectionInstructions,this.do=null,this.De=0,this.fillStates=r.fillStates||{},this.strokeStates=r.strokeStates||{},this.textStates=r.textStates||{},this.mf={},this.if={}}return t.prototype.createLabel=function(t,n,i,r){var e=t+n+i+r;if(this.if[e])return this.if[e];var o=r?this.strokeStates[r]:null,s=i?this.fillStates[i]:null,a=this.textStates[n],u=this.pixelRatio,c=[a.scale[0]*u,a.scale[1]*u],h=Array.isArray(t),f=Yx(h?t[0]:t,a.textAlign||Bs),l=r&&o.lineWidth?o.lineWidth:0,v=h?t:t.split("\n").reduce(Zx,[]),d=ra(a,v),p=d.width,y=d.height,m=d.widths,w=d.heights,b=d.lineWidths,g=p+l,x=[],j=(g+2)*c[0],S=(y+l)*c[1],k={width:j<0?Math.floor(j):Math.ceil(j),height:S<0?Math.floor(S):Math.ceil(S),contextInstructions:x};(1==c[0]&&1==c[1]||x.push("scale",c),r)&&(x.push("strokeStyle",o.strokeStyle),x.push("lineWidth",l),x.push("lineCap",o.lineCap),x.push("lineJoin",o.lineJoin),x.push("miterLimit",o.miterLimit),(Ht?OffscreenCanvasRenderingContext2D:CanvasRenderingContext2D).prototype.setLineDash&&(x.push("setLineDash",[o.lineDash]),x.push("lineDashOffset",o.lineDashOffset)));i&&x.push("fillStyle",s.fillStyle),x.push("textBaseline","middle"),x.push("textAlign","center");for(var M,_=.5-f,O=f*g+_*l,T=[],E=[],A=0,C=0,R=0,P=0,I=0,N=v.length;I<N;I+=2){var z=v[I];if("\n"!==z){var F=v[I+1]||a.font;F!==M&&(r&&T.push("font",F),i&&E.push("font",F),M=F),A=Math.max(A,w[R]);var L=[z,O+_*m[R]+f*(m[R]-b[P]),.5*(l+A)+C];O+=m[R],r&&T.push("strokeText",L),i&&E.push("fillText",L),++R}else C+=A,A=0,O=f*g+_*l,++P}return Array.prototype.push.apply(x,T),Array.prototype.push.apply(x,E),this.if[e]=k,k},t.prototype.wf=function(t,n,i,r,e,o,s){t.beginPath(),t.moveTo.apply(t,n),t.lineTo.apply(t,i),t.lineTo.apply(t,r),t.lineTo.apply(t,e),t.lineTo.apply(t,n),o&&(this.df=o[2],this.da(t)),s&&(this.bf(t,s),t.stroke())},t.prototype.gf=function(t,n,i,r,e,o,s,a,u,c,h,f,l,v,d,p){var y,m=i-(s*=f[0]),w=r-(a*=f[1]),b=e+u>t?t-u:e,g=o+c>n?n-c:o,x=v[3]+b*f[0]+v[1],j=v[0]+g*f[1]+v[2],S=m-v[3],k=w-v[0];return(d||0!==h)&&(Wx[0]=S,Hx[0]=S,Wx[1]=k,Vx[1]=k,Vx[0]=S+x,Xx[0]=Vx[0],Xx[1]=k+j,Hx[1]=Xx[1]),0!==h?(rn(y=un([1,0,0,1,0,0],i,r,1,1,h,-i,-r),Wx),rn(y,Vx),rn(y,Xx),rn(y,Hx),Cn(Math.min(Wx[0],Vx[0],Xx[0],Hx[0]),Math.min(Wx[1],Vx[1],Xx[1],Hx[1]),Math.max(Wx[0],Vx[0],Xx[0],Hx[0]),Math.max(Wx[1],Vx[1],Xx[1],Hx[1]),Bx)):Cn(Math.min(S,S+x),Math.min(k,k+j),Math.max(S,S+x),Math.max(k,k+j),Bx),l&&(m=Math.round(m),w=Math.round(w)),{drawImageX:m,drawImageY:w,drawImageW:b,drawImageH:g,originX:u,originY:c,declutterBox:{minX:Bx[0],minY:Bx[1],maxX:Bx[2],maxY:Bx[3],value:p},canvasTransform:y,scale:f}},t.prototype.xf=function(t,n,i,r,e,o,s){var a=!(!o&&!s),u=r.declutterBox,c=t.canvas,h=s?s[2]*r.scale[0]/2:0;return u.minX-h<=c.width/n&&u.maxX+h>=0&&u.minY-h<=c.height/n&&u.maxY+h>=0&&(a&&this.wf(t,Wx,Vx,Xx,Hx,o,s),ea(t,r.canvasTransform,e,i,r.originX,r.originY,r.drawImageW,r.drawImageH,r.drawImageX,r.drawImageY,r.scale)),!0},t.prototype.da=function(t){if(this.df){var n=rn(this.yf,[0,0]),i=512*this.pixelRatio;t.save(),t.translate(n[0]%i,n[1]%i),t.rotate(this.De)}t.fill(),this.df&&t.restore()},t.prototype.bf=function(t,n){t.strokeStyle=n[1],t.lineWidth=n[2],t.lineCap=n[3],t.lineJoin=n[4],t.miterLimit=n[5],t.setLineDash&&(t.lineDashOffset=n[7],t.setLineDash(n[6]))},t.prototype.jf=function(t,n,i,r){var e=this.textStates[n],o=this.createLabel(t,n,r,i),s=this.strokeStates[i],a=this.pixelRatio,u=Yx(Array.isArray(t)?t[0]:t,e.textAlign||Bs),c=Fx[e.textBaseline||Ws],h=s&&s.lineWidth?s.lineWidth:0;return{label:o,anchorX:u*(o.width/a-2*e.scale[0])+2*(.5-u)*h,anchorY:c*o.height/a+2*(.5-c)*h}},t.prototype.Sf=function(t,n,i,r,e,o,s,a){var u;this.do&&x(i,this.yf)?u=this.do:(this.do||(this.do=[]),u=Wr(this.coordinates,0,this.coordinates.length,2,i,this.do),nn(this.yf,i));for(var c,h,f,l,v,d,p,y,m,w,b,g,j,S,k,M,_=0,O=r.length,T=0,E=0,A=0,C=null,R=null,P=this.pf,I=this.De,N=Math.round(1e12*Math.atan2(-i[1],i[0]))/1e12,z={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:I},F=this.instructions!=r||this.overlaps?0:200;_<O;){var L=r[_];switch(L[0]){case _x.BEGIN_GEOMETRY:j=L[1],M=L[3],j.getGeometry()?void 0===s||ni(s,M.getExtent())?++_:_=L[2]+1:_=L[2];break;case _x.BEGIN_PATH:E>F&&(this.da(t),E=0),A>F&&(t.stroke(),A=0),E||A||(t.beginPath(),l=NaN,v=NaN),++_;break;case _x.CIRCLE:var G=u[T=L[1]],D=u[T+1],U=u[T+2]-G,q=u[T+3]-D,B=Math.sqrt(U*U+q*q);t.moveTo(G+B,D),t.arc(G,D,B,0,2*Math.PI,!0),++_;break;case _x.CLOSE_PATH:t.closePath(),++_;break;case _x.CUSTOM:T=L[1],c=L[2];var W=L[3],V=L[4],X=6==L.length?L[5]:void 0;z.geometry=W,z.feature=j,_ in P||(P[_]=[]);var H=P[_];X?X(u,T,c,2,H):(H[0]=u[T],H[1]=u[T+1],H.length=2),V(H,z),++_;break;case _x.DRAW_IMAGE:T=L[1],c=L[2],y=L[3],h=L[4],f=L[5];var J=L[6],K=L[7],Y=L[8],Z=L[9],$=L[10],Q=L[11],tt=L[12],nt=L[13],it=L[14];if(!y&&L.length>=19){m=L[18],w=L[19],b=L[20],g=L[21];var rt=this.jf(m,w,b,g);y=rt.label,L[3]=y;var et=L[22];h=(rt.anchorX-et)*this.pixelRatio,L[4]=h;var ot=L[23];f=(rt.anchorY-ot)*this.pixelRatio,L[5]=f,J=y.height,L[6]=J,nt=y.width,L[13]=nt}var st=void 0;L.length>24&&(st=L[24]);var at=void 0,ut=void 0,ct=void 0;L.length>16?(at=L[15],ut=L[16],ct=L[17]):(at=Vs,ut=!1,ct=!1),$&&N?Q+=I:$||N||(Q-=I);for(var ht=0;T<c;T+=2)if(!(st&&st[ht++]<nt/this.pixelRatio)){var ft=[t,n,y,Lt=this.gf(y.width,y.height,u[T],u[T+1],nt,J,h,f,Y,Z,Q,tt,e,at,ut||ct,j),K,ut?C:null,ct?R:null],lt=void 0,vt=void 0;if(a&&it){var dt=c-T;if(!it[dt]){it[dt]=ft;continue}if(lt=it[dt],delete it[dt],vt=Jx(lt),a.collides(vt))continue}a&&a.collides(Lt.declutterBox)||(lt&&(a&&a.insert(vt),this.xf.apply(this,lt)),a&&a.insert(Lt.declutterBox),this.xf.apply(this,ft))}++_;break;case _x.DRAW_CHARS:var pt=L[1],yt=L[2],mt=L[3],wt=L[4];g=L[5];var bt=L[6],gt=L[7],xt=L[8];b=L[9];var jt=L[10];m=L[11],w=L[12];var St=[L[13],L[13]],kt=this.textStates[w],Mt=kt.font,_t=[kt.scale[0]*gt,kt.scale[1]*gt],Ot=void 0;Mt in this.mf?Ot=this.mf[Mt]:(Ot={},this.mf[Mt]=Ot);var Tt=qx(u,pt,yt,2),Et=Math.abs(_t[0])*ia(Mt,m,Ot);if(wt||Et<=Tt){var At=this.textStates[w].textAlign,Ct=Ux(u,pt,yt,2,m,(Tt-Et)*Fx[At],bt,Math.abs(_t[0]),ia,Mt,Ot,N?0:this.De);t:if(Ct){var Rt=[],Pt=void 0,It=void 0,Nt=void 0,zt=void 0,Ft=void 0;if(b)for(Pt=0,It=Ct.length;Pt<It;++Pt){Nt=(Ft=Ct[Pt])[4],zt=this.createLabel(Nt,w,"",b),h=Ft[2]+(_t[0]<0?-jt:jt),f=mt*zt.height+2*(.5-mt)*jt*_t[1]/_t[0]-xt;var Lt=this.gf(zt.width,zt.height,Ft[0],Ft[1],zt.width,zt.height,h,f,0,0,Ft[3],St,!1,Vs,!1,j);if(a&&a.collides(Lt.declutterBox))break t;Rt.push([t,n,zt,Lt,1,null,null])}if(g)for(Pt=0,It=Ct.length;Pt<It;++Pt){Nt=(Ft=Ct[Pt])[4],zt=this.createLabel(Nt,w,g,""),h=Ft[2],f=mt*zt.height-xt;Lt=this.gf(zt.width,zt.height,Ft[0],Ft[1],zt.width,zt.height,h,f,0,0,Ft[3],St,!1,Vs,!1,j);if(a&&a.collides(Lt.declutterBox))break t;Rt.push([t,n,zt,Lt,1,null,null])}a&&a.load(Rt.map(Jx));for(var Gt=0,Dt=Rt.length;Gt<Dt;++Gt)this.xf.apply(this,Rt[Gt])}}++_;break;case _x.END_GEOMETRY:if(void 0!==o){var Ut=o(j=L[1],M);if(Ut)return Ut}++_;break;case _x.FILL:F?E++:this.da(t),++_;break;case _x.MOVE_TO_LINE_TO:for(T=L[1],c=L[2],S=u[T],p=(k=u[T+1])+.5|0,(d=S+.5|0)===l&&p===v||(t.moveTo(S,k),l=d,v=p),T+=2;T<c;T+=2)d=(S=u[T])+.5|0,p=(k=u[T+1])+.5|0,T!=c-2&&d===l&&p===v||(t.lineTo(S,k),l=d,v=p);++_;break;case _x.SET_FILL_STYLE:C=L,this.df=L[2],E&&(this.da(t),E=0,A&&(t.stroke(),A=0)),t.fillStyle=L[1],++_;break;case _x.SET_STROKE_STYLE:R=L,A&&(t.stroke(),A=0),this.bf(t,L),++_;break;case _x.STROKE:F?A++:t.stroke(),++_;break;default:++_}}E&&this.da(t),A&&t.stroke()},t.prototype.execute=function(t,n,i,r,e,o){this.De=r,this.Sf(t,n,i,this.instructions,e,void 0,void 0,o)},t.prototype.executeHitDetection=function(t,n,i,r,e){return this.De=i,this.Sf(t,1,n,this.hitDetectionInstructions,!0,r,e)},t}(),Qx=[Ah,_h,Eh,Th,Ch,Oh],tj=function(){function t(t,n,i,r,e,o){this.ff=t,this.zu=r,this.Rt=i,this.lf=n,this.dh=o,this.kf={},this.Mf=null,this._f=[1,0,0,1,0,0],this.Of(e)}return t.prototype.clip=function(t,n){var i=this.getClipCoords(n);t.beginPath(),t.moveTo(i[0],i[1]),t.lineTo(i[2],i[3]),t.lineTo(i[4],i[5]),t.lineTo(i[6],i[7]),t.clip()},t.prototype.Of=function(t){for(var n in t){var i=this.kf[n];void 0===i&&(i={},this.kf[n]=i);var r=t[n];for(var e in r){var o=r[e];i[e]=new $x(this.lf,this.Rt,this.zu,o)}}},t.prototype.hasExecutors=function(t){for(var n in this.kf)for(var i=this.kf[n],r=0,e=t.length;r<e;++r)if(t[r]in i)return!0;return!1},t.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e,o){var s=2*(r=Math.round(r))+1,a=un(this._f,r+.5,r+.5,1/n,-1/n,-i,-t[0],-t[1]),u=!this.Mf;u&&(this.Mf=Oo(s,s));var c,h=this.Mf;h.canvas.width!==s||h.canvas.height!==s?(h.canvas.width=s,h.canvas.height=s):u||h.clearRect(0,0,s,s),void 0!==this.dh&&(Ln(c=[1/0,1/0,-1/0,-1/0],t),Sn(c,n*(this.dh+r),c));var f,l=ij(r);function v(t,n){for(var i=h.getImageData(0,0,s,s).data,a=0,u=l.length;a<u;a++)if(i[l[a]]>0){if(!o||f!==Th&&f!==Ch||-1!==o.indexOf(t)){var c=(l[a]-3)/4,v=r-c%s,d=r-(c/s|0),p=e(t,n,v*v+d*d);if(p)return p}h.clearRect(0,0,s,s);break}}var d,y,m,w,b,g=Object.keys(this.kf).map(Number);for(g.sort(p),d=g.length-1;d>=0;--d){var x=g[d].toString();for(m=this.kf[x],y=Qx.length-1;y>=0;--y)if(void 0!==(w=m[f=Qx[y]])&&(b=w.executeHitDetection(h,a,i,v,c)))return b}},t.prototype.getClipCoords=function(t){var n=this.ff;if(!n)return null;var i=n[0],r=n[1],e=n[2],o=n[3],s=[i,r,i,o,e,o,e,r];return Wr(s,0,8,2,t,s),s},t.prototype.isEmpty=function(){return R(this.kf)},t.prototype.execute=function(t,n,i,r,e,o,s){var a=Object.keys(this.kf).map(Number);a.sort(p),this.ff&&(t.save(),this.clip(t,i));var u,c,h,f,l,v,d=o||Qx;for(s&&a.reverse(),u=0,c=a.length;u<c;++u){var y=a[u].toString();for(l=this.kf[y],h=0,f=d.length;h<f;++h){void 0!==(v=l[d[h]])&&v.execute(t,n,i,r,e,s)}}this.ff&&t.restore()},t}(),nj={};function ij(t){if(void 0!==nj[t])return nj[t];for(var n=2*t+1,i=t*t,r=new Array(i+1),e=0;e<=t;++e)for(var o=0;o<=t;++o){var s=e*e+o*o;if(s>i)break;var a=r[s];a||(a=[],r[s]=a),a.push(4*((t+e)*n+(t+o))+3),e>0&&a.push(4*((t-e)*n+(t+o))+3),o>0&&(a.push(4*((t+e)*n+(t-o))+3),e>0&&a.push(4*((t-e)*n+(t-o))+3))}for(var u=[],c=(e=0,r.length);e<c;++e)r[e]&&u.push.apply(u,r[e]);return nj[t]=u,u}var rj=tj,ej=.5;function oj(t,n,i,r,e,o,s){var a=Oo(t[0]*ej,t[1]*ej);a.imageSmoothingEnabled=!1;for(var u=a.canvas,c=new Mh(a,ej,e,null,s),h=i.length,f=Math.floor(16777215/h),l={},v=1;v<=h;++v){var d=i[v-1],y=d.getStyleFunction()||r;if(r){var m=y(d,o);if(m){Array.isArray(m)||(m=[m]);for(var w="#"+("000000"+(v*f).toString(16)).slice(-6),b=0,g=m.length;b<g;++b){var x=m[b],j=x.getGeometryFunction()(d);if(j&&ni(e,j.getExtent())){var S=x.clone(),k=S.getFill();k&&k.setColor(w);var M=S.getStroke();M&&(M.setColor(w),M.setLineDash(null)),S.setText(void 0);var _=x.getImage();if(_&&0!==_.getOpacity()){var O=_.getImageSize();if(!O)continue;var T=Oo(O[0],O[1],void 0,{alpha:!1}),E=T.canvas;T.fillStyle=w,T.fillRect(0,0,E.width,E.height),S.setImage(new Wv({img:E,imgSize:O,anchor:_.getAnchor(),anchorXUnits:Pv,anchorYUnits:Pv,offset:_.getOrigin(),opacity:1,size:_.getSize(),scale:_.getScale(),rotation:_.getRotation(),rotateWithView:_.getRotateWithView()}))}var A=S.getZIndex()||0;(P=l[A])||(P={},l[A]=P,P[Pt.POLYGON]=[],P[Pt.CIRCLE]=[],P[Pt.LINE_STRING]=[],P[Pt.POINT]=[]),P[j.getType().replace("Multi","")].push(j,S)}}}}}for(var C=Object.keys(l).map(Number).sort(p),R=(v=0,C.length);v<R;++v){var P=l[C[v]];for(var I in P){var N=P[I];for(b=0,g=N.length;b<g;b+=2){c.setStyle(N[b+1]);for(var z=0,F=n.length;z<F;++z)c.setTransform(n[z]),c.drawGeometry(N[b])}}}return a.getImageData(0,0,u.width,u.height)}function sj(t,n,i){var r=[];if(i){var e=Math.floor(Math.round(t[0])*ej),o=Math.floor(Math.round(t[1])*ej),s=4*(ci(e,0,i.width-1)+ci(o,0,i.height-1)*i.width),a=i.data[s],u=i.data[s+1],c=i.data[s+2]+256*(u+256*a),h=Math.floor(16777215/n.length);c&&c%h==0&&r.push(n[c/h-1])}return r}var aj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),uj=function(t){function n(n){var i=t.call(this,n)||this;return i.Tf=i.Ef.bind(i),i.Af,i.Cf=!1,i.Rf=null,i.Pf=null,i.Sc=-1,i.If=NaN,i.zc=[1/0,1/0,-1/0,-1/0],i.Nf=[1/0,1/0,-1/0,-1/0],i.zf,i.Ff=null,i.Lf=null,i.Gf=null,i.Df=null,i.replayGroupChanged=!0,i.declutterExecutorGroup=null,i.clipping=!0,i}return aj(n,t),n.prototype.renderWorlds=function(t,n,i){var r=n.extent,e=n.viewState,o=e.center,s=e.resolution,a=e.projection,u=e.rotation,c=a.getExtent(),h=this.getLayer().getSource(),f=n.pixelRatio,l=n.viewHints,v=!(l[za]||l[Fa]),d=this.context,p=Math.round(n.size[0]*f),y=Math.round(n.size[1]*f),m=h.getWrapX()&&a.canWrapX(),w=m?ti(c):null,b=m?Math.ceil((r[2]-c[2])/w)+1:1,g=m?Math.floor((r[0]-c[0])/w):0;do{var x=this.getRenderTransform(o,s,u,f,p,y,g*w);t.execute(d,1,x,u,v,void 0,i)}while(++g<b)},n.prototype.renderDeclutter=function(t){this.declutterExecutorGroup&&this.renderWorlds(this.declutterExecutorGroup,t,t.declutterTree)},n.prototype.renderFrame=function(t,n){var i=t.pixelRatio,r=t.layerStatesArray[t.layerIndex];sn(this.pixelTransform,1/i,1/i),cn(this.inversePixelTransform,this.pixelTransform);var e=fn(this.pixelTransform);this.useContainer(n,e,r.opacity,this.getBackground(t));var o=this.context,s=o.canvas,a=this.Df,u=this.declutterExecutorGroup;if((!a||a.isEmpty())&&(!u||u.isEmpty()))return null;var c=Math.round(t.size[0]*i),h=Math.round(t.size[1]*i);s.width!=c||s.height!=h?(s.width=c,s.height=h,s.style.transform!==e&&(s.style.transform=e)):this.containerReused||o.clearRect(0,0,c,h),this.preRender(o,t);var f=t.viewState,l=f.projection,v=!1,d=!0;if(r.extent&&this.clipping){var p=Gr(r.extent,l);(v=(d=ni(p,t.extent))&&!On(p,t.extent))&&this.clipUnrotated(o,t,p)}d&&this.renderWorlds(a,t),v&&o.restore(),this.postRender(o,t);var y=Ns(r.opacity),m=this.container;return y!==m.style.opacity&&(m.style.opacity=y),this.zf!==f.rotation&&(this.zf=f.rotation,this.Rf=null),this.container},n.prototype.getFeatures=function(t){return new Promise(function(n){if(!this.Rf&&!this.Af){var i=[this.context.canvas.width,this.context.canvas.height];rn(this.pixelTransform,i);var r=this.Ff,e=this.If,o=this.zf,s=this.Lf,a=this.Nf,u=this.getLayer(),c=[],h=i[0]*ej,f=i[1]*ej;c.push(this.getRenderTransform(r,e,o,ej,h,f,0).slice());var l=u.getSource(),v=s.getExtent();if(l.getWrapX()&&s.canWrapX()&&!On(v,a)){for(var d=a[0],p=ti(v),y=0,m=void 0;d<v[0];)m=p*--y,c.push(this.getRenderTransform(r,e,o,ej,h,f,m).slice()),d+=p;for(y=0,d=a[2];d>v[2];)m=p*++y,c.push(this.getRenderTransform(r,e,o,ej,h,f,m).slice()),d-=p}this.Rf=oj(i,c,this.Pf,u.getStyleFunction(),a,e,o)}n(sj(t,this.Pf,this.Rf))}.bind(this))},n.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e){var s=this;if(this.Df){var a,u=n.viewState.resolution,c=n.viewState.rotation,h=this.getLayer(),f={},l=function(t,n,i){var s=o(t),a=f[s];if(a){if(!0!==a&&i<a.distanceSq){if(0===i)return f[s]=!0,e.splice(e.lastIndexOf(a),1),r(t,h,n);a.geometry=n,a.distanceSq=i}}else{if(0===i)return f[s]=!0,r(t,h,n);e.push(f[s]={feature:t,layer:h,geometry:n,distanceSq:i,callback:r})}},v=[this.Df];return this.declutterExecutorGroup&&v.push(this.declutterExecutorGroup),v.some((function(r){return a=r.forEachFeatureAtCoordinate(t,u,c,i,l,r===s.declutterExecutorGroup&&n.declutterTree?n.declutterTree.all().map((function(t){return t.value})):null)})),a}},n.prototype.handleFontsChanged=function(){var t=this.getLayer();t.getVisible()&&this.Df&&t.changed()},n.prototype.Ef=function(t){this.renderIfReadyAndVisible()},n.prototype.prepareFrame=function(t){var n=this.getLayer(),i=n.getSource();if(!i)return!1;var r=t.viewHints[za],e=t.viewHints[Fa],o=n.getUpdateWhileAnimating(),s=n.getUpdateWhileInteracting();if(!this.Cf&&!o&&r||!s&&e)return this.Af=!0,!0;this.Af=!1;var a=t.extent,u=t.viewState,c=u.projection,h=u.resolution,f=t.pixelRatio,l=n.getRevision(),v=n.getRenderBuffer(),d=n.getRenderOrder();void 0===d&&(d=Ph);var p=u.center.slice(),y=Sn(a,v*h),m=y.slice(),w=[y.slice()],b=c.getExtent();if(i.getWrapX()&&c.canWrapX()&&!On(b,t.extent)){var g=ti(b),j=Math.max(ti(y)/2,g);y[0]=b[0]-j,y[2]=b[2]+j,ar(p,c);var S=ai(w[0],c);S[0]<b[0]&&S[2]<b[2]?w.push([S[0]+g,S[1],S[2]+g,S[3]]):S[0]>b[0]&&S[2]>b[2]&&w.push([S[0]-g,S[1],S[2]-g,S[3]])}if(!this.Cf&&this.If==h&&this.Sc==l&&this.Gf==d&&On(this.Nf,y))return x(this.zc,m)||(this.Rf=null,this.zc=m),this.Ff=p,this.replayGroupChanged=!1,!0;this.Df=null,this.Cf=!1;var k,M=new Dx(Nh(h,f),y,h,f);this.getLayer().getDeclutter()&&(k=new Dx(Nh(h,f),y,h,f));var _,O=Nr();if(O){for(var T=0,E=w.length;T<E;++T){var A=Lr(w[T],c);i.loadFeatures(A,Dr(h,c),O)}_=Er(O,c)}else for(T=0,E=w.length;T<E;++T)i.loadFeatures(w[T],h,c);var C=Ih(h,f),R=function(t){var i,r=t.getStyleFunction()||n.getStyleFunction();if(r&&(i=r(t,h)),i){var e=this.renderFeature(t,C,i,M,_,k);this.Cf=this.Cf||e}}.bind(this),P=Lr(y,c),I=i.getFeaturesInExtent(P);d&&I.sort(d);for(T=0,E=I.length;T<E;++T)R(I[T]);this.Pf=I;var N=M.finish(),z=new rj(y,h,f,i.getOverlaps(),N,n.getRenderBuffer());return k&&(this.declutterExecutorGroup=new rj(y,h,f,i.getOverlaps(),k.finish(),n.getRenderBuffer())),this.If=h,this.Sc=l,this.Gf=d,this.zc=m,this.Nf=y,this.Ff=p,this.Lf=c,this.Df=z,this.Rf=null,this.replayGroupChanged=!0,!0},n.prototype.renderFeature=function(t,n,i,r,e,o){if(!i)return!1;var s=!1;if(Array.isArray(i))for(var a=0,u=i.length;a<u;++a)s=zh(r,t,i[a],n,this.Tf,e,o)||s;else s=zh(r,t,i,n,this.Tf,e,o);return s},n}(xg),cj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),hj=function(t){function n(n){var i=t.call(this,n)||this;return i.Uf=new uj(n),i.qf=n.getImageRatio(),i.Bf=[1,0,0,1,0,0],i.Wf=null,i}return cj(n,t),n.prototype.disposeInternal=function(){this.Uf.dispose(),t.prototype.disposeInternal.call(this)},n.prototype.getFeatures=function(t){if(!this.Uf)return new Promise((function(t){return t([])}));var n=rn(this.Bf,rn(this.Wf,t.slice()));return this.Uf.getFeatures(n)},n.prototype.handleFontsChanged=function(){this.Uf.handleFontsChanged()},n.prototype.prepareFrame=function(t){var n=t.pixelRatio,i=t.viewState,r=i.resolution,e=t.viewHints,o=this.Uf,s=t.extent;1!==this.qf&&ei(s=s.slice(0),this.qf);var a=ti(s)/r,u=Yn(s)/r;if(!e[za]&&!e[Fa]&&!ii(s)){o.useContainer(null,null,1);var c=o.context,h=E({},t,{declutterTree:new ed(9),extent:s,size:[a,u],viewState:E({},t.viewState,{rotation:0})}),f=!0,l=new _o(s,r,n,c.canvas,(function(t){o.prepareFrame(h)&&o.replayGroupChanged&&(o.clipping=!1,o.renderFrame(h,null)&&(o.renderDeclutter(h),f=!1),t())}));l.addEventListener(N,function(){if(l.getState()===bo){this.Nt=f?null:l;var t=l.getResolution(),r=l.getPixelRatio(),e=t*n/r;this.renderedResolution=e,this.Bf=un(this.Bf,a/2,u/2,1/e,-1/e,0,-i.center[0],-i.center[1])}}.bind(this)),l.load()}return this.Nt&&(this.Wf=t.pixelToCoordinateTransform.slice()),!!this.Nt},n.prototype.preRender=function(){},n.prototype.postRender=function(){},n.prototype.renderDeclutter=function(){},n.prototype.forEachFeatureAtCoordinate=function(n,i,r,e,o){return this.Uf?this.Uf.forEachFeatureAtCoordinate(n,i,r,e,o):t.prototype.forEachFeatureAtCoordinate.call(this,n,i,r,e,o)},n}(Sg),fj="image",lj="hybrid",vj="vector",dj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),pj={image:[Ah,_h,Eh,Th,Ch],hybrid:[Ah,Eh],vector:[]},yj={hybrid:[Th,Ch,Oh],vector:[Ah,_h,Eh,Th,Ch,Oh]},mj=function(t){function n(n){var i=t.call(this,n)||this;return i.Tf=i.Ef.bind(i),i.Cf=!1,i.Vf,i.Wf=null,i.zf,i.Xf=[1,0,0,1,0,0],i}return dj(n,t),n.prototype.prepareTile=function(t,n,i){var r,e=t.getState();return e!==dt&&e!==pt||(this.Hf(t,n,i),this.Jf(t)&&(r=!0)),r},n.prototype.getTile=function(n,i,r,e){var o=e.pixelRatio,s=e.viewState,a=s.resolution,u=s.projection,c=this.getLayer(),h=c.getSource().getTile(n,i,r,o,u),f=e.viewHints,l=!(f[za]||f[Fa]);return!l&&h.wantedResolution||(h.wantedResolution=a),this.prepareTile(h,o,u)&&(l||Date.now()-e.time<8)&&c.getRenderMode()!==vj&&this.Kf(h,e),t.prototype.getTile.call(this,n,i,r,e)},n.prototype.isDrawableTile=function(n){var i=this.getLayer();return t.prototype.isDrawableTile.call(this,n)&&(i.getRenderMode()===vj?o(i)in n.executorGroups:n.hasContext(i))},n.prototype.getTileImage=function(t){return t.getImage(this.getLayer())},n.prototype.prepareFrame=function(n){var i=this.getLayer().getRevision();return this.Vf!=i&&(this.renderedTiles.length=0),this.Vf=i,t.prototype.prepareFrame.call(this,n)},n.prototype.Hf=function(t,n,i){var r=this.getLayer(),e=r.getRevision(),s=r.getRenderOrder()||null,a=t.wantedResolution,u=t.getReplayState(r);if(u.dirty||u.renderedResolution!==a||u.renderedRevision!=e||u.renderedRenderOrder!=s){var c=r.getSource(),h=r.getDeclutter(),f=c.getTileGrid(),l=c.getTileGridForProjection(i).getTileCoordExtent(t.wrappedTileCoord),v=c.getSourceTiles(n,i,t),d=o(r);delete t.hitDetectionImageData[d],t.executorGroups[d]=[],h&&(t.declutterExecutorGroups[d]=[]);for(var p=function(i,e){var o=v[i];if(o.getState()!=dt)return"continue";var p=o.tileCoord,m=f.getTileCoordExtent(p),w=Zn(l,m),b=Sn(w,r.getRenderBuffer()*a,y.tmpExtent),g=Nn(m,w)?null:b;u.dirty=!1;var x=new Dx(0,b,a,n),j=h?new Dx(0,w,a,n):void 0,S=Ih(a,n),k=function(t){var n,i=t.getStyleFunction()||r.getStyleFunction();if(i&&(n=i(t,a)),n){var e=this.renderFeature(t,S,n,x,j);this.Cf=this.Cf||e,u.dirty=u.dirty||e}},M=o.getFeatures();s&&s!==u.renderedRenderOrder&&M.sort(s);for(var _=0,O=M.length;_<O;++_){var T=M[_];g&&!ni(g,T.getGeometry().getExtent())||k.call(y,T)}var E=x.finish(),A=r.getRenderMode()!==vj&&h&&1===v.length?null:w,C=new rj(A,a,n,c.getOverlaps(),E,r.getRenderBuffer());if(t.executorGroups[d].push(C),j){var R=new rj(null,a,n,c.getOverlaps(),j.finish(),r.getRenderBuffer());t.declutterExecutorGroups[d].push(R)}},y=this,m=0,w=v.length;m<w;++m)p(m);u.renderedRevision=e,u.renderedRenderOrder=s,u.renderedResolution=a}},n.prototype.forEachFeatureAtCoordinate=function(t,n,i,r,e){var s=n.viewState.resolution,a=n.viewState.rotation;i=null==i?0:i;var u=this.getLayer(),c=u.getSource().getTileGridForProjection(n.viewState.projection),h=jn([t]);Sn(h,s*i,h);for(var f,l={},v=function(t,n,i){var s=t.getId();void 0===s&&(s=o(t));var a=l[s];if(a){if(!0!==a&&i<a.distanceSq){if(0===i)return l[s]=!0,e.splice(e.lastIndexOf(a),1),r(t,u,n);a.geometry=n,a.distanceSq=i}}else{if(0===i)return l[s]=!0,r(t,u,n);e.push(l[s]={feature:t,layer:u,geometry:n,distanceSq:i,callback:r})}},d=this.renderedTiles,p=function(r,e){var l=d[r];if(!ni(c.getTileCoordExtent(l.wrappedTileCoord),h))return"continue";var p=o(u),y=[l.executorGroups[p]],m=l.declutterExecutorGroups[p];m&&y.push(m),y.some((function(r){for(var e=r===m?n.declutterTree.all().map((function(t){return t.value})):null,o=0,u=r.length;o<u;++o){var c=r[o];if(f=c.forEachFeatureAtCoordinate(t,s,a,i,v,e))return!0}}))},y=0,m=d.length;!f&&y<m;++y)p(y);return f},n.prototype.getFeatures=function(t){return new Promise(function(n,i){for(var r,e=this.getLayer(),s=o(e),a=e.getSource(),u=this.renderedProjection,c=u.getExtent(),h=this.renderedResolution,f=a.getTileGridForProjection(u),l=rn(this.Wf,t.slice()),v=f.getTileCoordForCoordAndResolution(l,h),d=0,p=this.renderedTiles.length;d<p;++d)if(v.toString()===this.renderedTiles[d].tileCoord.toString()){if((r=this.renderedTiles[d]).getState()===dt){var y=f.getTileCoordExtent(r.tileCoord);a.getWrapX()&&u.canWrapX()&&!On(c,y)&&ar(l,u);break}r=void 0}if(!r||r.loadingSourceTiles>0)n([]);else{var m=$n(f.getTileCoordExtent(r.wrappedTileCoord)),w=[(l[0]-m[0])/h,(m[1]-l[1])/h],b=r.getSourceTiles().reduce((function(t,n){return t.concat(n.getFeatures())}),[]),g=r.hitDetectionImageData[s];if(!g&&!this.Af){var x=uu(f.getTileSize(f.getZForResolution(h))),j=this.zf;g=oj(x,[this.getRenderTransform(f.getTileCoordCenter(r.wrappedTileCoord),h,0,ej,x[0]*ej,x[1]*ej,0)],b,e.getStyleFunction(),f.getTileCoordExtent(r.wrappedTileCoord),r.getReplayState(e).renderedResolution,j),r.hitDetectionImageData[s]=g}n(sj(w,b,g))}}.bind(this))},n.prototype.handleFontsChanged=function(){var t=this.getLayer();t.getVisible()&&void 0!==this.Vf&&t.changed()},n.prototype.Ef=function(t){this.renderIfReadyAndVisible()},n.prototype.renderDeclutter=function(t){var n=this.context,i=n.globalAlpha;n.globalAlpha=this.getLayer().getOpacity();for(var r=t.viewHints,e=!(r[za]||r[Fa]),s=this.renderedTiles,a=0,u=s.length;a<u;++a){var c=s[a],h=c.declutterExecutorGroups[o(this.getLayer())];if(h)for(var f=h.length-1;f>=0;--f)h[f].execute(this.context,1,this.getTileRenderTransform(c,t),t.viewState.rotation,e,void 0,t.declutterTree)}n.globalAlpha=i},n.prototype.getTileRenderTransform=function(t,n){var i=n.pixelRatio,r=n.viewState,e=r.center,o=r.resolution,s=r.rotation,a=n.size,u=Math.round(a[0]*i),c=Math.round(a[1]*i),h=this.getLayer().getSource().getTileGridForProjection(n.viewState.projection),f=t.tileCoord,l=h.getTileCoordExtent(t.wrappedTileCoord),v=h.getTileCoordExtent(f,this.tmpExtent)[0]-l[0];return Qt(on(this.inversePixelTransform.slice(),1/i,1/i),this.getRenderTransform(e,o,s,i,u,c,v))},n.prototype.renderFrame=function(n,i){var r=n.viewHints,e=!(r[za]||r[Fa]);t.prototype.renderFrame.call(this,n,i),this.Wf=n.pixelToCoordinateTransform.slice(),this.zf=n.viewState.rotation;var s=this.getLayer(),a=s.getRenderMode(),u=this.context,c=u.globalAlpha;u.globalAlpha=s.getOpacity();for(var h=yj[a],f=n.viewState,l=f.rotation,v=s.getSource(),d=v.getTileGridForProjection(f.projection).getZForResolution(f.resolution,v.zDirection),p=this.renderedTiles,y=[],m=[],w=p.length-1;w>=0;--w){var b=p[w],g=b.executorGroups[o(s)].filter((function(t){return t.hasExecutors(h)}));if(0!==g.length){for(var x=this.getTileRenderTransform(b,n),j=b.tileCoord[0],S=!1,k=g[0].getClipCoords(x),M=0,_=y.length;M<_;++M)if(d!==j&&j<m[M]){var O=y[M];ni([k[0],k[3],k[4],k[7]],[O[0],O[3],O[4],O[7]])&&(S||(u.save(),S=!0),u.beginPath(),u.moveTo(k[0],k[1]),u.lineTo(k[2],k[3]),u.lineTo(k[4],k[5]),u.lineTo(k[6],k[7]),u.moveTo(O[6],O[7]),u.lineTo(O[4],O[5]),u.lineTo(O[2],O[3]),u.lineTo(O[0],O[1]),u.clip())}y.push(k),m.push(j);for(var T=0,E=g.length;T<E;++T){g[T].execute(u,1,x,l,e,h)}S&&u.restore()}}return u.globalAlpha=c,this.container},n.prototype.renderFeature=function(t,n,i,r,e){if(!i)return!1;var o=!1;if(Array.isArray(i))for(var s=0,a=i.length;s<a;++s)o=zh(r,t,i[s],n,this.Tf,void 0,e)||o;else o=zh(r,t,i,n,this.Tf,void 0,e);return o},n.prototype.Jf=function(t){var n=this.getLayer();if(n.getRenderMode()===vj)return!1;var i=t.getReplayState(n),r=n.getRevision(),e=t.wantedResolution;return i.renderedTileResolution!==e||i.renderedTileRevision!==r},n.prototype.Kf=function(t,n){var i=this.getLayer(),r=t.getReplayState(i),e=i.getRevision(),s=t.executorGroups[o(i)];r.renderedTileRevision=e;var a=t.wrappedTileCoord,u=a[0],c=i.getSource(),h=n.pixelRatio,f=n.viewState.projection,l=c.getTileGridForProjection(f),v=l.getResolution(t.tileCoord[0]),d=n.pixelRatio/t.wantedResolution*v,p=l.getResolution(u),y=t.getContext(i);h=Math.round(Math.max(h,d/h));var m=c.getTilePixelSize(u,h,f);y.canvas.width=m[0],y.canvas.height=m[1];var w=h/d;if(1!==w){var b=$t(this.Xf);on(b,w,w),y.setTransform.apply(y,b)}var g=l.getTileCoordExtent(a,this.tmpExtent),x=d/p,j=$t(this.Xf);on(j,x,-x),an(j,-g[0],-g[3]);for(var S=0,k=s.length;S<k;++S){s[S].execute(y,w,j,0,!0,pj[i.getRenderMode()])}r.renderedTileResolution=t.wantedResolution},n}(Cg),wj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),bj=function(t){function n(n,i){var r=t.call(this)||this;return i&&!Array.isArray(n[0])?r.setFlatCoordinates(i,n):r.setCoordinates(n,i),r}return wj(n,t),n.prototype.appendPoint=function(t){this.flatCoordinates?b(this.flatCoordinates,t.getFlatCoordinates()):this.flatCoordinates=t.getFlatCoordinates().slice(),this.changed()},n.prototype.clone=function(){var t=new n(this.flatCoordinates.slice(),this.layout);return t.applyProperties(this),t},n.prototype.closestPointXY=function(t,n,i,r){if(r<Mn(this.getExtent(),t,n))return r;for(var e=this.flatCoordinates,o=this.stride,s=0,a=e.length;s<a;s+=o){var u=vi(t,n,e[s],e[s+1]);if(u<r){r=u;for(var c=0;c<o;++c)i[c]=e[s+c];i.length=o}}return r},n.prototype.getCoordinates=function(){return be(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)},n.prototype.getPoint=function(t){var n=this.flatCoordinates?this.flatCoordinates.length/this.stride:0;return t<0||n<=t?null:new Te(this.flatCoordinates.slice(t*this.stride,(t+1)*this.stride),this.layout)},n.prototype.getPoints=function(){for(var t=this.flatCoordinates,n=this.layout,i=this.stride,r=[],e=0,o=t.length;e<o;e+=i){var s=new Te(t.slice(e,e+i),n);r.push(s)}return r},n.prototype.getType=function(){return Pt.MULTI_POINT},n.prototype.intersectsExtent=function(t){for(var n=this.flatCoordinates,i=this.stride,r=0,e=n.length;r<e;r+=i){if(Tn(t,n[r],n[r+1]))return!0}return!1},n.prototype.setCoordinates=function(t,n){this.setLayout(n,t,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=ce(this.flatCoordinates,0,t,this.stride),this.changed()},n}(te);function gj(t,n,i,r,e,o,s){var a,u,c=(i-n)/r;if(1===c)a=n;else if(2===c)a=n,u=e;else if(0!==c){for(var h=t[n],f=t[n+1],l=0,v=[0],p=n+r;p<i;p+=r){var y=t[p],m=t[p+1];l+=Math.sqrt((y-h)*(y-h)+(m-f)*(m-f)),v.push(l),h=y,f=m}var w=e*l,b=d(v,w);b<0?(u=(w-v[-b-2])/(v[-b-1]-v[-b-2]),a=n+(-b-2)*r):a=n+b*r}var g=s>1?s:2,x=o||new Array(g);for(p=0;p<g;++p)x[p]=void 0===a?NaN:void 0===u?t[a+p]:wi(t[a+p],t[a+r+p],u);return x}function xj(t,n,i,r,e,o){if(i==n)return null;var s;if(e<t[n+r-1])return o?((s=t.slice(n,n+r))[r-1]=e,s):null;if(t[i-1]<e)return o?((s=t.slice(i-r,i))[r-1]=e,s):null;if(e==t[n+r-1])return t.slice(n,n+r);for(var a=n/r,u=i/r;a<u;){var c=a+u>>1;e<t[(c+1)*r-1]?u=c:a=c+1}var h=t[a*r-1];if(e==h)return t.slice((a-1)*r,(a-1)*r+r);var f=(e-h)/(t[(a+1)*r-1]-h);s=[];for(var l=0;l<r-1;++l)s.push(wi(t[(a-1)*r+l],t[a*r+l],f));return s.push(e),s}function jj(t,n,i,r,e,o,s){if(s)return xj(t,n,i[i.length-1],r,e,o);var a;if(e<t[r-1])return o?((a=t.slice(0,r))[r-1]=e,a):null;if(t[t.length-1]<e)return o?((a=t.slice(t.length-r))[r-1]=e,a):null;for(var u=0,c=i.length;u<c;++u){var h=i[u];if(n!=h){if(e<t[n+r-1])return null;if(e<=t[h-1])return xj(t,n,h,r,e,!1);n=h}}return null}var Sj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),kj=function(t){function n(n,i){var r=t.call(this)||this;return r.Yf=null,r.Zf=-1,r.wt=-1,r.bt=-1,void 0===i||Array.isArray(n[0])?r.setCoordinates(n,i):r.setFlatCoordinates(i,n),r}return Sj(n,t),n.prototype.appendCoordinate=function(t){this.flatCoordinates?b(this.flatCoordinates,t):this.flatCoordinates=t.slice(),this.changed()},n.prototype.clone=function(){var t=new n(this.flatCoordinates.slice(),this.layout);return t.applyProperties(this),t},n.prototype.closestPointXY=function(t,n,i,r){return r<Mn(this.getExtent(),t,n)?r:(this.bt!=this.getRevision()&&(this.wt=Math.sqrt(ie(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.bt=this.getRevision()),oe(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.wt,!1,t,n,i,r))},n.prototype.forEachSegment=function(t){return Ne(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)},n.prototype.getCoordinateAtM=function(t,n){if(this.layout!=Ct&&this.layout!=Rt)return null;var i=void 0!==n&&n;return xj(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,i)},n.prototype.getCoordinates=function(){return be(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)},n.prototype.getCoordinateAt=function(t,n){return gj(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,n,this.stride)},n.prototype.getLength=function(){return qx(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)},n.prototype.getFlatMidpoint=function(){return this.Zf!=this.getRevision()&&(this.Yf=this.getCoordinateAt(.5,this.Yf),this.Zf=this.getRevision()),this.Yf},n.prototype.getSimplifiedGeometryInternal=function(t){var i=[];return i.length=le(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,i,0),new n(i,Et)},n.prototype.getType=function(){return Pt.LINE_STRING},n.prototype.intersectsExtent=function(t){return ze(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)},n.prototype.setCoordinates=function(t,n){this.setLayout(n,t,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=ce(this.flatCoordinates,0,t,this.stride),this.changed()},n}(te),Mj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_j=function(t){function n(n,i,r){var e=t.call(this)||this;if(e.gt=[],e.wt=-1,e.bt=-1,Array.isArray(n[0]))e.setCoordinates(n,i);else if(void 0!==i&&r)e.setFlatCoordinates(i,n),e.gt=r;else{for(var o=e.getLayout(),s=n,a=[],u=[],c=0,h=s.length;c<h;++c){var f=s[c];0===c&&(o=f.getLayout()),b(a,f.getFlatCoordinates()),u.push(a.length)}e.setFlatCoordinates(o,a),e.gt=u}return e}return Mj(n,t),n.prototype.appendLineString=function(t){this.flatCoordinates?b(this.flatCoordinates,t.getFlatCoordinates().slice()):this.flatCoordinates=t.getFlatCoordinates().slice(),this.gt.push(this.flatCoordinates.length),this.changed()},n.prototype.clone=function(){var t=new n(this.flatCoordinates.slice(),this.layout,this.gt.slice());return t.applyProperties(this),t},n.prototype.closestPointXY=function(t,n,i,r){return r<Mn(this.getExtent(),t,n)?r:(this.bt!=this.getRevision()&&(this.wt=Math.sqrt(re(this.flatCoordinates,0,this.gt,this.stride,0)),this.bt=this.getRevision()),se(this.flatCoordinates,0,this.gt,this.stride,this.wt,!1,t,n,i,r))},n.prototype.getCoordinateAtM=function(t,n,i){if(this.layout!=Ct&&this.layout!=Rt||0===this.flatCoordinates.length)return null;var r=void 0!==n&&n,e=void 0!==i&&i;return jj(this.flatCoordinates,0,this.gt,this.stride,t,r,e)},n.prototype.getCoordinates=function(){return ge(this.flatCoordinates,0,this.gt,this.stride)},n.prototype.getEnds=function(){return this.gt},n.prototype.getLineString=function(t){return t<0||this.gt.length<=t?null:new kj(this.flatCoordinates.slice(0===t?0:this.gt[t-1],this.gt[t]),this.layout)},n.prototype.getLineStrings=function(){for(var t=this.flatCoordinates,n=this.gt,i=this.layout,r=[],e=0,o=0,s=n.length;o<s;++o){var a=n[o],u=new kj(t.slice(e,a),i);r.push(u),e=a}return r},n.prototype.getFlatMidpoints=function(){for(var t=[],n=this.flatCoordinates,i=0,r=this.gt,e=this.stride,o=0,s=r.length;o<s;++o){var a=r[o];b(t,gj(n,i,a,e,.5)),i=a}return t},n.prototype.getSimplifiedGeometryInternal=function(t){var i=[],r=[];return i.length=ve(this.flatCoordinates,0,this.gt,this.stride,t,i,0,r),new n(i,Et,r)},n.prototype.getType=function(){return Pt.MULTI_LINE_STRING},n.prototype.intersectsExtent=function(t){return Fe(this.flatCoordinates,0,this.gt,this.stride,t)},n.prototype.setCoordinates=function(t,n){this.setLayout(n,t,2),this.flatCoordinates||(this.flatCoordinates=[]);var i=he(this.flatCoordinates,0,t,this.stride,this.gt);this.flatCoordinates.length=0===i.length?0:i[i.length-1],this.changed()},n}(te);function Oj(t,n,i,r){for(var e=[],o=[1/0,1/0,-1/0,-1/0],s=0,a=i.length;s<a;++s){var u=i[s];o=In(t,n,u[0],r),e.push((o[0]+o[2])/2,(o[1]+o[3])/2),n=u[u.length-1]}return e}var Tj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Ej=function(t){function n(n,i,r){var e=t.call(this)||this;if(e.$f=[],e.Qf=-1,e.tl=null,e.wt=-1,e.bt=-1,e.St=-1,e.kt=null,!r&&!Array.isArray(n[0])){for(var o=e.getLayout(),s=n,a=[],u=[],c=0,h=s.length;c<h;++c){var f=s[c];0===c&&(o=f.getLayout());for(var l=a.length,v=f.getEnds(),d=0,p=v.length;d<p;++d)v[d]+=l;b(a,f.getFlatCoordinates()),u.push(v)}i=o,n=a,r=u}return void 0!==i&&r?(e.setFlatCoordinates(i,n),e.$f=r):e.setCoordinates(n,i),e}return Tj(n,t),n.prototype.appendPolygon=function(t){var n;if(this.flatCoordinates){var i=this.flatCoordinates.length;b(this.flatCoordinates,t.getFlatCoordinates());for(var r=0,e=(n=t.getEnds().slice()).length;r<e;++r)n[r]+=i}else this.flatCoordinates=t.getFlatCoordinates().slice(),n=t.getEnds().slice(),this.$f.push();this.$f.push(n),this.changed()},n.prototype.clone=function(){for(var t=this.$f.length,i=new Array(t),r=0;r<t;++r)i[r]=this.$f[r].slice();var e=new n(this.flatCoordinates.slice(),this.layout,i);return e.applyProperties(this),e},n.prototype.closestPointXY=function(t,n,i,r){return r<Mn(this.getExtent(),t,n)?r:(this.bt!=this.getRevision()&&(this.wt=Math.sqrt(ee(this.flatCoordinates,0,this.$f,this.stride,0)),this.bt=this.getRevision()),ae(this.getOrientedFlatCoordinates(),0,this.$f,this.stride,this.wt,!0,t,n,i,r))},n.prototype.containsXY=function(t,n){return Re(this.getOrientedFlatCoordinates(),0,this.$f,this.stride,t,n)},n.prototype.getArea=function(){return ke(this.getOrientedFlatCoordinates(),0,this.$f,this.stride)},n.prototype.getCoordinates=function(t){var n;return void 0!==t?Xe(n=this.getOrientedFlatCoordinates().slice(),0,this.$f,this.stride,t):n=this.flatCoordinates,xe(n,0,this.$f,this.stride)},n.prototype.getEndss=function(){return this.$f},n.prototype.getFlatInteriorPoints=function(){if(this.Qf!=this.getRevision()){var t=Oj(this.flatCoordinates,0,this.$f,this.stride);this.tl=Ie(this.getOrientedFlatCoordinates(),0,this.$f,this.stride,t),this.Qf=this.getRevision()}return this.tl},n.prototype.getInteriorPoints=function(){return new bj(this.getFlatInteriorPoints().slice(),Ct)},n.prototype.getOrientedFlatCoordinates=function(){if(this.St!=this.getRevision()){var t=this.flatCoordinates;We(t,0,this.$f,this.stride)?this.kt=t:(this.kt=t.slice(),this.kt.length=Xe(this.kt,0,this.$f,this.stride)),this.St=this.getRevision()}return this.kt},n.prototype.getSimplifiedGeometryInternal=function(t){var i=[],r=[];return i.length=we(this.flatCoordinates,0,this.$f,this.stride,Math.sqrt(t),i,0,r),new n(i,Et,r)},n.prototype.getPolygon=function(t){if(t<0||this.$f.length<=t)return null;var n;if(0===t)n=0;else{var i=this.$f[t-1];n=i[i.length-1]}var r=this.$f[t].slice(),e=r[r.length-1];if(0!==n)for(var o=0,s=r.length;o<s;++o)r[o]-=n;return new Ye(this.flatCoordinates.slice(n,e),this.layout,r)},n.prototype.getPolygons=function(){for(var t=this.layout,n=this.flatCoordinates,i=this.$f,r=[],e=0,o=0,s=i.length;o<s;++o){var a=i[o].slice(),u=a[a.length-1];if(0!==e)for(var c=0,h=a.length;c<h;++c)a[c]-=e;var f=new Ye(n.slice(e,u),t,a);r.push(f),e=u}return r},n.prototype.getType=function(){return Pt.MULTI_POLYGON},n.prototype.intersectsExtent=function(t){return De(this.getOrientedFlatCoordinates(),0,this.$f,this.stride,t)},n.prototype.setCoordinates=function(t,n){this.setLayout(n,t,3),this.flatCoordinates||(this.flatCoordinates=[]);var i=fe(this.flatCoordinates,0,t,this.stride,this.$f);if(0===i.length)this.flatCoordinates.length=0;else{var r=i[i.length-1];this.flatCoordinates.length=0===r.length?0:r[r.length-1]}this.changed()},n}(te),Aj=[1,0,0,1,0,0],Cj=function(){function t(t,n,i,r,e){this.styleFunction,this.st,this.V=e,this.nl=t,this.il=n,this.tl=null,this.rl=null,this.gt=i,this.el=r}return t.prototype.get=function(t){return this.el[t]},t.prototype.getExtent=function(){return this.st||(this.st=this.nl===Pt.POINT?Pn(this.il):In(this.il,0,this.il.length,2)),this.st},t.prototype.getFlatInteriorPoint=function(){if(!this.tl){var t=Hn(this.getExtent());this.tl=Pe(this.il,0,this.gt,2,t,0)}return this.tl},t.prototype.getFlatInteriorPoints=function(){if(!this.tl){var t=Oj(this.il,0,this.gt,2);this.tl=Ie(this.il,0,this.gt,2,t)}return this.tl},t.prototype.getFlatMidpoint=function(){return this.rl||(this.rl=gj(this.il,0,this.il.length,2,.5)),this.rl},t.prototype.getFlatMidpoints=function(){if(!this.rl){this.rl=[];for(var t=this.il,n=0,i=this.gt,r=0,e=i.length;r<e;++r){var o=i[r],s=gj(t,n,o,2,.5);b(this.rl,s),n=o}}return this.rl},t.prototype.getId=function(){return this.V},t.prototype.getOrientedFlatCoordinates=function(){return this.il},t.prototype.getGeometry=function(){return this},t.prototype.getSimplifiedGeometry=function(t){return this},t.prototype.simplifyTransformed=function(t,n){return this},t.prototype.getProperties=function(){return this.el},t.prototype.getStride=function(){return 2},t.prototype.getStyleFunction=function(){return this.styleFunction},t.prototype.getType=function(){return this.nl},t.prototype.transform=function(t){var n=(t=gr(t)).getExtent(),i=t.getWorldExtent();if(n&&i){var r=Yn(i)/Yn(n);un(Aj,i[0],i[3],r,-r,0,0,0),Wr(this.il,0,this.il.length,2,Aj,this.il)}},t.prototype.getEnds=function(){return this.gt},t}();function Rj(t){var n=t.getType();switch(n){case Pt.POINT:return new Te(t.getFlatCoordinates());case Pt.MULTI_POINT:return new bj(t.getFlatCoordinates(),Et);case Pt.LINE_STRING:return new kj(t.getFlatCoordinates(),Et);case Pt.MULTI_LINE_STRING:return new _j(t.getFlatCoordinates(),Et,t.getEnds());case Pt.POLYGON:var i=t.getFlatCoordinates(),r=t.getEnds(),e=He(i,r);return e.length>1?new Ej(i,Et,e):new Ye(i,Et,r);default:throw new Error("Invalid geometry type:"+n)}}Cj.prototype.getEndss=Cj.prototype.getEnds,Cj.prototype.getFlatCoordinates=Cj.prototype.getOrientedFlatCoordinates;var Pj=Cj;var Ij=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Nj=function(t){function n(n){return t.call(this,n)||this}return Ij(n,t),n.prototype.createRenderer=function(){return new uj(this)},n}(wx);function zj(t,n,i){for(var r,e,o,s,a,u,c=[],h=t(0),f=t(1),l=n(h),v=n(f),d=[f,h],p=[v,l],y=[1,0],m={},w=1e5;--w>0&&y.length>0;)o=y.pop(),h=d.pop(),l=p.pop(),(u=o.toString())in m||(c.push(l[0],l[1]),m[u]=!0),s=y.pop(),f=d.pop(),v=p.pop(),li((e=n(r=t(a=(o+s)/2)))[0],e[1],l[0],l[1],v[0],v[1])<i?(c.push(v[0],v[1]),m[u=s.toString()]=!0):(y.push(s,a,a,o),p.push(v,e,e,l),d.push(f,r,r,h));return c}function Fj(t,n,i,r,e){return zj((function(r){return[t,n+(i-n)*r]}),Ar(gr("EPSG:4326"),r),e)}function Lj(t,n,i,r,e){return zj((function(r){return[n+(i-n)*r,t]}),Ar(gr("EPSG:4326"),r),e)}var Gj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Dj=new Vv({color:"rgba(0,0,0,0.2)"}),Uj=[90,45,30,20,10,5,2,1,.5,.2,.1,.05,.01,.005,.002,.001],qj=function(t){function n(n){var i=this,r=n||{},e=E({updateWhileAnimating:!0,updateWhileInteracting:!0,renderBuffer:0},r);return delete e.maxLines,delete e.strokeStyle,delete e.targetSize,delete e.showLabels,delete e.lonLabelFormatter,delete e.latLabelFormatter,delete e.lonLabelPosition,delete e.latLabelPosition,delete e.lonLabelStyle,delete e.latLabelStyle,delete e.intervals,(i=t.call(this,e)||this).di=null,i.sl=1/0,i.al=1/0,i.ul=-1/0,i.cl=-1/0,i.hl=1/0,i.fl=1/0,i.ll=-1/0,i.vl=-1/0,i.dl=void 0!==r.targetSize?r.targetSize:100,i.pl=void 0!==r.maxLines?r.maxLines:100,i.yl=[],i.ml=[],i.wl=void 0!==r.strokeStyle?r.strokeStyle:Dj,i.bl=void 0,i.gl=void 0,i.xl=null,i.jl=null,i.Sl=null,i.kl=null,i.Ml=null,i._l=null,i.Ol=null,r.showLabels&&(i.Tl=null==r.lonLabelFormatter?$i.bind(i,"EW"):r.lonLabelFormatter,i.El=null==r.latLabelFormatter?$i.bind(i,"NS"):r.latLabelFormatter,i.Al=null==r.lonLabelPosition?0:r.lonLabelPosition,i.Cl=null==r.latLabelPosition?1:r.latLabelPosition,i.Rl=new Qv({text:void 0!==r.lonLabelStyle?r.lonLabelStyle.clone():new id({font:"12px Calibri,sans-serif",textBaseline:"bottom",fill:new Cv({color:"rgba(0,0,0,1)"}),stroke:new Vv({color:"rgba(255,255,255,1)",width:3})})}),i.Pl=function(t){var n=t.get("graticule_label");return this.Rl.getText().setText(n),this.Rl}.bind(i),i.Il=new Qv({text:void 0!==r.latLabelStyle?r.latLabelStyle.clone():new id({font:"12px Calibri,sans-serif",textAlign:"right",fill:new Cv({color:"rgba(0,0,0,1)"}),stroke:new Vv({color:"rgba(255,255,255,1)",width:3})})}),i.Nl=function(t){var n=t.get("graticule_label");return this.Il.getText().setText(n),this.Il}.bind(i),i._l=[],i.Ol=[],i.addEventListener(hs,i.zl.bind(i))),i.Fl=void 0!==r.intervals?r.intervals:Uj,i.setSource(new Fd({loader:i.loaderFunction.bind(i),strategy:i.strategyFunction.bind(i),features:new ft,overlaps:!1,useSpatialIndex:!1,wrapX:r.wrapX})),i.Ll=[],i.Gl=new Qv({stroke:i.wl}),i.Dl=null,i.zc=null,i.If=null,i.setRenderOrder(null),i}return Gj(n,t),n.prototype.strategyFunction=function(t,n){var i=t.slice();return this.di&&this.getSource().getWrapX()&&ai(i,this.di),this.Dl&&(zn(this.Dl,i,n)?i=this.Dl.slice():this.getSource().removeLoadedExtent(this.Dl)),[i]},n.prototype.loaderFunction=function(t,n,i){this.Dl=t;var r=this.getSource(),e=Zn(this.getExtent()||[-1/0,-1/0,1/0,1/0],t);if(!(this.zc&&Nn(this.zc,e)&&this.If===n||(this.zc=e,this.If=n,ii(e)))){var o=Hn(e),s=n*n/4;(!this.di||!Tr(this.di,i))&&this.Ul(i),this.ql(e,o,n,s);var a,u=this.yl.length+this.ml.length;for(this._l&&(u+=this.yl.length),this.Ol&&(u+=this.ml.length);u>this.Ll.length;)a=new Tt,this.Ll.push(a);var c=r.getFeaturesCollection();c.clear();var h,f,l=0;for(h=0,f=this.yl.length;h<f;++h)(a=this.Ll[l++]).setGeometry(this.yl[h]),a.setStyle(this.Gl),c.push(a);for(h=0,f=this.ml.length;h<f;++h)(a=this.Ll[l++]).setGeometry(this.ml[h]),a.setStyle(this.Gl),c.push(a)}},n.prototype.Bl=function(t,n,i,r,e,o){var s=this.Wl(t,n,i,r,o);if(ni(s.getExtent(),e)){if(this._l){var a=this.Tl(t);o in this._l?this._l[o].text=a:this._l[o]={geom:new Te([]),text:a}}this.yl[o++]=s}return o},n.prototype.Vl=function(t,n,i,r,e,o){var s=this.Xl(t,n,i,r,o);if(ni(s.getExtent(),e)){if(this.Ol){var a=this.El(t);o in this.Ol?this.Ol[o].text=a:this.Ol[o]={geom:new Te([]),text:a}}this.ml[o++]=s}return o},n.prototype.zl=function(t){var n=t.frameState.viewState.rotation,i=t.frameState.viewState.resolution,r=t.frameState.size,e=t.frameState.extent,o=Hn(e),s=e;if(n){var a=r[0]*i,u=r[1]*i;s=[o[0]-a/2,o[1]-u/2,o[0]+a/2,o[1]+u/2]}var c=0,h=0,f=this.Cl<.5,l=this.di.getExtent(),v=ti(l);this.getSource().getWrapX()&&this.di.canWrapX()&&!On(l,e)&&(c=Math.floor((e[0]-l[0])/v),h=Math.ceil((e[2]-l[2])/v),f=f!==Math.abs(n)>Math.PI/2);for(var d=Lh(t),p=c;p<=h;++p){var y=this.yl.length+this.ml.length,m=void 0,w=void 0,b=void 0,g=void 0;if(this._l)for(w=0,b=this._l.length;w<b;++w){var x=this.yl[w];if(n||0!==p)(j=x.clone()).translate(p*v,0),j.rotate(-n,o),(g=this.Hl(j,s,w)).rotate(n,o);else g=this.Hl(x,e,w);(m=this.Ll[y++]).setGeometry(g),m.set("graticule_label",this._l[w].text),d.drawFeature(m,this.Pl(m))}if(this.Ol&&(p===c&&f||p===h&&!f))for(w=0,b=this.ml.length;w<b;++w){var j;x=this.ml[w];if(n||0!==p)(j=x.clone()).translate(p*v,0),j.rotate(-n,o),(g=this.Jl(j,s,w)).rotate(n,o);else g=this.Jl(x,e,w);(m=this.Ll[y++]).setGeometry(g),m.set("graticule_label",this.Ol[w].text),d.drawFeature(m,this.Nl(m))}}},n.prototype.ql=function(t,n,i,r){var e=this.Kl(i);if(-1==e)return this.yl.length=0,this.ml.length=0,this._l&&(this._l.length=0),void(this.Ol&&(this.Ol.length=0));var o=!1,s=this.di.getExtent(),a=ti(s);this.getSource().getWrapX()&&this.di.canWrapX()&&!On(s,t)&&(ti(t)>=a?(t[0]=s[0],t[2]=s[2]):o=!0);var u=[ci(n[0],this.ll,this.hl),ci(n[1],this.vl,this.fl)],c=this.gl(u);isNaN(c[1])&&(c[1]=Math.abs(this.sl)>=Math.abs(this.ul)?this.sl:this.ul);var h,f,l,v,d=ci(c[0],this.cl,this.al),p=ci(c[1],this.ul,this.sl),y=this.pl,m=t;o||(m=[ci(t[0],this.ll,this.hl),ci(t[1],this.vl,this.fl),ci(t[2],this.ll,this.hl),ci(t[3],this.vl,this.fl)]);var w=si(m,this.gl,void 0,8),b=w[3],g=w[2],x=w[1],j=w[0];if(o||(_n(m,this.jl)&&(j=this.cl,x=this.ul),_n(m,this.Sl)&&(g=this.al,x=this.ul),_n(m,this.kl)&&(j=this.cl,b=this.sl),_n(m,this.Ml)&&(g=this.al,b=this.sl),b=ci(b,p,this.sl),g=ci(g,d,this.al),x=ci(x,this.ul,p),j=ci(j,this.cl,d)),v=ci(d=Math.floor(d/e)*e,this.cl,this.al),f=this.Bl(v,x,b,r,t,0),h=0,o)for(;(v-=e)>=j&&h++<y;)f=this.Bl(v,x,b,r,t,f);else for(;v!=this.cl&&h++<y;)v=Math.max(v-e,this.cl),f=this.Bl(v,x,b,r,t,f);if(v=ci(d,this.cl,this.al),h=0,o)for(;(v+=e)<=g&&h++<y;)f=this.Bl(v,x,b,r,t,f);else for(;v!=this.al&&h++<y;)v=Math.min(v+e,this.al),f=this.Bl(v,x,b,r,t,f);for(this.yl.length=f,this._l&&(this._l.length=f),l=ci(p=Math.floor(p/e)*e,this.ul,this.sl),f=this.Vl(l,j,g,r,t,0),h=0;l!=this.ul&&h++<y;)l=Math.max(l-e,this.ul),f=this.Vl(l,j,g,r,t,f);for(l=ci(p,this.ul,this.sl),h=0;l!=this.sl&&h++<y;)l=Math.min(l+e,this.sl),f=this.Vl(l,j,g,r,t,f);this.ml.length=f,this.Ol&&(this.Ol.length=f)},n.prototype.Kl=function(t){for(var n=this.xl[0],i=this.xl[1],r=-1,e=Math.pow(this.dl*t,2),o=[],s=[],a=0,u=this.Fl.length;a<u;++a){var c=ci(this.Fl[a]/2,0,90),h=ci(i,-90+c,90-c);if(o[0]=n-c,o[1]=h-c,s[0]=n+c,s[1]=h+c,this.bl(o,o),this.bl(s,s),Math.pow(s[0]-o[0],2)+Math.pow(s[1]-o[1],2)<=e)break;r=this.Fl[a]}return r},n.prototype.Wl=function(t,n,i,r,e){var o=Fj(t,n,i,this.di,r),s=this.yl[e];return s?(s.setFlatCoordinates(Et,o),s.changed()):(s=new kj(o,Et),this.yl[e]=s),s},n.prototype.Hl=function(t,n,i){var r=t.getFlatCoordinates(),e=1,o=r.length-1;r[e]>r[o]&&(e=o,o=1);var s=Math.max(n[1],r[e]),a=Math.min(n[3],r[o]),u=ci(n[1]+Math.abs(n[1]-n[3])*this.Al,s,a),c=[r[e-1]+(r[o-1]-r[e-1])*(u-r[e])/(r[o]-r[e]),u],h=this._l[i].geom;return h.setCoordinates(c),h},n.prototype.getMeridians=function(){return this.yl},n.prototype.Xl=function(t,n,i,r,e){var o=Lj(t,n,i,this.di,r),s=this.ml[e];return s?(s.setFlatCoordinates(Et,o),s.changed()):s=new kj(o,Et),s},n.prototype.Jl=function(t,n,i){var r=t.getFlatCoordinates(),e=0,o=r.length-2;r[e]>r[o]&&(e=o,o=0);var s=Math.max(n[0],r[e]),a=Math.min(n[2],r[o]),u=ci(n[0]+Math.abs(n[0]-n[2])*this.Cl,s,a),c=[u,r[e+1]+(r[o+1]-r[e+1])*(u-r[e])/(r[o]-r[e])],h=this.Ol[i].geom;return h.setCoordinates(c),h},n.prototype.getParallels=function(){return this.ml},n.prototype.Ul=function(t){var n=gr("EPSG:4326"),i=t.getWorldExtent();this.sl=i[3],this.al=i[2],this.ul=i[1],this.cl=i[0];var r=Ar(t,n);if(this.cl<this.al)this.gl=r;else{var e=this.cl+this.al/2;this.al+=360,this.gl=function(t,n,i){for(var o=i||2,s=r(t,n,o),a=0,u=s.length;a<u;a+=o)s[a]<e&&(s[a]+=360);return s}}this.bl=Ar(n,t);var o=si([this.cl,this.ul,this.al,this.sl],this.bl,void 0,8);this.ll=o[0],this.hl=o[2],this.vl=o[1],this.fl=o[3],this.jl=this.bl([this.cl,this.ul]),this.Sl=this.bl([this.al,this.ul]),this.kl=this.bl([this.cl,this.sl]),this.Ml=this.bl([this.al,this.sl]),this.xl=this.gl(Hn(t.getExtent())),isNaN(this.xl[1])&&(this.xl[1]=Math.abs(this.sl)>=Math.abs(this.ul)?this.sl:this.ul),this.di=t},n}(Nj),Bj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Wj="blur",Vj="gradient",Xj="radius",Hj=["#00f","#0ff","#0f0","#ff0","#f00"];var Jj=function(t){function n(n){var i=this,r=n||{},e=E({},r);delete e.gradient,delete e.radius,delete e.blur,delete e.weight,(i=t.call(this,e)||this).Yl=null,i.addChangeListener(Vj,i.Zl),i.setGradient(r.gradient?r.gradient:Hj),i.setBlur(void 0!==r.blur?r.blur:15),i.setRadius(void 0!==r.radius?r.radius:8);var o=r.weight?r.weight:"weight";return i.$l="string"==typeof o?function(t){return t.get(o)}:o,i.setRenderOrder(null),i}return Bj(n,t),n.prototype.getBlur=function(){return this.get(Wj)},n.prototype.getGradient=function(){return this.get(Vj)},n.prototype.getRadius=function(){return this.get(Xj)},n.prototype.Zl=function(){this.Yl=function(t){for(var n=1,i=256,r=Oo(n,i),e=r.createLinearGradient(0,0,n,i),o=1/(t.length-1),s=0,a=t.length;s<a;++s)e.addColorStop(s*o,t[s]);return r.fillStyle=e,r.fillRect(0,0,n,i),r.canvas}(this.getGradient())},n.prototype.setBlur=function(t){this.set(Wj,t)},n.prototype.setGradient=function(t){this.set(Vj,t)},n.prototype.setRadius=function(t){this.set(Xj,t)},n.prototype.createRenderer=function(){return new gx(this,{className:this.getClassName(),attributes:[{name:"weight",callback:function(t){var n=this.$l(t);return void 0!==n?ci(n,0,1):1}.bind(this)}],vertexShader:"\n        precision mediump float;\n        uniform mat4 u_projectionMatrix;\n        uniform mat4 u_offsetScaleMatrix;\n        uniform float u_size;\n        attribute vec2 a_position;\n        attribute float a_index;\n        attribute float a_weight;\n\n        varying vec2 v_texCoord;\n        varying float v_weight;\n\n        void main(void) {\n          mat4 offsetMatrix = u_offsetScaleMatrix;\n          float offsetX = a_index == 0.0 || a_index == 3.0 ? -u_size / 2.0 : u_size / 2.0;\n          float offsetY = a_index == 0.0 || a_index == 1.0 ? -u_size / 2.0 : u_size / 2.0;\n          vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n          gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n          float u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n          float v = a_index == 0.0 || a_index == 1.0 ? 0.0 : 1.0;\n          v_texCoord = vec2(u, v);\n          v_weight = a_weight;\n        }",fragmentShader:"\n        precision mediump float;\n        uniform float u_blurSlope;\n\n        varying vec2 v_texCoord;\n        varying float v_weight;\n\n        void main(void) {\n          vec2 texCoord = v_texCoord * 2.0 - vec2(1.0, 1.0);\n          float sqRadius = texCoord.x * texCoord.x + texCoord.y * texCoord.y;\n          float value = (1.0 - sqrt(sqRadius)) * u_blurSlope;\n          float alpha = smoothstep(0.0, 1.0, value) * v_weight;\n          gl_FragColor = vec4(alpha, alpha, alpha, alpha);\n        }",hitVertexShader:"\n        precision mediump float;\n        uniform mat4 u_projectionMatrix;\n        uniform mat4 u_offsetScaleMatrix;\n        uniform float u_size;\n        attribute vec2 a_position;\n        attribute float a_index;\n        attribute float a_weight;\n        attribute vec4 a_hitColor;\n\n        varying vec2 v_texCoord;\n        varying float v_weight;\n        varying vec4 v_hitColor;\n\n        void main(void) {\n          mat4 offsetMatrix = u_offsetScaleMatrix;\n          float offsetX = a_index == 0.0 || a_index == 3.0 ? -u_size / 2.0 : u_size / 2.0;\n          float offsetY = a_index == 0.0 || a_index == 1.0 ? -u_size / 2.0 : u_size / 2.0;\n          vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n          gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n          float u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n          float v = a_index == 0.0 || a_index == 1.0 ? 0.0 : 1.0;\n          v_texCoord = vec2(u, v);\n          v_hitColor = a_hitColor;\n          v_weight = a_weight;\n        }",hitFragmentShader:"\n        precision mediump float;\n        uniform float u_blurSlope;\n\n        varying vec2 v_texCoord;\n        varying float v_weight;\n        varying vec4 v_hitColor;\n\n        void main(void) {\n          vec2 texCoord = v_texCoord * 2.0 - vec2(1.0, 1.0);\n          float sqRadius = texCoord.x * texCoord.x + texCoord.y * texCoord.y;\n          float value = (1.0 - sqrt(sqRadius)) * u_blurSlope;\n          float alpha = smoothstep(0.0, 1.0, value) * v_weight;\n          if (alpha < 0.05) {\n            discard;\n          }\n\n          gl_FragColor = v_hitColor;\n        }",uniforms:{u_size:function(){return 2*(this.get(Xj)+this.get(Wj))}.bind(this),u_blurSlope:function(){return this.get(Xj)/Math.max(1,this.get(Wj))}.bind(this)},postProcesses:[{fragmentShader:"\n            precision mediump float;\n\n            uniform sampler2D u_image;\n            uniform sampler2D u_gradientTexture;\n            uniform float u_opacity;\n\n            varying vec2 v_texCoord;\n\n            void main() {\n              vec4 color = texture2D(u_image, v_texCoord);\n              gl_FragColor.a = color.a * u_opacity;\n              gl_FragColor.rgb = texture2D(u_gradientTexture, vec2(0.5, color.a)).rgb;\n              gl_FragColor.rgb *= gl_FragColor.a;\n            }",uniforms:{u_gradientTexture:function(){return this.Yl}.bind(this),u_opacity:function(){return this.getOpacity()}.bind(this)}}]})},n.prototype.renderDeclutter=function(){},n}(wx),Kj=function(){function t(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.supportedMediaTypes=null}return t.prototype.getReadOptions=function(t,n){var i;if(n){var r=n.dataProjection?gr(n.dataProjection):this.readProjection(t);n.extent&&r&&r.getUnits()===Gt.TILE_PIXELS&&(r=gr(r)).setWorldExtent(n.extent),i={dataProjection:r,featureProjection:n.featureProjection}}return this.adaptOptions(i)},t.prototype.adaptOptions=function(t){return E({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection},t)},t.prototype.getType=function(){return r()},t.prototype.readFeature=function(t,n){return r()},t.prototype.readFeatures=function(t,n){return r()},t.prototype.readGeometry=function(t,n){return r()},t.prototype.readProjection=function(t){return r()},t.prototype.writeFeature=function(t,n){return r()},t.prototype.writeFeatures=function(t,n){return r()},t.prototype.writeGeometry=function(t,n){return r()},t}();function Yj(t,n,i){var r,e=i?gr(i.featureProjection):null,o=i?gr(i.dataProjection):null;if(r=e&&o&&!Tr(e,o)?(n?t.clone():t).transform(n?e:o,n?o:e):t,n&&i&&void 0!==i.decimals){var s=Math.pow(10,i.decimals);r===t&&(r=t.clone()),r.applyTransform((function(t){for(var n=0,i=t.length;n<i;++n)t[n]=Math.round(t[n]*s)/s;return t}))}return r}function Zj(t,n){var i=n?gr(n.featureProjection):null,r=n?gr(n.dataProjection):null;return i&&r&&!Tr(i,r)?Rr(t,r,i):t}var $j=i(98),Qj=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function tS(t,n,i){if(3===t){var r={keys:[],values:[],features:[]},e=i.readVarint()+i.pos;i.readFields(nS,r,e),r.length=r.features.length,r.length&&(n[r.name]=r)}}function nS(t,n,i){if(15===t)n.version=i.readVarint();else if(1===t)n.name=i.readString();else if(5===t)n.extent=i.readVarint();else if(2===t)n.features.push(i.pos);else if(3===t)n.keys.push(i.readString());else if(4===t){for(var r=null,e=i.readVarint()+i.pos;i.pos<e;)r=1===(t=i.readVarint()>>3)?i.readString():2===t?i.readFloat():3===t?i.readDouble():4===t?i.readVarint64():5===t?i.readVarint():6===t?i.readSVarint():7===t?i.readBoolean():null;n.values.push(r)}}function iS(t,n,i){if(1==t)n.id=i.readVarint();else if(2==t)for(var r=i.readVarint()+i.pos;i.pos<r;){var e=n.layer.keys[i.readVarint()],o=n.layer.values[i.readVarint()];n.properties[e]=o}else 3==t?n.type=i.readVarint():4==t&&(n.geometry=i.pos)}function rS(t,n,i){t.pos=n.features[i];var r=t.readVarint()+t.pos,e={layer:n,type:0,properties:{}};return t.readFields(iS,e,r),e}var eS=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.dataProjection=new ui({code:"",units:Gt.TILE_PIXELS}),i.Ql=r.featureClass?r.featureClass:Pj,i.H=r.geometryName,i.tv=r.layerName?r.layerName:"layer",i.qc=r.layers?r.layers:null,i.nv=r.idProperty,i.supportedMediaTypes=["application/vnd.mapbox-vector-tile","application/x-protobuf"],i}return Qj(n,t),n.prototype.iv=function(t,n,i,r){t.pos=n.geometry;for(var e=t.readVarint()+t.pos,o=1,s=0,a=0,u=0,c=0,h=0;t.pos<e;){if(!s){var f=t.readVarint();o=7&f,s=f>>3}s--,1===o||2===o?(a+=t.readSVarint(),u+=t.readSVarint(),1===o&&c>h&&(r.push(c),h=c),i.push(a,u),c+=2):7===o?c>h&&(i.push(i[h],i[h+1]),c+=2):Mt(!1,59)}c>h&&(r.push(c),h=c)},n.prototype.rv=function(t,n,i){var r,e=n.type;if(0===e)return null;var o,s=n.properties;this.nv?(o=s[this.nv],delete s[this.nv]):o=n.id,s[this.tv]=n.layer.name;var a=[],u=[];this.iv(t,n,a,u);var c=function(t,n){var i;1===t?i=1===n?Pt.POINT:Pt.MULTI_POINT:2===t?i=1===n?Pt.LINE_STRING:Pt.MULTI_LINE_STRING:3===t&&(i=Pt.POLYGON);return i}(e,u.length);if(this.Ql===Pj)(r=new this.Ql(c,a,u,s,o)).transform(i.dataProjection);else{var h=void 0;if(c==Pt.POLYGON){var f=He(a,u);h=f.length>1?new Ej(a,Et,f):new Ye(a,Et,u)}else h=c===Pt.POINT?new Te(a,Et):c===Pt.LINE_STRING?new kj(a,Et):c===Pt.POLYGON?new Ye(a,Et,u):c===Pt.MULTI_POINT?new bj(a,Et):c===Pt.MULTI_LINE_STRING?new _j(a,Et,u):null;r=new(0,this.Ql),this.H&&r.setGeometryName(this.H);var l=Yj(h,!1,i);r.setGeometry(l),void 0!==o&&r.setId(o),r.setProperties(s,!0)}return r},n.prototype.getType=function(){return uh},n.prototype.readFeatures=function(t,n){var i=this.qc,r=this.adaptOptions(n),e=gr(r.dataProjection);e.setWorldExtent(r.extent),r.dataProjection=e;var o=new $j(t),s=o.readFields(tS,{}),a=[];for(var u in s)if(!i||-1!=i.indexOf(u)){var c=s[u],h=c?[0,0,c.extent,c.extent]:null;e.setExtent(h);for(var f=0,l=c.length;f<l;++f){var v=rS(o,c,f),d=this.rv(o,v,r);null!==d&&a.push(d)}}return a},n.prototype.readProjection=function(t){return this.dataProjection},n.prototype.setLayers=function(t){this.qc=t},n}(Kj),oS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),sS=function(t){function n(n){var i=this,r=n||{},e=E({},r);delete e.preload,delete e.useInterimTilesOnError,(i=t.call(this,e)||this).on,i.once,i.un,r.renderMode===fj&&(console.warn('renderMode: "image" is deprecated. Option ignored.'),r.renderMode=void 0);var o=r.renderMode||lj;return Mt(o==lj||o==vj,28),i.ev=o,i.setPreload(r.preload?r.preload:0),i.setUseInterimTilesOnError(void 0===r.useInterimTilesOnError||r.useInterimTilesOnError),i.getBackground,i.setBackground,i}return oS(n,t),n.prototype.createRenderer=function(){return new mj(this)},n.prototype.getFeatures=function(n){return t.prototype.getFeatures.call(this,n)},n.prototype.getRenderMode=function(){return this.ev},n.prototype.getPreload=function(){return this.get(_g)},n.prototype.getUseInterimTilesOnError=function(){return this.get(Og)},n.prototype.setPreload=function(t){this.set(_g,t)},n.prototype.setUseInterimTilesOnError=function(t){this.set(Og,t)},n}(wx),aS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function uS(t){for(var n=[],i=0,r=t.length;i<r;++i)n.push(t[i].clone());return n}var cS=function(t){function n(n){var i=t.call(this)||this;return i.ov=n||null,i.sv=[],i.av(),i}return aS(n,t),n.prototype.uv=function(){this.sv.forEach($),this.sv.length=0},n.prototype.av=function(){if(this.ov)for(var t=0,n=this.ov.length;t<n;++t)this.sv.push(Y(this.ov[t],N,this.changed,this))},n.prototype.clone=function(){var t=new n(null);return t.setGeometries(this.ov),t.applyProperties(this),t},n.prototype.closestPointXY=function(t,n,i,r){if(r<Mn(this.getExtent(),t,n))return r;for(var e=this.ov,o=0,s=e.length;o<s;++o)r=e[o].closestPointXY(t,n,i,r);return r},n.prototype.containsXY=function(t,n){for(var i=this.ov,r=0,e=i.length;r<e;++r)if(i[r].containsXY(t,n))return!0;return!1},n.prototype.computeExtent=function(t){Rn(t);for(var n=this.ov,i=0,r=n.length;i<r;++i)Fn(t,n[i].getExtent());return t},n.prototype.getGeometries=function(){return uS(this.ov)},n.prototype.getGeometriesArray=function(){return this.ov},n.prototype.getGeometriesArrayRecursive=function(){for(var t=[],n=this.ov,i=0,r=n.length;i<r;++i)n[i].getType()===this.getType()?t=t.concat(n[i].getGeometriesArrayRecursive()):t.push(n[i]);return t},n.prototype.getSimplifiedGeometry=function(t){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),t<0||0!==this.simplifiedGeometryMaxMinSquaredTolerance&&t<this.simplifiedGeometryMaxMinSquaredTolerance)return this;for(var i=[],r=this.ov,e=!1,o=0,s=r.length;o<s;++o){var a=r[o],u=a.getSimplifiedGeometry(t);i.push(u),u!==a&&(e=!0)}if(e){var c=new n(null);return c.setGeometriesArray(i),c}return this.simplifiedGeometryMaxMinSquaredTolerance=t,this},n.prototype.getType=function(){return Pt.GEOMETRY_COLLECTION},n.prototype.intersectsExtent=function(t){for(var n=this.ov,i=0,r=n.length;i<r;++i)if(n[i].intersectsExtent(t))return!0;return!1},n.prototype.isEmpty=function(){return 0===this.ov.length},n.prototype.rotate=function(t,n){for(var i=this.ov,r=0,e=i.length;r<e;++r)i[r].rotate(t,n);this.changed()},n.prototype.scale=function(t,n,i){var r=i;r||(r=Hn(this.getExtent()));for(var e=this.ov,o=0,s=e.length;o<s;++o)e[o].scale(t,n,r);this.changed()},n.prototype.setGeometries=function(t){this.setGeometriesArray(uS(t))},n.prototype.setGeometriesArray=function(t){this.uv(),this.ov=t,this.av(),this.changed()},n.prototype.applyTransform=function(t){for(var n=this.ov,i=0,r=n.length;i<r;++i)n[i].applyTransform(t);this.changed()},n.prototype.translate=function(t,n){for(var i=this.ov,r=0,e=i.length;r<e;++r)i[r].translate(t,n);this.changed()},n.prototype.disposeInternal=function(){this.uv(),t.prototype.disposeInternal.call(this)},n}(Yr),hS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function fS(t){if("string"==typeof t){var n=JSON.parse(t);return n||null}return null!==t?t:null}var lS=function(t){function n(){return t.call(this)||this}return hS(n,t),n.prototype.getType=function(){return ch},n.prototype.readFeature=function(t,n){return this.readFeatureFromObject(fS(t),this.getReadOptions(t,n))},n.prototype.readFeatures=function(t,n){return this.readFeaturesFromObject(fS(t),this.getReadOptions(t,n))},n.prototype.readFeatureFromObject=function(t,n){return r()},n.prototype.readFeaturesFromObject=function(t,n){return r()},n.prototype.readGeometry=function(t,n){return this.readGeometryFromObject(fS(t),this.getReadOptions(t,n))},n.prototype.readGeometryFromObject=function(t,n){return r()},n.prototype.readProjection=function(t){return this.readProjectionFromObject(fS(t))},n.prototype.readProjectionFromObject=function(t){return r()},n.prototype.writeFeature=function(t,n){return JSON.stringify(this.writeFeatureObject(t,n))},n.prototype.writeFeatureObject=function(t,n){return r()},n.prototype.writeFeatures=function(t,n){return JSON.stringify(this.writeFeaturesObject(t,n))},n.prototype.writeFeaturesObject=function(t,n){return r()},n.prototype.writeGeometry=function(t,n){return JSON.stringify(this.writeGeometryObject(t,n))},n.prototype.writeGeometryObject=function(t,n){return r()},n}(Kj),vS=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function dS(t,n){if(!t)return null;var i;switch(t.type){case Pt.POINT:i=function(t){return new Te(t.coordinates)}(t);break;case Pt.LINE_STRING:i=function(t){return new kj(t.coordinates)}(t);break;case Pt.POLYGON:i=function(t){return new Ye(t.coordinates)}(t);break;case Pt.MULTI_POINT:i=function(t){return new bj(t.coordinates)}(t);break;case Pt.MULTI_LINE_STRING:i=function(t){return new _j(t.coordinates)}(t);break;case Pt.MULTI_POLYGON:i=function(t){return new Ej(t.coordinates)}(t);break;case Pt.GEOMETRY_COLLECTION:i=function(t,n){var i=t.geometries.map((function(t){return dS(t,n)}));return new cS(i)}(t);break;default:throw new Error("Unsupported GeoJSON type: "+t.type)}return Yj(i,!1,n)}function pS(t,n){var i,r=(t=Yj(t,!0,n)).getType();switch(r){case Pt.POINT:i=function(t,n){return{type:"Point",coordinates:t.getCoordinates()}}(t);break;case Pt.LINE_STRING:i=function(t,n){return{type:"LineString",coordinates:t.getCoordinates()}}(t);break;case Pt.POLYGON:i=function(t,n){var i;n&&(i=n.rightHanded);return{type:"Polygon",coordinates:t.getCoordinates(i)}}(t,n);break;case Pt.MULTI_POINT:i=function(t,n){return{type:"MultiPoint",coordinates:t.getCoordinates()}}(t);break;case Pt.MULTI_LINE_STRING:i=function(t,n){return{type:"MultiLineString",coordinates:t.getCoordinates()}}(t);break;case Pt.MULTI_POLYGON:i=function(t,n){var i;n&&(i=n.rightHanded);return{type:"MultiPolygon",coordinates:t.getCoordinates(i)}}(t,n);break;case Pt.GEOMETRY_COLLECTION:i=function(t,n){return{type:"GeometryCollection",geometries:t.getGeometriesArray().map((function(t){var i=E({},n);return delete i.featureProjection,pS(t,i)}))}}(t,n);break;case Pt.CIRCLE:i={type:"GeometryCollection",geometries:[]};break;default:throw new Error("Unsupported geometry type: "+r)}return i}var yS=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this)||this).dataProjection=gr(r.dataProjection?r.dataProjection:"EPSG:4326"),r.featureProjection&&(i.defaultFeatureProjection=gr(r.featureProjection)),i.H=r.geometryName,i.cv=r.extractGeometryName,i.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"],i}return vS(n,t),n.prototype.readFeatureFromObject=function(t,n){var i=null,r=dS((i="Feature"===t.type?t:{type:"Feature",geometry:t,properties:null}).geometry,n),e=new Tt;return this.H?e.setGeometryName(this.H):this.cv&&"geometry_name"in i!==void 0&&e.setGeometryName(i.geometry_name),e.setGeometry(r),"id"in i&&e.setId(i.id),i.properties&&e.setProperties(i.properties,!0),e},n.prototype.readFeaturesFromObject=function(t,n){var i=null;if("FeatureCollection"===t.type){i=[];for(var r=t.features,e=0,o=r.length;e<o;++e)i.push(this.readFeatureFromObject(r[e],n))}else i=[this.readFeatureFromObject(t,n)];return i},n.prototype.readGeometryFromObject=function(t,n){return dS(t,n)},n.prototype.readProjectionFromObject=function(t){var n,i=t.crs;return i?"name"==i.type?n=gr(i.properties.name):"EPSG"===i.type?n=gr("EPSG:"+i.properties.code):Mt(!1,36):n=this.dataProjection,n},n.prototype.writeFeatureObject=function(t,n){n=this.adaptOptions(n);var i={type:"Feature",geometry:null,properties:null},r=t.getId();if(void 0!==r&&(i.id=r),!t.hasProperties())return i;var e=t.getProperties(),o=t.getGeometry();return o&&(i.geometry=pS(o,n),delete e[t.getGeometryName()]),R(e)||(i.properties=e),i},n.prototype.writeFeaturesObject=function(t,n){n=this.adaptOptions(n);for(var i=[],r=0,e=t.length;r<e;++r)i.push(this.writeFeatureObject(t[r],n));return{type:"FeatureCollection",features:i}},n.prototype.writeGeometryObject=function(t,n){return pS(t,this.adaptOptions(n))},n}(lS),mS=i(63);function wS(t){return function(t){if(Array.isArray(t))return IS(t)}(t)||bS(t)||PS(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function bS(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function gS(t,n){return jS(t)||function(t,n){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==i)return;var r,e,o=[],s=!0,a=!1;try{for(i=i.call(t);!(s=(r=i.next()).done)&&(o.push(r.value),!n||o.length!==n);s=!0);}catch(t){a=!0,e=t}finally{try{s||null==i.return||i.return()}finally{if(a)throw e}}return o}(t,n)||PS(t,n)||xS()}function xS(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function jS(t){if(Array.isArray(t))return t}function SS(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function kS(t,n,i){return n&&SS(t.prototype,n),i&&SS(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function MS(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function _S(t,n){if(n&&("object"===NS(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function OS(t){var n="function"==typeof Map?new Map:void 0;return(OS=function(t){if(null===t||(i=t,-1===Function.toString.call(i).indexOf("[native code]")))return t;var i;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(t))return n.get(t);n.set(t,r)}function r(){return TS(t,arguments,CS(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),AS(r,t)})(t)}function TS(t,n,i){return(TS=ES()?Reflect.construct:function(t,n,i){var r=[null];r.push.apply(r,n);var e=new(Function.bind.apply(t,r));return i&&AS(e,i.prototype),e}).apply(null,arguments)}function ES(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function AS(t,n){return(AS=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function CS(t){return(CS=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function RS(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=PS(t))||n&&t&&"number"==typeof t.length){i&&(t=i);var r=0,e=function(){};return{s:e,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw o}}}}function PS(t,n){if(t){if("string"==typeof t)return IS(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?IS(t,n):void 0}}function IS(t,n){(null==n||n>t.length)&&(n=t.length);for(var i=0,r=new Array(n);i<n;i++)r[i]=t[i];return r}function NS(t){return(NS="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var zS={$version:8,$root:{version:{required:!0,type:"enum",values:[8],doc:"Style specification version number. Must be 8.",example:8},name:{type:"string",doc:"A human-readable name for the style.",example:"Bright"},metadata:{type:"*",doc:"Arbitrary properties useful to track with the stylesheet, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'."},center:{type:"array",value:"number",doc:"Default map center in longitude and latitude.  The style center will be used only if the map has not been positioned by other means (e.g. map options or user interaction).",example:[-73.9749,40.7736]},zoom:{type:"number",doc:"Default zoom level.  The style zoom will be used only if the map has not been positioned by other means (e.g. map options or user interaction).",example:12.5},bearing:{type:"number",default:0,period:360,units:"degrees",doc:'Default bearing, in degrees. The bearing is the compass direction that is "up"; for example, a bearing of 90掳 orients the map so that east is up. This value will be used only if the map has not been positioned by other means (e.g. map options or user interaction).',example:29},pitch:{type:"number",default:0,units:"degrees",doc:"Default pitch, in degrees. Zero is perpendicular to the surface, for a look straight down at the map, while a greater value like 60 looks ahead towards the horizon. The style pitch will be used only if the map has not been positioned by other means (e.g. map options or user interaction).",example:50},light:{type:"light",doc:"The global light source.",example:{anchor:"viewport",color:"white",intensity:.4}},terrain:{type:"terrain",doc:"A global modifier that elevates layers and markers based on a DEM data source."},fog:{type:"fog",doc:"A global effect that fades layers and markers based on their distance to the camera. The fog can be used to approximate the effect of atmosphere on distant objects and enhance the depth perception of the map when used with terrain or 3D features."},sources:{required:!0,type:"sources",doc:"Data source specifications.",example:{"mapbox-streets":{type:"vector",url:"mapbox://mapbox.mapbox-streets-v6"}}},sprite:{type:"string",doc:"A base URL for retrieving the sprite image and metadata. The extensions `.png`, `.json` and scale factor `@2x.png` will be automatically appended. This property is required if any layer uses the `background-pattern`, `fill-pattern`, `line-pattern`, `fill-extrusion-pattern`, or `icon-image` properties. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).",example:"mapbox://sprites/mapbox/bright-v8"},glyphs:{type:"string",doc:"A URL template for loading signed-distance-field glyph sets in PBF format. The URL must include `{fontstack}` and `{range}` tokens. This property is required if any layer uses the `text-field` layout property. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).",example:"mapbox://fonts/mapbox/{fontstack}/{range}.pbf"},transition:{type:"transition",doc:"A global transition definition to use as a default across properties, to be used for timing transitions between one value and the next when no property-specific transition is set. Collision-based symbol fading is controlled independently of the style's `transition` property.",example:{duration:300,delay:0}},layers:{required:!0,type:"array",value:"layer",doc:"Layers will be drawn in the order of this array.",example:[{id:"water",source:"mapbox-streets","source-layer":"water",type:"fill",paint:{"fill-color":"#00ffff"}}]}},sources:{"*":{type:"source",doc:"Specification of a data source. For vector and raster sources, either TileJSON or a URL to a TileJSON must be provided. For image and video sources, a URL must be provided. For GeoJSON sources, a URL or inline GeoJSON must be provided."}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{doc:"A vector tile source."}},doc:"The type of the source."},url:{type:"string",doc:"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://<Tileset ID>`."},tiles:{type:"array",value:"string",doc:"An array of one or more tile source URLs, as in the TileJSON spec."},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129],doc:"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL."},scheme:{type:"enum",values:{xyz:{doc:"Slippy map tilenames scheme."},tms:{doc:"OSGeo spec scheme."}},default:"xyz",doc:"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed."},minzoom:{type:"number",default:0,doc:"Minimum zoom level for which tiles are available, as in the TileJSON spec."},maxzoom:{type:"number",default:22,doc:"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},promoteId:{type:"promoteId",doc:"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{<sourceLayer>: <propertyName>}`. If specified as a string for a vector tile source, the same property is used across all its source layers."},volatile:{type:"boolean",default:!1,doc:"A setting to determine whether a source's tiles are cached locally.","sdk-support":{"basic functionality":{android:"9.3.0",ios:"5.10.0"}}},"*":{type:"*",doc:"Other keys to configure the data source."}},source_raster:{type:{required:!0,type:"enum",values:{raster:{doc:"A raster tile source."}},doc:"The type of the source."},url:{type:"string",doc:"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://<Tileset ID>`."},tiles:{type:"array",value:"string",doc:"An array of one or more tile source URLs, as in the TileJSON spec."},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129],doc:"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL."},minzoom:{type:"number",default:0,doc:"Minimum zoom level for which tiles are available, as in the TileJSON spec."},maxzoom:{type:"number",default:22,doc:"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels."},tileSize:{type:"number",default:512,units:"pixels",doc:"The minimum visual size to display tiles for this layer. Only configurable for raster layers."},scheme:{type:"enum",values:{xyz:{doc:"Slippy map tilenames scheme."},tms:{doc:"OSGeo spec scheme."}},default:"xyz",doc:"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},volatile:{type:"boolean",default:!1,doc:"A setting to determine whether a source's tiles are cached locally.","sdk-support":{"basic functionality":{android:"9.3.0",ios:"5.10.0"}}},"*":{type:"*",doc:"Other keys to configure the data source."}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{doc:"A RGB-encoded raster DEM source"}},doc:"The type of the source."},url:{type:"string",doc:"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://<Tileset ID>`."},tiles:{type:"array",value:"string",doc:"An array of one or more tile source URLs, as in the TileJSON spec."},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129],doc:"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL."},minzoom:{type:"number",default:0,doc:"Minimum zoom level for which tiles are available, as in the TileJSON spec."},maxzoom:{type:"number",default:22,doc:"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels."},tileSize:{type:"number",default:512,units:"pixels",doc:"The minimum visual size to display tiles for this layer. Only configurable for raster layers."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},encoding:{type:"enum",values:{terrarium:{doc:"Terrarium format PNG tiles. See https://aws.amazon.com/es/public-datasets/terrain/ for more info."},mapbox:{doc:"Mapbox Terrain RGB tiles. See https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb for more info."}},default:"mapbox",doc:"The encoding used by this source. Mapbox Terrain RGB is used by default"},volatile:{type:"boolean",default:!1,doc:"A setting to determine whether a source's tiles are cached locally.","sdk-support":{"basic functionality":{android:"9.3.0",ios:"5.10.0"}}},"*":{type:"*",doc:"Other keys to configure the data source."}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{doc:"A GeoJSON data source."}},doc:"The data type of the GeoJSON source."},data:{type:"*",doc:"A URL to a GeoJSON file, or inline GeoJSON."},maxzoom:{type:"number",default:18,doc:"Maximum zoom level at which to create vector tiles (higher means greater detail at high zoom levels)."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},buffer:{type:"number",default:128,maximum:512,minimum:0,doc:"Size of the tile buffer on each side. A value of 0 produces no buffer. A value of 512 produces a buffer as wide as the tile itself. Larger values produce fewer rendering artifacts near tile edges and slower performance."},filter:{type:"*",doc:"An expression for filtering features prior to processing them for rendering."},tolerance:{type:"number",default:.375,doc:"Douglas-Peucker simplification tolerance (higher means simpler geometries and faster performance)."},cluster:{type:"boolean",default:!1,doc:"If the data is a collection of point features, setting this to true clusters the points by radius into groups. Cluster groups become new `Point` features in the source with additional properties:\n * `cluster` Is `true` if the point is a cluster \n * `cluster_id` A unqiue id for the cluster to be used in conjunction with the [cluster inspection methods](https://www.mapbox.com/mapbox-gl-js/api/#geojsonsource#getclusterexpansionzoom)\n * `point_count` Number of original points grouped into this cluster\n * `point_count_abbreviated` An abbreviated point count"},clusterRadius:{type:"number",default:50,minimum:0,doc:"Radius of each cluster if clustering is enabled. A value of 512 indicates a radius equal to the width of a tile."},clusterMaxZoom:{type:"number",doc:"Max zoom on which to cluster points if clustering is enabled. Defaults to one zoom less than maxzoom (so that last zoom features are not clustered). Clusters are re-evaluated at integer zoom levels so setting clusterMaxZoom to 14 means the clusters will be displayed until z15."},clusterMinPoints:{type:"number",doc:"Minimum number of points necessary to form a cluster if clustering is enabled. Defaults to `2`."},clusterProperties:{type:"*",doc:'An object defining custom properties on the generated clusters if clustering is enabled, aggregating values from clustered points. Has the form `{"property_name": [operator, map_expression]}`. `operator` is any expression function that accepts at least 2 operands (e.g. `"+"` or `"max"`) 鈥� it accumulates the property value from clusters/points the cluster contains; `map_expression` produces the value of a single point.\n\nExample: `{"sum": ["+", ["get", "scalerank"]]}`.\n\nFor more advanced use cases, in place of `operator`, you can use a custom reduce expression that references a special `["accumulated"]` value, e.g.:\n`{"sum": [["+", ["accumulated"], ["get", "sum"]], ["get", "scalerank"]]}`'},lineMetrics:{type:"boolean",default:!1,doc:"Whether to calculate line distance metrics. This is required for line layers that specify `line-gradient` values."},generateId:{type:"boolean",default:!1,doc:"Whether to generate ids for the geojson features. When enabled, the `feature.id` property will be auto assigned based on its index in the `features` array, over-writing any previous values."},promoteId:{type:"promoteId",doc:"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{<sourceLayer>: <propertyName>}`."}},source_video:{type:{required:!0,type:"enum",values:{video:{doc:"A video data source."}},doc:"The data type of the video source."},urls:{required:!0,type:"array",value:"string",doc:"URLs to video content in order of preferred format."},coordinates:{required:!0,doc:"Corners of video specified in longitude, latitude pairs.",type:"array",length:4,value:{type:"array",length:2,value:"number",doc:"A single longitude, latitude pair."}}},source_image:{type:{required:!0,type:"enum",values:{image:{doc:"An image data source."}},doc:"The data type of the image source."},url:{required:!0,type:"string",doc:"URL that points to an image."},coordinates:{required:!0,doc:"Corners of image specified in longitude, latitude pairs.",type:"array",length:4,value:{type:"array",length:2,value:"number",doc:"A single longitude, latitude pair."}}},layer:{id:{type:"string",doc:"Unique layer name.",required:!0},type:{type:"enum",values:{fill:{doc:"A filled polygon with an optional stroked border.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},line:{doc:"A stroked line.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},symbol:{doc:"An icon or a text label.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},circle:{doc:"A filled circle.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},heatmap:{doc:"A heatmap.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"fill-extrusion":{doc:"An extruded (3D) polygon.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},raster:{doc:"Raster map textures such as satellite imagery.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},hillshade:{doc:"Client-side hillshading visualization based on DEM data. Currently, the implementation only supports Mapbox Terrain RGB and Mapzen Terrarium tiles.","sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},background:{doc:"The background color or pattern of the map.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},sky:{doc:"A spherical dome around the map that is always rendered behind all other layers.","sdk-support":{"basic functionality":{js:"2.0.0"}}}},doc:"Rendering type of this layer.",required:!0},metadata:{type:"*",doc:"Arbitrary properties useful to track with the layer, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'."},source:{type:"string",doc:"Name of a source description to be used for this layer. Required for all layer types except `background`."},"source-layer":{type:"string",doc:"Layer to use from a vector tile source. Required for vector tile sources; prohibited for all other source types, including GeoJSON sources."},minzoom:{type:"number",minimum:0,maximum:24,doc:"The minimum zoom level for the layer. At zoom levels less than the minzoom, the layer will be hidden."},maxzoom:{type:"number",minimum:0,maximum:24,doc:"The maximum zoom level for the layer. At zoom levels equal to or greater than the maxzoom, the layer will be hidden."},filter:{type:"filter",doc:"A expression specifying conditions on source features. Only features that match the filter are displayed. Zoom expressions in filters are only evaluated at integer zoom levels. The `feature-state` expression is not supported in filter expressions."},layout:{type:"layout",doc:"Layout properties for the layer."},paint:{type:"paint",doc:"Default paint properties for this layer."}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background","layout_sky"],layout_background:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_sky:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"2.0.0"}},"property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.","sdk-support":{"basic functionality":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"},"data-driven styling":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.","sdk-support":{"basic functionality":{js:"1.2.0",android:"9.2.0",ios:"5.9.0",macos:"0.16.0"},"data-driven styling":{js:"1.2.0",android:"9.2.0",ios:"5.9.0",macos:"0.16.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},"property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},"property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{doc:"A cap with a squared-off end which is drawn to the exact endpoint of the line."},round:{doc:"A cap with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line."},square:{doc:"A cap with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width."}},default:"butt",doc:"The display of line endings.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"2.3.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-join":{type:"enum",values:{bevel:{doc:"A join with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width."},round:{doc:"A join with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line."},miter:{doc:"A join with a sharp, angled corner which is drawn with the outer sides beyond the endpoint of the path until they meet."}},default:"miter",doc:"The display of lines when joining.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,doc:"Used to automatically convert miter joins to bevel joins for sharp angles.",requires:[{"line-join":"miter"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,doc:"Used to automatically convert round joins to miter joins for shallow angles.",requires:[{"line-join":"round"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.","sdk-support":{"basic functionality":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"},"data-driven styling":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{doc:"The label is placed at the point where the geometry is located."},line:{doc:"The label is placed along the line of the geometry. Can only be used on `LineString` and `Polygon` geometries."},"line-center":{doc:"The label is placed at the center of the line of the geometry. Can only be used on `LineString` and `Polygon` geometries. Note that a single feature in a vector tile may contain multiple line geometries."}},default:"point",doc:"Label placement relative to its geometry.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"`line-center` value":{js:"0.47.0",android:"6.4.0",ios:"4.3.0",macos:"0.10.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",doc:"Distance between two symbol anchors.",requires:[{"symbol-placement":"line"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,doc:"If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. When using a client that supports global collision detection, like Mapbox GL JS version 0.42.0 or greater, enabling this property is not needed to prevent clipped labels at tile boundaries.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with lower sort keys are drawn and placed first.  When `icon-allow-overlap` or `text-allow-overlap` is `false`, features with a lower sort key will have priority during placement. When `icon-allow-overlap` or `text-allow-overlap` is set to `true`, features with a higher sort key will overlap over features with a lower sort key.","sdk-support":{"basic functionality":{js:"0.53.0",android:"7.4.0",ios:"4.11.0",macos:"0.14.0"},"data-driven styling":{js:"0.53.0",android:"7.4.0",ios:"4.11.0",macos:"0.14.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{doc:"Sorts symbols by `symbol-sort-key` if set. Otherwise, sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`."},"viewport-y":{doc:"Sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`."},source:{doc:"Sorts symbols by `symbol-sort-key` if set. Otherwise, no sorting is applied; symbols are rendered in the same order as the source data."}},default:"auto",doc:"Determines whether overlapping symbols in the same layer are rendered in the order that they appear in the data source or by their y-position relative to the viewport. To control the order and prioritization of symbols otherwise, use `symbol-sort-key`.","sdk-support":{"basic functionality":{js:"0.49.0",android:"6.6.0",ios:"4.5.0",macos:"0.12.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,doc:"If true, the icon will be visible even if it collides with other previously drawn symbols.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,doc:"If true, other symbols can be visible even if they collide with the icon.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,doc:"If true, text will display without their corresponding icons when the icon collides with other symbols and the text does not.",requires:["icon-image","text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{doc:"When `symbol-placement` is set to `point`, aligns icons east-west. When `symbol-placement` is set to `line` or `line-center`, aligns icon x-axes with the line."},viewport:{doc:"Produces icons whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`."},auto:{doc:"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`."}},default:"auto",doc:"In combination with `symbol-placement`, determines the rotation behavior of icons.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"`auto` value":{js:"0.25.0",android:"4.2.0",ios:"3.4.0",macos:"0.3.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",doc:"Scales the original size of the icon by the provided factor. The new pixel size of the image will be the original pixel size multiplied by `icon-size`. 1 is the original size; 3 triples the size of the image.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{doc:"The icon is displayed at its intrinsic aspect ratio."},width:{doc:"The icon is scaled in the x-dimension to fit the width of the text."},height:{doc:"The icon is scaled in the y-dimension to fit the height of the text."},both:{doc:"The icon is scaled in both x- and y-dimensions."}},default:"none",doc:"Scales the icon to fit around the associated text.",requires:["icon-image","text-field"],"sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"},"stretchable icons":{js:"1.6.0",android:"9.2.0",ios:"5.8.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",doc:"Size of the additional area added to dimensions determined by `icon-text-fit`, in clockwise order: top, right, bottom, left.",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],"sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",doc:"Name of image in sprite to use for drawing an image background.",tokens:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",doc:"Rotates the icon clockwise.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.21.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",doc:"Size of the additional area around the icon bounding box used for detecting symbol collisions.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,doc:"If true, the icon may be flipped to prevent it from being rendered upside-down.",requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],doc:"Offset distance of icon from its anchor. Positive values indicate right and down, while negative values indicate left and up. Each component is multiplied by the value of `icon-size` to obtain the final offset in pixels. When combined with `icon-rotate` the offset will be as if the rotated direction was up.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{doc:"The center of the icon is placed closest to the anchor."},left:{doc:"The left side of the icon is placed closest to the anchor."},right:{doc:"The right side of the icon is placed closest to the anchor."},top:{doc:"The top of the icon is placed closest to the anchor."},bottom:{doc:"The bottom of the icon is placed closest to the anchor."},"top-left":{doc:"The top left corner of the icon is placed closest to the anchor."},"top-right":{doc:"The top right corner of the icon is placed closest to the anchor."},"bottom-left":{doc:"The bottom left corner of the icon is placed closest to the anchor."},"bottom-right":{doc:"The bottom right corner of the icon is placed closest to the anchor."}},default:"center",doc:"Part of the icon placed closest to the anchor.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{doc:"The icon is aligned to the plane of the map."},viewport:{doc:"The icon is aligned to the plane of the viewport."},auto:{doc:"Automatically matches the value of `icon-rotation-alignment`."}},default:"auto",doc:"Orientation of icon when map is pitched.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{doc:"The text is aligned to the plane of the map."},viewport:{doc:"The text is aligned to the plane of the viewport."},auto:{doc:"Automatically matches the value of `text-rotation-alignment`."}},default:"auto",doc:"Orientation of text when map is pitched.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"},"`auto` value":{js:"0.25.0",android:"4.2.0",ios:"3.4.0",macos:"0.3.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{doc:"When `symbol-placement` is set to `point`, aligns text east-west. When `symbol-placement` is set to `line` or `line-center`, aligns text x-axes with the line."},viewport:{doc:"Produces glyphs whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`."},auto:{doc:"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`."}},default:"auto",doc:"In combination with `symbol-placement`, determines the rotation behavior of the individual glyphs forming the text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"`auto` value":{js:"0.25.0",android:"4.2.0",ios:"3.4.0",macos:"0.3.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,doc:"Value to use for a text label. If a plain `string` is provided, it will be treated as a `formatted` with default/inherited formatting options.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],doc:"Font stack to use for displaying text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",doc:"Font size.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",doc:"The maximum line width for text wrapping.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",doc:"Text leading value for multi-line text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"2.3.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-letter-spacing":{type:"number",default:0,units:"ems",doc:"Text tracking amount.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{doc:"The text is aligned towards the anchor position."},left:{doc:"The text is aligned to the left."},center:{doc:"The text is centered."},right:{doc:"The text is aligned to the right."}},default:"center",doc:"Text justification options.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"},auto:{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,doc:"Radial offset of text, in the direction of the symbol's anchor. Useful in combination with `text-variable-anchor`, which defaults to using the two-dimensional `text-offset` if present.","sdk-support":{"basic functionality":{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"},"data-driven styling":{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"}},requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{doc:"The center of the text is placed closest to the anchor."},left:{doc:"The left side of the text is placed closest to the anchor."},right:{doc:"The right side of the text is placed closest to the anchor."},top:{doc:"The top of the text is placed closest to the anchor."},bottom:{doc:"The bottom of the text is placed closest to the anchor."},"top-left":{doc:"The top left corner of the text is placed closest to the anchor."},"top-right":{doc:"The top right corner of the text is placed closest to the anchor."},"bottom-left":{doc:"The bottom left corner of the text is placed closest to the anchor."},"bottom-right":{doc:"The bottom right corner of the text is placed closest to the anchor."}},requires:["text-field",{"symbol-placement":["point"]}],doc:"To increase the chance of placing high-priority labels on the map, you can provide an array of `text-anchor` locations: the renderer will attempt to place the label at each location, in order, before moving onto the next label. Use `text-justify: auto` to choose justification based on anchor position. To apply an offset, use the `text-radial-offset` or the two-dimensional `text-offset`.","sdk-support":{"basic functionality":{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{doc:"The center of the text is placed closest to the anchor."},left:{doc:"The left side of the text is placed closest to the anchor."},right:{doc:"The right side of the text is placed closest to the anchor."},top:{doc:"The top of the text is placed closest to the anchor."},bottom:{doc:"The bottom of the text is placed closest to the anchor."},"top-left":{doc:"The top left corner of the text is placed closest to the anchor."},"top-right":{doc:"The top right corner of the text is placed closest to the anchor."},"bottom-left":{doc:"The bottom left corner of the text is placed closest to the anchor."},"bottom-right":{doc:"The bottom right corner of the text is placed closest to the anchor."}},default:"center",doc:"Part of the text placed closest to the anchor.",requires:["text-field",{"!":"text-variable-anchor"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",doc:"Maximum angle change between adjacent characters.",requires:["text-field",{"symbol-placement":["line","line-center"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{doc:"If a text's language supports horizontal writing mode, symbols with point placement would be laid out horizontally."},vertical:{doc:"If a text's language supports vertical writing mode, symbols with point placement would be laid out vertically."}},doc:"The property allows control over a symbol's orientation. Note that the property values act as a hint, so that a symbol whose language doesn鈥檛 support the provided orientation will be laid out in its natural orientation. Example: English point symbol will be rendered horizontally even if array value contains single 'vertical' enum value. The order of elements in an array define priority order for the placement of an orientation variant.",requires:["text-field",{"symbol-placement":["point"]}],"sdk-support":{"basic functionality":{js:"1.3.0",android:"8.3.0",ios:"5.3.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",doc:"Rotates the text clockwise.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",doc:"Size of the additional area around the text bounding box used for detecting symbol collisions.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,doc:"If true, the text may be flipped vertically to prevent it from being rendered upside-down.",requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{doc:"The text is not altered."},uppercase:{doc:"Forces all letters to be displayed in uppercase."},lowercase:{doc:"Forces all letters to be displayed in lowercase."}},default:"none",doc:"Specifies how to capitalize text, similar to the CSS `text-transform` property.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",doc:"Offset distance of text from its anchor. Positive values indicate right and down, while negative values indicate left and up. If used with text-variable-anchor, input values will be taken as absolute values. Offsets along the x- and y-axis will be applied automatically based on the anchor position.",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,doc:"If true, the text will be visible even if it collides with other previously drawn symbols.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,doc:"If true, other symbols can be visible even if they collide with the text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,doc:"If true, icons will display without their corresponding text when the text collides with other symbols and the icon does not.",requires:["text-field","icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},"property-type":"constant"}},filter:{type:"array",value:"*",doc:"A filter selects specific features from a layer."},filter_operator:{type:"enum",values:{"==":{doc:'`["==", key, value]` equality: `feature[key] = value`'},"!=":{doc:'`["!=", key, value]` inequality: `feature[key] 鈮� value`'},">":{doc:'`[">", key, value]` greater than: `feature[key] > value`'},">=":{doc:'`[">=", key, value]` greater than or equal: `feature[key] 鈮� value`'},"<":{doc:'`["<", key, value]` less than: `feature[key] < value`'},"<=":{doc:'`["<=", key, value]` less than or equal: `feature[key] 鈮� value`'},in:{doc:'`["in", key, v0, ..., vn]` set inclusion: `feature[key] 鈭� {v0, ..., vn}`'},"!in":{doc:'`["!in", key, v0, ..., vn]` set exclusion: `feature[key] 鈭� {v0, ..., vn}`'},all:{doc:'`["all", f0, ..., fn]` logical `AND`: `f0 鈭� ... 鈭� fn`'},any:{doc:'`["any", f0, ..., fn]` logical `OR`: `f0 鈭� ... 鈭� fn`'},none:{doc:'`["none", f0, ..., fn]` logical `NOR`: `卢f0 鈭� ... 鈭� 卢fn`'},has:{doc:'`["has", key]` `feature[key]` exists'},"!has":{doc:'`["!has", key]` `feature[key]` does not exist'},within:{doc:'`["within", object]` feature geometry is within object geometry'}},doc:"The filter operator."},geometry_type:{type:"enum",values:{Point:{doc:"Filter to point geometries."},LineString:{doc:"Filter to line geometries."},Polygon:{doc:"Filter to polygon geometries."}},doc:"The geometry type for the filter to select."},function:{expression:{type:"expression",doc:"An expression."},stops:{type:"array",doc:"An array of stops.",value:"function_stop"},base:{type:"number",default:1,minimum:0,doc:"The exponential base of the interpolation curve. It controls the rate at which the result increases. Higher values make the result increase more towards the high end of the range. With `1` the stops are interpolated linearly."},property:{type:"string",doc:"The name of a feature property to use as the function input.",default:"$zoom"},type:{type:"enum",values:{identity:{doc:"Return the input value as the output value."},exponential:{doc:"Generate an output by interpolating between stops just less than and just greater than the function input."},interval:{doc:"Return the output value of the stop just less than the function input."},categorical:{doc:"Return the output value of the stop equal to the function input."}},doc:"The interpolation strategy to use in function evaluation.",default:"exponential"},colorSpace:{type:"enum",values:{rgb:{doc:"Use the RGB color space to interpolate color values"},lab:{doc:"Use the LAB color space to interpolate color values."},hcl:{doc:"Use the HCL color space to interpolate color values, interpolating the Hue, Chroma, and Luminance channels individually."}},doc:"The color space in which colors interpolated. Interpolating colors in perceptual color spaces like LAB and HCL tend to produce color ramps that look more consistent and produce colors that can be differentiated more easily than those interpolated in RGB space.",default:"rgb"},default:{type:"*",required:!1,doc:"A value to serve as a fallback function result when a value isn't otherwise available. It is used in the following circumstances:\n* In categorical functions, when the feature value does not match any of the stop domain values.\n* In property and zoom-and-property functions, when a feature does not contain a value for the specified property.\n* In identity functions, when the feature value is not valid for the style property (for example, if the function is being used for a `circle-color` property but the feature property value is not a string or not a valid color).\n* In interval or exponential property and zoom-and-property functions, when the feature value is not numeric.\nIf no default is provided, the style property's default is used in these circumstances."}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2,doc:"Zoom level and value pair."},expression:{type:"array",value:"*",minimum:1,doc:"An expression defines a function that can be used for data-driven style properties or feature filters."},expression_name:{doc:"",type:"enum",values:{let:{doc:'Binds expressions to named variables, which can then be referenced in the result expression using ["var", "variable_name"].',group:"Variable binding","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},var:{doc:'References variable bound using "let".',group:"Variable binding","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},literal:{doc:"Provides a literal array or object value.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},array:{doc:"Asserts that the input is an array (optionally with a specific item type and length).  If, when the input expression is evaluated, it is not of the asserted type, then this assertion will cause the whole expression to be aborted.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},at:{doc:"Retrieves an item from an array.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},in:{doc:"Determines whether an item exists in an array or a substring exists in a string.",group:"Lookup","sdk-support":{"basic functionality":{js:"1.6.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}}},"index-of":{doc:"Returns the first position at which an item can be found in an array or a substring can be found in a string, or `-1` if the input cannot be found. Accepts an optional index from where to begin the search.",group:"Lookup","sdk-support":{"basic functionality":{js:"1.10.0"}}},slice:{doc:"Returns an item from an array or a substring from a string from a specified start index, or between a start index and an end index if set. The return value is inclusive of the start index but not of the end index.",group:"Lookup","sdk-support":{"basic functionality":{js:"1.10.0"}}},case:{doc:"Selects the first output whose corresponding test condition evaluates to true, or the fallback value otherwise.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},match:{doc:'Selects the output for which the label value matches the input value, or the fallback value if no match is found. The input can be any expression (for example, `["get", "building_type"]`). Each label must be unique, and must be either:\n - a single literal value; or\n - an array of literal values, the values of which must be all strings or all numbers (for example `[100, 101]` or `["c", "b"]`).\n\nThe input matches if any of the values in the array matches using strict equality, similar to the `"in"` operator.\nIf the input type does not match the type of the labels, the result will be the fallback value.',group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},coalesce:{doc:"Evaluates each expression in turn until the first non-null value is obtained, and returns that value.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},step:{doc:'Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. Returns the output value of the stop just less than the input, or the first output if the input is less than the first stop.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.42.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},interpolate:{doc:'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. The output type must be `number`, `array<number>`, or `color`.\n\nInterpolation types:\n- `["linear"]`: Interpolates linearly between the pair of stops just less than and just greater than the input.\n- `["exponential", base]`: Interpolates exponentially between the stops just less than and just greater than the input. `base` controls the rate at which the output increases: higher values make the output increase more towards the high end of the range. With values close to 1 the output increases linearly.\n- `["cubic-bezier", x1, y1, x2, y2]`: Interpolates using the cubic bezier curve defined by the given control points.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.42.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"interpolate-hcl":{doc:'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the Hue-Chroma-Luminance color space.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.49.0"}}},"interpolate-lab":{doc:'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the CIELAB color space.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.49.0"}}},ln2:{doc:"Returns mathematical constant ln(2).",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},pi:{doc:"Returns the mathematical constant pi.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},e:{doc:"Returns the mathematical constant e.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},typeof:{doc:"Returns a string describing the type of the given value.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},string:{doc:"Asserts that the input value is a string. If multiple values are provided, each one is evaluated in order until a string is obtained. If none of the inputs are strings, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},number:{doc:"Asserts that the input value is a number. If multiple values are provided, each one is evaluated in order until a number is obtained. If none of the inputs are numbers, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},boolean:{doc:"Asserts that the input value is a boolean. If multiple values are provided, each one is evaluated in order until a boolean is obtained. If none of the inputs are booleans, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},object:{doc:"Asserts that the input value is an object. If multiple values are provided, each one is evaluated in order until an object is obtained. If none of the inputs are objects, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},collator:{doc:"Returns a `collator` for use in locale-dependent comparison operations. The `case-sensitive` and `diacritic-sensitive` options default to `false`. The `locale` argument specifies the IETF language tag of the locale to use. If none is provided, the default locale is used. If the requested locale is not available, the `collator` will use a system-defined fallback locale. Use `resolved-locale` to test the results of locale fallback behavior.",group:"Types","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},format:{doc:'Returns a `formatted` string for displaying mixed-format text in the `text-field` property. The input may contain a string literal or expression, including an [`\'image\'`](#types-image) expression. Strings may be followed by a style override object that supports the following properties:\n- `"text-font"`: Overrides the font stack specified by the root layout property.\n- `"text-color"`: Overrides the color specified by the root paint property.\n- `"font-scale"`: Applies a scaling factor on `text-size` as specified by the root layout property.',group:"Types","sdk-support":{"basic functionality":{js:"0.48.0",android:"6.7.0",ios:"4.6.0",macos:"0.12.0"},"text-font":{js:"0.48.0",android:"6.7.0",ios:"4.6.0",macos:"0.12.0"},"font-scale":{js:"0.48.0",android:"6.7.0",ios:"4.6.0",macos:"0.12.0"},"text-color":{js:"1.3.0",android:"7.3.0",ios:"4.10.0",macos:"0.14.0"},image:{js:"1.6.0",android:"8.6.0",ios:"5.7.0",macos:"0.15.0"}}},image:{doc:"Returns an `image` type for use in `icon-image`, `*-pattern` entries and as a section in the `format` expression. If set, the `image` argument will check that the requested image exists in the style and will return either the resolved image name or `null`, depending on whether or not the image is currently in the style. This validation process is synchronous and requires the image to have been added to the style before requesting it in the `image` argument.",group:"Types","sdk-support":{"basic functionality":{js:"1.4.0",android:"8.6.0",ios:"5.7.0",macos:"0.15.0"}}},"number-format":{doc:"Converts the input number into a string representation using the providing formatting rules. If set, the `locale` argument specifies the locale to use, as a BCP 47 language tag. If set, the `currency` argument specifies an ISO 4217 code to use for currency-style formatting. If set, the `min-fraction-digits` and `max-fraction-digits` arguments specify the minimum and maximum number of fractional digits to include.",group:"Types","sdk-support":{"basic functionality":{js:"0.54.0"}}},"to-string":{doc:'Converts the input value to a string. If the input is `null`, the result is `""`. If the input is a boolean, the result is `"true"` or `"false"`. If the input is a number, it is converted to a string as specified by the ["NumberToString" algorithm](https://tc39.github.io/ecma262/#sec-tostring-applied-to-the-number-type) of the ECMAScript Language Specification. If the input is a color, it is converted to a string of the form `"rgba(r,g,b,a)"`, where `r`, `g`, and `b` are numerals ranging from 0 to 255, and `a` ranges from 0 to 1. Otherwise, the input is converted to a string in the format specified by the [`JSON.stringify`](https://tc39.github.io/ecma262/#sec-json.stringify) function of the ECMAScript Language Specification.',group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-number":{doc:'Converts the input value to a number, if possible. If the input is `null` or `false`, the result is 0. If the input is `true`, the result is 1. If the input is a string, it is converted to a number as specified by the ["ToNumber Applied to the String Type" algorithm](https://tc39.github.io/ecma262/#sec-tonumber-applied-to-the-string-type) of the ECMAScript Language Specification. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.',group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-boolean":{doc:"Converts the input value to a boolean. The result is `false` when then input is an empty string, 0, `false`, `null`, or `NaN`; otherwise it is `true`.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-rgba":{doc:"Returns a four-element array containing the input color's red, green, blue, and alpha components, in that order.",group:"Color","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-color":{doc:"Converts the input value to a color. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},rgb:{doc:"Creates a color value from red, green, and blue components, which must range between 0 and 255, and an alpha component of 1. If any component is out of range, the expression is an error.",group:"Color","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},rgba:{doc:"Creates a color value from red, green, blue components, which must range between 0 and 255, and an alpha component which must range between 0 and 1. If any component is out of range, the expression is an error.",group:"Color","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},get:{doc:"Retrieves a property value from the current feature's properties, or from another object if a second argument is provided. Returns null if the requested property is missing.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},has:{doc:"Tests for the presence of an property value in the current feature's properties, or from another object if a second argument is provided.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},length:{doc:"Gets the length of an array or string.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},properties:{doc:'Gets the feature properties object.  Note that in some cases, it may be more efficient to use ["get", "property_name"] directly.',group:"Feature data","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"feature-state":{doc:"Retrieves a property value from the current feature's state. Returns null if the requested property is not present on the feature's state. A feature's state is not part of the GeoJSON or vector tile data, and must be set programmatically on each feature. Features are identified by their `id` attribute, which must be an integer or a string that can be cast to an integer. Note that [\"feature-state\"] can only be used with paint properties that support data-driven styling.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.46.0"}}},"geometry-type":{doc:"Gets the feature's geometry type: `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},id:{doc:"Gets the feature's id, if it has one.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},zoom:{doc:'Gets the current zoom level.  Note that in style layout and paint properties, ["zoom"] may only appear as the input to a top-level "step" or "interpolate" expression.',group:"Zoom","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"heatmap-density":{doc:"Gets the kernel density estimation of a pixel in a heatmap layer, which is a relative measure of how many data points are crowded around a particular pixel. Can only be used in the `heatmap-color` property.",group:"Heatmap","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"line-progress":{doc:"Gets the progress along a gradient line. Can only be used in the `line-gradient` property.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.6.0",macos:"0.12.0"}}},"sky-radial-progress":{doc:"Gets the distance of a point on the sky from the sun position. Returns 0 at sun position and 1 when the distance reaches `sky-gradient-radius`. Can only be used in the `sky-gradient` property.",group:"sky","sdk-support":{"basic functionality":{js:"2.0.0"}}},accumulated:{doc:"Gets the value of a cluster property accumulated so far. Can only be used in the `clusterProperties` option of a clustered GeoJSON source.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.53.0"}}},"+":{doc:"Returns the sum of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"*":{doc:"Returns the product of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"-":{doc:"For two inputs, returns the result of subtracting the second input from the first. For a single input, returns the result of subtracting it from 0.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"/":{doc:"Returns the result of floating point division of the first input by the second.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"%":{doc:"Returns the remainder after integer division of the first input by the second.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"^":{doc:"Returns the result of raising the first input to the power specified by the second.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},sqrt:{doc:"Returns the square root of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.42.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},log10:{doc:"Returns the base-ten logarithm of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},ln:{doc:"Returns the natural logarithm of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},log2:{doc:"Returns the base-two logarithm of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},sin:{doc:"Returns the sine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},cos:{doc:"Returns the cosine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},tan:{doc:"Returns the tangent of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},asin:{doc:"Returns the arcsine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},acos:{doc:"Returns the arccosine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},atan:{doc:"Returns the arctangent of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},min:{doc:"Returns the minimum value of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},max:{doc:"Returns the maximum value of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},round:{doc:'Rounds the input to the nearest integer. Halfway values are rounded away from zero. For example, `["round", -1.5]` evaluates to -2.',group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},abs:{doc:"Returns the absolute value of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},ceil:{doc:"Returns the smallest integer that is greater than or equal to the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},floor:{doc:"Returns the largest integer that is less than or equal to the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},distance:{doc:"Returns the shortest distance in meters between the evaluated feature and the input geometry. The input value can be a valid GeoJSON of type `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Distance values returned may vary in precision due to loss in precision from encoding geometries, particularly below zoom level 13.",group:"Math","sdk-support":{"basic functionality":{android:"9.2.0",ios:"5.9.0",macos:"0.16.0"}}},"==":{doc:"Returns `true` if the input values are equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},"!=":{doc:"Returns `true` if the input values are not equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},">":{doc:"Returns `true` if the first input is strictly greater than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},"<":{doc:"Returns `true` if the first input is strictly less than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},">=":{doc:"Returns `true` if the first input is greater than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},"<=":{doc:"Returns `true` if the first input is less than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},all:{doc:"Returns `true` if all the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `false`, the result is `false` and no further input expressions are evaluated.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},any:{doc:"Returns `true` if any of the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `true`, the result is `true` and no further input expressions are evaluated.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"!":{doc:"Logical negation. Returns `true` if the input is `false`, and `false` if the input is `true`.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},within:{doc:"Returns `true` if the evaluated feature is fully contained inside a boundary of the input geometry, `false` otherwise. The input value can be a valid GeoJSON of type `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Supported features for evaluation:\n- `Point`: Returns `false` if a point is on the boundary or falls outside the boundary.\n- `LineString`: Returns `false` if any part of a line falls outside the boundary, the line intersects the boundary, or a line's endpoint is on the boundary.",group:"Decision","sdk-support":{"basic functionality":{js:"1.9.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}}},"is-supported-script":{doc:"Returns `true` if the input string is expected to render legibly. Returns `false` if the input string contains sections that cannot be rendered without potential loss of meaning (e.g. Indic scripts that require complex text shaping, or right-to-left scripts if the the `mapbox-gl-rtl-text` plugin is not in use in Mapbox GL JS).",group:"String","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.6.0"}}},upcase:{doc:"Returns the input string converted to uppercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.",group:"String","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},downcase:{doc:"Returns the input string converted to lowercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.",group:"String","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},concat:{doc:"Returns a `string` consisting of the concatenation of the inputs. Each input is converted to a string as if by `to-string`.",group:"String","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"resolved-locale":{doc:"Returns the IETF language tag of the locale being used by the provided `collator`. This can be used to determine the default system locale, or to determine if a requested locale was successfully loaded.",group:"String","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}}}},fog:{range:{type:"array",default:[.5,10],minimum:-20,maximum:20,length:2,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},doc:"The start and end distance range in which fog fades from fully transparent to fully opaque. The distance to the point at the center of the map is defined as zero, so that negative range values are closer to the camera, and positive values are farther away.",example:[.5,10],"sdk-support":{"basic functionality":{js:"2.3.0"}}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"The color of the fog. Using opacity is recommended only for smoothly transitioning fog on/off as anything less than 100% opacity results in more tiles loaded and drawn.","sdk-support":{"basic functionality":{js:"2.3.0"}}},"horizon-blend":{type:"number","property-type":"data-constant",default:.1,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Horizon blend applies a smooth fade from the color of the fog to the color of the sky. A value of zero leaves a sharp transition from fog to sky. Increasing the value blends the color of fog into increasingly high angles of the sky.","sdk-support":{"basic functionality":{js:"2.3.0"}}}},light:{anchor:{type:"enum",default:"viewport",values:{map:{doc:"The position of the light source is aligned to the rotation of the map."},viewport:{doc:"The position of the light source is aligned to the rotation of the viewport."}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]},doc:"Whether extruded geometries are lit relative to the map or viewport.",example:"map","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},doc:"Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0掳 (0掳 when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0掳 when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0掳, directly above, to 180掳, directly below).",example:[1.5,90,80],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Color tint for lighting extruded geometries.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}}},terrain:{source:{type:"string",doc:"Name of a source of `raster_dem` type to be used for terrain elevation.",required:!0,"sdk-support":{"basic functionality":{js:"2.0.0"}}},exaggeration:{type:"number","property-type":"data-constant",default:1,minimum:0,maximum:1e3,expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Exaggerates the elevation of the terrain by multiplying the data from the DEM with this value.","sdk-support":{"basic functionality":{js:"2.0.0"}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background","paint_sky"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,doc:"Whether or not the fill should be antialiased.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity of the entire fill layer. In contrast to the `fill-color`, this value will also affect the 1px stroke around the fill, if the stroke is used.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.21.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",doc:"The color of the filled part of this layer. This color can be specified as `rgba` with an alpha component and the color's opacity will not affect the opacity of the 1px stroke, if it is used.",transition:!0,requires:[{"!":"fill-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.19.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",doc:"The outline color of the fill. Matches the value of `fill-color` if unspecified.",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.19.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{doc:"The fill is translated relative to the map."},viewport:{doc:"The fill is translated relative to the viewport."}},doc:"Controls the frame of reference for `fill-translate`.",default:"map",requires:["fill-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing image fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.49.0",android:"6.5.0",macos:"0.11.0",ios:"4.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity of the entire fill extrusion layer. This is rendered on a per-layer, not per-feature, basis, and data-driven styling is not available.",transition:!0,"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",doc:"The base color of the extruded fill. The extrusion's surfaces will be shaded differently based on this color in combination with the root `light` settings. If this color is specified as `rgba` with an alpha component, the alpha component will be ignored; use `fill-extrusion-opacity` to set layer opacity.",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up (on the flat plane), respectively.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{doc:"The fill extrusion is translated relative to the map."},viewport:{doc:"The fill extrusion is translated relative to the viewport."}},doc:"Controls the frame of reference for `fill-extrusion-translate`.",default:"map",requires:["fill-extrusion-translate"],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing images on extruded fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.49.0",android:"6.5.0",macos:"0.11.0",ios:"4.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",doc:"The height with which to extrude this layer.",transition:!0,"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",doc:"The height with which to extrude the base of this layer. Must be less than or equal to `fill-extrusion-height`.",transition:!0,requires:["fill-extrusion-height"],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,doc:"Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.",transition:!1,"sdk-support":{"basic functionality":{js:"0.50.0",ios:"4.7.0",macos:"0.13.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",doc:"The opacity at which the line will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",doc:"The color with which the line will be drawn.",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.23.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{doc:"The line is translated relative to the map."},viewport:{doc:"The line is translated relative to the viewport."}},doc:"Controls the frame of reference for `line-translate`.",default:"map",requires:["line-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",doc:"Stroke thickness.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,doc:"Draws a line casing outside of a line's actual path. Value indicates the width of the inner gap.",transition:!0,units:"pixels","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,doc:"The line's offset. For linear features, a positive value offsets the line to the right, relative to the direction of the line, and a negative value to the left. For polygon features, a positive value results in an inset, and a negative value results in an outset.",transition:!0,units:"pixels","sdk-support":{"basic functionality":{js:"0.12.1",android:"3.0.0",ios:"3.1.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Blur applied to the line, in pixels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",doc:"Specifies the lengths of the alternating dashes and gaps that form the dash pattern. The lengths are later scaled by the line width. To convert a dash length to pixels, multiply the length by the current line width. Note that GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to the expected scale. Also note that zoom-dependent expressions will be evaluated only at integer zoom levels.",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"2.3.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing image lines. For seamless patterns, image width must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.49.0",android:"6.5.0",macos:"0.11.0",ios:"4.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",doc:'Defines a gradient with which to color a line feature. Can only be used with GeoJSON sources that specify `"lineMetrics": true`.',transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],"sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.4.0",macos:"0.11.0"},"data-driven styling":{}},expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",doc:"Circle radius.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.18.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",doc:"The fill color of the circle.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.18.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,doc:"Amount to blur the circle. 1 blurs the circle such that only the centerpoint is full opacity.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.20.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",doc:"The opacity at which the circle will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.20.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{doc:"The circle is translated relative to the map."},viewport:{doc:"The circle is translated relative to the viewport."}},doc:"Controls the frame of reference for `circle-translate`.",default:"map",requires:["circle-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{doc:"Circles are scaled according to their apparent distance to the camera."},viewport:{doc:"Circles are not scaled."}},default:"map",doc:"Controls the scaling behavior of the circle when the map is pitched.","sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{doc:"The circle is aligned to the plane of the map."},viewport:{doc:"The circle is aligned to the plane of the viewport."}},default:"viewport",doc:"Orientation of circle when map is pitched.","sdk-support":{"basic functionality":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"The width of the circle's stroke. Strokes are placed outside of the `circle-radius`.","sdk-support":{"basic functionality":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",doc:"The stroke color of the circle.",transition:!0,"sdk-support":{"basic functionality":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",doc:"The opacity of the circle's stroke.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",doc:"Radius of influence of one heatmap point in pixels. Increasing the value makes the heatmap smoother, but less detailed.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},"data-driven styling":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,doc:"A measure of how much an individual point contributes to the heatmap. A value of 10 would be equivalent to having 10 points of weight 1 in the same spot. Especially useful when combined with clustering.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},"data-driven styling":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,doc:"Similar to `heatmap-weight` but controls the intensity of the heatmap globally. Primarily used for adjusting the heatmap based on zoom level.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],doc:'Defines the color of each pixel based on its density value in a heatmap.  Should be an expression that uses `["heatmap-density"]` as input.',transition:!1,"sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},"data-driven styling":{}},expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",doc:"The global opacity at which the heatmap layer will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{doc:"The opacity at which the icon will be drawn.",type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,doc:"The color of the icon. This can only be used with sdf icons.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,doc:"The color of the icon's halo. Icon halos can only be used with SDF icons.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Distance of halo to the icon outline.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Fade out the halo towards the outside.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"Distance that the icon's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{doc:"Icons are translated relative to the map."},viewport:{doc:"Icons are translated relative to the viewport."}},doc:"Controls the frame of reference for `icon-translate`.",default:"map",requires:["icon-image","icon-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",doc:"The opacity at which the text will be drawn.",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",doc:"The color with which the text will be drawn.",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,doc:"The color of the text's halo, which helps it stand out from backgrounds.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Distance of halo to the font outline. Max text halo width is 1/4 of the font-size.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"The halo's fadeout distance towards the outside.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"Distance that the text's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{doc:"The text is translated relative to the map."},viewport:{doc:"The text is translated relative to the viewport."}},doc:"Controls the frame of reference for `text-translate`.",default:"map",requires:["text-field","text-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",doc:"The opacity at which the image will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",doc:"Rotates hues around the color wheel.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",doc:"Increase or reduce the brightness of the image. The value is the minimum brightness.",default:0,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",doc:"Increase or reduce the brightness of the image. The value is the maximum brightness.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",doc:"Increase or reduce the saturation of the image.",default:0,minimum:-1,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",doc:"Increase or reduce the contrast of the image.",default:0,minimum:-1,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",doc:"The resampling/interpolation method to use for overscaling, also known as texture magnification filter",values:{linear:{doc:"(Bi)linear filtering interpolates pixel values using the weighted average of the four closest original source pixels creating a smooth but blurry look when overscaled"},nearest:{doc:"Nearest neighbor filtering interpolates pixel values using the nearest original source pixel creating a sharp but pixelated look when overscaled"}},default:"linear","sdk-support":{"basic functionality":{js:"0.47.0",android:"6.3.0",ios:"4.2.0",macos:"0.9.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",doc:"Fade duration when a new tile is added.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,doc:"The direction of the light source used to generate the hillshading with 0 as the top of the viewport if `hillshade-illumination-anchor` is set to `viewport` and due north if `hillshade-illumination-anchor` is set to `map`.",transition:!1,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{doc:"The hillshade illumination is relative to the north direction."},viewport:{doc:"The hillshade illumination is relative to the top of the viewport."}},default:"viewport",doc:"Direction of light source when map is rotated.","sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",doc:"Intensity of the hillshade",default:.5,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",doc:"The shading color of areas that face away from the light source.",transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",doc:"The shading color of areas that faces towards the light source.",transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",doc:"The shading color used to accentuate rugged terrain like sharp cliffs and gorges.",transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",doc:"The color with which the background will be drawn.",transition:!0,requires:[{"!":"background-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing an image background. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity at which the background will be drawn.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_sky:{"sky-type":{type:"enum",values:{gradient:{doc:"Renders the sky with a gradient that can be configured with `sky-gradient-radius` and `sky-gradient`."},atmosphere:{doc:"Renders the sky with a simulated atmospheric scattering algorithm, the sun direction can be attached to the light position or explicitly set through `sky-atmosphere-sun`."}},default:"atmosphere",doc:"The type of the sky","sdk-support":{"basic functionality":{js:"2.0.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun":{type:"array",value:"number",length:2,units:"degrees",minimum:[0,0],maximum:[360,180],transition:!1,doc:"Position of the sun center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the sun relative to 0掳 north, where degrees proceed clockwise. The polar angle indicates the height of the sun, where 0掳 is directly above, at zenith, and 90掳 at the horizon. When this property is ommitted, the sun center is directly inherited from the light position.","sdk-support":{"basic functionality":{js:"2.0.0"}},requires:[{"sky-type":"atmosphere"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun-intensity":{type:"number",requires:[{"sky-type":"atmosphere"}],default:10,minimum:0,maximum:100,transition:!1,doc:"Intensity of the sun as a light source in the atmosphere (on a scale from 0 to a 100). Setting higher values will brighten up the sky.","sdk-support":{"basic functionality":{js:"2.0.0"}},"property-type":"data-constant"},"sky-gradient-center":{type:"array",requires:[{"sky-type":"gradient"}],value:"number",default:[0,0],length:2,units:"degrees",minimum:[0,0],maximum:[360,180],transition:!1,doc:"Position of the gradient center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the gradient center relative to 0掳 north, where degrees proceed clockwise. The polar angle indicates the height of the gradient center, where 0掳 is directly above, at zenith, and 90掳 at the horizon.","sdk-support":{"basic functionality":{js:"2.0.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient-radius":{type:"number",requires:[{"sky-type":"gradient"}],default:90,minimum:0,maximum:180,transition:!1,doc:"The angular distance (measured in degrees) from `sky-gradient-center` up to which the gradient extends. A value of 180 causes the gradient to wrap around to the opposite direction from `sky-gradient-center`.","sdk-support":{"basic functionality":{js:"2.0.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient":{type:"color",default:["interpolate",["linear"],["sky-radial-progress"],.8,"#87ceeb",1,"white"],doc:"Defines a radial color gradient with which to color the sky. The color values can be interpolated with an expression using `sky-radial-progress`. The range [0, 1] for the interpolant covers a radial distance (in degrees) of [0, `sky-gradient-radius`] centered at the position specified by `sky-gradient-center`.",transition:!1,requires:[{"sky-type":"gradient"}],"sdk-support":{"basic functionality":{js:"2.0.0"},"data-driven styling":{}},expression:{interpolated:!0,parameters:["sky-radial-progress"]},"property-type":"color-ramp"},"sky-atmosphere-halo-color":{type:"color",default:"white",doc:"A color applied to the atmosphere sun halo. The alpha channel describes how strongly the sun halo is represented in an atmosphere sky layer.",transition:!1,requires:[{"sky-type":"atmosphere"}],"sdk-support":{"basic functionality":{js:"2.0.0"}},"property-type":"data-constant"},"sky-atmosphere-color":{type:"color",default:"white",doc:"A color used to tweak the main atmospheric scattering coefficients. Using white applies the default coefficients giving the natural blue color to the atmosphere. This color affects how heavily the corresponding wavelength is represented during scattering. The alpha channel describes the density of the atmosphere, with 1 maximum density and 0 no density.",transition:!1,requires:[{"sky-type":"atmosphere"}],"sdk-support":{"basic functionality":{js:"2.0.0"}},"property-type":"data-constant"},"sky-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity of the entire sky layer.",transition:!0,"sdk-support":{"basic functionality":{js:"2.0.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds",doc:"Time allotted for transitions to complete."},delay:{type:"number",default:0,minimum:0,units:"milliseconds",doc:"Length of time before a transition begins."}},"property-type":{"data-driven":{type:"property-type",doc:"Property is interpolable and can be represented using a property expression."},"cross-faded":{type:"property-type",doc:"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms."},"cross-faded-data-driven":{type:"property-type",doc:"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms. It can be represented using a property expression."},"color-ramp":{type:"property-type",doc:"Property should be specified using a color ramp from which the output color can be sampled based on a property calculation."},"data-constant":{type:"property-type",doc:"Property is interpolable but cannot be represented using a property expression."},constant:{type:"property-type",doc:"Property is constant across all zoom levels and property values."}},promoteId:{"*":{type:"string",doc:"A name of a feature property to use as ID for feature state."}}};var FS="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function LS(t){var n={exports:{}};return t(n,n.exports),n.exports}var GS=LS((function(t,n){!function(i){var r=n&&!n.nodeType&&n,e=t&&!t.nodeType&&t,o="object"==NS(FS)&&FS;o.global!==o&&o.window!==o&&o.self!==o||(i=o);var s,a,u=2147483647,c=36,h=/^xn--/,f=/[^\x20-\x7E]/,l=/[\x2E\u3002\uFF0E\uFF61]/g,v={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},d=Math.floor,p=String.fromCharCode;function y(t){throw RangeError(v[t])}function m(t,n){for(var i=t.length,r=[];i--;)r[i]=n(t[i]);return r}function w(t,n){var i=t.split("@"),r="";return i.length>1&&(r=i[0]+"@",t=i[1]),r+m((t=t.replace(l,".")).split("."),n).join(".")}function b(t){for(var n,i,r=[],e=0,o=t.length;e<o;)(n=t.charCodeAt(e++))>=55296&&n<=56319&&e<o?56320==(64512&(i=t.charCodeAt(e++)))?r.push(((1023&n)<<10)+(1023&i)+65536):(r.push(n),e--):r.push(n);return r}function g(t){return m(t,(function(t){var n="";return t>65535&&(n+=p((t-=65536)>>>10&1023|55296),t=56320|1023&t),n+=p(t)})).join("")}function x(t,n){return t+22+75*(t<26)-((0!=n)<<5)}function j(t,n,i){var r=0;for(t=i?d(t/700):t>>1,t+=d(t/n);t>455;r+=c)t=d(t/35);return d(r+36*t/(t+38))}function S(t){var n,i,r,e,o,s,a,h,f,l,v,p=[],m=t.length,w=0,b=128,x=72;for((i=t.lastIndexOf("-"))<0&&(i=0),r=0;r<i;++r)t.charCodeAt(r)>=128&&y("not-basic"),p.push(t.charCodeAt(r));for(e=i>0?i+1:0;e<m;){for(o=w,s=1,a=c;e>=m&&y("invalid-input"),((h=(v=t.charCodeAt(e++))-48<10?v-22:v-65<26?v-65:v-97<26?v-97:c)>=c||h>d((u-w)/s))&&y("overflow"),w+=h*s,!(h<(f=a<=x?1:a>=x+26?26:a-x));a+=c)s>d(u/(l=c-f))&&y("overflow"),s*=l;x=j(w-o,n=p.length+1,0==o),d(w/n)>u-b&&y("overflow"),b+=d(w/n),w%=n,p.splice(w++,0,b)}return g(p)}function k(t){var n,i,r,e,o,s,a,h,f,l,v,m,w,g,S,k=[];for(m=(t=b(t)).length,n=128,i=0,o=72,s=0;s<m;++s)(v=t[s])<128&&k.push(p(v));for(r=e=k.length,e&&k.push("-");r<m;){for(a=u,s=0;s<m;++s)(v=t[s])>=n&&v<a&&(a=v);for(a-n>d((u-i)/(w=r+1))&&y("overflow"),i+=(a-n)*w,n=a,s=0;s<m;++s)if((v=t[s])<n&&++i>u&&y("overflow"),v==n){for(h=i,f=c;!(h<(l=f<=o?1:f>=o+26?26:f-o));f+=c)S=h-l,g=c-l,k.push(p(x(l+S%g,0))),h=d(S/g);k.push(p(x(h,0))),o=j(i,w,r==e),i=0,++r}++i,++n}return k.join("")}if(s={version:"1.3.2",ucs2:{decode:b,encode:g},decode:S,encode:k,toASCII:function(t){return w(t,(function(t){return f.test(t)?"xn--"+k(t):t}))},toUnicode:function(t){return w(t,(function(t){return h.test(t)?S(t.slice(4).toLowerCase()):t}))}},r&&e)if(t.exports==r)e.exports=s;else for(a in s)s.hasOwnProperty(a)&&(r[a]=s[a]);else i.punycode=s}(FS)})),DS=function(t){return"string"==typeof t},US=function(t){return"object"===NS(t)&&null!==t},qS=function(t){return null===t},BS=function(t){return null==t};function WS(t,n){return Object.prototype.hasOwnProperty.call(t,n)}var VS=function(t,n,i,r){n=n||"&",i=i||"=";var e={};if("string"!=typeof t||0===t.length)return e;var o=/\+/g;t=t.split(n);var s=1e3;r&&"number"==typeof r.maxKeys&&(s=r.maxKeys);var a=t.length;s>0&&a>s&&(a=s);for(var u=0;u<a;++u){var c,h,f,l,v=t[u].replace(o,"%20"),d=v.indexOf(i);d>=0?(c=v.substr(0,d),h=v.substr(d+1)):(c=v,h=""),f=decodeURIComponent(c),l=decodeURIComponent(h),WS(e,f)?Array.isArray(e[f])?e[f].push(l):e[f]=[e[f],l]:e[f]=l}return e},XS=function(t){switch(NS(t)){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}},HS=function(t,n,i,r){return n=n||"&",i=i||"=",null===t&&(t=void 0),"object"===NS(t)?Object.keys(t).map((function(r){var e=encodeURIComponent(XS(r))+i;return Array.isArray(t[r])?t[r].map((function(t){return e+encodeURIComponent(XS(t))})).join(n):e+encodeURIComponent(XS(t[r]))})).join(n):r?encodeURIComponent(XS(r))+i+encodeURIComponent(XS(t)):""},JS=LS((function(t,n){n.decode=n.parse=VS,n.encode=n.stringify=HS}));function KS(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var YS=/^([a-z0-9.+-]+:)/i,ZS=/:[0-9]*$/,$S=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,QS=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),tk=["'"].concat(QS),nk=["%","/","?",";","#"].concat(tk),ik=["/","?","#"],rk=/^[+a-z0-9A-Z_-]{0,63}$/,ek=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,ok={javascript:!0,"javascript:":!0},sk={javascript:!0,"javascript:":!0},ak={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function uk(t,n,i){if(t&&US(t)&&t instanceof KS)return t;var r=new KS;return r.parse(t,n,i),r}KS.prototype.parse=function(t,n,i){if(!DS(t))throw new TypeError("Parameter 'url' must be a string, not "+NS(t));var r=t.indexOf("?"),e=-1!==r&&r<t.indexOf("#")?"?":"#",o=t.split(e);o[0]=o[0].replace(/\\/g,"/");var s=t=o.join(e);if(s=s.trim(),!i&&1===t.split("#").length){var a=$S.exec(s);if(a)return this.path=s,this.href=s,this.pathname=a[1],a[2]?(this.search=a[2],this.query=n?JS.parse(this.search.substr(1)):this.search.substr(1)):n&&(this.search="",this.query={}),this}var u=YS.exec(s);if(u){var c=(u=u[0]).toLowerCase();this.protocol=c,s=s.substr(u.length)}if(i||u||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var h="//"===s.substr(0,2);!h||u&&sk[u]||(s=s.substr(2),this.slashes=!0)}if(!sk[u]&&(h||u&&!ak[u])){for(var f,l,v=-1,d=0;d<ik.length;d++){-1!==(p=s.indexOf(ik[d]))&&(-1===v||p<v)&&(v=p)}-1!==(l=-1===v?s.lastIndexOf("@"):s.lastIndexOf("@",v))&&(f=s.slice(0,l),s=s.slice(l+1),this.auth=decodeURIComponent(f)),v=-1;for(d=0;d<nk.length;d++){var p;-1!==(p=s.indexOf(nk[d]))&&(-1===v||p<v)&&(v=p)}-1===v&&(v=s.length),this.host=s.slice(0,v),s=s.slice(v),this.parseHost(),this.hostname=this.hostname||"";var y="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!y)for(var m=this.hostname.split(/\./),w=(d=0,m.length);d<w;d++){var b=m[d];if(b&&!b.match(rk)){for(var g="",x=0,j=b.length;x<j;x++)b.charCodeAt(x)>127?g+="x":g+=b[x];if(!g.match(rk)){var S=m.slice(0,d),k=m.slice(d+1),M=b.match(ek);M&&(S.push(M[1]),k.unshift(M[2])),k.length&&(s="/"+k.join(".")+s),this.hostname=S.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),y||(this.hostname=GS.toASCII(this.hostname));var _=this.port?":"+this.port:"",O=this.hostname||"";this.host=O+_,this.href+=this.host,y&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!ok[c])for(d=0,w=tk.length;d<w;d++){var T=tk[d];if(-1!==s.indexOf(T)){var E=encodeURIComponent(T);E===T&&(E=escape(T)),s=s.split(T).join(E)}}var A=s.indexOf("#");-1!==A&&(this.hash=s.substr(A),s=s.slice(0,A));var C=s.indexOf("?");if(-1!==C?(this.search=s.substr(C),this.query=s.substr(C+1),n&&(this.query=JS.parse(this.query)),s=s.slice(0,C)):n&&(this.search="",this.query={}),s&&(this.pathname=s),ak[c]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){_=this.pathname||"";var R=this.search||"";this.path=_+R}return this.href=this.format(),this},KS.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var n=this.protocol||"",i=this.pathname||"",r=this.hash||"",e=!1,o="";this.host?e=t+this.host:this.hostname&&(e=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(e+=":"+this.port)),this.query&&US(this.query)&&Object.keys(this.query).length&&(o=JS.stringify(this.query));var s=this.search||o&&"?"+o||"";return n&&":"!==n.substr(-1)&&(n+=":"),this.slashes||(!n||ak[n])&&!1!==e?(e="//"+(e||""),i&&"/"!==i.charAt(0)&&(i="/"+i)):e||(e=""),r&&"#"!==r.charAt(0)&&(r="#"+r),s&&"?"!==s.charAt(0)&&(s="?"+s),n+e+(i=i.replace(/[?#]/g,(function(t){return encodeURIComponent(t)})))+(s=s.replace("#","%23"))+r},KS.prototype.resolve=function(t){return this.resolveObject(uk(t,!1,!0)).format()},KS.prototype.resolveObject=function(t){if(DS(t)){var n=new KS;n.parse(t,!1,!0),t=n}for(var i=new KS,r=Object.keys(this),e=0;e<r.length;e++){var o=r[e];i[o]=this[o]}if(i.hash=t.hash,""===t.href)return i.href=i.format(),i;if(t.slashes&&!t.protocol){for(var s=Object.keys(t),a=0;a<s.length;a++){var u=s[a];"protocol"!==u&&(i[u]=t[u])}return ak[i.protocol]&&i.hostname&&!i.pathname&&(i.path=i.pathname="/"),i.href=i.format(),i}if(t.protocol&&t.protocol!==i.protocol){if(!ak[t.protocol]){for(var c=Object.keys(t),h=0;h<c.length;h++){var f=c[h];i[f]=t[f]}return i.href=i.format(),i}if(i.protocol=t.protocol,t.host||sk[t.protocol])i.pathname=t.pathname;else{for(var l=(t.pathname||"").split("/");l.length&&!(t.host=l.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==l[0]&&l.unshift(""),l.length<2&&l.unshift(""),i.pathname=l.join("/")}if(i.search=t.search,i.query=t.query,i.host=t.host||"",i.auth=t.auth,i.hostname=t.hostname||t.host,i.port=t.port,i.pathname||i.search){var v=i.pathname||"",d=i.search||"";i.path=v+d}return i.slashes=i.slashes||t.slashes,i.href=i.format(),i}var p=i.pathname&&"/"===i.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),m=y||p||i.host&&t.pathname,w=m,b=i.pathname&&i.pathname.split("/")||[],g=(l=t.pathname&&t.pathname.split("/")||[],i.protocol&&!ak[i.protocol]);if(g&&(i.hostname="",i.port=null,i.host&&(""===b[0]?b[0]=i.host:b.unshift(i.host)),i.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===l[0]?l[0]=t.host:l.unshift(t.host)),t.host=null),m=m&&(""===l[0]||""===b[0])),y)i.host=t.host||""===t.host?t.host:i.host,i.hostname=t.hostname||""===t.hostname?t.hostname:i.hostname,i.search=t.search,i.query=t.query,b=l;else if(l.length)b||(b=[]),b.pop(),b=b.concat(l),i.search=t.search,i.query=t.query;else if(!BS(t.search)){if(g)i.hostname=i.host=b.shift(),(M=!!(i.host&&i.host.indexOf("@")>0)&&i.host.split("@"))&&(i.auth=M.shift(),i.host=i.hostname=M.shift());return i.search=t.search,i.query=t.query,qS(i.pathname)&&qS(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.href=i.format(),i}if(!b.length)return i.pathname=null,i.search?i.path="/"+i.search:i.path=null,i.href=i.format(),i;for(var x=b.slice(-1)[0],j=(i.host||t.host||b.length>1)&&("."===x||".."===x)||""===x,S=0,k=b.length;k>=0;k--)"."===(x=b[k])?b.splice(k,1):".."===x?(b.splice(k,1),S++):S&&(b.splice(k,1),S--);if(!m&&!w)for(;S--;S)b.unshift("..");!m||""===b[0]||b[0]&&"/"===b[0].charAt(0)||b.unshift(""),j&&"/"!==b.join("/").substr(-1)&&b.push("");var M,_=""===b[0]||b[0]&&"/"===b[0].charAt(0);g&&(i.hostname=i.host=_?"":b.length?b.shift():"",(M=!!(i.host&&i.host.indexOf("@")>0)&&i.host.split("@"))&&(i.auth=M.shift(),i.host=i.hostname=M.shift()));return(m=m||i.host&&b.length)&&!_&&b.unshift(""),b.length?i.pathname=b.join("/"):(i.pathname=null,i.path=null),qS(i.pathname)&&qS(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.auth=t.auth||i.auth,i.slashes=i.slashes||t.slashes,i.href=i.format(),i},KS.prototype.parseHost=function(){var t=this.host,n=ZS.exec(t);n&&(":"!==(n=n[0])&&(this.port=n.substr(1)),t=t.substr(0,t.length-n.length)),t&&(this.hostname=t)};function ck(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];for(var e=0,o=i;e<o.length;e++){var s=o[e];for(var a in s)t[a]=s[a]}return t}var hk=function(t){!function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&AS(t,n)}(e,t);var n,i,r=(n=e,i=ES(),function(){var t,r=CS(n);if(i){var e=CS(this).constructor;t=Reflect.construct(r,arguments,e)}else t=r.apply(this,arguments);return _S(this,t)});function e(t,n){var i;return MS(this,e),(i=r.call(this,n)).message=n,i.key=t,i}return kS(e)}(OS(Error)),fk=function(){function t(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];MS(this,t),this.parent=n,this.bindings={};var r,e=RS(i);try{for(e.s();!(r=e.n()).done;){var o=gS(r.value,2),s=o[0],a=o[1];this.bindings[s]=a}}catch(t){e.e(t)}finally{e.f()}}return kS(t,[{key:"concat",value:function(n){return new t(this,n)}},{key:"get",value:function(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error("".concat(t," not found in scope."))}},{key:"has",value:function(t){return!!this.bindings[t]||!!this.parent&&this.parent.has(t)}}]),t}(),lk={kind:"null"},vk={kind:"number"},dk={kind:"string"},pk={kind:"boolean"},yk={kind:"color"},mk={kind:"object"},wk={kind:"value"},bk={kind:"collator"},gk={kind:"formatted"},xk={kind:"resolvedImage"};function jk(t,n){return{kind:"array",itemType:t,N:n}}function Sk(t){if("array"===t.kind){var n=Sk(t.itemType);return"number"==typeof t.N?"array<".concat(n,", ").concat(t.N,">"):"value"===t.itemType.kind?"array":"array<".concat(n,">")}return t.kind}var kk=[lk,vk,dk,pk,yk,gk,mk,jk(wk),xk];function Mk(t,n){if("error"===n.kind)return null;if("array"===t.kind){if("array"===n.kind&&(0===n.N&&"value"===n.itemType.kind||!Mk(t.itemType,n.itemType))&&("number"!=typeof t.N||t.N===n.N))return null}else{if(t.kind===n.kind)return null;if("value"===t.kind){var i,r=RS(kk);try{for(r.s();!(i=r.n()).done;){if(!Mk(i.value,n))return null}}catch(t){r.e(t)}finally{r.f()}}}return"Expected ".concat(Sk(t)," but found ").concat(Sk(n)," instead.")}function _k(t,n){return n.some((function(n){return n.kind===t.kind}))}function Ok(t,n){return n.some((function(n){return"null"===n?null===t:"array"===n?Array.isArray(t):"object"===n?t&&!Array.isArray(t)&&"object"===NS(t):n===NS(t)}))}var Tk=LS((function(t,n){var i={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function r(t){return(t=Math.round(t))<0?0:t>255?255:t}function e(t){return t<0?0:t>1?1:t}function o(t){return"%"===t[t.length-1]?r(parseFloat(t)/100*255):r(parseInt(t))}function s(t){return"%"===t[t.length-1]?e(parseFloat(t)/100):e(parseFloat(t))}function a(t,n,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(n-t)*i*6:2*i<1?n:3*i<2?t+(n-t)*(2/3-i)*6:t}try{n.parseCSSColor=function(t){var n,e=t.replace(/ /g,"").toLowerCase();if(e in i)return i[e].slice();if("#"===e[0])return 4===e.length?(n=parseInt(e.substr(1),16))>=0&&n<=4095?[(3840&n)>>4|(3840&n)>>8,240&n|(240&n)>>4,15&n|(15&n)<<4,1]:null:7===e.length&&(n=parseInt(e.substr(1),16))>=0&&n<=16777215?[(16711680&n)>>16,(65280&n)>>8,255&n,1]:null;var u=e.indexOf("("),c=e.indexOf(")");if(-1!==u&&c+1===e.length){var h=e.substr(0,u),f=e.substr(u+1,c-(u+1)).split(","),l=1;switch(h){case"rgba":if(4!==f.length)return null;l=s(f.pop());case"rgb":return 3!==f.length?null:[o(f[0]),o(f[1]),o(f[2]),l];case"hsla":if(4!==f.length)return null;l=s(f.pop());case"hsl":if(3!==f.length)return null;var v=(parseFloat(f[0])%360+360)%360/360,d=s(f[1]),p=s(f[2]),y=p<=.5?p*(d+1):p+d-p*d,m=2*p-y;return[r(255*a(m,y,v+1/3)),r(255*a(m,y,v)),r(255*a(m,y,v-1/3)),l];default:return null}}return null}}catch(t){}})),Ek=function(){function t(n,i,r){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;MS(this,t),this.r=n,this.g=i,this.b=r,this.a=e}return kS(t,[{key:"toString",value:function(){var t=gS(this.toArray(),4),n=t[0],i=t[1],r=t[2],e=t[3];return"rgba(".concat(Math.round(n),",").concat(Math.round(i),",").concat(Math.round(r),",").concat(e,")")}},{key:"toArray",value:function(){var t=this.r,n=this.g,i=this.b,r=this.a;return 0===r?[0,0,0,0]:[255*t/r,255*n/r,255*i/r,r]}}],[{key:"parse",value:function(n){if(n){if(n instanceof t)return n;if("string"==typeof n){var i=Tk.parseCSSColor(n);if(i)return new t(i[0]/255*i[3],i[1]/255*i[3],i[2]/255*i[3],i[3])}}}}]),t}();Ek.black=new Ek(0,0,0,1),Ek.white=new Ek(1,1,1,1),Ek.transparent=new Ek(0,0,0,0),Ek.red=new Ek(1,0,0,1),Ek.blue=new Ek(0,0,1,1);var Ak=function(){function t(n,i,r){MS(this,t),this.sensitivity=n?i?"variant":"case":i?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}return kS(t,[{key:"compare",value:function(t,n){return this.collator.compare(t,n)}},{key:"resolvedLocale",value:function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}]),t}(),Ck=kS((function t(n,i,r,e,o){MS(this,t),this.text=n,this.image=i,this.scale=r,this.fontStack=e,this.textColor=o})),Rk=function(){function t(n){MS(this,t),this.sections=n}return kS(t,[{key:"isEmpty",value:function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))}},{key:"toString",value:function(){return 0===this.sections.length?"":this.sections.map((function(t){return t.text})).join("")}},{key:"serialize",value:function(){var t,n=["format"],i=RS(this.sections);try{for(i.s();!(t=i.n()).done;){var r=t.value;if(r.image)n.push(["image",r.image.name]);else{n.push(r.text);var e={};r.fontStack&&(e["text-font"]=["literal",r.fontStack.split(",")]),r.scale&&(e["font-scale"]=r.scale),r.textColor&&(e["text-color"]=["rgba"].concat(r.textColor.toArray())),n.push(e)}}}catch(t){i.e(t)}finally{i.f()}return n}}],[{key:"fromString",value:function(n){return new t([new Ck(n,null,null,null,null)])}},{key:"factory",value:function(n){return n instanceof t?n:t.fromString(n)}}]),t}(),Pk=function(){function t(n){MS(this,t),this.name=n.name,this.available=n.available}return kS(t,[{key:"toString",value:function(){return this.name}},{key:"serialize",value:function(){return["image",this.name]}}],[{key:"fromString",value:function(n){return n?new t({name:n,available:!1}):null}}]),t}();function Ik(t,n,i,r){return"number"==typeof t&&t>=0&&t<=255&&"number"==typeof n&&n>=0&&n<=255&&"number"==typeof i&&i>=0&&i<=255?void 0===r||"number"==typeof r&&r>=0&&r<=1?null:"Invalid rgba value [".concat([t,n,i,r].join(", "),"]: 'a' must be between 0 and 1."):"Invalid rgba value [".concat(("number"==typeof r?[t,n,i,r]:[t,n,i]).join(", "),"]: 'r', 'g', and 'b' must be between 0 and 255.")}function Nk(t){if(null===t)return!0;if("string"==typeof t)return!0;if("boolean"==typeof t)return!0;if("number"==typeof t)return!0;if(t instanceof Ek)return!0;if(t instanceof Ak)return!0;if(t instanceof Rk)return!0;if(t instanceof Pk)return!0;if(Array.isArray(t)){var n,i=RS(t);try{for(i.s();!(n=i.n()).done;){if(!Nk(n.value))return!1}}catch(t){i.e(t)}finally{i.f()}return!0}if("object"===NS(t)){for(var r in t)if(!Nk(t[r]))return!1;return!0}return!1}function zk(t){if(null===t)return lk;if("string"==typeof t)return dk;if("boolean"==typeof t)return pk;if("number"==typeof t)return vk;if(t instanceof Ek)return yk;if(t instanceof Ak)return bk;if(t instanceof Rk)return gk;if(t instanceof Pk)return xk;if(Array.isArray(t)){var n,i,r=t.length,e=RS(t);try{for(e.s();!(i=e.n()).done;){var o=zk(i.value);if(n){if(n===o)continue;n=wk;break}n=o}}catch(t){e.e(t)}finally{e.f()}return jk(n||wk,r)}return mk}function Fk(t){var n=NS(t);return null===t?"":"string"===n||"number"===n||"boolean"===n?String(t):t instanceof Ek||t instanceof Rk||t instanceof Pk?t.toString():JSON.stringify(t)}var Lk=function(){function t(n,i){MS(this,t),this.type=n,this.value=i}return kS(t,[{key:"evaluate",value:function(){return this.value}},{key:"eachChild",value:function(){}},{key:"outputDefined",value:function(){return!0}},{key:"serialize",value:function(){return"array"===this.type.kind||"object"===this.type.kind?["literal",this.value]:this.value instanceof Ek?["rgba"].concat(this.value.toArray()):this.value instanceof Rk?this.value.serialize():this.value}}],[{key:"parse",value:function(n,i){if(2!==n.length)return i.error("'literal' expression requires exactly one argument, but found ".concat(n.length-1," instead."));if(!Nk(n[1]))return i.error("invalid value");var r=n[1],e=zk(r),o=i.expectedType;return"array"!==e.kind||0!==e.N||!o||"array"!==o.kind||"number"==typeof o.N&&0!==o.N||(e=o),new t(e,r)}}]),t}(),Gk=function(){function t(n){MS(this,t),this.name="ExpressionEvaluationError",this.message=n}return kS(t,[{key:"toJSON",value:function(){return this.message}}]),t}(),Dk={string:dk,number:vk,boolean:pk,object:mk},Uk=function(){function t(n,i){MS(this,t),this.type=n,this.args=i}return kS(t,[{key:"evaluate",value:function(t){for(var n=0;n<this.args.length;n++){var i=this.args[n].evaluate(t);if(!Mk(this.type,zk(i)))return i;if(n===this.args.length-1)throw new Gk("Expected value to be of type ".concat(Sk(this.type),", but found ").concat(Sk(zk(i))," instead."))}return null}},{key:"eachChild",value:function(t){this.args.forEach(t)}},{key:"outputDefined",value:function(){return this.args.every((function(t){return t.outputDefined()}))}},{key:"serialize",value:function(){var t=this.type,n=[t.kind];if("array"===t.kind){var i=t.itemType;if("string"===i.kind||"number"===i.kind||"boolean"===i.kind){n.push(i.kind);var r=t.N;("number"==typeof r||this.args.length>1)&&n.push(r)}}return n.concat(this.args.map((function(t){return t.serialize()})))}}],[{key:"parse",value:function(n,i){if(n.length<2)return i.error("Expected at least one argument.");var r,e=1,o=n[0];if("array"===o){var s,a;if(n.length>2){var u=n[1];if("string"!=typeof u||!(u in Dk)||"object"===u)return i.error('The item type argument of "array" must be one of string, number, boolean',1);s=Dk[u],e++}else s=wk;if(n.length>3){if(null!==n[2]&&("number"!=typeof n[2]||n[2]<0||n[2]!==Math.floor(n[2])))return i.error('The length argument to "array" must be a positive integer literal',2);a=n[2],e++}r=jk(s,a)}else r=Dk[o];for(var c=[];e<n.length;e++){var h=i.parse(n[e],e,wk);if(!h)return null;c.push(h)}return new t(r,c)}}]),t}(),qk=function(){function t(n){MS(this,t),this.type=gk,this.sections=n}return kS(t,[{key:"evaluate",value:function(t){return new Rk(this.sections.map((function(n){var i=n.content.evaluate(t);return zk(i)===xk?new Ck("",i,null,null,null):new Ck(Fk(i),null,n.scale?n.scale.evaluate(t):null,n.font?n.font.evaluate(t).join(","):null,n.textColor?n.textColor.evaluate(t):null)})))}},{key:"eachChild",value:function(t){var n,i=RS(this.sections);try{for(i.s();!(n=i.n()).done;){var r=n.value;t(r.content),r.scale&&t(r.scale),r.font&&t(r.font),r.textColor&&t(r.textColor)}}catch(t){i.e(t)}finally{i.f()}}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){var t,n=["format"],i=RS(this.sections);try{for(i.s();!(t=i.n()).done;){var r=t.value;n.push(r.content.serialize());var e={};r.scale&&(e["font-scale"]=r.scale.serialize()),r.font&&(e["text-font"]=r.font.serialize()),r.textColor&&(e["text-color"]=r.textColor.serialize()),n.push(e)}}catch(t){i.e(t)}finally{i.f()}return n}}],[{key:"parse",value:function(n,i){if(n.length<2)return i.error("Expected at least one argument.");var r=n[1];if(!Array.isArray(r)&&"object"===NS(r))return i.error("First argument must be an image or text section.");for(var e=[],o=!1,s=1;s<=n.length-1;++s){var a=n[s];if(o&&"object"===NS(a)&&!Array.isArray(a)){o=!1;var u=null;if(a["font-scale"]&&!(u=i.parse(a["font-scale"],1,vk)))return null;var c=null;if(a["text-font"]&&!(c=i.parse(a["text-font"],1,jk(dk))))return null;var h=null;if(a["text-color"]&&!(h=i.parse(a["text-color"],1,yk)))return null;var f=e[e.length-1];f.scale=u,f.font=c,f.textColor=h}else{var l=i.parse(n[s],1,wk);if(!l)return null;var v=l.type.kind;if("string"!==v&&"value"!==v&&"null"!==v&&"resolvedImage"!==v)return i.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");o=!0,e.push({content:l,scale:null,font:null,textColor:null})}}return new t(e)}}]),t}(),Bk=function(){function t(n){MS(this,t),this.type=xk,this.input=n}return kS(t,[{key:"evaluate",value:function(t){var n=this.input.evaluate(t),i=Pk.fromString(n);return i&&t.availableImages&&(i.available=t.availableImages.indexOf(n)>-1),i}},{key:"eachChild",value:function(t){t(this.input)}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){return["image",this.input.serialize()]}}],[{key:"parse",value:function(n,i){if(2!==n.length)return i.error("Expected two arguments.");var r=i.parse(n[1],1,dk);return r?new t(r):i.error("No image name provided.")}}]),t}(),Wk={"to-boolean":pk,"to-color":yk,"to-number":vk,"to-string":dk},Vk=function(){function t(n,i){MS(this,t),this.type=n,this.args=i}return kS(t,[{key:"evaluate",value:function(t){if("boolean"===this.type.kind)return Boolean(this.args[0].evaluate(t));if("color"===this.type.kind){var n,i,r,e=RS(this.args);try{for(e.s();!(r=e.n()).done;){if(n=r.value.evaluate(t),i=null,n instanceof Ek)return n;if("string"==typeof n){var o=t.parseColor(n);if(o)return o}else if(Array.isArray(n)&&!(i=n.length<3||n.length>4?"Invalid rbga value ".concat(JSON.stringify(n),": expected an array containing either three or four numeric values."):Ik(n[0],n[1],n[2],n[3])))return new Ek(n[0]/255,n[1]/255,n[2]/255,n[3])}}catch(t){e.e(t)}finally{e.f()}throw new Gk(i||"Could not parse color from value '".concat("string"==typeof n?n:String(JSON.stringify(n)),"'"))}if("number"===this.type.kind){var s,a=null,u=RS(this.args);try{for(u.s();!(s=u.n()).done;){if(null===(a=s.value.evaluate(t)))return 0;var c=Number(a);if(!isNaN(c))return c}}catch(t){u.e(t)}finally{u.f()}throw new Gk("Could not convert ".concat(JSON.stringify(a)," to number."))}return"formatted"===this.type.kind?Rk.fromString(Fk(this.args[0].evaluate(t))):"resolvedImage"===this.type.kind?Pk.fromString(Fk(this.args[0].evaluate(t))):Fk(this.args[0].evaluate(t))}},{key:"eachChild",value:function(t){this.args.forEach(t)}},{key:"outputDefined",value:function(){return this.args.every((function(t){return t.outputDefined()}))}},{key:"serialize",value:function(){if("formatted"===this.type.kind)return new qk([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if("resolvedImage"===this.type.kind)return new Bk(this.args[0]).serialize();var t=["to-".concat(this.type.kind)];return this.eachChild((function(n){t.push(n.serialize())})),t}}],[{key:"parse",value:function(n,i){if(n.length<2)return i.error("Expected at least one argument.");var r=n[0];if(("to-boolean"===r||"to-string"===r)&&2!==n.length)return i.error("Expected one argument.");for(var e=Wk[r],o=[],s=1;s<n.length;s++){var a=i.parse(n[s],s,wk);if(!a)return null;o.push(a)}return new t(e,o)}}]),t}(),Xk=["Unknown","Point","LineString","Polygon"],Hk=function(){function t(){MS(this,t),this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}return kS(t,[{key:"id",value:function(){return this.feature&&"id"in this.feature?this.feature.id:null}},{key:"geometryType",value:function(){return this.feature?"number"==typeof this.feature.type?Xk[this.feature.type]:this.feature.type:null}},{key:"geometry",value:function(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}},{key:"canonicalID",value:function(){return this.canonical}},{key:"properties",value:function(){return this.feature&&this.feature.properties||{}}},{key:"parseColor",value:function(t){var n=this._parseColorCache[t];return n||(n=this._parseColorCache[t]=Ek.parse(t)),n}}]),t}(),Jk=function(){function t(n,i,r,e){MS(this,t),this.name=n,this.type=i,this._evaluate=r,this.args=e}return kS(t,[{key:"evaluate",value:function(t){return this._evaluate(t,this.args)}},{key:"eachChild",value:function(t){this.args.forEach(t)}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){return[this.name].concat(this.args.map((function(t){return t.serialize()})))}}],[{key:"parse",value:function(n,i){var r=n[0],e=t.definitions[r];if(!e)return i.error('Unknown expression "'.concat(r,'". If you wanted a literal array, use ["literal", [...]].'),0);var o,s=Array.isArray(e)?e[0]:e.type,a=Array.isArray(e)?[[e[1],e[2]]]:e.overloads,u=a.filter((function(t){var i=gS(t,1)[0];return!Array.isArray(i)||i.length===n.length-1})),c=null,h=RS(u);try{for(h.s();!(o=h.n()).done;){var f=gS(o.value,2),l=f[0],v=f[1];c=new wM(i.registry,i.path,null,i.scope);for(var d=[],p=!1,y=1;y<n.length;y++){var m=n[y],w=Array.isArray(l)?l[y-1]:l.type,b=c.parse(m,1+d.length,w);if(!b){p=!0;break}d.push(b)}if(!p)if(Array.isArray(l)&&l.length!==d.length)c.error("Expected ".concat(l.length," arguments, but found ").concat(d.length," instead."));else{for(var g=0;g<d.length;g++){var x=Array.isArray(l)?l[g]:l.type,j=d[g];c.concat(g+1).checkSubtype(x,j.type)}if(0===c.errors.length)return new t(r,s,v,d)}}}catch(t){h.e(t)}finally{h.f()}if(1===u.length){var S;(S=i.errors).push.apply(S,wS(c.errors))}else{for(var k=(u.length?u:a).map((function(t){var n,i=gS(t,1)[0];return n=i,Array.isArray(n)?"(".concat(n.map(Sk).join(", "),")"):"(".concat(Sk(n.type),"...)")})).join(" | "),M=[],_=1;_<n.length;_++){var O=i.parse(n[_],1+M.length);if(!O)return null;M.push(Sk(O.type))}i.error("Expected arguments of type ".concat(k,", but found (").concat(M.join(", "),") instead."))}return null}},{key:"register",value:function(n,i){for(var r in t.definitions=i,i)n[r]=t}}]),t}();var Kk=function(){function t(n,i,r){MS(this,t),this.type=bk,this.locale=r,this.caseSensitive=n,this.diacriticSensitive=i}return kS(t,[{key:"evaluate",value:function(t){return new Ak(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}},{key:"eachChild",value:function(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale)}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){var t={};return t["case-sensitive"]=this.caseSensitive.serialize(),t["diacritic-sensitive"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),["collator",t]}}],[{key:"parse",value:function(n,i){if(2!==n.length)return i.error("Expected one argument.");var r=n[1];if("object"!==NS(r)||Array.isArray(r))return i.error("Collator options argument must be an object.");var e=i.parse(void 0!==r["case-sensitive"]&&r["case-sensitive"],1,pk);if(!e)return null;var o=i.parse(void 0!==r["diacritic-sensitive"]&&r["diacritic-sensitive"],1,pk);if(!o)return null;var s=null;return r.locale&&!(s=i.parse(r.locale,1,dk))?null:new t(e,o,s)}}]),t}(),Yk=8192;function Zk(t,n){t[0]=Math.min(t[0],n[0]),t[1]=Math.min(t[1],n[1]),t[2]=Math.max(t[2],n[0]),t[3]=Math.max(t[3],n[1])}function $k(t,n){return!(t[0]<=n[0])&&(!(t[2]>=n[2])&&(!(t[1]<=n[1])&&!(t[3]>=n[3])))}function Qk(t,n){var i,r=(180+t[0])/360,e=(i=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i*Math.PI/360)))/360),o=Math.pow(2,n.z);return[Math.round(r*o*Yk),Math.round(e*o*Yk)]}function tM(t,n,i){var r=t[0]-n[0],e=t[1]-n[1],o=t[0]-i[0],s=t[1]-i[1];return r*s-o*e==0&&r*o<=0&&e*s<=0}function nM(t,n,i){return n[1]>t[1]!=i[1]>t[1]&&t[0]<(i[0]-n[0])*(t[1]-n[1])/(i[1]-n[1])+n[0]}function iM(t,n){for(var i=!1,r=0,e=n.length;r<e;r++)for(var o=n[r],s=0,a=o.length;s<a-1;s++){if(tM(t,o[s],o[s+1]))return!1;nM(t,o[s],o[s+1])&&(i=!i)}return i}function rM(t,n){for(var i=0;i<n.length;i++)if(iM(t,n[i]))return!0;return!1}function eM(t,n,i,r){var e=t[0]-i[0],o=t[1]-i[1],s=n[0]-i[0],a=n[1]-i[1],u=r[0]-i[0],c=r[1]-i[1],h=e*c-u*o,f=s*c-u*a;return h>0&&f<0||h<0&&f>0}function oM(t,n,i){var r,e,o,s,a,u,c,h,f,l=RS(i);try{for(l.s();!(r=l.n()).done;)for(var v=r.value,d=0;d<v.length-1;++d)if(e=t,o=n,s=v[d],a=v[d+1],u=void 0,c=void 0,h=void 0,f=void 0,h=[o[0]-e[0],o[1]-e[1]],f=[a[0]-s[0],a[1]-s[1]],0!=(u=f)[0]*(c=h)[1]-u[1]*c[0]&&eM(e,o,s,a)&&eM(s,a,e,o))return!0}catch(t){l.e(t)}finally{l.f()}return!1}function sM(t,n){for(var i=0;i<t.length;++i)if(!iM(t[i],n))return!1;for(var r=0;r<t.length-1;++r)if(oM(t[r],t[r+1],n))return!1;return!0}function aM(t,n){for(var i=0;i<n.length;i++)if(sM(t,n[i]))return!0;return!1}function uM(t,n,i){for(var r=[],e=0;e<t.length;e++){for(var o=[],s=0;s<t[e].length;s++){var a=Qk(t[e][s],i);Zk(n,a),o.push(a)}r.push(o)}return r}function cM(t,n,i){for(var r=[],e=0;e<t.length;e++){var o=uM(t[e],n,i);r.push(o)}return r}function hM(t,n,i,r){if(t[0]<i[0]||t[0]>i[2]){var e=.5*r,o=t[0]-i[0]>e?-r:i[0]-t[0]>e?r:0;0===o&&(o=t[0]-i[2]>e?-r:i[2]-t[0]>e?r:0),t[0]+=o}Zk(n,t)}function fM(t,n,i,r){var e,o=Math.pow(2,r.z)*Yk,s=[r.x*Yk,r.y*Yk],a=[],u=RS(t);try{for(u.s();!(e=u.n()).done;){var c,h=RS(e.value);try{for(h.s();!(c=h.n()).done;){var f=c.value,l=[f.x+s[0],f.y+s[1]];hM(l,n,i,o),a.push(l)}}catch(t){h.e(t)}finally{h.f()}}}catch(t){u.e(t)}finally{u.f()}return a}function lM(t,n,i,r){var e,o=Math.pow(2,r.z)*Yk,s=[r.x*Yk,r.y*Yk],a=[],u=RS(t);try{for(u.s();!(e=u.n()).done;){var c,h=e.value,f=[],l=RS(h);try{for(l.s();!(c=l.n()).done;){var v=c.value,d=[v.x+s[0],v.y+s[1]];Zk(n,d),f.push(d)}}catch(t){l.e(t)}finally{l.f()}a.push(f)}}catch(t){u.e(t)}finally{u.f()}if(n[2]-n[0]<=o/2){!function(t){t[0]=t[1]=1/0,t[2]=t[3]=-1/0}(n);var p,y=RS(a);try{for(y.s();!(p=y.n()).done;){var m,w=RS(p.value);try{for(w.s();!(m=w.n()).done;){hM(m.value,n,i,o)}}catch(t){w.e(t)}finally{w.f()}}}catch(t){y.e(t)}finally{y.f()}}return a}var vM=function(){function t(n,i){MS(this,t),this.type=pk,this.geojson=n,this.geometries=i}return kS(t,[{key:"evaluate",value:function(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,n){var i=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],e=t.canonicalID();if("Polygon"===n.type){var o=uM(n.coordinates,r,e),s=fM(t.geometry(),i,r,e);if(!$k(i,r))return!1;var a,u=RS(s);try{for(u.s();!(a=u.n()).done;)if(!iM(a.value,o))return!1}catch(t){u.e(t)}finally{u.f()}}if("MultiPolygon"===n.type){var c=cM(n.coordinates,r,e),h=fM(t.geometry(),i,r,e);if(!$k(i,r))return!1;var f,l=RS(h);try{for(l.s();!(f=l.n()).done;)if(!rM(f.value,c))return!1}catch(t){l.e(t)}finally{l.f()}}return!0}(t,this.geometries);if("LineString"===t.geometryType())return function(t,n){var i=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],e=t.canonicalID();if("Polygon"===n.type){var o=uM(n.coordinates,r,e),s=lM(t.geometry(),i,r,e);if(!$k(i,r))return!1;var a,u=RS(s);try{for(u.s();!(a=u.n()).done;)if(!sM(a.value,o))return!1}catch(t){u.e(t)}finally{u.f()}}if("MultiPolygon"===n.type){var c=cM(n.coordinates,r,e),h=lM(t.geometry(),i,r,e);if(!$k(i,r))return!1;var f,l=RS(h);try{for(l.s();!(f=l.n()).done;)if(!aM(f.value,c))return!1}catch(t){l.e(t)}finally{l.f()}}return!0}(t,this.geometries)}return!1}},{key:"eachChild",value:function(){}},{key:"outputDefined",value:function(){return!0}},{key:"serialize",value:function(){return["within",this.geojson]}}],[{key:"parse",value:function(n,i){if(2!==n.length)return i.error("'within' expression requires exactly one argument, but found ".concat(n.length-1," instead."));if(Nk(n[1])){var r=n[1];if("FeatureCollection"===r.type)for(var e=0;e<r.features.length;++e){var o=r.features[e].geometry.type;if("Polygon"===o||"MultiPolygon"===o)return new t(r,r.features[e].geometry)}else if("Feature"===r.type){var s=r.geometry.type;if("Polygon"===s||"MultiPolygon"===s)return new t(r,r.geometry)}else if("Polygon"===r.type||"MultiPolygon"===r.type)return new t(r,r)}return i.error("'within' expression requires valid geojson object that contains polygon geometry type.")}}]),t}();function dM(t){if(t instanceof Jk){if("get"===t.name&&1===t.args.length)return!1;if("feature-state"===t.name)return!1;if("has"===t.name&&1===t.args.length)return!1;if("properties"===t.name||"geometry-type"===t.name||"id"===t.name)return!1;if(/^filter-/.test(t.name))return!1}if(t instanceof vM)return!1;var n=!0;return t.eachChild((function(t){n&&!dM(t)&&(n=!1)})),n}function pM(t){if(t instanceof Jk&&"feature-state"===t.name)return!1;var n=!0;return t.eachChild((function(t){n&&!pM(t)&&(n=!1)})),n}function yM(t,n){if(t instanceof Jk&&n.indexOf(t.name)>=0)return!1;var i=!0;return t.eachChild((function(t){i&&!yM(t,n)&&(i=!1)})),i}var mM=function(){function t(n,i){MS(this,t),this.type=i.type,this.name=n,this.boundExpression=i}return kS(t,[{key:"evaluate",value:function(t){return this.boundExpression.evaluate(t)}},{key:"eachChild",value:function(){}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){return["var",this.name]}}],[{key:"parse",value:function(n,i){if(2!==n.length||"string"!=typeof n[1])return i.error("'var' expression requires exactly one string literal argument.");var r=n[1];return i.scope.has(r)?new t(r,i.scope.get(r)):i.error('Unknown variable "'.concat(r,'". Make sure "').concat(r,'" has been bound in an enclosing "let" expression before using it.'),1)}}]),t}(),wM=function(){function t(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new fk,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];MS(this,t),this.registry=n,this.path=i,this.key=i.map((function(t){return"[".concat(t,"]")})).join(""),this.scope=e,this.errors=o,this.expectedType=r}return kS(t,[{key:"parse",value:function(t,n,i,r){var e=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return n?this.concat(n,i,r)._parse(t,e):this._parse(t,e)}},{key:"_parse",value:function(t,n){function i(t,n,i){return"assert"===i?new Uk(n,[t]):"coerce"===i?new Vk(n,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var r=t[0];if("string"!=typeof r)return this.error("Expression name must be a string, but found ".concat(NS(r),' instead. If you wanted a literal array, use ["literal", [...]].'),0),null;var e=this.registry[r];if(e){var o=e.parse(t,this);if(!o)return null;if(this.expectedType){var s=this.expectedType,a=o.type;if("string"!==s.kind&&"number"!==s.kind&&"boolean"!==s.kind&&"object"!==s.kind&&"array"!==s.kind||"value"!==a.kind)if("color"!==s.kind&&"formatted"!==s.kind&&"resolvedImage"!==s.kind||"value"!==a.kind&&"string"!==a.kind){if(this.checkSubtype(s,a))return null}else o=i(o,s,n.typeAnnotation||"coerce");else o=i(o,s,n.typeAnnotation||"assert")}if(!(o instanceof Lk)&&"resolvedImage"!==o.type.kind&&bM(o)){var u=new Hk;try{o=new Lk(o.type,o.evaluate(u))}catch(t){return this.error(t.message),null}}return o}return this.error('Unknown expression "'.concat(r,'". If you wanted a literal array, use ["literal", [...]].'),0)}return void 0===t?this.error("'undefined' value invalid. Use null instead."):"object"===NS(t)?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found ".concat(NS(t)," instead."))}},{key:"concat",value:function(n,i,r){var e="number"==typeof n?this.path.concat(n):this.path,o=r?this.scope.concat(r):this.scope;return new t(this.registry,e,i||null,o,this.errors)}},{key:"error",value:function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var e="".concat(this.key).concat(i.map((function(t){return"[".concat(t,"]")})).join(""));this.errors.push(new hk(e,t))}},{key:"checkSubtype",value:function(t,n){var i=Mk(t,n);return i&&this.error(i),i}}]),t}();function bM(t){if(t instanceof mM)return bM(t.boundExpression);if(t instanceof Jk&&"error"===t.name)return!1;if(t instanceof Kk)return!1;if(t instanceof vM)return!1;var n=t instanceof Vk||t instanceof Uk,i=!0;return t.eachChild((function(t){i=n?i&&bM(t):i&&t instanceof Lk})),!!i&&(dM(t)&&yM(t,["zoom","heatmap-density","line-progress","sky-radial-progress","accumulated","is-supported-script"]))}function gM(t,n){for(var i,r,e=t.length-1,o=0,s=e,a=0;o<=s;)if(i=t[a=Math.floor((o+s)/2)],r=t[a+1],i<=n){if(a===e||n<r)return a;o=a+1}else{if(!(i>n))throw new Gk("Input is not a number.");s=a-1}return 0}var xM=function(){function t(n,i,r){MS(this,t),this.type=n,this.input=i,this.labels=[],this.outputs=[];var e,o=RS(r);try{for(o.s();!(e=o.n()).done;){var s=gS(e.value,2),a=s[0],u=s[1];this.labels.push(a),this.outputs.push(u)}}catch(t){o.e(t)}finally{o.f()}}return kS(t,[{key:"evaluate",value:function(t){var n=this.labels,i=this.outputs;if(1===n.length)return i[0].evaluate(t);var r=this.input.evaluate(t);if(r<=n[0])return i[0].evaluate(t);var e=n.length;return r>=n[e-1]?i[e-1].evaluate(t):i[gM(n,r)].evaluate(t)}},{key:"eachChild",value:function(t){t(this.input);var n,i=RS(this.outputs);try{for(i.s();!(n=i.n()).done;){t(n.value)}}catch(t){i.e(t)}finally{i.f()}}},{key:"outputDefined",value:function(){return this.outputs.every((function(t){return t.outputDefined()}))}},{key:"serialize",value:function(){for(var t=["step",this.input.serialize()],n=0;n<this.labels.length;n++)n>0&&t.push(this.labels[n]),t.push(this.outputs[n].serialize());return t}}],[{key:"parse",value:function(n,i){if(n.length-1<4)return i.error("Expected at least 4 arguments, but found only ".concat(n.length-1,"."));if((n.length-1)%2!=0)return i.error("Expected an even number of arguments.");var r=i.parse(n[1],1,vk);if(!r)return null;var e=[],o=null;i.expectedType&&"value"!==i.expectedType.kind&&(o=i.expectedType);for(var s=1;s<n.length;s+=2){var a=1===s?-1/0:n[s],u=n[s+1],c=s,h=s+1;if("number"!=typeof a)return i.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',c);if(e.length&&e[e.length-1][0]>=a)return i.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',c);var f=i.parse(u,h,o);if(!f)return null;o=o||f.type,e.push([a,f])}return new t(o,r,e)}}]),t}(),jM=SM;function SM(t,n,i,r){this.cx=3*t,this.bx=3*(i-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*n,this.by=3*(r-n)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=r,this.p2x=i,this.p2y=r}function kM(t,n,i){return t*(1-i)+n*i}SM.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},SM.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},SM.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},SM.prototype.solveCurveX=function(t,n){var i,r,e,o,s;for(void 0===n&&(n=1e-6),e=t,s=0;s<8;s++){if(o=this.sampleCurveX(e)-t,Math.abs(o)<n)return e;var a=this.sampleCurveDerivativeX(e);if(Math.abs(a)<1e-6)break;e-=o/a}if((e=t)<(i=0))return i;if(e>(r=1))return r;for(;i<r;){if(o=this.sampleCurveX(e),Math.abs(o-t)<n)return e;t>o?i=e:r=e,e=.5*(r-i)+i}return e},SM.prototype.solve=function(t,n){return this.sampleCurveY(this.solveCurveX(t,n))};var MM=Object.freeze({__proto__:null,number:kM,color:function(t,n,i){return new Ek(kM(t.r,n.r,i),kM(t.g,n.g,i),kM(t.b,n.b,i),kM(t.a,n.a,i))},array:function(t,n,i){return t.map((function(t,r){return kM(t,n[r],i)}))}}),_M=.95047,OM=1.08883,TM=4/29,EM=6/29,AM=3*EM*EM,CM=Math.PI/180,RM=180/Math.PI;function PM(t){return t>.008856451679035631?Math.pow(t,1/3):t/AM+TM}function IM(t){return t>EM?t*t*t:AM*(t-TM)}function NM(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function zM(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function FM(t){var n=zM(t.r),i=zM(t.g),r=zM(t.b),e=PM((.4124564*n+.3575761*i+.1804375*r)/_M),o=PM((.2126729*n+.7151522*i+.072175*r)/1);return{l:116*o-16,a:500*(e-o),b:200*(o-PM((.0193339*n+.119192*i+.9503041*r)/OM)),alpha:t.a}}function LM(t){var n=(t.l+16)/116,i=isNaN(t.a)?n:n+t.a/500,r=isNaN(t.b)?n:n-t.b/200;return n=1*IM(n),i=_M*IM(i),r=OM*IM(r),new Ek(NM(3.2404542*i-1.5371385*n-.4985314*r),NM(-.969266*i+1.8760108*n+.041556*r),NM(.0556434*i-.2040259*n+1.0572252*r),t.alpha)}function GM(t,n,i){var r=n-t;return t+i*(r>180||r<-180?r-360*Math.round(r/360):r)}var DM={forward:FM,reverse:LM,interpolate:function(t,n,i){return{l:kM(t.l,n.l,i),a:kM(t.a,n.a,i),b:kM(t.b,n.b,i),alpha:kM(t.alpha,n.alpha,i)}}},UM={forward:function(t){var n=FM(t),i=n.l,r=n.a,e=n.b,o=Math.atan2(e,r)*RM;return{h:o<0?o+360:o,c:Math.sqrt(r*r+e*e),l:i,alpha:t.a}},reverse:function(t){var n=t.h*CM,i=t.c;return LM({l:t.l,a:Math.cos(n)*i,b:Math.sin(n)*i,alpha:t.alpha})},interpolate:function(t,n,i){return{h:GM(t.h,n.h,i),c:kM(t.c,n.c,i),l:kM(t.l,n.l,i),alpha:kM(t.alpha,n.alpha,i)}}},qM=function(){function t(n,i,r,e,o){MS(this,t),this.type=n,this.operator=i,this.interpolation=r,this.input=e,this.labels=[],this.outputs=[];var s,a=RS(o);try{for(a.s();!(s=a.n()).done;){var u=gS(s.value,2),c=u[0],h=u[1];this.labels.push(c),this.outputs.push(h)}}catch(t){a.e(t)}finally{a.f()}}return kS(t,[{key:"evaluate",value:function(n){var i=this.labels,r=this.outputs;if(1===i.length)return r[0].evaluate(n);var e=this.input.evaluate(n);if(e<=i[0])return r[0].evaluate(n);var o=i.length;if(e>=i[o-1])return r[o-1].evaluate(n);var s=gM(i,e),a=i[s],u=i[s+1],c=t.interpolationFactor(this.interpolation,e,a,u),h=r[s].evaluate(n),f=r[s+1].evaluate(n);return"interpolate"===this.operator?MM[this.type.kind.toLowerCase()](h,f,c):"interpolate-hcl"===this.operator?UM.reverse(UM.interpolate(UM.forward(h),UM.forward(f),c)):DM.reverse(DM.interpolate(DM.forward(h),DM.forward(f),c))}},{key:"eachChild",value:function(t){t(this.input);var n,i=RS(this.outputs);try{for(i.s();!(n=i.n()).done;){t(n.value)}}catch(t){i.e(t)}finally{i.f()}}},{key:"outputDefined",value:function(){return this.outputs.every((function(t){return t.outputDefined()}))}},{key:"serialize",value:function(){var t;t="linear"===this.interpolation.name?["linear"]:"exponential"===this.interpolation.name?1===this.interpolation.base?["linear"]:["exponential",this.interpolation.base]:["cubic-bezier"].concat(this.interpolation.controlPoints);for(var n=[this.operator,t,this.input.serialize()],i=0;i<this.labels.length;i++)n.push(this.labels[i],this.outputs[i].serialize());return n}}],[{key:"interpolationFactor",value:function(t,n,i,r){var e=0;if("exponential"===t.name)e=BM(n,t.base,i,r);else if("linear"===t.name)e=BM(n,1,i,r);else if("cubic-bezier"===t.name){var o=t.controlPoints;e=new jM(o[0],o[1],o[2],o[3]).solve(BM(n,1,i,r))}return e}},{key:"parse",value:function(n,i){var r,e=jS(r=n)||bS(r)||PS(r)||xS(),o=e[0],s=e[1],a=e[2],u=e.slice(3);if(!Array.isArray(s)||0===s.length)return i.error("Expected an interpolation type expression.",1);if("linear"===s[0])s={name:"linear"};else if("exponential"===s[0]){var c=s[1];if("number"!=typeof c)return i.error("Exponential interpolation requires a numeric base.",1,1);s={name:"exponential",base:c}}else{if("cubic-bezier"!==s[0])return i.error("Unknown interpolation type ".concat(String(s[0])),1,0);var h=s.slice(1);if(4!==h.length||h.some((function(t){return"number"!=typeof t||t<0||t>1})))return i.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);s={name:"cubic-bezier",controlPoints:h}}if(n.length-1<4)return i.error("Expected at least 4 arguments, but found only ".concat(n.length-1,"."));if((n.length-1)%2!=0)return i.error("Expected an even number of arguments.");if(!(a=i.parse(a,2,vk)))return null;var f=[],l=null;"interpolate-hcl"===o||"interpolate-lab"===o?l=yk:i.expectedType&&"value"!==i.expectedType.kind&&(l=i.expectedType);for(var v=0;v<u.length;v+=2){var d=u[v],p=u[v+1],y=v+3,m=v+4;if("number"!=typeof d)return i.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.',y);if(f.length&&f[f.length-1][0]>=d)return i.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',y);var w=i.parse(p,m,l);if(!w)return null;l=l||w.type,f.push([d,w])}return"number"===l.kind||"color"===l.kind||"array"===l.kind&&"number"===l.itemType.kind&&"number"==typeof l.N?new t(l,o,s,a,f):i.error("Type ".concat(Sk(l)," is not interpolatable."))}}]),t}();function BM(t,n,i,r){var e=r-i,o=t-i;return 0===e?0:1===n?o/e:(Math.pow(n,o)-1)/(Math.pow(n,e)-1)}var WM=function(){function t(n,i){MS(this,t),this.type=n,this.args=i}return kS(t,[{key:"evaluate",value:function(t){var n,i,r=null,e=0,o=RS(this.args);try{for(o.s();!(i=o.n()).done;){var s=i.value;if(e++,(r=s.evaluate(t))&&r instanceof Pk&&!r.available&&(n||(n=r.name),r=null,e===this.args.length&&(r=n)),null!==r)break}}catch(t){o.e(t)}finally{o.f()}return r}},{key:"eachChild",value:function(t){this.args.forEach(t)}},{key:"outputDefined",value:function(){return this.args.every((function(t){return t.outputDefined()}))}},{key:"serialize",value:function(){var t=["coalesce"];return this.eachChild((function(n){t.push(n.serialize())})),t}}],[{key:"parse",value:function(n,i){if(n.length<2)return i.error("Expectected at least one argument.");var r=null,e=i.expectedType;e&&"value"!==e.kind&&(r=e);var o,s=[],a=RS(n.slice(1));try{for(a.s();!(o=a.n()).done;){var u=o.value,c=i.parse(u,1+s.length,r,void 0,{typeAnnotation:"omit"});if(!c)return null;r=r||c.type,s.push(c)}}catch(t){a.e(t)}finally{a.f()}return new t(e&&s.some((function(t){return Mk(e,t.type)}))?wk:r,s)}}]),t}(),VM=function(){function t(n,i){MS(this,t),this.type=i.type,this.bindings=[].concat(n),this.result=i}return kS(t,[{key:"evaluate",value:function(t){return this.result.evaluate(t)}},{key:"eachChild",value:function(t){var n,i=RS(this.bindings);try{for(i.s();!(n=i.n()).done;){t(n.value[1])}}catch(t){i.e(t)}finally{i.f()}t(this.result)}},{key:"outputDefined",value:function(){return this.result.outputDefined()}},{key:"serialize",value:function(){var t,n=["let"],i=RS(this.bindings);try{for(i.s();!(t=i.n()).done;){var r=gS(t.value,2),e=r[0],o=r[1];n.push(e,o.serialize())}}catch(t){i.e(t)}finally{i.f()}return n.push(this.result.serialize()),n}}],[{key:"parse",value:function(n,i){if(n.length<4)return i.error("Expected at least 3 arguments, but found ".concat(n.length-1," instead."));for(var r=[],e=1;e<n.length-1;e+=2){var o=n[e];if("string"!=typeof o)return i.error("Expected string, but found ".concat(NS(o)," instead."),e);if(/[^a-zA-Z0-9_]/.test(o))return i.error("Variable names must contain only alphanumeric characters or '_'.",e);var s=i.parse(n[e+1],e+1);if(!s)return null;r.push([o,s])}var a=i.parse(n[n.length-1],n.length-1,i.expectedType,r);return a?new t(r,a):null}}]),t}(),XM=function(){function t(n,i,r){MS(this,t),this.type=n,this.index=i,this.input=r}return kS(t,[{key:"evaluate",value:function(t){var n=this.index.evaluate(t),i=this.input.evaluate(t);if(n<0)throw new Gk("Array index out of bounds: ".concat(n," < 0."));if(n>=i.length)throw new Gk("Array index out of bounds: ".concat(n," > ").concat(i.length-1,"."));if(n!==Math.floor(n))throw new Gk("Array index must be an integer, but found ".concat(n," instead."));return i[n]}},{key:"eachChild",value:function(t){t(this.index),t(this.input)}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){return["at",this.index.serialize(),this.input.serialize()]}}],[{key:"parse",value:function(n,i){if(3!==n.length)return i.error("Expected 2 arguments, but found ".concat(n.length-1," instead."));var r=i.parse(n[1],1,vk),e=i.parse(n[2],2,jk(i.expectedType||wk));return r&&e?new t(e.type.itemType,r,e):null}}]),t}(),HM=function(){function t(n,i){MS(this,t),this.type=pk,this.needle=n,this.haystack=i}return kS(t,[{key:"evaluate",value:function(t){var n=this.needle.evaluate(t),i=this.haystack.evaluate(t);if(!i)return!1;if(!Ok(n,["boolean","string","number","null"]))throw new Gk("Expected first argument to be of type boolean, string, number or null, but found ".concat(Sk(zk(n))," instead."));if(!Ok(i,["string","array"]))throw new Gk("Expected second argument to be of type array or string, but found ".concat(Sk(zk(i))," instead."));return i.indexOf(n)>=0}},{key:"eachChild",value:function(t){t(this.needle),t(this.haystack)}},{key:"outputDefined",value:function(){return!0}},{key:"serialize",value:function(){return["in",this.needle.serialize(),this.haystack.serialize()]}}],[{key:"parse",value:function(n,i){if(3!==n.length)return i.error("Expected 2 arguments, but found ".concat(n.length-1," instead."));var r=i.parse(n[1],1,wk),e=i.parse(n[2],2,wk);return r&&e?_k(r.type,[pk,dk,vk,lk,wk])?new t(r,e):i.error("Expected first argument to be of type boolean, string, number or null, but found ".concat(Sk(r.type)," instead")):null}}]),t}(),JM=function(){function t(n,i,r){MS(this,t),this.type=vk,this.needle=n,this.haystack=i,this.fromIndex=r}return kS(t,[{key:"evaluate",value:function(t){var n=this.needle.evaluate(t),i=this.haystack.evaluate(t);if(!Ok(n,["boolean","string","number","null"]))throw new Gk("Expected first argument to be of type boolean, string, number or null, but found ".concat(Sk(zk(n))," instead."));if(!Ok(i,["string","array"]))throw new Gk("Expected second argument to be of type array or string, but found ".concat(Sk(zk(i))," instead."));if(this.fromIndex){var r=this.fromIndex.evaluate(t);return i.indexOf(n,r)}return i.indexOf(n)}},{key:"eachChild",value:function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),t]}return["index-of",this.needle.serialize(),this.haystack.serialize()]}}],[{key:"parse",value:function(n,i){if(n.length<=2||n.length>=5)return i.error("Expected 3 or 4 arguments, but found ".concat(n.length-1," instead."));var r=i.parse(n[1],1,wk),e=i.parse(n[2],2,wk);if(!r||!e)return null;if(!_k(r.type,[pk,dk,vk,lk,wk]))return i.error("Expected first argument to be of type boolean, string, number or null, but found ".concat(Sk(r.type)," instead"));if(4===n.length){var o=i.parse(n[3],3,vk);return o?new t(r,e,o):null}return new t(r,e)}}]),t}(),KM=function(){function t(n,i,r,e,o,s){MS(this,t),this.inputType=n,this.type=i,this.input=r,this.cases=e,this.outputs=o,this.otherwise=s}return kS(t,[{key:"evaluate",value:function(t){var n=this.input.evaluate(t);return(zk(n)===this.inputType&&this.outputs[this.cases[n]]||this.otherwise).evaluate(t)}},{key:"eachChild",value:function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)}},{key:"outputDefined",value:function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()}},{key:"serialize",value:function(){var t,n=this,i=["match",this.input.serialize()],r=[],e={},o=RS(Object.keys(this.cases).sort());try{for(o.s();!(t=o.n()).done;){var s=t.value,a=e[this.cases[s]];void 0===a?(e[this.cases[s]]=r.length,r.push([this.cases[s],[s]])):r[a][1].push(s)}}catch(t){o.e(t)}finally{o.f()}for(var u=function(t){return"number"===n.inputType.kind?Number(t):t},c=0,h=r;c<h.length;c++){var f=gS(h[c],2),l=f[0],v=f[1];1===v.length?i.push(u(v[0])):i.push(v.map(u)),i.push(this.outputs[l].serialize())}return i.push(this.otherwise.serialize()),i}}],[{key:"parse",value:function(n,i){if(n.length<5)return i.error("Expected at least 4 arguments, but found only ".concat(n.length-1,"."));if(n.length%2!=1)return i.error("Expected an even number of arguments.");var r,e;i.expectedType&&"value"!==i.expectedType.kind&&(e=i.expectedType);for(var o={},s=[],a=2;a<n.length-1;a+=2){var u=n[a],c=n[a+1];Array.isArray(u)||(u=[u]);var h=i.concat(a);if(0===u.length)return h.error("Expected at least one branch label.");var f,l=RS(u);try{for(l.s();!(f=l.n()).done;){var v=f.value;if("number"!=typeof v&&"string"!=typeof v)return h.error("Branch labels must be numbers or strings.");if("number"==typeof v&&Math.abs(v)>Number.MAX_SAFE_INTEGER)return h.error("Branch labels must be integers no larger than ".concat(Number.MAX_SAFE_INTEGER,"."));if("number"==typeof v&&Math.floor(v)!==v)return h.error("Numeric branch labels must be integer values.");if(r){if(h.checkSubtype(r,zk(v)))return null}else r=zk(v);if(void 0!==o[String(v)])return h.error("Branch labels must be unique.");o[String(v)]=s.length}}catch(t){l.e(t)}finally{l.f()}var d=i.parse(c,a,e);if(!d)return null;e=e||d.type,s.push(d)}var p=i.parse(n[1],1,wk);if(!p)return null;var y=i.parse(n[n.length-1],n.length-1,e);return y?"value"!==p.type.kind&&i.concat(1).checkSubtype(r,p.type)?null:new t(r,e,p,o,s,y):null}}]),t}(),YM=function(){function t(n,i,r){MS(this,t),this.type=n,this.branches=i,this.otherwise=r}return kS(t,[{key:"evaluate",value:function(t){var n,i=RS(this.branches);try{for(i.s();!(n=i.n()).done;){var r=gS(n.value,2),e=r[0],o=r[1];if(e.evaluate(t))return o.evaluate(t)}}catch(t){i.e(t)}finally{i.f()}return this.otherwise.evaluate(t)}},{key:"eachChild",value:function(t){var n,i=RS(this.branches);try{for(i.s();!(n=i.n()).done;){var r=gS(n.value,2),e=r[0],o=r[1];t(e),t(o)}}catch(t){i.e(t)}finally{i.f()}t(this.otherwise)}},{key:"outputDefined",value:function(){return this.branches.every((function(t){var n=gS(t,2);n[0];return n[1].outputDefined()}))&&this.otherwise.outputDefined()}},{key:"serialize",value:function(){var t=["case"];return this.eachChild((function(n){t.push(n.serialize())})),t}}],[{key:"parse",value:function(n,i){if(n.length<4)return i.error("Expected at least 3 arguments, but found only ".concat(n.length-1,"."));if(n.length%2!=0)return i.error("Expected an odd number of arguments.");var r;i.expectedType&&"value"!==i.expectedType.kind&&(r=i.expectedType);for(var e=[],o=1;o<n.length-1;o+=2){var s=i.parse(n[o],o,pk);if(!s)return null;var a=i.parse(n[o+1],o+1,r);if(!a)return null;e.push([s,a]),r=r||a.type}var u=i.parse(n[n.length-1],n.length-1,r);return u?new t(r,e,u):null}}]),t}(),ZM=function(){function t(n,i,r,e){MS(this,t),this.type=n,this.input=i,this.beginIndex=r,this.endIndex=e}return kS(t,[{key:"evaluate",value:function(t){var n=this.input.evaluate(t),i=this.beginIndex.evaluate(t);if(!Ok(n,["string","array"]))throw new Gk("Expected first argument to be of type array or string, but found ".concat(Sk(zk(n))," instead."));if(this.endIndex){var r=this.endIndex.evaluate(t);return n.slice(i,r)}return n.slice(i)}},{key:"eachChild",value:function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),t]}return["slice",this.input.serialize(),this.beginIndex.serialize()]}}],[{key:"parse",value:function(n,i){if(n.length<=2||n.length>=5)return i.error("Expected 3 or 4 arguments, but found ".concat(n.length-1," instead."));var r=i.parse(n[1],1,wk),e=i.parse(n[2],2,vk);if(!r||!e)return null;if(!_k(r.type,[jk(wk),dk,wk]))return i.error("Expected first argument to be of type array or string, but found ".concat(Sk(r.type)," instead"));if(4===n.length){var o=i.parse(n[3],3,vk);return o?new t(r.type,r,e,o):null}return new t(r.type,r,e)}}]),t}();function $M(t,n){return"=="===t||"!="===t?"boolean"===n.kind||"string"===n.kind||"number"===n.kind||"null"===n.kind||"value"===n.kind:"string"===n.kind||"number"===n.kind||"value"===n.kind}function QM(t,n,i,r){return 0===r.compare(n,i)}function t_(t,n,i){var r="=="!==t&&"!="!==t;return function(){function e(t,n,i){MS(this,e),this.type=pk,this.lhs=t,this.rhs=n,this.collator=i,this.hasUntypedArgument="value"===t.type.kind||"value"===n.type.kind}return kS(e,[{key:"evaluate",value:function(e){var o=this.lhs.evaluate(e),s=this.rhs.evaluate(e);if(r&&this.hasUntypedArgument){var a=zk(o),u=zk(s);if(a.kind!==u.kind||"string"!==a.kind&&"number"!==a.kind)throw new Gk('Expected arguments for "'.concat(t,'" to be (string, string) or (number, number), but found (').concat(a.kind,", ").concat(u.kind,") instead."))}if(this.collator&&!r&&this.hasUntypedArgument){var c=zk(o),h=zk(s);if("string"!==c.kind||"string"!==h.kind)return n(e,o,s)}return this.collator?i(e,o,s,this.collator.evaluate(e)):n(e,o,s)}},{key:"eachChild",value:function(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator)}},{key:"outputDefined",value:function(){return!0}},{key:"serialize",value:function(){var n=[t];return this.eachChild((function(t){n.push(t.serialize())})),n}}],[{key:"parse",value:function(t,n){if(3!==t.length&&4!==t.length)return n.error("Expected two or three arguments.");var i=t[0],o=n.parse(t[1],1,wk);if(!o)return null;if(!$M(i,o.type))return n.concat(1).error('"'.concat(i,"\" comparisons are not supported for type '").concat(Sk(o.type),"'."));var s=n.parse(t[2],2,wk);if(!s)return null;if(!$M(i,s.type))return n.concat(2).error('"'.concat(i,"\" comparisons are not supported for type '").concat(Sk(s.type),"'."));if(o.type.kind!==s.type.kind&&"value"!==o.type.kind&&"value"!==s.type.kind)return n.error("Cannot compare types '".concat(Sk(o.type),"' and '").concat(Sk(s.type),"'."));r&&("value"===o.type.kind&&"value"!==s.type.kind?o=new Uk(s.type,[o]):"value"!==o.type.kind&&"value"===s.type.kind&&(s=new Uk(o.type,[s])));var a=null;if(4===t.length){if("string"!==o.type.kind&&"string"!==s.type.kind&&"value"!==o.type.kind&&"value"!==s.type.kind)return n.error("Cannot use collator to compare non-string types.");if(!(a=n.parse(t[3],3,bk)))return null}return new e(o,s,a)}}]),e}()}var n_=t_("==",(function(t,n,i){return n===i}),QM),i_=t_("!=",(function(t,n,i){return n!==i}),(function(t,n,i,r){return!QM(0,n,i,r)})),r_=t_("<",(function(t,n,i){return n<i}),(function(t,n,i,r){return r.compare(n,i)<0})),e_=t_(">",(function(t,n,i){return n>i}),(function(t,n,i,r){return r.compare(n,i)>0})),o_=t_("<=",(function(t,n,i){return n<=i}),(function(t,n,i,r){return r.compare(n,i)<=0})),s_=t_(">=",(function(t,n,i){return n>=i}),(function(t,n,i,r){return r.compare(n,i)>=0})),a_=function(){function t(n,i,r,e,o){MS(this,t),this.type=dk,this.number=n,this.locale=i,this.currency=r,this.minFractionDigits=e,this.maxFractionDigits=o}return kS(t,[{key:"evaluate",value:function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}},{key:"eachChild",value:function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),t]}}],[{key:"parse",value:function(n,i){if(3!==n.length)return i.error("Expected two arguments.");var r=i.parse(n[1],1,vk);if(!r)return null;var e=n[2];if("object"!==NS(e)||Array.isArray(e))return i.error("NumberFormat options argument must be an object.");var o=null;if(e.locale&&!(o=i.parse(e.locale,1,dk)))return null;var s=null;if(e.currency&&!(s=i.parse(e.currency,1,dk)))return null;var a=null;if(e["min-fraction-digits"]&&!(a=i.parse(e["min-fraction-digits"],1,vk)))return null;var u=null;return e["max-fraction-digits"]&&!(u=i.parse(e["max-fraction-digits"],1,vk))?null:new t(r,o,s,a,u)}}]),t}(),u_={"==":n_,"!=":i_,">":e_,"<":r_,">=":s_,"<=":o_,array:Uk,at:XM,boolean:Uk,case:YM,coalesce:WM,collator:Kk,format:qk,image:Bk,in:HM,"index-of":JM,interpolate:qM,"interpolate-hcl":qM,"interpolate-lab":qM,length:function(){function t(n){MS(this,t),this.type=vk,this.input=n}return kS(t,[{key:"evaluate",value:function(t){var n=this.input.evaluate(t);if("string"==typeof n)return n.length;if(Array.isArray(n))return n.length;throw new Gk("Expected value to be of type string or array, but found ".concat(Sk(zk(n))," instead."))}},{key:"eachChild",value:function(t){t(this.input)}},{key:"outputDefined",value:function(){return!1}},{key:"serialize",value:function(){var t=["length"];return this.eachChild((function(n){t.push(n.serialize())})),t}}],[{key:"parse",value:function(n,i){if(2!==n.length)return i.error("Expected 1 argument, but found ".concat(n.length-1," instead."));var r=i.parse(n[1],1);return r?"array"!==r.type.kind&&"string"!==r.type.kind&&"value"!==r.type.kind?i.error("Expected argument of type string or array, but found ".concat(Sk(r.type)," instead.")):new t(r):null}}]),t}(),let:VM,literal:Lk,match:KM,number:Uk,"number-format":a_,object:Uk,slice:ZM,step:xM,string:Uk,"to-boolean":Vk,"to-color":Vk,"to-number":Vk,"to-string":Vk,var:mM,within:vM};function c_(t,n){var i=gS(n,4),r=i[0],e=i[1],o=i[2],s=i[3];r=r.evaluate(t),e=e.evaluate(t),o=o.evaluate(t);var a=s?s.evaluate(t):1,u=Ik(r,e,o,a);if(u)throw new Gk(u);return new Ek(r/255*a,e/255*a,o/255*a,a)}function h_(t,n){return t in n}function f_(t,n){var i=n[t];return void 0===i?null:i}function l_(t){return{type:t}}function v_(t){return{result:"success",value:t}}function d_(t){return{result:"error",value:t}}function p_(t){return"data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function y_(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function m_(t){return!!t.expression&&t.expression.interpolated}function w_(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":NS(t)}function b_(t){return"object"===NS(t)&&null!==t&&!Array.isArray(t)}Jk.register(u_,{error:[{kind:"error"},[dk],function(t,n){var i=gS(n,1)[0];throw new Gk(i.evaluate(t))}],typeof:[dk,[wk],function(t,n){return Sk(zk(gS(n,1)[0].evaluate(t)))}],"to-rgba":[jk(vk,4),[yk],function(t,n){return gS(n,1)[0].evaluate(t).toArray()}],rgb:[yk,[vk,vk,vk],c_],rgba:[yk,[vk,vk,vk,vk],c_],has:{type:pk,overloads:[[[dk],function(t,n){return h_(gS(n,1)[0].evaluate(t),t.properties())}],[[dk,mk],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return h_(r.evaluate(t),e.evaluate(t))}]]},get:{type:wk,overloads:[[[dk],function(t,n){return f_(gS(n,1)[0].evaluate(t),t.properties())}],[[dk,mk],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return f_(r.evaluate(t),e.evaluate(t))}]]},"feature-state":[wk,[dk],function(t,n){return f_(gS(n,1)[0].evaluate(t),t.featureState||{})}],properties:[mk,[],function(t){return t.properties()}],"geometry-type":[dk,[],function(t){return t.geometryType()}],id:[wk,[],function(t){return t.id()}],zoom:[vk,[],function(t){return t.globals.zoom}],"heatmap-density":[vk,[],function(t){return t.globals.heatmapDensity||0}],"line-progress":[vk,[],function(t){return t.globals.lineProgress||0}],"sky-radial-progress":[vk,[],function(t){return t.globals.skyRadialProgress||0}],accumulated:[wk,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],"+":[vk,l_(vk),function(t,n){var i,r=0,e=RS(n);try{for(e.s();!(i=e.n()).done;){r+=i.value.evaluate(t)}}catch(t){e.e(t)}finally{e.f()}return r}],"*":[vk,l_(vk),function(t,n){var i,r=1,e=RS(n);try{for(e.s();!(i=e.n()).done;){r*=i.value.evaluate(t)}}catch(t){e.e(t)}finally{e.f()}return r}],"-":{type:vk,overloads:[[[vk,vk],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return r.evaluate(t)-e.evaluate(t)}],[[vk],function(t,n){return-gS(n,1)[0].evaluate(t)}]]},"/":[vk,[vk,vk],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return r.evaluate(t)/e.evaluate(t)}],"%":[vk,[vk,vk],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return r.evaluate(t)%e.evaluate(t)}],ln2:[vk,[],function(){return Math.LN2}],pi:[vk,[],function(){return Math.PI}],e:[vk,[],function(){return Math.E}],"^":[vk,[vk,vk],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return Math.pow(r.evaluate(t),e.evaluate(t))}],sqrt:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.sqrt(i.evaluate(t))}],log10:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.log(i.evaluate(t))/Math.LN10}],ln:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.log(i.evaluate(t))}],log2:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.log(i.evaluate(t))/Math.LN2}],sin:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.sin(i.evaluate(t))}],cos:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.cos(i.evaluate(t))}],tan:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.tan(i.evaluate(t))}],asin:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.asin(i.evaluate(t))}],acos:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.acos(i.evaluate(t))}],atan:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.atan(i.evaluate(t))}],min:[vk,l_(vk),function(t,n){return Math.min.apply(Math,wS(n.map((function(n){return n.evaluate(t)}))))}],max:[vk,l_(vk),function(t,n){return Math.max.apply(Math,wS(n.map((function(n){return n.evaluate(t)}))))}],abs:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.abs(i.evaluate(t))}],round:[vk,[vk],function(t,n){var i=gS(n,1)[0].evaluate(t);return i<0?-Math.round(-i):Math.round(i)}],floor:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.floor(i.evaluate(t))}],ceil:[vk,[vk],function(t,n){var i=gS(n,1)[0];return Math.ceil(i.evaluate(t))}],"filter-==":[pk,[dk,wk],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return t.properties()[r.value]===e.value}],"filter-id-==":[pk,[wk],function(t,n){var i=gS(n,1)[0];return t.id()===i.value}],"filter-type-==":[pk,[dk],function(t,n){var i=gS(n,1)[0];return t.geometryType()===i.value}],"filter-<":[pk,[dk,wk],function(t,n){var i=gS(n,2),r=i[0],e=i[1],o=t.properties()[r.value],s=e.value;return NS(o)===NS(s)&&o<s}],"filter-id-<":[pk,[wk],function(t,n){var i=gS(n,1)[0],r=t.id(),e=i.value;return NS(r)===NS(e)&&r<e}],"filter->":[pk,[dk,wk],function(t,n){var i=gS(n,2),r=i[0],e=i[1],o=t.properties()[r.value],s=e.value;return NS(o)===NS(s)&&o>s}],"filter-id->":[pk,[wk],function(t,n){var i=gS(n,1)[0],r=t.id(),e=i.value;return NS(r)===NS(e)&&r>e}],"filter-<=":[pk,[dk,wk],function(t,n){var i=gS(n,2),r=i[0],e=i[1],o=t.properties()[r.value],s=e.value;return NS(o)===NS(s)&&o<=s}],"filter-id-<=":[pk,[wk],function(t,n){var i=gS(n,1)[0],r=t.id(),e=i.value;return NS(r)===NS(e)&&r<=e}],"filter->=":[pk,[dk,wk],function(t,n){var i=gS(n,2),r=i[0],e=i[1],o=t.properties()[r.value],s=e.value;return NS(o)===NS(s)&&o>=s}],"filter-id->=":[pk,[wk],function(t,n){var i=gS(n,1)[0],r=t.id(),e=i.value;return NS(r)===NS(e)&&r>=e}],"filter-has":[pk,[wk],function(t,n){return gS(n,1)[0].value in t.properties()}],"filter-has-id":[pk,[],function(t){return null!==t.id()&&void 0!==t.id()}],"filter-type-in":[pk,[jk(dk)],function(t,n){return gS(n,1)[0].value.indexOf(t.geometryType())>=0}],"filter-id-in":[pk,[jk(wk)],function(t,n){return gS(n,1)[0].value.indexOf(t.id())>=0}],"filter-in-small":[pk,[dk,jk(wk)],function(t,n){var i=gS(n,2),r=i[0];return i[1].value.indexOf(t.properties()[r.value])>=0}],"filter-in-large":[pk,[dk,jk(wk)],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return function(t,n,i,r){for(;i<=r;){var e=i+r>>1;if(n[e]===t)return!0;n[e]>t?r=e-1:i=e+1}return!1}(t.properties()[r.value],e.value,0,e.value.length-1)}],all:{type:pk,overloads:[[[pk,pk],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return r.evaluate(t)&&e.evaluate(t)}],[l_(pk),function(t,n){var i,r=RS(n);try{for(r.s();!(i=r.n()).done;){if(!i.value.evaluate(t))return!1}}catch(t){r.e(t)}finally{r.f()}return!0}]]},any:{type:pk,overloads:[[[pk,pk],function(t,n){var i=gS(n,2),r=i[0],e=i[1];return r.evaluate(t)||e.evaluate(t)}],[l_(pk),function(t,n){var i,r=RS(n);try{for(r.s();!(i=r.n()).done;){if(i.value.evaluate(t))return!0}}catch(t){r.e(t)}finally{r.f()}return!1}]]},"!":[pk,[pk],function(t,n){return!gS(n,1)[0].evaluate(t)}],"is-supported-script":[pk,[dk],function(t,n){var i=gS(n,1)[0],r=t.globals&&t.globals.isSupportedScript;return!r||r(i.evaluate(t))}],upcase:[dk,[dk],function(t,n){return gS(n,1)[0].evaluate(t).toUpperCase()}],downcase:[dk,[dk],function(t,n){return gS(n,1)[0].evaluate(t).toLowerCase()}],concat:[dk,l_(wk),function(t,n){return n.map((function(n){return Fk(n.evaluate(t))})).join("")}],"resolved-locale":[dk,[bk],function(t,n){return gS(n,1)[0].evaluate(t).resolvedLocale()}]});var g_=function(){function t(n,i){var r;MS(this,t),this.expression=n,this._warningHistory={},this._evaluator=new Hk,this._defaultValue=i?"color"===(r=i).type&&b_(r.default)?new Ek(0,0,0,0):"color"===r.type?Ek.parse(r.default)||null:void 0===r.default?null:r.default:null,this._enumValues=i&&"enum"===i.type?i.values:null}return kS(t,[{key:"evaluateWithoutErrorHandling",value:function(t,n,i,r,e,o){return this._evaluator.globals=t,this._evaluator.feature=n,this._evaluator.featureState=i,this._evaluator.canonical=r,this._evaluator.availableImages=e||null,this._evaluator.formattedSection=o,this.expression.evaluate(this._evaluator)}},{key:"evaluate",value:function(t,n,i,r,e,o){this._evaluator.globals=t,this._evaluator.feature=n||null,this._evaluator.featureState=i||null,this._evaluator.canonical=r,this._evaluator.availableImages=e||null,this._evaluator.formattedSection=o||null;try{var s=this.expression.evaluate(this._evaluator);if(null==s||"number"==typeof s&&s!=s)return this._defaultValue;if(this._enumValues&&!(s in this._enumValues))throw new Gk("Expected value to be one of ".concat(Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(", "),", but found ").concat(JSON.stringify(s)," instead."));return s}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}}}]),t}();function x_(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0]&&t[0]in u_}function j_(t,n){var i=new wM(u_,[],n?function(t){var n={color:yk,string:dk,number:vk,enum:dk,boolean:pk,formatted:gk,resolvedImage:xk};if("array"===t.type)return jk(n[t.value]||wk,t.length);return n[t.type]}(n):void 0),r=i.parse(t,void 0,void 0,void 0,n&&"string"===n.type?{typeAnnotation:"coerce"}:void 0);return r?v_(new g_(r,n)):d_(i.errors)}var S_=function(){function t(n,i){MS(this,t),this.kind=n,this._styleExpression=i,this.isStateDependent="constant"!==n&&!pM(i.expression)}return kS(t,[{key:"evaluateWithoutErrorHandling",value:function(t,n,i,r,e,o){return this._styleExpression.evaluateWithoutErrorHandling(t,n,i,r,e,o)}},{key:"evaluate",value:function(t,n,i,r,e,o){return this._styleExpression.evaluate(t,n,i,r,e,o)}}]),t}(),k_=function(){function t(n,i,r,e){MS(this,t),this.kind=n,this.zoomStops=r,this._styleExpression=i,this.isStateDependent="camera"!==n&&!pM(i.expression),this.interpolationType=e}return kS(t,[{key:"evaluateWithoutErrorHandling",value:function(t,n,i,r,e,o){return this._styleExpression.evaluateWithoutErrorHandling(t,n,i,r,e,o)}},{key:"evaluate",value:function(t,n,i,r,e,o){return this._styleExpression.evaluate(t,n,i,r,e,o)}},{key:"interpolationFactor",value:function(t,n,i){return this.interpolationType?qM.interpolationFactor(this.interpolationType,t,n,i):0}}]),t}();function M_(t,n){if("error"===(t=j_(t,n)).result)return t;var i=t.value.expression,r=dM(i);if(!r&&!p_(n))return d_([new hk("","data expressions not supported")]);var e=yM(i,["zoom"]);if(!e&&!y_(n))return d_([new hk("","zoom expressions not supported")]);var o=__(i);if(!o&&!e)return d_([new hk("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(o instanceof hk)return d_([o]);if(o instanceof qM&&!m_(n))return d_([new hk("",'"interpolate" expressions cannot be used with this property')]);if(!o)return v_(new S_(r?"constant":"source",t.value));var s=o instanceof qM?o.interpolation:void 0;return v_(new k_(r?"camera":"composite",t.value,o.labels,s))}function __(t){var n=null;if(t instanceof VM)n=__(t.result);else if(t instanceof WM){var i,r=RS(t.args);try{for(r.s();!(i=r.n()).done;){var e=i.value;if(n=__(e))break}}catch(t){r.e(t)}finally{r.f()}}else(t instanceof xM||t instanceof qM)&&t.input instanceof Jk&&"zoom"===t.input.name&&(n=t);return n instanceof hk||t.eachChild((function(t){var i=__(t);i instanceof hk?n=i:!n&&i?n=new hk("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):n&&i&&n!==i&&(n=new hk("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))})),n}function O_(t){return"object"===NS(t)?["literal",t]:t}function T_(t,n){var i=t.stops;if(!i)return function(t,n){var i=["get",t.property];if(void 0===t.default)return"string"===n.type?["string",i]:i;if("enum"===n.type)return["match",i,Object.keys(n.values),i,t.default];var r=["color"===n.type?"to-color":n.type,i,O_(t.default)];return"array"===n.type&&r.splice(1,0,n.value,n.length||null),r}(t,n);var r=i&&"object"===NS(i[0][0]),e=r||void 0!==t.property,o=r||!e;return i=i.map((function(t){return!e&&n.tokens&&"string"==typeof t[1]?[t[0],N_(t[1])]:[t[0],O_(t[1])]})),r?function(t,n,i){for(var r={},e={},o=[],s=0;s<i.length;s++){var a=i[s],u=a[0].zoom;void 0===r[u]&&(r[u]={zoom:u,type:t.type,property:t.property,default:t.default},e[u]=[],o.push(u)),e[u].push([a[0].value,a[1]])}if("exponential"===I_({},n)){var c,h=[E_(t),["linear"],["zoom"]],f=RS(o);try{for(f.s();!(c=f.n()).done;){var l=c.value;P_(h,l,C_(r[l],n,e[l]),!1)}}catch(t){f.e(t)}finally{f.f()}return h}var v,d=["step",["zoom"]],p=RS(o);try{for(p.s();!(v=p.n()).done;){var y=v.value;P_(d,y,C_(r[y],n,e[y]),!0)}}catch(t){p.e(t)}finally{p.f()}return R_(d),d}(t,n,i):o?function(t,n,i){var r,e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:["zoom"],o=I_(t,n),s=!1;if("interval"===o)r=["step",e],s=!0;else{if("exponential"!==o)throw new Error('Unknown zoom function type "'.concat(o,'"'));var a=void 0!==t.base?t.base:1;r=[E_(t),1===a?["linear"]:["exponential",a],e]}var u,c=RS(i);try{for(c.s();!(u=c.n()).done;){var h=u.value;P_(r,h[0],h[1],s)}}catch(t){c.e(t)}finally{c.f()}return R_(r),r}(t,n,i):C_(t,n,i)}function E_(t){switch(t.colorSpace){case"hcl":return"interpolate-hcl";case"lab":return"interpolate-lab";default:return"interpolate"}}function A_(t,n){var i,r,e=O_((i=t.default,r=n.default,void 0!==i?i:void 0!==r?r:void 0));return void 0===e&&"resolvedImage"===n.type?"":e}function C_(t,n,i){var r=I_(t,n),e=["get",t.property];if("categorical"===r&&"boolean"==typeof i[0][0]){var o,s=["case"],a=RS(i);try{for(a.s();!(o=a.n()).done;){var u=o.value;s.push(["==",e,u[0]],u[1])}}catch(t){a.e(t)}finally{a.f()}return s.push(A_(t,n)),s}if("categorical"===r){var c,h=["match",e],f=RS(i);try{for(f.s();!(c=f.n()).done;){var l=c.value;P_(h,l[0],l[1],!1)}}catch(t){f.e(t)}finally{f.f()}return h.push(A_(t,n)),h}if("interval"===r){var v,d=["step",["number",e]],p=RS(i);try{for(p.s();!(v=p.n()).done;){var y=v.value;P_(d,y[0],y[1],!0)}}catch(t){p.e(t)}finally{p.f()}return R_(d),void 0===t.default?d:["case",["==",["typeof",e],"number"],d,O_(t.default)]}if("exponential"===r){var m,w=void 0!==t.base?t.base:1,b=[E_(t),1===w?["linear"]:["exponential",w],["number",e]],g=RS(i);try{for(g.s();!(m=g.n()).done;){var x=m.value;P_(b,x[0],x[1],!1)}}catch(t){g.e(t)}finally{g.f()}return void 0===t.default?b:["case",["==",["typeof",e],"number"],b,O_(t.default)]}throw new Error("Unknown property function type ".concat(r))}function R_(t){"step"===t[0]&&3===t.length&&(t.push(0),t.push(t[3]))}function P_(t,n,i,r){t.length>3&&n===t[t.length-2]||(r&&2===t.length||t.push(n),t.push(i))}function I_(t,n){return t.type?t.type:n.expression.interpolated?"exponential":"interval"}function N_(t){for(var n=["concat"],i=/{([^{}]+)}/g,r=0,e=i.exec(t);null!==e;e=i.exec(t)){var o=t.slice(r,i.lastIndex-e[0].length);r=i.lastIndex,o.length>0&&n.push(o),n.push(["get",e[1]])}if(1===n.length)return t;if(r<t.length)n.push(t.slice(r));else if(2===n.length)return["to-string",n[1]];return n}function z_(t){if(!0===t||!1===t)return!0;if(!Array.isArray(t)||0===t.length)return!1;switch(t[0]){case"has":return t.length>=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":var n,i=RS(t.slice(1));try{for(i.s();!(n=i.n()).done;){var r=n.value;if(!z_(r)&&"boolean"!=typeof r)return!1}}catch(t){i.e(t)}finally{i.f()}return!0;default:return!0}}var F_={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function L_(t){if(null==t)return{filter:function(){return!0},needGeometry:!1};z_(t)||(t=U_(t));var n=j_(t,F_);if("error"===n.result)throw new Error(n.value.map((function(t){return"".concat(t.key,": ").concat(t.message)})).join(", "));return{filter:function(t,i,r){return n.value.evaluate(t,i,{},r)},needGeometry:D_(t)}}function G_(t,n){return t<n?-1:t>n?1:0}function D_(t){if(!Array.isArray(t))return!1;if("within"===t[0])return!0;for(var n=1;n<t.length;n++)if(D_(t[n]))return!0;return!1}function U_(t){if(!t)return!0;var n,i=t[0];return t.length<=1?"any"!==i:"=="===i?q_(t[1],t[2],"=="):"!="===i?V_(q_(t[1],t[2],"==")):"<"===i||">"===i||"<="===i||">="===i?q_(t[1],t[2],i):"any"===i?(n=t.slice(1),["any"].concat(n.map(U_))):"all"===i?["all"].concat(t.slice(1).map(U_)):"none"===i?["all"].concat(t.slice(1).map(U_).map(V_)):"in"===i?B_(t[1],t.slice(2)):"!in"===i?V_(B_(t[1],t.slice(2))):"has"===i?W_(t[1]):"!has"===i?V_(W_(t[1])):"within"!==i||t}function q_(t,n,i){switch(t){case"$type":return["filter-type-".concat(i),n];case"$id":return["filter-id-".concat(i),n];default:return["filter-".concat(i),t,n]}}function B_(t,n){if(0===n.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",n]];case"$id":return["filter-id-in",["literal",n]];default:return n.length>200&&!n.some((function(t){return NS(t)!==NS(n[0])}))?["filter-in-large",t,["literal",n.sort(G_)]]:["filter-in-small",t,["literal",n]]}}function W_(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function V_(t){return["!",t]}var X_=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function H_(t,n){var i={};for(var r in t)"ref"!==r&&(i[r]=t[r]);return X_.forEach((function(t){t in n&&(i[t]=n[t])})),i}var J_=kS((function t(n,i,r,e){MS(this,t),this.message=(n?"".concat(n,": "):"")+r,e&&(this.identifier=e),null!=i&&i.hv&&(this.line=i.hv)})),K_=kS((function t(n){MS(this,t),this.error=n,this.message=n.message;var i=n.message.match(/line (\d+)/);this.line=i?parseInt(i[1],10):0}));function Y_(t){var n=t.key,i=t.value;return i?[new J_(n,i,"constants have been deprecated as of v8")]:[]}function Z_(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function $_(t){if(Array.isArray(t))return t.map($_);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){var n={};for(var i in t)n[i]=$_(t[i]);return n}return Z_(t)}function Q_(t){var n=t.key,i=t.value,r=t.valueSpec||{},e=t.objectElementValidators||{},o=t.style,s=t.styleSpec,a=[],u=w_(i);if("object"!==u)return[new J_(n,i,"object expected, ".concat(u," found"))];for(var c in i){var h=c.split(".")[0],f=r[h]||r["*"],l=void 0;if(e[h])l=e[h];else if(r[h])l=wO;else if(e["*"])l=e["*"];else{if(!r["*"]){a.push(new J_(n,i[c],'unknown property "'.concat(c,'"')));continue}l=wO}a=a.concat(l({key:(n?"".concat(n,"."):n)+c,value:i[c],valueSpec:f,style:o,styleSpec:s,object:i,objectKey:c},i))}for(var v in r)e[v]||r[v].required&&void 0===r[v].default&&void 0===i[v]&&a.push(new J_(n,i,'missing required property "'.concat(v,'"')));return a}function tO(t){var n=t.value,i=t.valueSpec,r=t.style,e=t.styleSpec,o=t.key,s=t.arrayElementValidator||wO;if("array"!==w_(n))return[new J_(o,n,"array expected, ".concat(w_(n)," found"))];if(i.length&&n.length!==i.length)return[new J_(o,n,"array length ".concat(i.length," expected, length ").concat(n.length," found"))];if(i["min-length"]&&n.length<i["min-length"])return[new J_(o,n,"array length at least ".concat(i["min-length"]," expected, length ").concat(n.length," found"))];var a={type:i.value,values:i.values,minimum:i.minimum,maximum:i.maximum};e.$version<7&&(a.function=i.function),"object"===w_(i.value)&&(a=i.value);for(var u=[],c=0;c<n.length;c++)u=u.concat(s({array:n,arrayIndex:c,value:n[c],valueSpec:a,style:r,styleSpec:e,key:"".concat(o,"[").concat(c,"]")}));return u}function nO(t){var n=t.key,i=t.value,r=t.valueSpec,e=w_(i);if("number"===e&&i!=i&&(e="NaN"),"number"!==e)return[new J_(n,i,"number expected, ".concat(e," found"))];if("minimum"in r){var o=r.minimum;if("array"===w_(r.minimum)){var s=t.arrayIndex;o=r.minimum[s]}if(i<o)return[new J_(n,i,"".concat(i," is less than the minimum value ").concat(o))]}if("maximum"in r){var a=r.maximum;if("array"===w_(r.maximum)){var u=t.arrayIndex;a=r.maximum[u]}if(i>a)return[new J_(n,i,"".concat(i," is greater than the maximum value ").concat(a))]}return[]}function iO(t){var n,i,r,e=t.valueSpec,o=Z_(t.value.type),s={},a="categorical"!==o&&void 0===t.value.property,u=!a,c="array"===w_(t.value.stops)&&"array"===w_(t.value.stops[0])&&"object"===w_(t.value.stops[0][0]),h=Q_({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===o)return[new J_(t.key,t.value,'identity function may not have a "stops" property')];var n=[],i=t.value;n=n.concat(tO({key:t.key,value:i,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),"array"===w_(i)&&0===i.length&&n.push(new J_(t.key,i,"array must have at least one stop"));return n},default:function(t){return wO({key:t.key,value:t.value,valueSpec:e,style:t.style,styleSpec:t.styleSpec})}}});return"identity"===o&&a&&h.push(new J_(t.key,t.value,'missing required property "property"')),"identity"===o||t.value.stops||h.push(new J_(t.key,t.value,'missing required property "stops"')),"exponential"===o&&t.valueSpec.expression&&!m_(t.valueSpec)&&h.push(new J_(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(u&&!p_(t.valueSpec)?h.push(new J_(t.key,t.value,"property functions not supported")):a&&!y_(t.valueSpec)&&h.push(new J_(t.key,t.value,"zoom functions not supported"))),"categorical"!==o&&!c||void 0!==t.value.property||h.push(new J_(t.key,t.value,'"property" property is required')),h;function f(t){var n=[],o=t.value,a=t.key;if("array"!==w_(o))return[new J_(a,o,"array expected, ".concat(w_(o)," found"))];if(2!==o.length)return[new J_(a,o,"array length 2 expected, length ".concat(o.length," found"))];if(c){if("object"!==w_(o[0]))return[new J_(a,o,"object expected, ".concat(w_(o[0])," found"))];if(void 0===o[0].zoom)return[new J_(a,o,"object stop key must have zoom")];if(void 0===o[0].value)return[new J_(a,o,"object stop key must have value")];if(r&&r>Z_(o[0].zoom))return[new J_(a,o[0].zoom,"stop zoom values must appear in ascending order")];Z_(o[0].zoom)!==r&&(r=Z_(o[0].zoom),i=void 0,s={}),n=n.concat(Q_({key:"".concat(a,"[0]"),value:o[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:nO,value:l}}))}else n=n.concat(l({key:"".concat(a,"[0]"),value:o[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},o));return x_($_(o[1]))?n.concat([new J_("".concat(a,"[1]"),o[1],"expressions are not allowed in function stops.")]):n.concat(wO({key:"".concat(a,"[1]"),value:o[1],valueSpec:e,style:t.style,styleSpec:t.styleSpec}))}function l(t,r){var a=w_(t.value),u=Z_(t.value),c=null!==t.value?t.value:r;if(n){if(a!==n)return[new J_(t.key,c,"".concat(a," stop domain type must match previous stop domain type ").concat(n))]}else n=a;if("number"!==a&&"string"!==a&&"boolean"!==a)return[new J_(t.key,c,"stop domain value must be a number, string, or boolean")];if("number"!==a&&"categorical"!==o){var h="number expected, ".concat(a," found");return p_(e)&&void 0===o&&(h+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new J_(t.key,c,h)]}return"categorical"!==o||"number"!==a||isFinite(u)&&Math.floor(u)===u?"categorical"!==o&&"number"===a&&void 0!==i&&u<i?[new J_(t.key,c,"stop domain values must appear in ascending order")]:(i=u,"categorical"===o&&u in s?[new J_(t.key,c,"stop domain values must be unique")]:(s[u]=!0,[])):[new J_(t.key,c,"integer expected, found ".concat(u))]}}function rO(t){var n=("property"===t.expressionContext?M_:j_)($_(t.value),t.valueSpec);if("error"===n.result)return n.value.map((function(n){return new J_("".concat(t.key).concat(n.key),t.value,n.message)}));var i=n.value.expression||n.value._styleExpression.expression;if("property"===t.expressionContext&&"text-font"===t.propertyKey&&!i.outputDefined())return[new J_(t.key,t.value,'Invalid data expression for "'.concat(t.propertyKey,'". Output values must be contained as literals within the expression.'))];if("property"===t.expressionContext&&"layout"===t.propertyType&&!pM(i))return[new J_(t.key,t.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===t.expressionContext&&!pM(i))return[new J_(t.key,t.value,'"feature-state" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf("cluster")){if(!yM(i,["zoom","feature-state"]))return[new J_(t.key,t.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===t.expressionContext&&!dM(i))return[new J_(t.key,t.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function eO(t){var n=t.key,i=t.value,r=t.valueSpec,e=[];return Array.isArray(r.values)?-1===r.values.indexOf(Z_(i))&&e.push(new J_(n,i,"expected one of [".concat(r.values.join(", "),"], ").concat(JSON.stringify(i)," found"))):-1===Object.keys(r.values).indexOf(Z_(i))&&e.push(new J_(n,i,"expected one of [".concat(Object.keys(r.values).join(", "),"], ").concat(JSON.stringify(i)," found"))),e}function oO(t){return z_($_(t.value))?rO(ck({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):sO(t)}function sO(t){var n=t.value,i=t.key;if("array"!==w_(n))return[new J_(i,n,"array expected, ".concat(w_(n)," found"))];var r,e=t.styleSpec,o=[];if(n.length<1)return[new J_(i,n,"filter array must have at least 1 element")];switch(o=o.concat(eO({key:"".concat(i,"[0]"),value:n[0],valueSpec:e.filter_operator,style:t.style,styleSpec:t.styleSpec})),Z_(n[0])){case"<":case"<=":case">":case">=":n.length>=2&&"$type"===Z_(n[1])&&o.push(new J_(i,n,'"$type" cannot be use with operator "'.concat(n[0],'"')));case"==":case"!=":3!==n.length&&o.push(new J_(i,n,'filter array for operator "'.concat(n[0],'" must have 3 elements')));case"in":case"!in":n.length>=2&&"string"!==(r=w_(n[1]))&&o.push(new J_("".concat(i,"[1]"),n[1],"string expected, ".concat(r," found")));for(var s=2;s<n.length;s++)r=w_(n[s]),"$type"===Z_(n[1])?o=o.concat(eO({key:"".concat(i,"[").concat(s,"]"),value:n[s],valueSpec:e.geometry_type,style:t.style,styleSpec:t.styleSpec})):"string"!==r&&"number"!==r&&"boolean"!==r&&o.push(new J_("".concat(i,"[").concat(s,"]"),n[s],"string, number, or boolean expected, ".concat(r," found")));break;case"any":case"all":case"none":for(var a=1;a<n.length;a++)o=o.concat(sO({key:"".concat(i,"[").concat(a,"]"),value:n[a],style:t.style,styleSpec:t.styleSpec}));break;case"has":case"!has":r=w_(n[1]),2!==n.length?o.push(new J_(i,n,'filter array for "'.concat(n[0],'" operator must have 2 elements'))):"string"!==r&&o.push(new J_("".concat(i,"[1]"),n[1],"string expected, ".concat(r," found")));break;case"within":r=w_(n[1]),2!==n.length?o.push(new J_(i,n,'filter array for "'.concat(n[0],'" operator must have 2 elements'))):"object"!==r&&o.push(new J_("".concat(i,"[1]"),n[1],"object expected, ".concat(r," found")))}return o}function aO(t,n){var i=t.key,r=t.style,e=t.styleSpec,o=t.value,s=t.objectKey,a=e["".concat(n,"_").concat(t.layerType)];if(!a)return[];var u=s.match(/^(.*)-transition$/);if("paint"===n&&u&&a[u[1]]&&a[u[1]].transition)return wO({key:i,value:o,valueSpec:e.transition,style:r,styleSpec:e});var c,h=t.valueSpec||a[s];if(!h)return[new J_(i,o,'unknown property "'.concat(s,'"'))];if("string"===w_(o)&&p_(h)&&!h.tokens&&(c=/^{([^}]+)}$/.exec(o)))return[new J_(i,o,'"'.concat(s,'" does not support interpolation syntax\n')+'Use an identity property function instead: `{ "type": "identity", "property": '.concat(JSON.stringify(c[1])," }`."))];var f=[];return"symbol"===t.layerType&&("text-field"===s&&r&&!r.glyphs&&f.push(new J_(i,o,'use of "text-field" requires a style "glyphs" property')),"text-font"===s&&b_($_(o))&&"identity"===Z_(o.type)&&f.push(new J_(i,o,'"text-font" does not support identity functions'))),f.concat(wO({key:t.key,value:o,valueSpec:h,style:r,styleSpec:e,expressionContext:"property",propertyType:n,propertyKey:s}))}function uO(t){return aO(t,"paint")}function cO(t){return aO(t,"layout")}function hO(t){var n=[],i=t.value,r=t.key,e=t.style,o=t.styleSpec;i.type||i.ref||n.push(new J_(r,i,'either "type" or "ref" is required'));var s,a=Z_(i.type),u=Z_(i.ref);if(i.id)for(var c=Z_(i.id),h=0;h<t.arrayIndex;h++){var f=e.layers[h];Z_(f.id)===c&&n.push(new J_(r,i.id,'duplicate layer id "'.concat(i.id,'", previously used at line ').concat(f.id.hv)))}if("ref"in i)["type","source","source-layer","filter","layout"].forEach((function(t){t in i&&n.push(new J_(r,i[t],'"'.concat(t,'" is prohibited for ref layers')))})),e.layers.forEach((function(t){Z_(t.id)===u&&(s=t)})),s?s.ref?n.push(new J_(r,i.ref,"ref cannot reference another ref layer")):a=Z_(s.type):n.push(new J_(r,i.ref,'ref layer "'.concat(u,'" not found')));else if("background"!==a&&"sky"!==a)if(i.source){var l=e.sources&&e.sources[i.source],v=l&&Z_(l.type);l?"vector"===v&&"raster"===a?n.push(new J_(r,i.source,'layer "'.concat(i.id,'" requires a raster source'))):"raster"===v&&"raster"!==a?n.push(new J_(r,i.source,'layer "'.concat(i.id,'" requires a vector source'))):"vector"!==v||i["source-layer"]?"raster-dem"===v&&"hillshade"!==a?n.push(new J_(r,i.source,"raster-dem source can only be used with layer type 'hillshade'.")):"line"!==a||!i.paint||!i.paint["line-gradient"]||"geojson"===v&&l.lineMetrics||n.push(new J_(r,i,'layer "'.concat(i.id,'" specifies a line-gradient, which requires a GeoJSON source with `lineMetrics` enabled.'))):n.push(new J_(r,i,'layer "'.concat(i.id,'" must specify a "source-layer"'))):n.push(new J_(r,i.source,'source "'.concat(i.source,'" not found')))}else n.push(new J_(r,i,'missing required property "source"'));return n=n.concat(Q_({key:r,value:i,valueSpec:o.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":function(){return[]},type:function(){return wO({key:"".concat(r,".type"),value:i.type,valueSpec:o.layer.type,style:t.style,styleSpec:t.styleSpec,object:i,objectKey:"type"})},filter:oO,layout:function(t){return Q_({layer:i,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":function(t){return cO(ck({layerType:a},t))}}})},paint:function(t){return Q_({layer:i,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":function(t){return uO(ck({layerType:a},t))}}})}}}))}function fO(t){var n=t.value,i=t.key,r=w_(n);return"string"!==r?[new J_(i,n,"string expected, ".concat(r," found"))]:[]}var lO={promoteId:function(t){var n=t.key,i=t.value;if("string"===w_(i))return fO({key:n,value:i});var r=[];for(var e in i)r.push.apply(r,wS(fO({key:"".concat(n,".").concat(e),value:i[e]})));return r}};function vO(t){var n=t.value,i=t.key,r=t.styleSpec,e=t.style;if(!n.type)return[new J_(i,n,'"type" is required')];var o,s=Z_(n.type);switch(s){case"vector":case"raster":case"raster-dem":return o=Q_({key:i,value:n,valueSpec:r["source_".concat(s.replace("-","_"))],style:t.style,styleSpec:r,objectElementValidators:lO});case"geojson":if(o=Q_({key:i,value:n,valueSpec:r.source_geojson,style:e,styleSpec:r,objectElementValidators:lO}),n.cluster)for(var a in n.clusterProperties){var u,c,h=gS(n.clusterProperties[a],2),f=h[0],l=h[1],v="string"==typeof f?[f,["accumulated"],["get",a]]:f;(u=o).push.apply(u,wS(rO({key:"".concat(i,".").concat(a,".map"),value:l,expressionContext:"cluster-map"}))),(c=o).push.apply(c,wS(rO({key:"".concat(i,".").concat(a,".reduce"),value:v,expressionContext:"cluster-reduce"})))}return o;case"video":return Q_({key:i,value:n,valueSpec:r.source_video,style:e,styleSpec:r});case"image":return Q_({key:i,value:n,valueSpec:r.source_image,style:e,styleSpec:r});case"canvas":return[new J_(i,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return eO({key:"".concat(i,".type"),value:n.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:e,styleSpec:r})}}function dO(t){var n=t.value,i=t.styleSpec,r=i.light,e=t.style,o=[],s=w_(n);if(void 0===n)return o;if("object"!==s)return o=o.concat([new J_("light",n,"object expected, ".concat(s," found"))]);for(var a in n){var u=a.match(/^(.*)-transition$/);o=u&&r[u[1]]&&r[u[1]].transition?o.concat(wO({key:a,value:n[a],valueSpec:i.transition,style:e,styleSpec:i})):r[a]?o.concat(wO({key:a,value:n[a],valueSpec:r[a],style:e,styleSpec:i})):o.concat([new J_(a,n[a],'unknown property "'.concat(a,'"'))])}return o}function pO(t){var n=t.value,i=t.key,r=t.style,e=t.styleSpec,o=e.terrain,s=[],a=w_(n);if(void 0===n)return s;if("object"!==a)return s=s.concat([new J_("terrain",n,"object expected, ".concat(a," found"))]);for(var u in n){var c=u.match(/^(.*)-transition$/);s=c&&o[c[1]]&&o[c[1]].transition?s.concat(wO({key:u,value:n[u],valueSpec:e.transition,style:r,styleSpec:e})):o[u]?s.concat(wO({key:u,value:n[u],valueSpec:o[u],style:r,styleSpec:e})):s.concat([new J_(u,n[u],'unknown property "'.concat(u,'"'))])}if(n.source){var h=r.sources&&r.sources[n.source],f=h&&Z_(h.type);h?"raster-dem"!==f&&s.push(new J_(i,n.source,"terrain cannot be used with a source of type ".concat(f,', it only be used with a "raster-dem" source type'))):s.push(new J_(i,n.source,'source "'.concat(n.source,'" not found')))}else s.push(new J_(i,n,'terrain is missing required property "source"'));return s}function yO(t){var n=t.value,i=t.style,r=t.styleSpec,e=r.fog,o=[],s=w_(n);if(void 0===n)return o;if("object"!==s)return o=o.concat([new J_("fog",n,"object expected, ".concat(s," found"))]);for(var a in n){var u=a.match(/^(.*)-transition$/);o=u&&e[u[1]]&&e[u[1]].transition?o.concat(wO({key:a,value:n[a],valueSpec:r.transition,style:i,styleSpec:r})):e[a]?o.concat(wO({key:a,value:n[a],valueSpec:e[a],style:i,styleSpec:r})):o.concat([new J_(a,n[a],'unknown property "'.concat(a,'"'))])}return o}var mO={"*":function(){return[]},array:tO,boolean:function(t){var n=t.value,i=t.key,r=w_(n);return"boolean"!==r?[new J_(i,n,"boolean expected, ".concat(r," found"))]:[]},number:nO,color:function(t){var n=t.key,i=t.value,r=w_(i);return"string"!==r?[new J_(n,i,"color expected, ".concat(r," found"))]:null===Tk.parseCSSColor(i)?[new J_(n,i,'color expected, "'.concat(i,'" found'))]:[]},constants:Y_,enum:eO,filter:oO,function:iO,layer:hO,object:Q_,source:vO,light:dO,terrain:pO,fog:yO,string:fO,formatted:function(t){return 0===fO(t).length?[]:rO(t)},resolvedImage:function(t){return 0===fO(t).length?[]:rO(t)}};function wO(t){var n=t.value,i=t.valueSpec,r=t.styleSpec;return i.expression&&b_(Z_(n))?iO(t):i.expression&&x_($_(n))?rO(t):i.type&&mO[i.type]?mO[i.type](t):Q_(ck({},t,{valueSpec:i.type?r[i.type]:i}))}function bO(t){var n=t.value,i=t.key,r=fO(t);return r.length||(-1===n.indexOf("{fontstack}")&&r.push(new J_(i,n,'"glyphs" url must include a "{fontstack}" token')),-1===n.indexOf("{range}")&&r.push(new J_(i,n,'"glyphs" url must include a "{range}" token'))),r}function gO(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:zS,i=[];return i=i.concat(wO({key:"",value:t,valueSpec:n.$root,styleSpec:n,style:t,objectElementValidators:{glyphs:bO,"*":function(){return[]}}})),t.constants&&(i=i.concat(Y_({key:"constants",value:t.constants,style:t,styleSpec:n}))),xO(i)}function xO(t){return[].concat(t).sort((function(t,n){return t.line-n.line}))}function jO(t){return function(){for(var n=arguments.length,i=new Array(n),r=0;r<n;r++)i[r]=arguments[r];return xO(t.apply(this,i))}}gO.source=jO(vO),gO.light=jO(dO),gO.terrain=jO(pO),gO.fog=jO(yO),gO.layer=jO(hO),gO.filter=jO(oO),gO.paintProperty=jO(uO),gO.layoutProperty=jO(cO);var SO=LS((function(t,n){var i=function(){var t=function(t,n,i,r){for(i=i||{},r=t.length;r--;i[t[r]]=n);return i},n=[1,12],i=[1,13],r=[1,9],e=[1,10],o=[1,11],s=[1,14],a=[1,15],u=[14,18,22,24],c=[18,22],h=[22,24],f={trace:function(){},yy:{},fv:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},lv:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},vv:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(t,n,i,r,e,o,s){var a=o.length-1;switch(e){case 1:this.$=new String(t.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g,"\t").replace(/\\v/g,"\v").replace(/\\f/g,"\f").replace(/\\b/g,"\b")),this.$.hv=this._$.first_line;break;case 2:this.$=new Number(t),this.$.hv=this._$.first_line;break;case 3:this.$=null;break;case 4:this.$=new Boolean(!0),this.$.hv=this._$.first_line;break;case 5:this.$=new Boolean(!1),this.$.hv=this._$.first_line;break;case 6:return this.$=o[a-1];case 13:this.$={},Object.defineProperty(this.$,"hv",{value:this._$.first_line,enumerable:!1});break;case 14:case 19:this.$=o[a-1],Object.defineProperty(this.$,"hv",{value:this._$.first_line,enumerable:!1});break;case 15:this.$=[o[a-2],o[a]];break;case 16:this.$={},this.$[o[a][0]]=o[a][1];break;case 17:this.$=o[a-2],o[a-2][o[a][0]]=o[a][1];break;case 18:this.$=[],Object.defineProperty(this.$,"hv",{value:this._$.first_line,enumerable:!1});break;case 20:this.$=[o[a]];break;case 21:this.$=o[a-2],o[a-2].push(o[a])}},table:[{3:5,4:n,5:6,6:i,7:3,8:r,9:4,10:e,11:o,12:1,13:2,15:7,16:8,17:s,23:a},{1:[3]},{14:[1,16]},t(u,[2,7]),t(u,[2,8]),t(u,[2,9]),t(u,[2,10]),t(u,[2,11]),t(u,[2,12]),t(u,[2,3]),t(u,[2,4]),t(u,[2,5]),t([14,18,21,22,24],[2,1]),t(u,[2,2]),{3:20,4:n,18:[1,17],19:18,20:19},{3:5,4:n,5:6,6:i,7:3,8:r,9:4,10:e,11:o,13:23,15:7,16:8,17:s,23:a,24:[1,21],25:22},{1:[2,6]},t(u,[2,13]),{18:[1,24],22:[1,25]},t(c,[2,16]),{21:[1,26]},t(u,[2,18]),{22:[1,28],24:[1,27]},t(h,[2,20]),t(u,[2,14]),{3:20,4:n,20:29},{3:5,4:n,5:6,6:i,7:3,8:r,9:4,10:e,11:o,13:30,15:7,16:8,17:s,23:a},t(u,[2,19]),{3:5,4:n,5:6,6:i,7:3,8:r,9:4,10:e,11:o,13:31,15:7,16:8,17:s,23:a},t(c,[2,17]),t(c,[2,15]),t(h,[2,21])],defaultActions:{16:[2,6]},parseError:function(t,n){if(!n.recoverable)throw new Error(t);this.trace(t)},parse:function(t){var n=this,i=[0],r=[null],e=[],o=this.table,s="",a=0,u=0,c=2,h=1,f=e.slice.call(arguments,1),l=Object.create(this.lexer),v={yy:{}};for(var d in this.yy)Object.prototype.hasOwnProperty.call(this.yy,d)&&(v.yy[d]=this.yy[d]);l.setInput(t,v.yy),v.yy.lexer=l,v.yy.parser=this,void 0===l.yylloc&&(l.yylloc={});var p=l.yylloc;e.push(p);var y=l.options&&l.options.ranges;function m(){var t;return"number"!=typeof(t=l.lex()||h)&&(t=n.fv[t]||t),t}"function"==typeof v.yy.parseError?this.parseError=v.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var w,b,g,x,j,S,k,M,_={};;){if(b=i[i.length-1],this.defaultActions[b]?g=this.defaultActions[b]:(null==w&&(w=m()),g=o[b]&&o[b][w]),void 0===g||!g.length||!g[0]){var O="";for(j in M=[],o[b])this.lv[j]&&j>c&&M.push("'"+this.lv[j]+"'");O=l.showPosition?"Parse error on line "+(a+1)+":\n"+l.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.lv[w]||w)+"'":"Parse error on line "+(a+1)+": Unexpected "+(w==h?"end of input":"'"+(this.lv[w]||w)+"'"),this.parseError(O,{text:l.match,token:this.lv[w]||w,line:l.yylineno,loc:p,expected:M})}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+w);switch(g[0]){case 1:i.push(w),r.push(l.yytext),e.push(l.yylloc),i.push(g[1]),w=null,u=l.yyleng,s=l.yytext,a=l.yylineno,p=l.yylloc;break;case 2:if(S=this.vv[g[1]][1],_.$=r[r.length-S],_._$={first_line:e[e.length-(S||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(S||1)].first_column,last_column:e[e.length-1].last_column},y&&(_._$.range=[e[e.length-(S||1)].range[0],e[e.length-1].range[1]]),void 0!==(x=this.performAction.apply(_,[s,u,a,v.yy,g[1],r,e].concat(f))))return x;S&&(i=i.slice(0,-1*S*2),r=r.slice(0,-1*S),e=e.slice(0,-1*S)),i.push(this.vv[g[1]][0]),r.push(_.$),e.push(_._$),k=o[i[i.length-2]][i[i.length-1]],i.push(k);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,n){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,n)},setInput:function(t,n){return this.yy=n||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var n=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===r.length?this.yylloc.first_column:0)+r[r.length-i.length].length-i[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),n=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+n+"^"},test_match:function(t,n){var i,r,e;if(this.options.backtrack_lexer&&(e={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(e.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var o in e)this[o]=e[o];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,n,i,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var e=this._currentRules(),o=0;o<e.length;o++)if((i=this._input.match(this.rules[e[o]]))&&(!n||i[0].length>n[0].length)){if(n=i,r=o,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,e[o])))return t;if(this._backtrack){n=!1;continue}return!1}if(!this.options.flex)break}return n?!1!==(t=this.test_match(n,e[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,n,i,r){switch(i){case 0:break;case 1:return 6;case 2:return n.yytext=n.yytext.substr(1,n.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},rules:[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}}};function v(){this.yy={}}return f.lexer=l,v.prototype=f,f.Parser=v,new v}();n.parser=i,n.Parser=i.Parser,n.parse=function(){return i.parse.apply(i,arguments)}}));function kO(t){if(t instanceof String||"string"==typeof t||t instanceof Buffer)try{return SO.parse(t.toString())}catch(t){throw new K_(t)}return t}function MO(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:zS,i=t;try{i=kO(i)}catch(t){return[t]}return gO(i,n)}new Set(["vector","raster","raster-dem"]);var _O=x_,OO=M_,TO=T_,EO=b_;MO.parsed=MO,MO.latest=MO;var AO="function"==typeof Object.assign?Object.assign:function(t,n){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var i=Object(t),r=1,e=arguments.length;r<e;++r){var o=arguments[r];if(null!=o)for(var s in o)o.hasOwnProperty(s)&&(i[s]=o[s])}return i};function CO(t){return t*Math.PI/180}var RO=function(){for(var t=[],n=78271.51696402048;t.length<=24;n/=2)t.push(n);return t}();function PO(t,n){if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas)return new OffscreenCanvas(t,n);var i=document.createElement("canvas");return i.width=t,i.height=n,i}var IO,NO=Array(256).join("鈥�");function zO(t,n){if(n>=.05){for(var i="",r=t.split("\n"),e=NO.slice(0,Math.round(n/.1)),o=0,s=r.length;o<s;++o)o>0&&(i+="\n"),i+=r[o].split("").join(e);return i}return t}function FO(){return IO||(IO=PO(1,1).getContext("2d")),IO}function LO(t,n){return FO().measureText(t).width+(t.length-1)*n}var GO={};function DO(t,n,i,r){if(-1!==t.indexOf("\n")){for(var e=t.split("\n"),o=[],s=0,a=e.length;s<a;++s)o.push(DO(e[s],n,i,r));return o.join("\n")}var u=i+","+n+","+t+","+r,c=GO[u];if(!c){var h=t.split(" ");if(h.length>1){var f=FO();f.font=n;var l=f.measureText("M").width*i,v="";for(o=[],s=0,a=h.length;s<a;++s){var d=h[s],p=v+(v?" ":"")+d;LO(p,r)<=l?v=p:(v&&o.push(v),v=d)}v&&o.push(v);for(s=0,a=o.length;s<a&&a>1;++s){var y=o[s];if(LO(y,r)<.35*l){var m=s>0?LO(o[s-1],r):1/0,w=s<a-1?LO(o[s+1],r):1/0;o.splice(s,1),a-=1,m<w?(o[s-1]+=" "+y,s-=1):o[s]=y+" "+o[s]}}for(s=0,a=o.length-1;s<a;++s){var b=o[s],g=o[s+1];if(LO(b,r)>.7*l&&LO(g,r)<.6*l){var x=b.split(" "),j=x.pop();LO(j,r)<.2*l&&(o[s]=x.join(" "),o[s+1]=j+" "+g),a-=1}}c=o.join("\n")}else c=t;c=zO(c,r),GO[u]=c}return c}function UO(t){return(UO="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}Hs&&Y(Hs,F,(function(){GO={}}));var qO,BO,WO=EO,VO=TO,XO=_O,HO=OO,JO={Point:1,MultiPoint:1,LineString:2,MultiLineString:2,Polygon:3,MultiPolygon:3},KO={center:[.5,.5],left:[0,.5],right:[1,.5],top:[.5,0],bottom:[.5,1],"top-left":[0,0],"top-right":[1,0],"bottom-left":[0,1],"bottom-right":[1,1]},YO={},ZO={zoom:0};function $O(t,n,i,r,e,o){var s=t.id;o||(o={},console.warn("No functionCache provided to getValue()")),o[s]||(o[s]={});var a=o[s];if(!a[i]){var u=(t[n]||YO)[i],c=zS["".concat(n,"_").concat(t.type)][i];void 0===u&&(u=c.default);var h=XO(u);if(!h&&WO(u)&&(u=VO(u,c),h=!0),h){var f=function(t,n){var i=HO(t,n);if("error"===i.result)throw new Error(i.value.map((function(t){return"".concat(t.key,": ").concat(t.message)})).join(", "));return i.value}(u,c);a[i]=f.evaluate.bind(f)}else"color"==c.type&&(u=Ek.parse(u)),a[i]=function(){return u}}return ZO.zoom=r,a[i](ZO,e)}var QO=!1;function tT(t,n){if(t){if(!QO&&(0===t.a||0===n))return;var i=t.a;return n=void 0===n?1:n,0===i?"transparent":"rgba("+Math.round(255*t.r/i)+","+Math.round(255*t.g/i)+","+Math.round(255*t.b/i)+","+i*n+")"}return t}var nT=/^([^]*)\{(.*)\}([^]*)$/;function iT(t,n){var i;do{if(i=t.match(nT)){var r=n[i[2]]||"";t=i[1]+r+i[3]}}while(i);return t}var rT=!1;function eT(t,n,i,r,e,o,s){if(void 0===r&&(r=RO),"string"==typeof n&&(n=JSON.parse(n)),8!=n.version)throw new Error("glStyle version 8 required.");var a,u;if(o)if("undefined"!=typeof Image){var c=new Image;c.crossOrigin="anonymous",c.onload=function(){a=c,u=[c.width,c.height],t.changed(),c.onload=null},c.src=o}else if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope){var h=self;h.postMessage({action:"loadImage",src:o}),h.addEventListener("message",(function(t){"imageLoaded"===t.data.action&&t.data.src===o&&(a=t.data.image,u=[a.width,a.height])}))}for(var f,l=function(t){t=t.slice();for(var n=Object.create(null),i=0;i<t.length;i++)n[t[i].id]=t[i];for(var r=0;r<t.length;r++)"ref"in t[r]&&(t[r]=H_(t[r],n[t[r].ref]));return t}(n.layers),v={},d=[],p={},y={},m={},w={},b=0,g=l.length;b<g;++b){var x=l[b],j=x.id;if("string"==typeof i&&x.source==i||-1!==i.indexOf(j)){var S=x["source-layer"];if(!f){f=x.source;var k=n.sources[f];if(!k)throw new Error('Source "'.concat(f,'" is not defined'));var M=k.type;if("vector"!==M&&"geojson"!==M)throw new Error('Source "'.concat(f,'" is not of type "vector" or "geojson", but "').concat(M,'"'))}var _=v[S];_||(_=[],v[S]=_),_.push({layer:x,index:b}),d.push(j)}}var O=new Vv,T=new Cv,E=[],A=function(t,n){var i=t.getProperties(),o=v[i.layer];if(o){var c=r.indexOf(n);-1==c&&(c=function(t,n){for(var i=0,r=n.length;i<r;++i)if(n[i]<t&&i+1<r){var e=n[i]/n[i+1];return i+Math.log(n[i]/t)/Math.log(e)}return r-1}(n,r));for(var h,f=JO[t.getGeometry().getType()],l={properties:i,type:f},d=-1,b=function(r,v){var b=o[r],g=b.layer,x=g.id,j=g.layout||YO,S=g.paint||YO;if("none"===j.visibility||"minzoom"in g&&c<g.minzoom||"maxzoom"in g&&c>=g.maxzoom)return"continue";var k=g.filter;if(!k||function(t,n,i,r,e){return e||console.warn("No filterCache provided to evaluateFilter()"),t in e||(e[t]=L_(n).filter),ZO.zoom=r,e[t](ZO,i)}(x,k,l,c,w)){h=g;var M=void 0,_=void 0,A=void 0,C=void 0,R=void 0,P=void 0,I=b.index;if(3==f&&("fill"==g.type||"fill-extrusion"==g.type))if(_=$O(g,"paint",g.type+"-opacity",c,l,m),g.type+"-pattern"in S){var N=$O(g,"paint",g.type+"-pattern",c,l,m);if(N){var z="string"==typeof N?iT(N,i):N.toString();if(a&&e&&e[z]){++d,(P=E[d])&&P.getFill()&&!P.getStroke()&&!P.getText()||(P=new Qv({fill:new Cv}),E[d]=P),A=P.getFill(),P.setZIndex(I);var F=y[dt=z+"."+_];if(!F){var L=e[z],G=PO(L.width,L.height),D=G.getContext("2d");D.globalAlpha=_,D.drawImage(a,L.x,L.y,L.width,L.height,0,0,L.width,L.height),F=D.createPattern(G,"repeat"),y[dt]=F}A.setColor(F)}}}else M=tT($O(g,"paint",g.type+"-color",c,l,m),_),g.type+"-outline-color"in S&&(R=tT($O(g,"paint",g.type+"-outline-color",c,l,m),_)),R||(R=M),(M||R)&&(++d,(!(P=E[d])||M&&!P.getFill()||!M&&P.getFill()||R&&!P.getStroke()||!R&&P.getStroke()||P.getText())&&(P=new Qv({fill:M?new Cv:void 0,stroke:R?new Vv:void 0}),E[d]=P),M&&(A=P.getFill()).setColor(M),R&&((C=P.getStroke()).setColor(R),C.setWidth(.5)),P.setZIndex(I));if(1!=f&&"line"==g.type){M=!("line-pattern"in S)&&"line-color"in S?tT($O(g,"paint","line-color",c,l,m),$O(g,"paint","line-opacity",c,l,m)):void 0;var U=$O(g,"paint","line-width",c,l,m);M&&U>0&&(++d,(P=E[d])&&P.getStroke()&&!P.getFill()&&!P.getText()||(P=new Qv({stroke:new Vv}),E[d]=P),(C=P.getStroke()).setLineCap($O(g,"layout","line-cap",c,l,m)),C.setLineJoin($O(g,"layout","line-join",c,l,m)),C.setMiterLimit($O(g,"layout","line-miter-limit",c,l,m)),C.setColor(M),C.setWidth(U),C.setLineDash(S["line-dasharray"]?$O(g,"paint","line-dasharray",c,l,m).map((function(t){return t*U})):null),P.setZIndex(I))}var q=!1,B=null,W=0,V=void 0,X=void 0,H=void 0;if((1==f||2==f)&&"icon-image"in j){var J=$O(g,"layout","icon-image",c,l,m);if(J){V="string"==typeof J?iT(J,i):J.toString();var K=void 0;if(a&&e&&e[V]){var Y=$O(g,"layout","icon-rotation-alignment",c,l,m);if(2==f){var Z=t.getGeometry();if(Z.getFlatMidpoint||Z.getFlatMidpoints){var $=Z.getExtent();if(Math.sqrt(Math.max(Math.pow(($[2]-$[0])/n,2),Math.pow(($[3]-$[1])/n,2)))>150){var Q="MultiLineString"===Z.getType()?Z.getFlatMidpoints():Z.getFlatMidpoint();if(BO||(BO=new Pj("Point",qO=[NaN,NaN],[],{},null)),K=BO,qO[0]=Q[0],qO[1]=Q[1],"line"===(Rt=$O(g,"layout","symbol-placement",c,l,m))&&"map"===Y)for(var tt=Z.getStride(),nt=Z.getFlatCoordinates(),it=0,rt=nt.length-tt;it<rt;it+=tt){var et=nt[it],ot=nt[it+1],st=nt[it+tt],at=nt[it+tt+1],ut=Math.min(et,st),ct=Math.min(ot,at),ht=Math.max(et,st),ft=Math.max(ot,at);if(Q[0]>=ut&&Q[0]<=ht&&Q[1]>=ct&&Q[1]<=ft){W=Math.atan2(ot-at,st-et);break}}}}}if(2!==f||K){var lt=$O(g,"layout","icon-size",c,l,m),vt=void 0!==S["icon-color"]?$O(g,"paint","icon-color",c,l,m):null;if(!vt||0!==vt.a){var dt=V+"."+lt;if(null!==vt&&(dt+="."+vt),!(X=p[dt])){var pt=e[V];X=new Wv({color:vt?[255*vt.r,255*vt.g,255*vt.b,vt.a]:void 0,img:a,imgSize:u,size:[pt.width,pt.height],offset:[pt.x,pt.y],rotateWithView:"map"===Y,scale:lt/pt.pixelRatio,displacement:"icon-offset"in j?$O(g,"layout","icon-offset",c,l,m).map((function(t){return-t*pt.pixelRatio})):void 0}),p[dt]=X}}X&&(++d,(P=E[d])&&P.getImage()&&!P.getFill()&&!P.getStroke()||(P=new Qv,E[d]=P),P.setGeometry(K),X.setRotation(W+CO($O(g,"layout","icon-rotate",c,l,m))),X.setOpacity($O(g,"paint","icon-opacity",c,l,m)),X.setAnchor(KO[$O(g,"layout","icon-anchor",c,l,m)]),P.setImage(X),B=P.getText(),P.setText(void 0),P.setZIndex(I),q=!0,H=!1)}else H=!0}}}if(1==f&&"circle"===g.type){++d,(P=E[d])&&P.getImage()&&!P.getFill()&&!P.getStroke()||(P=new Qv,E[d]=P);var yt="circle-radius"in S?$O(g,"paint","circle-radius",c,l,m):5,mt=tT($O(g,"paint","circle-stroke-color",c,l,m),$O(g,"paint","circle-stroke-opacity",c,l,m)),wt=tT($O(g,"paint","circle-color",c,l,m),$O(g,"paint","circle-opacity",c,l,m)),bt=$O(g,"paint","circle-stroke-width",c,l,m),gt=yt+"."+mt+"."+wt+"."+bt;(X=p[gt])||(X=new Av({radius:yt,stroke:mt&&bt>0?new Vv({width:bt,color:mt}):void 0,fill:wt?new Cv({color:wt}):void 0}),p[gt]=X),P.setImage(X),B=P.getText(),P.setText(void 0),P.setGeometry(void 0),P.setZIndex(I),q=!0}var xt,jt,St,kt,Mt=void 0,_t=void 0;if("text-field"in j){jt=Math.round($O(g,"layout","text-size",c,l,m));var Ot=$O(g,"layout","text-font",c,l,m);xt=$O(g,"layout","text-line-height",c,l,m),_t=mS(s?s(Ot):Ot,jt,xt),St=$O(g,"layout","text-letter-spacing",c,l,m),kt=$O(g,"layout","text-max-width",c,l,m);var Tt=$O(g,"layout","text-field",c,l,m);Mt="object"===UO(Tt)&&Tt.sections?1===Tt.sections.length?Tt.toString():Tt.sections.reduce((function(t,n,i){var r=n.fontStack?n.fontStack.split(","):Ot,e=mS(s?s(r):r,jt*(n.scale||1),xt),o=n.text;if("\n"===o)return t.push("\n",""),t;if(2!=f){for(var a=0,u=(o=DO(o,e,kt,St).split("\n")).length;a<u;++a)a>0&&t.push("\n",""),t.push(o[a],e);return t}t.push(zO(o,St),e)}),[]):iT(Tt,i).trim(),_=$O(g,"paint","text-opacity",c,l,m)}if(Mt&&_&&!H){q||(++d,(P=E[d])&&P.getText()&&!P.getFill()&&!P.getStroke()||(P=new Qv,E[d]=P),P.setImage(void 0),P.setGeometry(void 0)),P.getText()||P.setText(B||new id({padding:[2,2,2,2]})),B=P.getText();var Et=j["text-transform"];"uppercase"==Et?Mt=Array.isArray(Mt)?Mt.map((function(t,n){return n%2?t:t.toUpperCase()})):Mt.toUpperCase():"lowercase"==Et&&(Mt=Array.isArray(Mt)?Mt.map((function(t,n){return n%2?t:t.toLowerCase()})):Mt.toLowerCase());var At=Array.isArray(Mt)?Mt:2==f?zO(Mt,St):DO(Mt,_t,kt,St);B.setText(At),B.setFont(_t),B.setRotation(CO($O(g,"layout","text-rotate",c,l,m)));var Ct=$O(g,"layout","text-anchor",c,l,m),Rt=q||1==f?"point":$O(g,"layout","symbol-placement",c,l,m);B.setPlacement(Rt),B.setOverflow("point"===Rt);var Pt=$O(g,"paint","text-halo-width",c,l,m),It=$O(g,"layout","text-offset",c,l,m),Nt=$O(g,"paint","text-translate",c,l,m),zt=0,Ft=0;if("point"==Rt){var Lt="center";-1!==Ct.indexOf("left")?(Lt="left",Ft=Pt):-1!==Ct.indexOf("right")&&(Lt="right",Ft=-Pt),B.setTextAlign(Lt);var Gt=$O(g,"layout","text-rotation-alignment",c,l,m);B.setRotateWithView("map"==Gt)}else B.setMaxAngle(CO($O(g,"layout","text-max-angle",c,l,m))*Mt.length/At.length),B.setTextAlign(),B.setRotateWithView(!1);var Dt="middle";0==Ct.indexOf("bottom")?(Dt="bottom",zt=-Pt-.5*(xt-1)*jt):0==Ct.indexOf("top")&&(Dt="top",zt=Pt+.5*(xt-1)*jt),B.setTextBaseline(Dt),B.setOffsetX(It[0]*jt+Ft+Nt[0]),B.setOffsetY(It[1]*jt+zt+Nt[1]),T.setColor(tT($O(g,"paint","text-color",c,l,m),_)),B.setFill(T);var Ut=tT($O(g,"paint","text-halo-color",c,l,m),_);if(Ut){O.setColor(Ut),Pt*=2;var qt=.5*jt;O.setWidth(Pt<=qt?Pt:qt),B.setStroke(O)}else B.setStroke(void 0);var Bt=$O(g,"layout","text-padding",c,l,m),Wt=B.getPadding();Bt!==Wt[0]&&(Wt[0]=Bt,Wt[1]=Bt,Wt[2]=Bt,Wt[3]=Bt),P.setZIndex(I)}}},g=0,x=o.length;g<x;++g)b(g);return d>-1?(E.length=d+1,rT&&("function"==typeof t.set?t.set("mapbox-layer",h):t.getProperties()["mapbox-layer"]=h),E):void 0}};return t.setStyle(A),t.set("mapbox-source",f),t.set("mapbox-layers",d),A}var oT=i(338);function sT(t){return(sT="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var aT,uT={},cT=/font-family: ?([^;]*);/,hT=/("|')/g;function fT(t){if(!aT){aT={};for(var n=document.styleSheets,i=0,r=n.length;i<r;++i){var e=n[i];try{var o=e.rules||e.cssRules;if(o)for(var s=0,a=o.length;s<a;++s){var u=o[s];if(5==u.type){var c=u.cssText.match(cT);aT[c[1].replace(hT,"")]=!0}}}catch(t){}}}return t in aT}var lT={},vT=oT.getNames();function dT(t){var n=t.toString();if(n in lT)return t;for(var i=t.map((function(t){var n=mS(t,1).split(" ");return[n.slice(3).join(" ").replace(/"/g,""),n[1]+n[0]]})),r=0,e=i.length;r<e;++r){var o=i[r],s=o[0];if(!fT(s)&&-1!==vT.indexOf(s)){var a="https://fonts.googleapis.com/css?family="+s.replace(/ /g,"+")+":"+o[1];if(!document.querySelector('link[href="'+a+'"]')){var u=document.createElement("link");u.href=a,u.rel="stylesheet",document.head.appendChild(u)}}}return lT[n]=!0,t}var pT=/^(.*)(\?.*)$/;function yT(t,n){return n&&0===t.indexOf(".")&&(t=n+t),t}function mT(t,n,i){var r=(t=yT(t,n)).match(pT);return r?r[1]+i+(r.length>2?r[2]:""):t+i}function wT(t,n,i,r,e){return new Promise((function(o,s){if("object"!=sT(n)&&(n=JSON.parse(n)),8!=n.version)return s(new Error("glStyle version 8 required."));if(!(t instanceof Nj||t instanceof sS))return s(new Error("Can only apply to VectorLayer or VectorTileLayer"));var a,u,c;function h(){c||n.sprite&&!a?c?(t.setStyle(c),o()):s(new Error("Something went wrong trying to apply style.")):(c=eT(t,n,i,e,a,u,dT),t.getStyle()?o():s(new Error("Nothing to show for source [".concat(i,"]"))))}if(n.sprite){var f=.5==(window.devicePixelRatio>=1.5?.5:1)?"@2x":"",l=mT(n.sprite,r,f+".json");fetch(l,{credentials:"same-origin"}).then((function(t){return t.ok||""===f?t:(l=mT(n.sprite,r,".json"),fetch(l,{credentials:"same-origin"}))})).then((function(t){if(t.ok)return t.json();s(new Error("Problem fetching sprite from ".concat(l,": ").concat(t.statusText)))})).then((function(t){if(void 0===t)return s(new Error("No sprites found."));a=t,u=mT(n.sprite,r,f+".png"),h()})).catch((function(t){s(new Error("Sprites cannot be loaded: ".concat(l,": ").concat(t.message)))}))}else h()}))}var bT={};function gT(t,n){var i={id:n.id,type:n.type},r={};function e(e){var o=n.layout||{},s=n.paint||{};i.paint=s;var a,u,c="function"==typeof t.getSource?t.getSource().getTileGrid().getZForResolution(e):t.getView().getZoom(),h="function"==typeof t.getTargetElement?t.getTargetElement():void 0;if(void 0!==s["background-color"]&&(a=$O(i,"paint","background-color",c,bT,r),h&&(h.style.background=Ek.parse(a).toString())),void 0!==s["background-opacity"]&&(u=$O(i,"paint","background-opacity",c,bT,r),h&&(h.style.opacity=u)),"none"!=o.visibility)return tT(a,u);h&&(h.style.backgroundColor="",h.style.opacity="")}if("function"==typeof t.getTargetElement)t.getTargetElement()&&e(),t.on(["change:resolution","change:target"],e);else{if("function"!=typeof t.setBackground)throw new Error("Unable to apply background.");t.setBackground(e)}}function xT(t){var n=t.bounds;if(n){var i=Or([n[0],n[1]]),r=Or([n[2],n[3]]);return[i[0],i[1],r[0],r[1]]}}function jT(t,n){t=AO({},t);var i=[n,JSON.stringify(t)].toString(),r=uT[i];return r||(r=new sx({url:t.tiles?void 0:n,tileJSON:t.tiles?t:void 0}),uT[i]=r),new Promise((function(t){var i=r.on("change",(function(){var e=r.getState();if("ready"===e){var o=r.getTileJSON(),s=Array.isArray(o.tiles)?o.tiles:[o.tiles];if(n)for(var a=0,u=s.length;a<u;++a)s[a]=decodeURI(new URL(s[a],n).href);var c=r.getTileGrid(),h=xT(o),f=o.minzoom||0,l=o.maxzoom||22,v=r.get("ol-source");void 0===v&&(v=new cg({attributions:r.getAttributions(),format:new eS,tileGrid:new Jh({origin:c.getOrigin(0),extent:h||c.getExtent(),minZoom:f,resolutions:RO.slice(0,l+1),tileSize:512}),urls:s}),r.set("ol-source",v)),nt(i),t(v)}else"error"===e&&(r.set("ol-source",null),nt(i),t(void 0))}));"ready"===r.getState()&&r.changed()}))}new yS;var ST=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),kT="https://api.mapbox.com";function MT(t){var n="mapbox://";return 0!==t.indexOf(n)?"":t.slice(n.length)}function _T(t,n,i){var r=MT(t);if(!r)return decodeURI(new URL(t,i).href);var e="sprites/";if(0!==r.indexOf(e))throw new Error("unexpected sprites url: ".concat(t));var o=r.slice(e.length);return"".concat(kT,"/styles/v1/").concat(o,"/sprite?access_token=").concat(n)}function OT(t,n,i){var r=MT(t);if(!r)return decodeURI(new URL(t,i).href);var e="fonts/";if(0!==r.indexOf(e))throw new Error("unexpected fonts url: ".concat(t));var o=r.slice(e.length);return"".concat(kT,"/fonts/v1/").concat(o,"/0-255.pbf?access_token=").concat(n)}function TT(t,n){var i=MT(t);if(!i)return decodeURI(new URL(t,location.href).href);var r="styles/";if(0!==i.indexOf(r))throw new Error("unexpected style url: ".concat(t));var e=i.slice(r.length);return"".concat(kT,"/styles/v1/").concat(e,"?&access_token=").concat(n)}function ET(t,n,i,r){var e=new URL(t,r),o=MT(t);return o?"https://{a-d}.tiles.mapbox.com/v4/".concat(o,"/{z}/{x}/{y}.vector.pbf?access_token=").concat(n):n?(e.searchParams.set(i,n),decodeURI(e.href)):decodeURI(e.href)}var AT=function(t){function n(n){var i=t.call(this,z)||this;return i.error=n,i}return ST(n,t),n}(f),CT="vector",RT=function(t){function n(n){var i=this,r=!("declutter"in n)||n.declutter,e=new cg({state:ps,format:new eS});((i=t.call(this,{source:e,background:n.background,declutter:r,className:n.className,opacity:n.opacity,visible:n.visible,zIndex:n.zIndex,minResolution:n.minResolution,maxResolution:n.maxResolution,minZoom:n.minZoom,maxZoom:n.maxZoom,renderOrder:n.renderOrder,renderBuffer:n.renderBuffer,renderMode:n.renderMode,map:n.map,updateWhileAnimating:n.updateWhileAnimating,updateWhileInteracting:n.updateWhileInteracting,preload:n.preload,useInterimTilesOnError:n.useInterimTilesOnError,properties:n.properties})||this).dv=void 0===n.maxResolution&&void 0===n.minZoom,i.sourceId=n.source,i.layers=n.layers,n.accessToken)?i.accessToken=n.accessToken:new URL(n.styleUrl,location.href).searchParams.forEach((function(t,n){i.accessToken=t,i.pv=n}));return i.fetchStyle(n.styleUrl),i}return ST(n,t),n.prototype.fetchStyle=function(t){var n=this,i=TT(t,this.accessToken);fetch(i).then((function(t){if(!t.ok)throw new Error("unexpected response when fetching style: ".concat(t.status));return t.json()})).then((function(t){n.onStyleLoad(t,i.startsWith("data:")?location.href:i)})).catch((function(t){n.handleError(t)}))},n.prototype.onStyleLoad=function(t,n){var i,r,e=this;if(this.layers){for(var o={},s=0;s<t.layers.length;++s){var a=t.layers[s];a.source&&(o[a.id]=a.source)}var u=void 0;for(s=0;s<this.layers.length;++s){var c=o[this.layers[s]];if(!c)return void this.handleError(new Error("could not find source for ".concat(this.layers[s])));if(u){if(u!==c)return void this.handleError(new Error("layers can only use a single source, found ".concat(u," and ").concat(c)))}else u=c}i=u,r=this.layers}else i=this.sourceId,r=i;r||(i=Object.keys(t.sources)[0],r=i),t.sprite&&(t.sprite=_T(t.sprite,this.accessToken,n)),t.glyphs&&(t.glyphs=OT(t.glyphs,this.accessToken,n));var h=t.sources[i];if(h.type===CT){var f=this.getSource();h.url&&0===h.url.indexOf("mapbox://")?(f.setUrl(ET(h.url,this.accessToken,this.pv,n)),wT(this,t,r).then((function(){e.configureSource(f,t)})).catch((function(t){e.handleError(t)}))):(h.tiles&&(h.tiles=h.tiles.map((function(t){return ET(t,e.accessToken,e.pv,n)}))),jT(h,h.url?ET(h.url,this.accessToken,this.pv,n):void 0).then((function(n){wT(e,t,r).then((function(){e.configureSource(n,t)})).catch((function(i){e.configureSource(n,t),e.handleError(i)}))})))}else this.handleError(new Error("only works for vector sources, found ".concat(h.type)))},n.prototype.configureSource=function(t,n){var i,r=this.getSource();if(t!==r&&(r.setAttributions(t.getAttributions()),r.setTileUrlFunction(t.getTileUrlFunction()),r.setTileLoadFunction(t.getTileLoadFunction()),r.tileGrid=t.tileGrid),void 0===this.getBackground()&&(i=this,n.layers.some((function(t){if("background"==t.type)return gT(i,t),!0}))),this.dv){var e=r.getTileGrid();this.setMaxResolution(e.getResolution(e.getMinZoom()))}r.setState(ys)},n.prototype.handleError=function(t){this.dispatchEvent(new AT(t)),this.getSource().setState(ms)},n}(sS),PT=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),IT=function(t){function n(n){var i=this,r=n||{},e=E({},r);return delete e.imageRatio,(i=t.call(this,e)||this).yv=void 0!==r.imageRatio?r.imageRatio:1,i}return PT(n,t),n.prototype.getImageRatio=function(){return this.yv},n.prototype.createRenderer=function(){return new hj(this)},n}(wx),NT=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),zT=function(t){function n(n){var i=this,r=E({},n);return(i=t.call(this,r)||this).mv=xv(n.style),i.wv=n.style.variables||{},i.bv=!!n.disableHitDetection,i}return NT(n,t),n.prototype.createRenderer=function(){return new gx(this,{vertexShader:this.mv.builder.getSymbolVertexShader(),fragmentShader:this.mv.builder.getSymbolFragmentShader(),hitVertexShader:!this.bv&&this.mv.builder.getSymbolVertexShader(!0),hitFragmentShader:!this.bv&&this.mv.builder.getSymbolFragmentShader(!0),uniforms:this.mv.uniforms,attributes:this.mv.attributes})},n.prototype.updateStyleVariables=function(t){E(this.wv,t),this.changed()},n}(gs),FT=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function LT(t,n){var i="\n    attribute vec2 ".concat(zl.TEXTURE_COORD,";\n    uniform mat4 ").concat(Nl.TILE_TRANSFORM,";\n    uniform float ").concat(Nl.TEXTURE_PIXEL_WIDTH,";\n    uniform float ").concat(Nl.TEXTURE_PIXEL_HEIGHT,";\n    uniform float ").concat(Nl.TEXTURE_RESOLUTION,";\n    uniform float ").concat(Nl.TEXTURE_ORIGIN_X,";\n    uniform float ").concat(Nl.TEXTURE_ORIGIN_Y,";\n    uniform float ").concat(Nl.DEPTH,";\n\n    varying vec2 v_textureCoord;\n    varying vec2 v_mapCoord;\n\n    void main() {\n      v_textureCoord = ").concat(zl.TEXTURE_COORD,";\n      v_mapCoord = vec2(\n        ").concat(Nl.TEXTURE_ORIGIN_X," + ").concat(Nl.TEXTURE_RESOLUTION," * ").concat(Nl.TEXTURE_PIXEL_WIDTH," * v_textureCoord[0],\n        ").concat(Nl.TEXTURE_ORIGIN_Y," - ").concat(Nl.TEXTURE_RESOLUTION," * ").concat(Nl.TEXTURE_PIXEL_HEIGHT," * v_textureCoord[1]\n      );\n      gl_Position = ").concat(Nl.TILE_TRANSFORM," * vec4(").concat(zl.TEXTURE_COORD,", ").concat(Nl.DEPTH,", 1.0);\n    }\n  "),r={inFragmentShader:!0,variables:[],attributes:[],stringLiteralsMap:{},functions:{},bandCount:n},e=[];if(void 0!==t.color){var o=ov(r,t.color,Xl);e.push("color = ".concat(o,";"))}if(void 0!==t.contrast){var s=ov(r,t.contrast,Wl);e.push("color.rgb = clamp((".concat(s," + 1.0) * color.rgb - (").concat(s," / 2.0), vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}if(void 0!==t.exposure){var a=ov(r,t.exposure,Wl);e.push("color.rgb = clamp((".concat(a," + 1.0) * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}if(void 0!==t.saturation){var u=ov(r,t.saturation,Wl);e.push("\n      float saturation = ".concat(u," + 1.0;\n      float sr = (1.0 - saturation) * 0.2126;\n      float sg = (1.0 - saturation) * 0.7152;\n      float sb = (1.0 - saturation) * 0.0722;\n      mat3 saturationMatrix = mat3(\n        sr + saturation, sr, sr,\n        sg, sg + saturation, sg,\n        sb, sb, sb + saturation\n      );\n      color.rgb = clamp(saturationMatrix * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));\n    "))}if(void 0!==t.gamma){var c=ov(r,t.gamma,Wl);e.push("color.rgb = pow(color.rgb, vec3(1.0 / ".concat(c,"));"))}if(void 0!==t.brightness){var h=ov(r,t.brightness,Wl);e.push("color.rgb = clamp(color.rgb + ".concat(h,", vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}var f={},l=r.variables.length;if(l>1&&!t.variables)throw new Error("Missing variables in style (expected ".concat(r.variables,")"));for(var v=function(n){var i=r.variables[n];if(!(i in t.variables))throw new Error("Missing '".concat(i,"' in style variables"));var e=pv(i);f[e]=function(){var n=t.variables[i];return"string"==typeof n&&(n=rv(r,n)),void 0!==n?n:-9999999}},d=0;d<l;++d)v(d);var p=Object.keys(f).map((function(t){return"uniform float ".concat(t,";")})),y=Math.ceil(n/4);p.push("uniform sampler2D ".concat(Nl.TILE_TEXTURE_ARRAY,"[").concat(y,"];")),r.paletteTextures&&p.push("uniform sampler2D ".concat(yv,"[").concat(r.paletteTextures.length,"];"));var m=Object.keys(r.functions).map((function(t){return r.functions[t]}));return{vertexShader:i,fragmentShader:"\n    #ifdef GL_FRAGMENT_PRECISION_HIGH\n    precision highp float;\n    #else\n    precision mediump float;\n    #endif\n\n    varying vec2 v_textureCoord;\n    varying vec2 v_mapCoord;\n    uniform vec4 ".concat(Nl.RENDER_EXTENT,";\n    uniform float ").concat(Nl.TRANSITION_ALPHA,";\n    uniform float ").concat(Nl.TEXTURE_PIXEL_WIDTH,";\n    uniform float ").concat(Nl.TEXTURE_PIXEL_HEIGHT,";\n    uniform float ").concat(Nl.RESOLUTION,";\n    uniform float ").concat(Nl.ZOOM,";\n\n    ").concat(p.join("\n"),"\n\n    ").concat(m.join("\n"),"\n\n    void main() {\n      if (\n        v_mapCoord[0] < ").concat(Nl.RENDER_EXTENT,"[0] ||\n        v_mapCoord[1] < ").concat(Nl.RENDER_EXTENT,"[1] ||\n        v_mapCoord[0] > ").concat(Nl.RENDER_EXTENT,"[2] ||\n        v_mapCoord[1] > ").concat(Nl.RENDER_EXTENT,"[3]\n      ) {\n        discard;\n      }\n\n      vec4 color = texture2D(").concat(Nl.TILE_TEXTURE_ARRAY,"[0],  v_textureCoord);\n\n      ").concat(e.join("\n"),"\n\n      if (color.a == 0.0) {\n        discard;\n      }\n\n      gl_FragColor = color;\n      gl_FragColor.rgb *= gl_FragColor.a;\n      gl_FragColor *= ").concat(Nl.TRANSITION_ALPHA,";\n    }"),uniforms:f,paletteTextures:r.paletteTextures}}var GT=function(t){function n(n){var i=this,r=n?E({},n):{},e=r.style||{};delete r.style;var o=r.cacheSize;return delete r.cacheSize,(i=t.call(this,r)||this).gv=r.sources,i.xv=null,i.If=NaN,i.K=e,i.$t=o,i.wv=i.K.variables||{},i.addChangeListener(es,i.jv),i}return FT(n,t),n.prototype.getSources=function(t,n){var i=this.getSource();return this.gv?"function"==typeof this.gv?this.gv(t,n):this.gv:i?[i]:[]},n.prototype.getRenderSource=function(){return this.xv||this.getSource()},n.prototype.getSourceState=function(){var t=this.getRenderSource();return t?t.getState():ds},n.prototype.jv=function(){this.getSource()&&this.setStyle(this.K)},n.prototype.Sv=function(){var t=this.getSource();return t&&"bandCount"in t?t.bandCount:4},n.prototype.createRenderer=function(){var t=LT(this.K,this.Sv());return new Bl(this,{vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms,cacheSize:this.$t,paletteTextures:t.paletteTextures})},n.prototype.renderSources=function(t,n){for(var i,r=this.getRenderer(),e=0,o=n.length;e<o;++e)this.xv=n[e],r.prepareFrame(t)&&(i=r.renderFrame(t));return i},n.prototype.render=function(t,n){var i=this;this.rendered=!0;for(var r=t.viewState,e=this.getSources(t.extent,r.resolution),o=!0,s=function(t,n){var r=e[t],s=r.getState();if(s==ps){r.addEventListener("change",(function t(){r.getState()==ys&&(r.removeEventListener("change",t),i.changed())}))}o=o&&s==ys},a=0,u=e.length;a<u;++a)s(a);var c=this.renderSources(t,e);if(this.getRenderer().renderComplete&&o)return this.If=r.resolution,c;if(this.If>.5*r.resolution){var h=this.getSources(t.extent,this.If).filter((function(t){return!e.includes(t)}));if(h.length>0)return this.renderSources(t,h)}return c},n.prototype.setStyle=function(t){this.wv=t.variables||{},this.K=t;var n=LT(this.K,this.Sv());this.getRenderer().reset({vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,uniforms:n.uniforms,paletteTextures:n.paletteTextures}),this.changed()},n.prototype.updateStyleVariables=function(t){E(this.wv,t),this.changed()},n}(Eg);GT.prototype.dispose;var DT=GT,UT=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),qT="addfeatures",BT=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.features=r,o.file=i,o.projection=e,o}return UT(n,t),n}(f),WT=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{handleEvent:k})||this).on,i.once,i.un,i.kv=!1,i.Mv=[];for(var e=r.formatConstructors?r.formatConstructors:[],o=0,s=e.length;o<s;++o){var a=e[o];"function"==typeof a&&(a=new a),i.Mv.push(a),i.kv=i.kv||a.getType()===uh}return i.di=r.projection?gr(r.projection):null,i._v=null,i.Ov=r.source||null,i.target=r.target?r.target:null,i}return UT(n,t),n.prototype.Tv=function(t,n){var i,r=n.target.result,e=this.getMap(),o=this.di;o||(o=e.getView().getProjection());for(var s=this.Mv,a=0,u=s.length;a<u;++a){var c=s[a],h=r;this.kv&&c.getType()!==uh&&(void 0===i&&(i=(new TextDecoder).decode(r)),h=i);var f=this.Ev(c,h,{featureProjection:o});if(f&&f.length>0){this.Ov&&(this.Ov.clear(),this.Ov.addFeatures(f)),this.dispatchEvent(new BT(qT,t,f,o));break}}},n.prototype.Av=function(){var t=this.getMap();if(t){var n=this.target?this.target:t.getViewport();this._v=[Y(n,B,this.handleDrop,this),Y(n,U,this.handleStop,this),Y(n,q,this.handleStop,this),Y(n,B,this.handleStop,this)]}},n.prototype.setActive=function(n){!this.getActive()&&n&&this.Av(),this.getActive()&&!n&&this.Cv(),t.prototype.setActive.call(this,n)},n.prototype.setMap=function(n){this.Cv(),t.prototype.setMap.call(this,n),this.getActive()&&this.Av()},n.prototype.Ev=function(t,n,i){try{return t.readFeatures(n,i)}catch(t){return null}},n.prototype.Cv=function(){this._v&&(this._v.forEach($),this._v=null)},n.prototype.handleDrop=function(t){for(var n=t.dataTransfer.files,i=0,r=n.length;i<r;++i){var e=n.item(i),o=new FileReader;o.addEventListener(X,this.Tv.bind(this,e)),this.kv?o.readAsArrayBuffer(e):o.readAsText(e)}},n.prototype.handleStop=function(t){t.stopPropagation(),t.preventDefault(),t.dataTransfer.dropEffect="copy"},n}(_u),VT=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),XT=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this,r)||this).Kr=r.condition?r.condition:qu,i.Zr=void 0,i.Rv=void 0,i.Oe=0,i.Lr=void 0!==r.duration?r.duration:400,i}return VT(n,t),n.prototype.handleDragEvent=function(t){if(Wu(t)){var n=t.map,i=n.getSize(),r=t.pixel,e=r[0]-i[0]/2,o=i[1]/2-r[1],s=Math.atan2(o,e),a=Math.sqrt(e*e+o*o),u=n.getView();if(void 0!==this.Zr){var c=this.Zr-s;u.adjustRotationInternal(c)}this.Zr=s,void 0!==this.Rv&&u.adjustResolutionInternal(this.Rv/a),void 0!==this.Rv&&(this.Oe=this.Rv/a),this.Rv=a}},n.prototype.handleUpEvent=function(t){if(!Wu(t))return!0;var n=t.map.getView(),i=this.Oe>1?1:-1;return n.endInteraction(this.Lr,i),this.Oe=0,!1},n.prototype.handleDownEvent=function(t){return!!Wu(t)&&(!!this.Kr(t)&&(t.map.getView().beginInteraction(),this.Zr=void 0,this.Rv=void 0,!0))},n}(Cu),HT=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),JT=function(t){function n(n,i,r){var e=t.call(this)||this;if(void 0!==r&&void 0===i)e.setFlatCoordinates(r,n);else{var o=i||0;e.setCenterAndRadius(n,o,r)}return e}return HT(n,t),n.prototype.clone=function(){var t=new n(this.flatCoordinates.slice(),void 0,this.layout);return t.applyProperties(this),t},n.prototype.closestPointXY=function(t,n,i,r){var e=this.flatCoordinates,o=t-e[0],s=n-e[1],a=o*o+s*s;if(a<r){if(0===a)for(var u=0;u<this.stride;++u)i[u]=e[u];else{var c=this.getRadius()/Math.sqrt(a);i[0]=e[0]+c*o,i[1]=e[1]+c*s;for(u=2;u<this.stride;++u)i[u]=e[u]}return i.length=this.stride,a}return r},n.prototype.containsXY=function(t,n){var i=this.flatCoordinates,r=t-i[0],e=n-i[1];return r*r+e*e<=this.Pv()},n.prototype.getCenter=function(){return this.flatCoordinates.slice(0,this.stride)},n.prototype.computeExtent=function(t){var n=this.flatCoordinates,i=n[this.stride]-n[0];return Cn(n[0]-i,n[1]-i,n[0]+i,n[1]+i,t)},n.prototype.getRadius=function(){return Math.sqrt(this.Pv())},n.prototype.Pv=function(){var t=this.flatCoordinates[this.stride]-this.flatCoordinates[0],n=this.flatCoordinates[this.stride+1]-this.flatCoordinates[1];return t*t+n*n},n.prototype.getType=function(){return Pt.CIRCLE},n.prototype.intersectsExtent=function(t){if(ni(t,this.getExtent())){var n=this.getCenter();return t[0]<=n[0]&&t[2]>=n[0]||(t[1]<=n[1]&&t[3]>=n[1]||Bn(t,this.intersectsCoordinate.bind(this)))}return!1},n.prototype.setCenter=function(t){var n=this.stride,i=this.flatCoordinates[n]-this.flatCoordinates[0],r=t.slice();r[n]=r[0]+i;for(var e=1;e<n;++e)r[n+e]=t[e];this.setFlatCoordinates(this.layout,r),this.changed()},n.prototype.setCenterAndRadius=function(t,n,i){this.setLayout(i,t,0),this.flatCoordinates||(this.flatCoordinates=[]);var r=this.flatCoordinates,e=ue(r,0,t,this.stride);r[e++]=r[0]+n;for(var o=1,s=this.stride;o<s;++o)r[e++]=r[o];r.length=e,this.changed()},n.prototype.getCoordinates=function(){return null},n.prototype.setCoordinates=function(t,n){},n.prototype.setRadius=function(t){this.flatCoordinates[this.stride]=this.flatCoordinates[0]+t,this.changed()},n.prototype.rotate=function(t,n){var i=this.getCenter(),r=this.getStride();this.setCenter(Vr(i,0,i.length,r,t,n,i)),this.changed()},n.prototype.translate=function(t,n){var i=this.getCenter(),r=this.getStride();this.setCenter(Hr(i,0,i.length,r,t,n,i)),this.changed()},n}(te);JT.prototype.transform;var KT=JT,YT=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ZT="Point",$T="LineString",QT="Polygon",tE="Circle",nE="drawstart",iE="drawend",rE="drawabort",eE=function(t){function n(n,i){var r=t.call(this,n)||this;return r.feature=i,r}return YT(n,t),n}(f);var oE=function(t){function n(n){var i=this,r=n;r.stopDown||(r.stopDown=M),(i=t.call(this,r)||this).on,i.once,i.un,i.Iv=!1,i.Nv=null,i.zv,i.Fv,i.Lv,i.Gv=!1,i.Ov=n.source?n.source:null,i.Le=n.features?n.features:null,i.Dv=n.snapTolerance?n.snapTolerance:12,i.nl=n.type,i.ye=function(t){switch(t){case Pt.POINT:case Pt.MULTI_POINT:return ZT;case Pt.LINE_STRING:case Pt.MULTI_LINE_STRING:return $T;case Pt.POLYGON:case Pt.MULTI_POLYGON:return QT;case Pt.CIRCLE:return tE;default:throw new Error("Invalid type: "+t)}}(i.nl),i.Uv=!!n.stopClick,i.qv=n.minPoints?n.minPoints:i.ye===QT?3:2,i.Bv=i.ye===tE?2:n.maxPoints?n.maxPoints:1/0,i.Wv=n.finishCondition?n.finishCondition:k;var e,o=n.geometryFunction;if(!o){var s,a=i.ye;if(a===tE)o=function(t,n,i){var r=n||new KT([NaN,NaN]),e=Fr(t[0],i),o=rr(e,Fr(t[t.length-1],i));r.setCenterAndRadius(e,Math.sqrt(o));var s=Nr();return s&&r.transform(i,s),r};else a===ZT?s=Te:a===$T?s=kj:a===QT&&(s=Ye),o=function(t,n,i){return n?a===QT?t[0].length?n.setCoordinates([t[0].concat([t[0][0]])]):n.setCoordinates([]):n.setCoordinates(t):n=new s(t),n}}return i.Va=o,i.Vv=void 0!==n.dragVertexDelay?n.dragVertexDelay:500,i.Xv=null,i.Hv=null,i.Jv=null,i.Kv=null,i.Yv=null,i.Zv=null,i.$v=n.clickTolerance?n.clickTolerance*n.clickTolerance:36,i.Qv=new Nj({source:new Fd({useSpatialIndex:!1,wrapX:!!n.wrapX&&n.wrapX}),style:n.style?n.style:(e=Zv(),function(t,n){return e[t.getGeometry().getType()]}),updateWhileInteracting:!0}),i.H=n.geometryName,i.Kr=n.condition?n.condition:Uu,i.td,n.freehand?i.td=Fu:i.td=n.freehandCondition?n.freehandCondition:qu,i.addChangeListener(ju,i.rd),i}return YT(n,t),n.prototype.setMap=function(n){t.prototype.setMap.call(this,n),this.rd()},n.prototype.getOverlay=function(){return this.Qv},n.prototype.handleEvent=function(n){n.originalEvent.type===L&&n.originalEvent.preventDefault(),this.Gv=this.ye!==ZT&&this.td(n);var i=n.type===pa.POINTERMOVE,r=!0;!this.Gv&&this.Fv&&n.type===pa.POINTERDRAG&&(Date.now()-this.Fv>=this.Vv?(this.Nv=n.pixel,this.Iv=!this.Gv,i=!0):this.Fv=void 0,this.Iv&&void 0!==this.zv&&(clearTimeout(this.zv),this.zv=void 0));return this.Gv&&n.type===pa.POINTERDRAG&&null!==this.Hv?(this.ed(n.coordinate),r=!1):this.Gv&&n.type===pa.POINTERDOWN?r=!1:i&&this.getPointerCount()<2?(r=n.type===pa.POINTERMOVE)&&this.Gv?(this.Jn(n),this.Iv&&n.originalEvent.preventDefault()):("mouse"===n.originalEvent.pointerType||n.type===pa.POINTERDRAG&&void 0===this.zv)&&this.Jn(n):n.type===pa.DBLCLICK&&(r=!1),t.prototype.handleEvent.call(this,n)&&r},n.prototype.handleDownEvent=function(t){return this.Iv=!this.Gv,this.Gv?(this.Nv=t.pixel,this.Xv||this.od(t.coordinate),!0):this.Kr(t)?(this.Fv=Date.now(),this.zv=setTimeout(function(){this.Jn(new da(pa.POINTERMOVE,t.map,t.originalEvent,!1,t.frameState))}.bind(this),this.Vv),this.Nv=t.pixel,!0):(this.Fv=void 0,!1)},n.prototype.handleUpEvent=function(t){var n=!0;if(0===this.getPointerCount())if(this.zv&&(clearTimeout(this.zv),this.zv=void 0),this.Jn(t),this.Iv){var i=!this.Xv;i&&this.od(t.coordinate),!i&&this.Gv?this.finishDrawing():this.Gv||i&&this.ye!==ZT||(this.sd(t.pixel)?this.Wv(t)&&this.finishDrawing():this.ed(t.coordinate)),n=!1}else this.Gv&&this.abortDrawing();return!n&&this.Uv&&t.preventDefault(),n},n.prototype.Jn=function(t){if(this.Lv=t.originalEvent.pointerType,this.Nv&&(!this.Gv&&this.Iv||this.Gv&&!this.Iv)){var n=this.Nv,i=t.pixel,r=n[0]-i[0],e=n[1]-i[1],o=r*r+e*e;if(this.Iv=this.Gv?o>this.$v:o<=this.$v,!this.Iv)return}this.Xv?this.ad(t.coordinate):this.ud(t.coordinate.slice())},n.prototype.sd=function(t){var n=!1;if(this.Hv){var i=!1,r=[this.Xv],e=this.ye;if(e===ZT)n=!0;else if(e===tE)n=2===this.Kv.length;else if(e===$T)i=this.Kv.length>this.qv;else if(e===QT){var o=this.Kv;i=o[0].length>this.qv,r=[o[0][0],o[0][o[0].length-2]]}if(i)for(var s=this.getMap(),a=0,u=r.length;a<u;a++){var c=r[a],h=s.getPixelFromCoordinate(c),f=t[0]-h[0],l=t[1]-h[1],v=this.Gv?1:this.Dv;if(n=Math.sqrt(f*f+l*l)<=v){this.Xv=c;break}}}return n},n.prototype.ud=function(t){this.Jv?this.Jv.getGeometry().setCoordinates(t):(this.Jv=new Tt(new Te(t)),this.hd())},n.prototype.fd=function(t){this.Yv||(this.Yv=new Tt);var n=t.getLinearRing(0),i=this.Yv.getGeometry();i?(i.setFlatCoordinates(n.getLayout(),n.getFlatCoordinates()),i.changed()):(i=new kj(n.getFlatCoordinates(),n.getLayout()),this.Yv.setGeometry(i))},n.prototype.od=function(t){var n=this.getMap().getView().getProjection();this.Xv=t,this.ye===ZT?this.Kv=t.slice():this.ye===QT?(this.Kv=[[t.slice(),t.slice()]],this.Zv=this.Kv[0]):this.Kv=[t.slice(),t.slice()],this.Zv&&(this.Yv=new Tt(new kj(this.Zv)));var i=this.Va(this.Kv,void 0,n);this.Hv=new Tt,this.H&&this.Hv.setGeometryName(this.H),this.Hv.setGeometry(i),this.hd(),this.dispatchEvent(new eE(nE,this.Hv))},n.prototype.ad=function(t){var n,i,r=this.getMap(),e=this.Hv.getGeometry(),o=r.getView().getProjection();(this.ye===ZT?i=this.Kv:this.ye===QT?(i=(n=this.Kv[0])[n.length-1],this.sd(r.getPixelFromCoordinate(t))&&(t=this.Xv.slice())):i=(n=this.Kv)[n.length-1],i[0]=t[0],i[1]=t[1],this.Va(this.Kv,e,o),this.Jv)&&this.Jv.getGeometry().setCoordinates(t);if(e.getType()===Pt.POLYGON&&this.ye!==QT)this.fd(e);else if(this.Zv){this.Yv.getGeometry().setCoordinates(this.Zv)}this.hd()},n.prototype.ed=function(t){var n,i,r=this.Hv.getGeometry(),e=this.getMap().getView().getProjection(),o=this.ye;o===$T||o===tE?(this.Xv=t.slice(),(i=this.Kv).length>=this.Bv&&(this.Gv?i.pop():n=!0),i.push(t.slice()),this.Va(i,r,e)):o===QT&&((i=this.Kv[0]).length>=this.Bv&&(this.Gv?i.pop():n=!0),i.push(t.slice()),n&&(this.Xv=i[0]),this.Va(this.Kv,r,e)),this.ud(t.slice()),this.hd(),n&&this.finishDrawing()},n.prototype.removeLastPoint=function(){if(this.Hv){var t,n=this.Hv.getGeometry(),i=this.getMap().getView().getProjection(),r=this.ye;if(r===$T||r===tE){if((t=this.Kv).splice(-2,1),t.length>=2){this.Xv=t[t.length-2].slice();var e=this.Xv.slice();t[t.length-1]=e,this.ud(e)}this.Va(t,n,i),n.getType()===Pt.POLYGON&&this.Yv&&this.fd(n)}else if(r===QT){(t=this.Kv[0]).splice(-2,1);var o=this.Yv.getGeometry();if(t.length>=2){e=t[t.length-2].slice();t[t.length-1]=e,this.ud(e)}o.setCoordinates(t),this.Va(this.Kv,n,i)}1===t.length&&this.abortDrawing(),this.hd()}},n.prototype.finishDrawing=function(){var t=this.ld();if(t){var n=this.Kv,i=t.getGeometry(),r=this.getMap().getView().getProjection();this.ye===$T?(n.pop(),this.Va(n,i,r)):this.ye===QT&&(n[0].pop(),this.Va(n,i,r),n=i.getCoordinates()),this.nl===Pt.MULTI_POINT?t.setGeometry(new bj([n])):this.nl===Pt.MULTI_LINE_STRING?t.setGeometry(new _j([n])):this.nl===Pt.MULTI_POLYGON&&t.setGeometry(new Ej([n])),this.dispatchEvent(new eE(iE,t)),this.Le&&this.Le.push(t),this.Ov&&this.Ov.addFeature(t)}},n.prototype.ld=function(){this.Xv=null;var t=this.Hv;return this.Hv=null,this.Jv=null,this.Yv=null,this.Qv.getSource().clear(!0),t},n.prototype.abortDrawing=function(){var t=this.ld();t&&this.dispatchEvent(new eE(rE,t))},n.prototype.appendCoordinates=function(t){var n,i=this.ye,r=!this.Hv;if(r&&this.od(t[0]),i===$T||i===tE)n=this.Kv;else{if(i!==QT)return;n=this.Kv&&this.Kv.length?this.Kv[0]:[]}r&&n.shift(),n.pop();for(var e=0;e<t.length;e++)this.ed(t[e]);var o=t[t.length-1];this.ed(o),this.ad(o)},n.prototype.extend=function(t){var n=t.getGeometry();this.Hv=t,this.Kv=n.getCoordinates();var i=this.Kv[this.Kv.length-1];this.Xv=i.slice(),this.Kv.push(i.slice()),this.Jv=new Tt(new Te(i)),this.hd(),this.dispatchEvent(new eE(nE,this.Hv))},n.prototype.hd=function(){var t=[];this.Hv&&t.push(this.Hv),this.Yv&&t.push(this.Yv),this.Jv&&t.push(this.Jv);var n=this.Qv.getSource();n.clear(!0),n.addFeatures(t)},n.prototype.rd=function(){var t=this.getMap(),n=this.getActive();t&&n||this.abortDrawing(),this.Qv.setMap(n?t:null)},n}(Cu),sE=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),aE="extentchanged",uE=function(t){function n(n){var i=t.call(this,aE)||this;return i.extent=n,i}return sE(n,t),n}(f);function cE(){var t=Zv();return function(n,i){return t[Pt.POINT]}}function hE(t){return function(n){return jn([t,n])}}function fE(t,n){return t[0]==n[0]?function(i){return jn([t,[i[0],n[1]]])}:t[1]==n[1]?function(i){return jn([t,[n[0],i[1]]])}:null}var lE=function(t){function n(n){var i,r=this,e=n||{};return(r=t.call(this,e)||this).on,r.once,r.un,r.Kr=e.condition?e.condition:Fu,r.st=null,r.vd=null,r.dd=void 0!==e.pixelTolerance?e.pixelTolerance:10,r.yd=!1,r.md=null,r.wd=null,n||(n={}),r.bd=new Nj({source:new Fd({useSpatialIndex:!1,wrapX:!!n.wrapX}),style:n.boxStyle?n.boxStyle:(i=Zv(),function(t,n){return i[Pt.POLYGON]}),updateWhileAnimating:!0,updateWhileInteracting:!0}),r.gd=new Nj({source:new Fd({useSpatialIndex:!1,wrapX:!!n.wrapX}),style:n.pointerStyle?n.pointerStyle:cE(),updateWhileAnimating:!0,updateWhileInteracting:!0}),n.extent&&r.setExtent(n.extent),r}return sE(n,t),n.prototype.xd=function(t,n){var i=n.getCoordinateFromPixelInternal(t),r=this.getExtentInternal();if(r){var e=function(t){return[[[t[0],t[1]],[t[0],t[3]]],[[t[0],t[3]],[t[2],t[3]]],[[t[2],t[3]],[t[2],t[1]]],[[t[2],t[1]],[t[0],t[1]]]]}(r);e.sort((function(t,n){return or(i,t)-or(i,n)}));var o=e[0],s=Zi(i,o),a=n.getPixelFromCoordinateInternal(s);if(er(t,a)<=this.dd){var u=n.getPixelFromCoordinateInternal(o[0]),c=n.getPixelFromCoordinateInternal(o[1]),h=rr(a,u),f=rr(a,c),l=Math.sqrt(Math.min(h,f));return this.yd=l<=this.dd,this.yd&&(s=h>f?o[1]:o[0]),s}}return null},n.prototype.Jn=function(t){var n=t.pixel,i=t.map,r=this.xd(n,i);r||(r=i.getCoordinateFromPixelInternal(n)),this.jd(r)},n.prototype.Sd=function(t){var n=this.md;return n?t?n.setGeometry($e(t)):n.setGeometry(void 0):(n=new Tt(t?$e(t):{}),this.md=n,this.bd.getSource().addFeature(n)),n},n.prototype.jd=function(t){var n=this.wd;n?n.getGeometry().setCoordinates(t):(n=new Tt(new Te(t)),this.wd=n,this.gd.getSource().addFeature(n));return n},n.prototype.handleEvent=function(n){return!n.originalEvent||!this.Kr(n)||(n.type!=pa.POINTERMOVE||this.handlingDownUpSequence||this.Jn(n),t.prototype.handleEvent.call(this,n),!1)},n.prototype.handleDownEvent=function(t){var n=t.pixel,i=t.map,r=this.getExtentInternal(),e=this.xd(n,i),o=function(t){var n=null,i=null;return t[0]==r[0]?n=r[2]:t[0]==r[2]&&(n=r[0]),t[1]==r[1]?i=r[3]:t[1]==r[3]&&(i=r[1]),null!==n&&null!==i?[n,i]:null};if(e&&r){var s=e[0]==r[0]||e[0]==r[2]?e[0]:null,a=e[1]==r[1]||e[1]==r[3]?e[1]:null;null!==s&&null!==a?this.vd=hE(o(e)):null!==s?this.vd=fE(o([s,r[1]]),o([s,r[3]])):null!==a&&(this.vd=fE(o([r[0],a]),o([r[2],a])))}else e=i.getCoordinateFromPixelInternal(n),this.setExtent([e[0],e[1],e[0],e[1]]),this.vd=hE(e);return!0},n.prototype.handleDragEvent=function(t){if(this.vd){var n=t.coordinate;this.setExtent(this.vd(n)),this.jd(n)}},n.prototype.handleUpEvent=function(t){this.vd=null;var n=this.getExtentInternal();return n&&0!==Wn(n)||this.setExtent(null),!1},n.prototype.setMap=function(n){this.bd.setMap(n),this.gd.setMap(n),t.prototype.setMap.call(this,n)},n.prototype.getExtent=function(){return Lr(this.getExtentInternal(),this.getMap().getView().getProjection())},n.prototype.getExtentInternal=function(){return this.st},n.prototype.setExtent=function(t){this.st=t||null,this.Sd(t),this.dispatchEvent(new uE(this.st))},n}(Cu);function vE(t){return(vE="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var dE=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),pE=[0,0,0,0],yE=[],mE="modifystart",wE="modifyend",bE=function(t){function n(n,i,r){var e=t.call(this,n)||this;return e.features=i,e.mapBrowserEvent=r,e}return dE(n,t),n}(f);function gE(t,n){return t.index-n.index}function xE(t,n,i){var r=n.geometry;if(r.getType()===Pt.CIRCLE){var e=r;if(1===n.index){var o=Nr();o&&(e=e.clone().transform(o,i));var s=rr(e.getCenter(),Fr(t,i)),a=Math.sqrt(s)-e.getRadius();return a*a}}var u=Fr(t,i);return yE[0]=Fr(n.segment[0],i),yE[1]=Fr(n.segment[1],i),or(u,yE)}function jE(t,n,i){var r=n.geometry;if(r.getType()===Pt.CIRCLE&&1===n.index){var e=r,o=Nr();return o&&(e=e.clone().transform(o,i)),zr(e.getClosestPoint(Fr(t,i)),i)}var s=Fr(t,i);return yE[0]=Fr(n.segment[0],i),yE[1]=Fr(n.segment[1],i),zr(Zi(s,yE),i)}var SE=function(t){function n(n){var i,r,e=t.call(this,n)||this;if(e.on,e.once,e.un,e.kd=e.Ku.bind(e),e.Kr=n.condition?n.condition:Vu,e.Md=function(t){return Pu(t)&&Du(t)},e._d=n.deleteCondition?n.deleteCondition:e.Md,e.Od=n.insertVertexCondition?n.insertVertexCondition:Fu,e.wd=null,e.Td=null,e.Ed=[0,0],e.Ad=!1,e.Cd=null,e.Rd=new od,e.dd=void 0!==n.pixelTolerance?n.pixelTolerance:10,e.yd=!1,e.Pd=!1,e.Id=[],e.Qv=new Nj({source:new Fd({useSpatialIndex:!1,wrapX:!!n.wrapX}),style:n.style?n.style:(i=Zv(),function(t,n){return i[Pt.POINT]}),updateWhileAnimating:!0,updateWhileInteracting:!0}),e.Nd={Point:e.zd.bind(e),LineString:e.Fd.bind(e),LinearRing:e.Fd.bind(e),Polygon:e.Ld.bind(e),MultiPoint:e.Gd.bind(e),MultiLineString:e.Dd.bind(e),MultiPolygon:e.Ud.bind(e),Circle:e.qd.bind(e),GeometryCollection:e.Bd.bind(e)},e.Ov=null,e.Wd=null,n.features?r=n.features:n.source&&(e.Ov=n.source,r=new ft(e.Ov.getFeatures()),e.Ov.addEventListener(Td,e.Vd.bind(e)),e.Ov.addEventListener(Cd,e.Xd.bind(e))),!r)throw new Error("The modify interaction requires features, a source or a layer");return n.hitDetection&&(e.Wd=n.hitDetection),e.Le=r,e.Le.forEach(e.Hd.bind(e)),e.Le.addEventListener(st,e.Jd.bind(e)),e.Le.addEventListener(at,e.Kd.bind(e)),e.Yd=null,e.Br=[0,0],e.Zd=void 0===n.snapToPointer?!e.Wd:n.snapToPointer,e}return dE(n,t),n.prototype.Hd=function(t){var n=t.getGeometry();if(n){var i=this.Nd[n.getType()];i&&i(t,n)}var r=this.getMap();r&&r.isRendered()&&this.getActive()&&this.$d(this.Ed,r),t.addEventListener(N,this.kd)},n.prototype.Qd=function(t,n){if(!this.Cd){this.Cd=new ft;for(var i=this.Cd.getArray(),r=0,e=n.length;r<e;++r)for(var o=n[r],s=0,a=o.length;s<a;++s){var u=o[s].feature;u&&-1===i.indexOf(u)&&this.Cd.push(u)}0===this.Cd.getLength()?this.Cd=null:this.dispatchEvent(new bE(mE,this.Cd,t))}},n.prototype.tp=function(t){this.np(t),this.wd&&0===this.Le.getLength()&&(this.Qv.getSource().removeFeature(this.wd),this.wd=null),t.removeEventListener(N,this.kd)},n.prototype.np=function(t){var n=this.Rd,i=[];n.forEach((function(n){t===n.feature&&i.push(n)}));for(var r=i.length-1;r>=0;--r){for(var e=i[r],o=this.Id.length-1;o>=0;--o)this.Id[o][0]===e&&this.Id.splice(o,1);n.remove(e)}},n.prototype.setActive=function(n){this.wd&&!n&&(this.Qv.getSource().removeFeature(this.wd),this.wd=null),t.prototype.setActive.call(this,n)},n.prototype.setMap=function(n){this.Qv.setMap(n),t.prototype.setMap.call(this,n)},n.prototype.getOverlay=function(){return this.Qv},n.prototype.Vd=function(t){t.feature&&this.Le.push(t.feature)},n.prototype.Xd=function(t){t.feature&&this.Le.remove(t.feature)},n.prototype.Jd=function(t){this.Hd(t.element)},n.prototype.Ku=function(t){if(!this.Pd){var n=t.target;this.tp(n),this.Hd(n)}},n.prototype.Kd=function(t){var n=t.element;this.tp(n)},n.prototype.zd=function(t,n){var i=n.getCoordinates(),r={feature:t,geometry:n,segment:[i,i]};this.Rd.insert(n.getExtent(),r)},n.prototype.Gd=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length;r<e;++r){var o=i[r],s={feature:t,geometry:n,depth:[r],index:r,segment:[o,o]};this.Rd.insert(n.getExtent(),s)}},n.prototype.Fd=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length-1;r<e;++r){var o=i.slice(r,r+2),s={feature:t,geometry:n,index:r,segment:o};this.Rd.insert(jn(o),s)}},n.prototype.Dd=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length;r<e;++r)for(var o=i[r],s=0,a=o.length-1;s<a;++s){var u=o.slice(s,s+2),c={feature:t,geometry:n,depth:[r],index:s,segment:u};this.Rd.insert(jn(u),c)}},n.prototype.Ld=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length;r<e;++r)for(var o=i[r],s=0,a=o.length-1;s<a;++s){var u=o.slice(s,s+2),c={feature:t,geometry:n,depth:[r],index:s,segment:u};this.Rd.insert(jn(u),c)}},n.prototype.Ud=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length;r<e;++r)for(var o=i[r],s=0,a=o.length;s<a;++s)for(var u=o[s],c=0,h=u.length-1;c<h;++c){var f=u.slice(c,c+2),l={feature:t,geometry:n,depth:[s,r],index:c,segment:f};this.Rd.insert(jn(f),l)}},n.prototype.qd=function(t,n){var i=n.getCenter(),r={feature:t,geometry:n,index:0,segment:[i,i]},e={feature:t,geometry:n,index:1,segment:[i,i]},o=[r,e];r.featureSegments=o,e.featureSegments=o,this.Rd.insert(Pn(i),r);var s=n,a=Nr();if(a&&this.getMap()){var u=this.getMap().getView().getProjection();s=Qe(s=s.clone().transform(a,u)).transform(u,a)}this.Rd.insert(s.getExtent(),e)},n.prototype.Bd=function(t,n){for(var i=n.getGeometriesArray(),r=0;r<i.length;++r){var e=i[r];(0,this.Nd[e.getType()])(t,e)}},n.prototype.ip=function(t,n,i){var r=this.wd;r?r.getGeometry().setCoordinates(t):(r=new Tt(new Te(t)),this.wd=r,this.Qv.getSource().addFeature(r));return r.set("features",n),r.set("geometries",i),r},n.prototype.handleEvent=function(n){return!n.originalEvent||(this.Yd=n,n.map.getView().getInteracting()||n.type!=pa.POINTERMOVE||this.handlingDownUpSequence||this.Jn(n),this.wd&&this._d(n)&&(i=!(n.type!=pa.SINGLECLICK||!this.Ad)||this.removePoint()),n.type==pa.SINGLECLICK&&(this.Ad=!1),t.prototype.handleEvent.call(this,n)&&!i);var i},n.prototype.handleDragEvent=function(t){this.Ad=!1,this.Qd(t,this.Id);for(var n=[t.coordinate[0]+this.Br[0],t.coordinate[1]+this.Br[1]],i=[],r=[],e=0,o=this.Id.length;e<o;++e){var s=this.Id[e],a=s[0],u=a.feature;-1===i.indexOf(u)&&i.push(u);var c=a.geometry;-1===r.indexOf(c)&&r.push(c);for(var h=a.depth,f=void 0,l=a.segment,v=s[1];n.length<c.getStride();)n.push(l[v][n.length]);switch(c.getType()){case Pt.POINT:f=n,l[0]=n,l[1]=n;break;case Pt.MULTI_POINT:(f=c.getCoordinates())[a.index]=n,l[0]=n,l[1]=n;break;case Pt.LINE_STRING:(f=c.getCoordinates())[a.index+v]=n,l[v]=n;break;case Pt.MULTI_LINE_STRING:case Pt.POLYGON:(f=c.getCoordinates())[h[0]][a.index+v]=n,l[v]=n;break;case Pt.MULTI_POLYGON:(f=c.getCoordinates())[h[1]][h[0]][a.index+v]=n,l[v]=n;break;case Pt.CIRCLE:if(l[0]=n,l[1]=n,0===a.index)this.Pd=!0,c.setCenter(n),this.Pd=!1;else{this.Pd=!0;var d=t.map.getView().getProjection(),p=er(Fr(c.getCenter(),d),Fr(n,d)),y=Nr();if(y){var m=c.clone().transform(y,d);m.setRadius(p),p=m.transform(d,y).getRadius()}c.setRadius(p),this.Pd=!1}}f&&this.rp(c,f)}this.ip(n,i,r)},n.prototype.handleDownEvent=function(t){if(!this.Kr(t))return!1;var n=t.coordinate;this.$d(t.pixel,t.map,n),this.Id.length=0,this.Cd=null;var i=this.wd;if(i){var r=t.map.getView().getProjection(),e=[],s=i.getGeometry().getCoordinates(),a=jn([s]),u=this.Rd.getInExtent(a),c={};u.sort(gE);for(var h=0,f=u.length;h<f;++h){var l=u[h],v=l.segment,d=o(l.geometry),p=l.depth;if(p&&(d+="-"+p.join("-")),c[d]||(c[d]=new Array(2)),l.geometry.getType()!==Pt.CIRCLE||1!==l.index)if(!tr(v[0],s)||c[d][0])if(!tr(v[1],s)||c[d][1])o(v)in this.Td&&!c[d][0]&&!c[d][1]&&this.Od(t)&&e.push(l);else{if((l.geometry.getType()===Pt.LINE_STRING||l.geometry.getType()===Pt.MULTI_LINE_STRING)&&c[d][0]&&0===c[d][0].index)continue;this.Id.push([l,1]),c[d][1]=l}else this.Id.push([l,0]),c[d][0]=l;else tr(jE(n,l,r),s)&&!c[d][0]&&(this.Id.push([l,0]),c[d][0]=l)}e.length&&this.Qd(t,[e]);for(var y=e.length-1;y>=0;--y)this.ep(e[y],s)}return!!this.wd},n.prototype.handleUpEvent=function(t){for(var n=this.Id.length-1;n>=0;--n){var i=this.Id[n][0],r=i.geometry;if(r.getType()===Pt.CIRCLE){var e=r.getCenter(),o=i.featureSegments[0],s=i.featureSegments[1];o.segment[0]=e,o.segment[1]=e,s.segment[0]=e,s.segment[1]=e,this.Rd.update(Pn(e),o);var a=r,u=Nr();if(u){var c=t.map.getView().getProjection();a=Qe(a=a.clone().transform(u,c)).transform(c,u)}this.Rd.update(a.getExtent(),s)}else this.Rd.update(jn(i.segment),i)}return this.Cd&&(this.dispatchEvent(new bE(wE,this.Cd,t)),this.Cd=null),!1},n.prototype.Jn=function(t){this.Ed=t.pixel,this.$d(t.pixel,t.map,t.coordinate)},n.prototype.$d=function(t,n,i){var r,e,s=this,a=i||n.getCoordinateFromPixel(t),u=n.getView().getProjection();if(this.Wd){var c="object"===vE(this.Wd)?function(t){return t===s.Wd}:void 0;n.forEachFeatureAtPixel(t,(function(t,n,i){if((i=i||t.getGeometry()).getType()===Pt.POINT&&y(s.Le.getArray(),t)){e=i;var o=i.getFlatCoordinates().slice(0,2);r=[{feature:t,geometry:i,segment:[o,o]}]}return!0}),{layerFilter:c})}if(!r){var h=Lr(Sn(Gr(Pn(a,pE),u),n.getView().getResolution()*this.dd,pE),u);r=this.Rd.getInExtent(h)}if(r&&r.length>0){var f=r.sort((function(t,n){return xE(a,t,u)-xE(a,n,u)}))[0],l=f.segment,v=jE(a,f,u),d=n.getPixelFromCoordinate(v),p=er(t,d);if(e||p<=this.dd){var m={};if(m[o(l)]=!0,this.Zd||(this.Br[0]=v[0]-a[0],this.Br[1]=v[1]-a[1]),f.geometry.getType()===Pt.CIRCLE&&1===f.index)this.yd=!0,this.ip(v,[f.feature],[f.geometry]);else{var w=n.getPixelFromCoordinate(l[0]),b=n.getPixelFromCoordinate(l[1]),g=rr(d,w),x=rr(d,b);p=Math.sqrt(Math.min(g,x)),this.yd=p<=this.dd,this.yd&&(v=g>x?l[1]:l[0]),this.ip(v,[f.feature],[f.geometry]);var j={};j[o(f.geometry)]=!0;for(var S=1,k=r.length;S<k;++S){var M=r[S].segment;if(!(tr(l[0],M[0])&&tr(l[1],M[1])||tr(l[0],M[1])&&tr(l[1],M[0])))break;var _=o(r[S].geometry);_ in j||(j[_]=!0,m[o(M)]=!0)}}return void(this.Td=m)}}this.wd&&(this.Qv.getSource().removeFeature(this.wd),this.wd=null)},n.prototype.ep=function(t,n){for(var i,r=t.segment,e=t.feature,o=t.geometry,s=t.depth,a=t.index;n.length<o.getStride();)n.push(0);switch(o.getType()){case Pt.MULTI_LINE_STRING:case Pt.POLYGON:(i=o.getCoordinates())[s[0]].splice(a+1,0,n);break;case Pt.MULTI_POLYGON:(i=o.getCoordinates())[s[1]][s[0]].splice(a+1,0,n);break;case Pt.LINE_STRING:(i=o.getCoordinates()).splice(a+1,0,n);break;default:return}this.rp(o,i);var u=this.Rd;u.remove(t),this.op(o,a,s,1);var c={segment:[r[0],n],feature:e,geometry:o,depth:s,index:a};u.insert(jn(c.segment),c),this.Id.push([c,1]);var h={segment:[n,r[1]],feature:e,geometry:o,depth:s,index:a+1};u.insert(jn(h.segment),h),this.Id.push([h,0]),this.Ad=!0},n.prototype.removePoint=function(){if(this.Yd&&this.Yd.type!=pa.POINTERDRAG){var t=this.Yd;this.Qd(t,this.Id);var n=this.sp();return this.Cd&&this.dispatchEvent(new bE(wE,this.Cd,t)),this.Cd=null,n}return!1},n.prototype.sp=function(){var t,n,i,r,e,s,a,u,c,h,f,l=this.Id,v={},d=!1;for(e=l.length-1;e>=0;--e)f=o((h=(i=l[e])[0]).feature),h.depth&&(f+="-"+h.depth.join("-")),f in v||(v[f]={}),0===i[1]?(v[f].right=h,v[f].index=h.index):1==i[1]&&(v[f].left=h,v[f].index=h.index+1);for(f in v){switch(c=v[f].right,a=v[f].left,(u=(s=v[f].index)-1)<0&&(u=0),t=n=(r=(h=void 0!==a?a:c).geometry).getCoordinates(),d=!1,r.getType()){case Pt.MULTI_LINE_STRING:n[h.depth[0]].length>2&&(n[h.depth[0]].splice(s,1),d=!0);break;case Pt.LINE_STRING:n.length>2&&(n.splice(s,1),d=!0);break;case Pt.MULTI_POLYGON:t=t[h.depth[1]];case Pt.POLYGON:(t=t[h.depth[0]]).length>4&&(s==t.length-1&&(s=0),t.splice(s,1),d=!0,0===s&&(t.pop(),t.push(t[0]),u=t.length-1))}if(d){this.rp(r,n);var p=[];if(void 0!==a&&(this.Rd.remove(a),p.push(a.segment[0])),void 0!==c&&(this.Rd.remove(c),p.push(c.segment[1])),void 0!==a&&void 0!==c){var y={depth:h.depth,feature:h.feature,geometry:h.geometry,index:u,segment:p};this.Rd.insert(jn(y.segment),y)}this.op(r,s,h.depth,-1),this.wd&&(this.Qv.getSource().removeFeature(this.wd),this.wd=null),l.length=0}}return d},n.prototype.rp=function(t,n){this.Pd=!0,t.setCoordinates(n),this.Pd=!1},n.prototype.op=function(t,n,i,r){this.Rd.forEachInExtent(t.getExtent(),(function(e){e.geometry===t&&(void 0===i||void 0===e.depth||x(e.depth,i))&&e.index>n&&(e.index+=r)}))},n}(Cu),kE=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ME="select",_E=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.selected=i,o.deselected=r,o.mapBrowserEvent=e,o}return kE(n,t),n}(f),OE={};var TE=function(t){function n(n){var i=t.call(this)||this;i.on,i.once,i.un;var r,e,o=n||{};if(i.ap=i.Hd.bind(i),i.up=i.tp.bind(i),i.Kr=o.condition?o.condition:Du,i.cp=o.addCondition?o.addCondition:Gu,i.hp=o.removeCondition?o.removeCondition:Gu,i.fp=o.toggleCondition?o.toggleCondition:qu,i.lp=!!o.multi&&o.multi,i.vp=o.filter?o.filter:k,i.dp=o.hitTolerance?o.hitTolerance:0,i.K=void 0!==o.style?o.style:(b((r=Zv())[Pt.POLYGON],r[Pt.LINE_STRING]),b(r[Pt.GEOMETRY_COLLECTION],r[Pt.LINE_STRING]),function(t){return t.getGeometry()?r[t.getGeometry().getType()]:null}),i.Le=o.features||new ft,o.layers)if("function"==typeof o.layers)e=o.layers;else{var s=o.layers;e=function(t){return y(s,t)}}else e=k;return i.pp=e,i.yp={},i}return kE(n,t),n.prototype.mp=function(t,n){this.yp[o(t)]=n},n.prototype.getFeatures=function(){return this.Le},n.prototype.getHitTolerance=function(){return this.dp},n.prototype.getLayer=function(t){return this.yp[o(t)]},n.prototype.setHitTolerance=function(t){this.dp=t},n.prototype.setMap=function(n){this.getMap()&&this.K&&this.Le.forEach(this.wp.bind(this)),t.prototype.setMap.call(this,n),n?(this.Le.addEventListener(st,this.ap),this.Le.addEventListener(at,this.up),this.K&&this.Le.forEach(this.bp.bind(this))):(this.Le.removeEventListener(st,this.ap),this.Le.removeEventListener(at,this.up))},n.prototype.Hd=function(t){var n=t.element;if(this.K&&this.bp(n),!this.getLayer(n)){var i=this.getMap().getAllLayers().find((function(t){if(t instanceof Nj&&t.getSource()&&t.getSource().hasFeature(n))return t}));i&&this.mp(n,i)}},n.prototype.tp=function(t){var n=t.element;this.K&&this.wp(n)},n.prototype.getStyle=function(){return this.K},n.prototype.bp=function(t){var n=o(t);n in OE||(OE[n]=t.getStyle()),t.setStyle(this.K)},n.prototype.wp=function(t){for(var i=this.getMap().getInteractions().getArray(),r=i.length-1;r>=0;--r){var e=i[r];if(e!==this&&e instanceof n&&e.getStyle()&&-1!==e.getFeatures().getArray().lastIndexOf(t))return void t.setStyle(e.getStyle())}var s=o(t);t.setStyle(OE[s]),delete OE[s]},n.prototype.gp=function(t){delete this.yp[o(t)]},n.prototype.handleEvent=function(t){if(!this.Kr(t))return!0;var n=this.cp(t),i=this.hp(t),r=this.fp(t),e=!n&&!i&&!r,o=t.map,s=this.getFeatures(),a=[],u=[];if(e){A(this.yp),o.forEachFeatureAtPixel(t.pixel,function(t,n){if(this.vp(t,n))return this.mp(t,n),u.push(t),!this.lp}.bind(this),{layerFilter:this.pp,hitTolerance:this.dp});for(var c=s.getLength()-1;c>=0;--c){var h=s.item(c),f=u.indexOf(h);f>-1?u.splice(f,1):(s.remove(h),a.push(h))}0!==u.length&&s.extend(u)}else{o.forEachFeatureAtPixel(t.pixel,function(t,e){if(this.vp(t,e))return!n&&!r||y(s.getArray(),t)?(i||r)&&y(s.getArray(),t)&&(a.push(t),this.gp(t)):(this.mp(t,e),u.push(t)),!this.lp}.bind(this),{layerFilter:this.pp,hitTolerance:this.dp});for(var l=a.length-1;l>=0;--l)s.remove(a[l]);s.extend(u)}return(u.length>0||a.length>0)&&this.dispatchEvent(new _E(ME,u,a,t)),!0},n}(_u),EE=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function AE(t){return t.feature?t.feature:t.element?t.element:void 0}var CE=[],RE=function(t){function n(n){var i=this,r=n||{},e=r;return e.handleDownEvent||(e.handleDownEvent=k),e.stopDown||(e.stopDown=M),(i=t.call(this,e)||this).Ov=r.source?r.source:null,i.xp=void 0===r.vertex||r.vertex,i.jp=void 0===r.edge||r.edge,i.Le=r.features?r.features:null,i.Sp=[],i.kp={},i.Mp={},i._p={},i.dd=void 0!==r.pixelTolerance?r.pixelTolerance:10,i.Rd=new od,i.Op={Point:i.Tp.bind(i),LineString:i.Ep.bind(i),LinearRing:i.Ep.bind(i),Polygon:i.Ap.bind(i),MultiPoint:i.Cp.bind(i),MultiLineString:i.Rp.bind(i),MultiPolygon:i.Pp.bind(i),GeometryCollection:i.Ip.bind(i),Circle:i.Np.bind(i)},i}return EE(n,t),n.prototype.addFeature=function(t,n){var i=void 0===n||n,r=o(t),e=t.getGeometry();if(e){var s=this.Op[e.getType()];if(s){this.Mp[r]=e.getExtent([1/0,1/0,-1/0,-1/0]);var a=[];if(s(a,e),1===a.length)this.Rd.insert(jn(a[0]),{feature:t,segment:a[0]});else if(a.length>1){var u=a.map((function(t){return jn(t)})),c=a.map((function(n){return{feature:t,segment:n}}));this.Rd.load(u,c)}}}i&&(this.kp[r]=Y(t,N,this.Ku,this))},n.prototype.zp=function(t){this.addFeature(t)},n.prototype.Fp=function(t){this.removeFeature(t)},n.prototype.Lp=function(){var t;return this.Le?t=this.Le:this.Ov&&(t=this.Ov.getFeatures()),t},n.prototype.handleEvent=function(n){var i=this.snapTo(n.pixel,n.coordinate,n.map);return i&&(n.coordinate=i.vertex.slice(0,2),n.pixel=i.vertexPixel),t.prototype.handleEvent.call(this,n)},n.prototype.Jd=function(t){var n=AE(t);this.addFeature(n)},n.prototype.Kd=function(t){var n=AE(t);this.removeFeature(n)},n.prototype.Ku=function(t){var n=t.target;if(this.handlingDownUpSequence){var i=o(n);i in this._p||(this._p[i]=n)}else this.Gp(n)},n.prototype.handleUpEvent=function(t){var n=C(this._p);return n.length&&(n.forEach(this.Gp.bind(this)),this._p={}),!1},n.prototype.removeFeature=function(t,n){var i=void 0===n||n,r=o(t),e=this.Mp[r];if(e){var s=this.Rd,a=[];s.forEachInExtent(e,(function(n){t===n.feature&&a.push(n)}));for(var u=a.length-1;u>=0;--u)s.remove(a[u])}i&&($(this.kp[r]),delete this.kp[r])},n.prototype.setMap=function(n){var i=this.getMap(),r=this.Sp,e=this.Lp();i&&(r.forEach($),r.length=0,e.forEach(this.Fp.bind(this))),t.prototype.setMap.call(this,n),n&&(this.Le?r.push(Y(this.Le,st,this.Jd,this),Y(this.Le,at,this.Kd,this)):this.Ov&&r.push(Y(this.Ov,Td,this.Jd,this),Y(this.Ov,Cd,this.Kd,this)),e.forEach(this.zp.bind(this)))},n.prototype.snapTo=function(t,n,i){var r=jn([i.getCoordinateFromPixel([t[0]-this.dd,t[1]+this.dd]),i.getCoordinateFromPixel([t[0]+this.dd,t[1]-this.dd])]),e=this.Rd.getInExtent(r),o=e.length;if(0===o)return null;var s,a=i.getView().getProjection(),u=Fr(n,a),c=1/0,h=this.dd*this.dd,f=function(){if(s){var n=i.getPixelFromCoordinate(s);if(rr(t,n)<=h)return{vertex:s,vertexPixel:[Math.round(n[0]),Math.round(n[1])]}}return null};if(this.xp){for(var l=0;l<o;++l){(v=e[l]).feature.getGeometry().getType()!==Pt.CIRCLE&&v.segment.forEach((function(t){var n=Fr(t,a),i=rr(u,n);i<c&&(s=t,c=i)}))}if(x=f())return x}if(this.jp){for(l=0;l<o;++l){var v,d=null;if((v=e[l]).feature.getGeometry().getType()===Pt.CIRCLE){var p=v.feature.getGeometry(),y=Nr();y&&(p=p.clone().transform(y,a)),d=zr(Yi(u,p),a)}else{var m=v.segment,w=m[0],b=m[1];b&&(CE[0]=Fr(w,a),CE[1]=Fr(b,a),d=Zi(u,CE))}if(d){var g=rr(u,d);g<c&&(s=d,c=g)}}var x;if(x=f())return x}return null},n.prototype.Gp=function(t){this.removeFeature(t,!1),this.addFeature(t,!1)},n.prototype.Np=function(t,n){var i=this.getMap().getView().getProjection(),r=n,e=Nr();e&&(r=r.clone().transform(e,i));var o=Qe(r);e&&o.transform(i,e);for(var s=o.getCoordinates()[0],a=0,u=s.length-1;a<u;++a)t.push(s.slice(a,a+2))},n.prototype.Ip=function(t,n){for(var i=n.getGeometriesArray(),r=0;r<i.length;++r){var e=this.Op[i[r].getType()];e&&e(t,i[r])}},n.prototype.Ep=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length-1;r<e;++r)t.push(i.slice(r,r+2))},n.prototype.Rp=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length;r<e;++r)for(var o=i[r],s=0,a=o.length-1;s<a;++s)t.push(o.slice(s,s+2))},n.prototype.Cp=function(t,n){n.getCoordinates().forEach((function(n){t.push([n])}))},n.prototype.Pp=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length;r<e;++r)for(var o=i[r],s=0,a=o.length;s<a;++s)for(var u=o[s],c=0,h=u.length-1;c<h;++c)t.push(u.slice(c,c+2))},n.prototype.Tp=function(t,n){t.push([n.getCoordinates()])},n.prototype.Ap=function(t,n){for(var i=n.getCoordinates(),r=0,e=i.length;r<e;++r)for(var o=i[r],s=0,a=o.length-1;s<a;++s)t.push(o.slice(s,s+2))},n}(Cu),PE=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),IE="translatestart",NE="translating",zE="translateend",FE=function(t){function n(n,i,r,e,o){var s=t.call(this,n)||this;return s.features=i,s.coordinate=r,s.startCoordinate=e,s.mapBrowserEvent=o,s}return PE(n,t),n}(f),LE=function(t){function n(n){var i,r=this,e=n||{};if((r=t.call(this,e)||this).on,r.once,r.un,r.Dp=null,r.Up=null,r.Le=void 0!==e.features?e.features:null,e.layers&&!r.Le)if("function"==typeof e.layers)i=e.layers;else{var o=e.layers;i=function(t){return y(o,t)}}else i=k;return r.pp=i,r.vp=e.filter&&!r.Le?e.filter:k,r.dp=e.hitTolerance?e.hitTolerance:0,r.Kr=e.condition?e.condition:Fu,r.qp=null,r.addChangeListener(ju,r.Bp),r}return PE(n,t),n.prototype.handleDownEvent=function(t){if(!t.originalEvent||!this.Kr(t))return!1;if(this.qp=this.Wp(t.pixel,t.map),!this.Dp&&this.qp){this.Up=t.coordinate,this.Dp=t.coordinate,this.handleMoveEvent(t);var n=this.Le||new ft([this.qp]);return this.dispatchEvent(new FE(IE,n,t.coordinate,this.Up,t)),!0}return!1},n.prototype.handleUpEvent=function(t){if(this.Dp){this.Dp=null,this.handleMoveEvent(t);var n=this.Le||new ft([this.qp]);return this.dispatchEvent(new FE(zE,n,t.coordinate,this.Up,t)),this.Up=null,!0}return!1},n.prototype.handleDragEvent=function(t){if(this.Dp){var n=t.coordinate,i=n[0]-this.Dp[0],r=n[1]-this.Dp[1],e=this.Le||new ft([this.qp]);e.forEach((function(t){var n=t.getGeometry();n.translate(i,r),t.setGeometry(n)})),this.Dp=n,this.dispatchEvent(new FE(NE,e,n,this.Up,t))}},n.prototype.handleMoveEvent=function(t){var n=t.map.getViewport();this.Wp(t.pixel,t.map)?(n.classList.remove(this.Dp?"ol-grab":"ol-grabbing"),n.classList.add(this.Dp?"ol-grabbing":"ol-grab")):n.classList.remove("ol-grab","ol-grabbing")},n.prototype.Wp=function(t,n){return n.forEachFeatureAtPixel(t,function(t,n){if(this.vp(t,n)&&(!this.Le||y(this.Le.getArray(),t)))return t}.bind(this),{layerFilter:this.pp,hitTolerance:this.dp})},n.prototype.getHitTolerance=function(){return this.dp},n.prototype.setHitTolerance=function(t){this.dp=t},n.prototype.setMap=function(n){var i=this.getMap();t.prototype.setMap.call(this,n),this.rd(i)},n.prototype.Bp=function(){this.rd(null)},n.prototype.rd=function(t){var n=this.getMap(),i=this.getActive();n&&i||(n=n||t)&&n.getViewport().classList.remove("ol-grab","ol-grabbing")},n}(Cu);function GE(t,n,i,r,e,o){var s,a;void 0!==e?(s=e,a=void 0!==o?o:0):(s=[],a=0);for(var u=n;u<i;){var c=t[u++];s[a++]=t[u++],s[a++]=c;for(var h=2;h<r;++h)s[a++]=t[u++]}return s.length=a,s}var DE=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),UE={};UE[Pt.POINT]=function(t){var n;n=void 0!==t.m&&void 0!==t.z?new Te([t.x,t.y,t.z,t.m],Rt):void 0!==t.z?new Te([t.x,t.y,t.z],At):void 0!==t.m?new Te([t.x,t.y,t.m],Ct):new Te([t.x,t.y]);return n},UE[Pt.LINE_STRING]=function(t){var n=WE(t);return new kj(t.paths[0],n)},UE[Pt.POLYGON]=function(t){var n=WE(t);return new Ye(t.rings,n)},UE[Pt.MULTI_POINT]=function(t){var n=WE(t);return new bj(t.points,n)},UE[Pt.MULTI_LINE_STRING]=function(t){var n=WE(t);return new _j(t.paths,n)},UE[Pt.MULTI_POLYGON]=function(t){var n=WE(t);return new Ej(t.rings,n)};var qE={};function BE(t,n){var i,r,e;if(!t)return null;if("number"==typeof t.x&&"number"==typeof t.y)e=Pt.POINT;else if(t.points)e=Pt.MULTI_POINT;else if(t.paths){e=1===t.paths.length?Pt.LINE_STRING:Pt.MULTI_LINE_STRING}else if(t.rings){var o=t,s=WE(o),a=function(t,n){var i,r,e=[],o=[],s=[];for(i=0,r=t.length;i<r;++i){e.length=0,ce(e,0,t[i],n.length),qe(e,0,e.length,n.length)?o.push([t[i]]):s.push(t[i])}for(;s.length;){var a=s.shift(),u=!1;for(i=o.length-1;i>=0;i--){var c=o[i][0];if(On(new _e(c).getExtent(),new _e(a).getExtent())){o[i].push(a),u=!0;break}}u||o.push([a.reverse()])}return o}(o.rings,s);1===a.length?(e=Pt.POLYGON,t=E({},t,((i={}).rings=a[0],i))):(e=Pt.MULTI_POLYGON,t=E({},t,((r={}).rings=a,r)))}return Yj((0,UE[e])(t),!1,n)}function WE(t){var n=Et;return!0===t.hasZ&&!0===t.hasM?n=Rt:!0===t.hasZ?n=At:!0===t.hasM&&(n=Ct),n}function VE(t){var n=t.getLayout();return{hasZ:n===At||n===Rt,hasM:n===Ct||n===Rt}}function XE(t,n){return(0,qE[t.getType()])(Yj(t,!0,n),n)}qE[Pt.POINT]=function(t,n){var i,r=t.getCoordinates(),e=t.getLayout();e===At?i={x:r[0],y:r[1],z:r[2]}:e===Ct?i={x:r[0],y:r[1],m:r[2]}:e===Rt?i={x:r[0],y:r[1],z:r[2],m:r[3]}:e===Et?i={x:r[0],y:r[1]}:Mt(!1,34);return i},qE[Pt.LINE_STRING]=function(t,n){var i=VE(t);return{hasZ:i.hasZ,hasM:i.hasM,paths:[t.getCoordinates()]}},qE[Pt.POLYGON]=function(t,n){var i=VE(t);return{hasZ:i.hasZ,hasM:i.hasM,rings:t.getCoordinates(!1)}},qE[Pt.MULTI_POINT]=function(t,n){var i=VE(t);return{hasZ:i.hasZ,hasM:i.hasM,points:t.getCoordinates()}},qE[Pt.MULTI_LINE_STRING]=function(t,n){var i=VE(t);return{hasZ:i.hasZ,hasM:i.hasM,paths:t.getCoordinates()}},qE[Pt.MULTI_POLYGON]=function(t,n){for(var i=VE(t),r=t.getCoordinates(!1),e=[],o=0;o<r.length;o++)for(var s=r[o].length-1;s>=0;s--)e.push(r[o][s]);return{hasZ:i.hasZ,hasM:i.hasM,rings:e}};var HE=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this)||this).H=r.geometryName,i}return DE(n,t),n.prototype.readFeatureFromObject=function(t,n,i){var r=t,e=BE(r.geometry,n),o=new Tt;if(this.H&&o.setGeometryName(this.H),o.setGeometry(e),r.attributes){o.setProperties(r.attributes,!0);var s=r.attributes[i];void 0!==s&&o.setId(s)}return o},n.prototype.readFeaturesFromObject=function(t,n){var i=n||{};if(t.features){for(var r=[],e=t.features,o=0,s=e.length;o<s;++o)r.push(this.readFeatureFromObject(e[o],i,t.objectIdFieldName));return r}return[this.readFeatureFromObject(t,i)]},n.prototype.readGeometryFromObject=function(t,n){return BE(t,n)},n.prototype.readProjectionFromObject=function(t){return t.spatialReference&&void 0!==t.spatialReference.wkid?gr("EPSG:"+t.spatialReference.wkid):null},n.prototype.writeGeometryObject=function(t,n){return XE(t,this.adaptOptions(n))},n.prototype.writeFeatureObject=function(t,n){n=this.adaptOptions(n);var i={};if(!t.hasProperties())return i.attributes={},i;var r=t.getProperties(),e=t.getGeometry();if(e){i.geometry=XE(e,n);var o=n&&(n.dataProjection||n.featureProjection);o&&(i.geometry.spatialReference={wkid:Number(gr(o).getCode().split(":").pop())}),delete r[t.getGeometryName()]}return R(r)?i.attributes={}:i.attributes=r,i},n.prototype.writeFeaturesObject=function(t,n){n=this.adaptOptions(n);for(var i=[],r=0,e=t.length;r<e;++r)i.push(this.writeFeatureObject(t[r],n));return{features:i}},n}(lS),JE=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),KE=function(t){function n(){var n=t.call(this)||this;return n.Vp=Df(),n}return JE(n,t),n.prototype.getType=function(){return fh},n.prototype.readFeature=function(t,n){if(t){if("string"==typeof t){var i=Sf(t);return this.readFeatureFromDocument(i,n)}return xf(t)?this.readFeatureFromDocument(t,n):this.readFeatureFromNode(t,n)}return null},n.prototype.readFeatureFromDocument=function(t,n){var i=this.readFeaturesFromDocument(t,n);return i.length>0?i[0]:null},n.prototype.readFeatureFromNode=function(t,n){return null},n.prototype.readFeatures=function(t,n){if(t){if("string"==typeof t){var i=Sf(t);return this.readFeaturesFromDocument(i,n)}return xf(t)?this.readFeaturesFromDocument(t,n):this.readFeaturesFromNode(t,n)}return[]},n.prototype.readFeaturesFromDocument=function(t,n){for(var i=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&b(i,this.readFeaturesFromNode(r,n));return i},n.prototype.readFeaturesFromNode=function(t,n){return r()},n.prototype.readGeometry=function(t,n){if(t){if("string"==typeof t){var i=Sf(t);return this.readGeometryFromDocument(i,n)}return xf(t)?this.readGeometryFromDocument(t,n):this.readGeometryFromNode(t,n)}return null},n.prototype.readGeometryFromDocument=function(t,n){return null},n.prototype.readGeometryFromNode=function(t,n){return null},n.prototype.readProjection=function(t){if(t){if("string"==typeof t){var n=Sf(t);return this.readProjectionFromDocument(n)}return xf(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}return null},n.prototype.readProjectionFromDocument=function(t){return this.dataProjection},n.prototype.readProjectionFromNode=function(t){return this.dataProjection},n.prototype.writeFeature=function(t,n){var i=this.writeFeatureNode(t,n);return this.Vp.serializeToString(i)},n.prototype.writeFeatureNode=function(t,n){return null},n.prototype.writeFeatures=function(t,n){var i=this.writeFeaturesNode(t,n);return this.Vp.serializeToString(i)},n.prototype.writeFeaturesNode=function(t,n){return null},n.prototype.writeGeometry=function(t,n){var i=this.writeGeometryNode(t,n);return this.Vp.serializeToString(i)},n.prototype.writeGeometryNode=function(t,n){return null},n}(Kj),YE=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ZE="http://www.opengis.net/gml",$E=/^[\s\xa0]*$/,QE=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.featureType=r.featureType,i.featureNS=r.featureNS,i.srsName=r.srsName,i.schemaLocation="",i.FEATURE_COLLECTION_PARSERS={},i.FEATURE_COLLECTION_PARSERS[i.namespace]={featureMember:Mf(i.readFeaturesInternal),featureMembers:_f(i.readFeaturesInternal)},i.supportedMediaTypes=["application/gml+xml"],i}return YE(n,t),n.prototype.readFeaturesInternal=function(t,n){var i=t.localName,r=null;if("FeatureCollection"==i)r=zf([],this.FEATURE_COLLECTION_PARSERS,t,n,this);else if("featureMembers"==i||"featureMember"==i||"member"==i){var e=n[0],o=e.featureType,s=e.featureNS;if(!o&&t.childNodes){o=[],s={};for(var a=0,u=t.childNodes.length;a<u;++a){var c=t.childNodes[a];if(1===c.nodeType){var h=c.nodeName.split(":").pop();if(-1===o.indexOf(h)){var f="",l=0,v=c.namespaceURI;for(var d in s){if(s[d]===v){f=d;break}++l}f||(s[f="p"+l]=v),o.push(f+":"+h)}}}"featureMember"!=i&&(e.featureType=o,e.featureNS=s)}if("string"==typeof s){var p=s;(s={}).p0=p}var y={},m=Array.isArray(o)?o:[o];for(var w in s){var b={};for(a=0,u=m.length;a<u;++a){(-1===m[a].indexOf(":")?"p0":m[a].split(":")[0])===w&&(b[m[a].split(":").pop()]="featureMembers"==i?Mf(this.readFeatureElement,this):_f(this.readFeatureElement,this))}y[s[w]]=b}r=zf("featureMember"==i||"member"==i?void 0:[],y,t,n)}return null===r&&(r=[]),r},n.prototype.readGeometryOrExtent=function(t,n){var i=n[0];return i.srsName=t.firstElementChild.getAttribute("srsName"),i.srsDimension=t.firstElementChild.getAttribute("srsDimension"),zf(null,this.GEOMETRY_PARSERS,t,n,this)},n.prototype.readExtentElement=function(t,n){var i=n[0],r=this.readGeometryOrExtent(t,n);return r?Zj(r,i):void 0},n.prototype.readGeometryElement=function(t,n){var i=n[0],r=this.readGeometryOrExtent(t,n);return r?Yj(r,!1,i):void 0},n.prototype.readFeatureElementInternal=function(t,n,i){for(var r,e={},o=t.firstElementChild;o;o=o.nextElementSibling){var s=void 0,a=o.localName;0===o.childNodes.length||1===o.childNodes.length&&(3===o.firstChild.nodeType||4===o.firstChild.nodeType)?(s=bf(o,!1),$E.test(s)&&(s=void 0)):(i&&(s="boundedBy"===a?this.readExtentElement(o,n):this.readGeometryElement(o,n)),s?"boundedBy"!==a&&(r=a):s=this.readFeatureElementInternal(o,n,!1)),e[a]?(e[a]instanceof Array||(e[a]=[e[a]]),e[a].push(s)):e[a]=s;var u=o.attributes.length;if(u>0){e[a]={Xp:e[a]};for(var c=0;c<u;c++){var h=o.attributes[c].name;e[a][h]=o.attributes[c].value}}}if(i){var f=new Tt(e);r&&f.setGeometryName(r);var l=t.getAttribute("fid")||jf(t,this.namespace,"id");return l&&f.setId(l),f}return e},n.prototype.readFeatureElement=function(t,n){return this.readFeatureElementInternal(t,n,!0)},n.prototype.readPoint=function(t,n){var i=this.readFlatCoordinatesFromNode(t,n);if(i)return new Te(i,At)},n.prototype.readMultiPoint=function(t,n){var i=zf([],this.MULTIPOINT_PARSERS,t,n,this);return i?new bj(i):void 0},n.prototype.readMultiLineString=function(t,n){var i=zf([],this.MULTILINESTRING_PARSERS,t,n,this);if(i)return new _j(i)},n.prototype.readMultiPolygon=function(t,n){var i=zf([],this.MULTIPOLYGON_PARSERS,t,n,this);if(i)return new Ej(i)},n.prototype.pointMemberParser=function(t,n){Nf(this.POINTMEMBER_PARSERS,t,n,this)},n.prototype.lineStringMemberParser=function(t,n){Nf(this.LINESTRINGMEMBER_PARSERS,t,n,this)},n.prototype.polygonMemberParser=function(t,n){Nf(this.POLYGONMEMBER_PARSERS,t,n,this)},n.prototype.readLineString=function(t,n){var i=this.readFlatCoordinatesFromNode(t,n);return i?new kj(i,At):void 0},n.prototype.readFlatLinearRing=function(t,n){var i=zf(null,this.GEOMETRY_FLAT_COORDINATES_PARSERS,t,n,this);return i||void 0},n.prototype.readLinearRing=function(t,n){var i=this.readFlatCoordinatesFromNode(t,n);if(i)return new _e(i,At)},n.prototype.readPolygon=function(t,n){var i=zf([null],this.FLAT_LINEAR_RINGS_PARSERS,t,n,this);if(i&&i[0]){var r,e=i[0],o=[e.length],s=void 0;for(s=1,r=i.length;s<r;++s)b(e,i[s]),o.push(e.length);return new Ye(e,At,o)}},n.prototype.readFlatCoordinatesFromNode=function(t,n){return zf(null,this.GEOMETRY_FLAT_COORDINATES_PARSERS,t,n,this)},n.prototype.readGeometryFromNode=function(t,n){var i=this.readGeometryElement(t,[this.getReadOptions(t,n||{})]);return i||null},n.prototype.readFeaturesFromNode=function(t,n){var i={featureType:this.featureType,featureNS:this.featureNS};return n&&E(i,this.getReadOptions(t,n)),this.readFeaturesInternal(t,[i])||[]},n.prototype.readProjectionFromNode=function(t){return gr(this.srsName?this.srsName:t.firstElementChild.getAttribute("srsName"))},n}(KE);QE.prototype.namespace=ZE,QE.prototype.FLAT_LINEAR_RINGS_PARSERS={"http://www.opengis.net/gml":{}},QE.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS={"http://www.opengis.net/gml":{}},QE.prototype.GEOMETRY_PARSERS={"http://www.opengis.net/gml":{}},QE.prototype.MULTIPOINT_PARSERS={"http://www.opengis.net/gml":{pointMember:Mf(QE.prototype.pointMemberParser),pointMembers:Mf(QE.prototype.pointMemberParser)}},QE.prototype.MULTILINESTRING_PARSERS={"http://www.opengis.net/gml":{lineStringMember:Mf(QE.prototype.lineStringMemberParser),lineStringMembers:Mf(QE.prototype.lineStringMemberParser)}},QE.prototype.MULTIPOLYGON_PARSERS={"http://www.opengis.net/gml":{polygonMember:Mf(QE.prototype.polygonMemberParser),polygonMembers:Mf(QE.prototype.polygonMemberParser)}},QE.prototype.POINTMEMBER_PARSERS={"http://www.opengis.net/gml":{Point:Mf(QE.prototype.readFlatCoordinatesFromNode)}},QE.prototype.LINESTRINGMEMBER_PARSERS={"http://www.opengis.net/gml":{LineString:Mf(QE.prototype.readLineString)}},QE.prototype.POLYGONMEMBER_PARSERS={"http://www.opengis.net/gml":{Polygon:Mf(QE.prototype.readPolygon)}},QE.prototype.RING_PARSERS={"http://www.opengis.net/gml":{LinearRing:_f(QE.prototype.readFlatLinearRing)}};var tA=QE;function nA(t){return iA(bf(t,!1))}function iA(t){var n=/^\s*(true|1)|(false|0)\s*$/.exec(t);return n?void 0!==n[1]||!1:void 0}function rA(t){var n=bf(t,!1),i=Date.parse(n);return isNaN(i)?void 0:i/1e3}function eA(t){return oA(bf(t,!1))}function oA(t){var n=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*$/i.exec(t);return n?parseFloat(n[1]):void 0}function sA(t){return aA(bf(t,!1))}function aA(t){var n=/^\s*(\d+)\s*$/.exec(t);return n?parseInt(n[1],10):void 0}function uA(t){return bf(t,!1).trim()}function cA(t,n){dA(t,n?"1":"0")}function hA(t,n){t.appendChild(qf().createCDATASection(n))}function fA(t,n){var i=new Date(1e3*n),r=i.getUTCFullYear()+"-"+Hi(i.getUTCMonth()+1,2)+"-"+Hi(i.getUTCDate(),2)+"T"+Hi(i.getUTCHours(),2)+":"+Hi(i.getUTCMinutes(),2)+":"+Hi(i.getUTCSeconds(),2)+"Z";t.appendChild(qf().createTextNode(r))}function lA(t,n){var i=n.toPrecision();t.appendChild(qf().createTextNode(i))}function vA(t,n){var i=n.toString();t.appendChild(qf().createTextNode(i))}function dA(t,n){t.appendChild(qf().createTextNode(n))}var pA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),yA={MultiLineString:"lineStringMember",MultiCurve:"curveMember",MultiPolygon:"polygonMember",MultiSurface:"surfaceMember"},mA=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this,r)||this).FEATURE_COLLECTION_PARSERS[ZE].featureMember=Mf(i.readFeaturesInternal),i.schemaLocation=r.schemaLocation?r.schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd",i}return pA(n,t),n.prototype.readFlatCoordinates=function(t,n){var i=bf(t,!1).replace(/^\s*|\s*$/g,""),r=n[0].srsName,e="enu";if(r){var o=gr(r);o&&(e=o.getAxisOrientation())}for(var s=i.trim().split(/\s+/),a=[],u=0,c=s.length;u<c;u++){var h=s[u].split(/,+/),f=parseFloat(h[0]),l=parseFloat(h[1]),v=3===h.length?parseFloat(h[2]):0;"en"===e.substr(0,2)?a.push(f,l,v):a.push(l,f,v)}return a},n.prototype.readBox=function(t,n){var i=zf([null],this.Hp,t,n,this);return Cn(i[1][0],i[1][1],i[1][3],i[1][4])},n.prototype.innerBoundaryIsParser=function(t,n){var i=zf(void 0,this.RING_PARSERS,t,n,this);i&&n[n.length-1].push(i)},n.prototype.outerBoundaryIsParser=function(t,n){var i=zf(void 0,this.RING_PARSERS,t,n,this);i&&(n[n.length-1][0]=i)},n.prototype.Jp=function(t,n,i){var r,e=n[n.length-1],o=e.multiSurface,s=e.surface,a=e.multiCurve;return Array.isArray(t)?r="Envelope":"MultiPolygon"===(r=t.getType())&&!0===o?r="MultiSurface":"Polygon"===r&&!0===s?r="Surface":"MultiLineString"===r&&!0===a&&(r="MultiCurve"),wf("http://www.opengis.net/gml",r)},n.prototype.writeFeatureElement=function(t,n,i){var r=n.getId();r&&t.setAttribute("fid",r);var e=i[i.length-1],o=e.featureNS,s=n.getGeometryName();e.serializers||(e.serializers={},e.serializers[o]={});var a=[],u=[];if(n.hasProperties()){var c=n.getProperties();for(var h in c){var f=c[h];null!==f&&(a.push(h),u.push(f),h==s||"function"==typeof f.getSimplifiedGeometry?h in e.serializers[o]||(e.serializers[o][h]=Ef(this.writeGeometryElement,this)):h in e.serializers[o]||(e.serializers[o][h]=Ef(dA)))}}var l=E({},e);l.node=t,Lf(l,e.serializers,Cf(void 0,o),u,i,a)},n.prototype.writeCurveOrLineString=function(t,n,i){var r=i[i.length-1].srsName;if("LineStringSegment"!==t.nodeName&&r&&t.setAttribute("srsName",r),"LineString"===t.nodeName||"LineStringSegment"===t.nodeName){var e=this.Kp(t.namespaceURI);t.appendChild(e),this.Yp(e,n,i)}else if("Curve"===t.nodeName){var o=wf(t.namespaceURI,"segments");t.appendChild(o),this.Zp(o,n,i)}},n.prototype.writeLineStringOrCurveMember=function(t,n,i){var r=this.Jp(n,i);r&&(t.appendChild(r),this.writeCurveOrLineString(r,n,i))},n.prototype.writeMultiCurveOrLineString=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=r.srsName,s=r.curve;o&&t.setAttribute("srsName",o);var a=n.getLineStrings();Lf({node:t,hasZ:e,srsName:o,curve:s},this.LINESTRINGORCURVEMEMBER_SERIALIZERS,this.$p,a,i,void 0,this)},n.prototype.writeGeometryElement=function(t,n,i){var r,e=i[i.length-1],o=E({},e);o.node=t,r=Array.isArray(n)?Zj(n,e):Yj(n,!0,e),Lf(o,this.GEOMETRY_SERIALIZERS,this.Jp,[r],i,void 0,this)},n.prototype.Kp=function(t){var n=wf(t,"coordinates");return n.setAttribute("decimal","."),n.setAttribute("cs",","),n.setAttribute("ts"," "),n},n.prototype.Yp=function(t,n,i){for(var r=i[i.length-1],e=r.hasZ,o=r.srsName,s=n.getCoordinates(),a=s.length,u=new Array(a),c=0;c<a;++c){var h=s[c];u[c]=this.Qp(h,o,e)}dA(t,u.join(" "))},n.prototype.Zp=function(t,n,i){var r=wf(t.namespaceURI,"LineStringSegment");t.appendChild(r),this.writeCurveOrLineString(r,n,i)},n.prototype.writeSurfaceOrPolygon=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=r.srsName;if("PolygonPatch"!==t.nodeName&&o&&t.setAttribute("srsName",o),"Polygon"===t.nodeName||"PolygonPatch"===t.nodeName){var s=n.getLinearRings();Lf({node:t,hasZ:e,srsName:o},this.RING_SERIALIZERS,this.ty,s,i,void 0,this)}else if("Surface"===t.nodeName){var a=wf(t.namespaceURI,"patches");t.appendChild(a),this.ny(a,n,i)}},n.prototype.ty=function(t,n,i){var r=n[n.length-1],e=r.node,o=r.exteriorWritten;return void 0===o&&(r.exteriorWritten=!0),wf(e.namespaceURI,void 0!==o?"innerBoundaryIs":"outerBoundaryIs")},n.prototype.ny=function(t,n,i){var r=wf(t.namespaceURI,"PolygonPatch");t.appendChild(r),this.writeSurfaceOrPolygon(r,n,i)},n.prototype.writeRing=function(t,n,i){var r=wf(t.namespaceURI,"LinearRing");t.appendChild(r),this.writeLinearRing(r,n,i)},n.prototype.Qp=function(t,n,i){var r="enu";n&&(r=gr(n).getAxisOrientation());var e="en"===r.substr(0,2)?t[0]+","+t[1]:t[1]+","+t[0];i&&(e+=","+(t[2]||0));return e},n.prototype.writePoint=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=r.srsName;o&&t.setAttribute("srsName",o);var s=this.Kp(t.namespaceURI);t.appendChild(s);var a=n.getCoordinates();dA(s,this.Qp(a,o,e))},n.prototype.writeMultiPoint=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=r.srsName;o&&t.setAttribute("srsName",o);var s=n.getPoints();Lf({node:t,hasZ:e,srsName:o},this.POINTMEMBER_SERIALIZERS,Cf("pointMember"),s,i,void 0,this)},n.prototype.writePointMember=function(t,n,i){var r=wf(t.namespaceURI,"Point");t.appendChild(r),this.writePoint(r,n,i)},n.prototype.writeLinearRing=function(t,n,i){var r=i[i.length-1].srsName;r&&t.setAttribute("srsName",r);var e=this.Kp(t.namespaceURI);t.appendChild(e),this.Yp(e,n,i)},n.prototype.writeMultiSurfaceOrPolygon=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=r.srsName,s=r.surface;o&&t.setAttribute("srsName",o);var a=n.getPolygons();Lf({node:t,hasZ:e,srsName:o,surface:s},this.SURFACEORPOLYGONMEMBER_SERIALIZERS,this.$p,a,i,void 0,this)},n.prototype.writeSurfaceOrPolygonMember=function(t,n,i){var r=this.Jp(n,i);r&&(t.appendChild(r),this.writeSurfaceOrPolygon(r,n,i))},n.prototype.writeEnvelope=function(t,n,i){var r=i[i.length-1].srsName;r&&t.setAttribute("srsName",r);var e=[n[0]+" "+n[1],n[2]+" "+n[3]];Lf({node:t},this.ENVELOPE_SERIALIZERS,Rf,e,i,["lowerCorner","upperCorner"],this)},n.prototype.$p=function(t,n,i){var r=n[n.length-1].node;return wf("http://www.opengis.net/gml",yA[r.nodeName])},n}(tA);mA.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS={"http://www.opengis.net/gml":{coordinates:_f(mA.prototype.readFlatCoordinates)}},mA.prototype.FLAT_LINEAR_RINGS_PARSERS={"http://www.opengis.net/gml":{innerBoundaryIs:mA.prototype.innerBoundaryIsParser,outerBoundaryIs:mA.prototype.outerBoundaryIsParser}},mA.prototype.Hp={"http://www.opengis.net/gml":{coordinates:Mf(mA.prototype.readFlatCoordinates)}},mA.prototype.GEOMETRY_PARSERS={"http://www.opengis.net/gml":{Point:_f(tA.prototype.readPoint),MultiPoint:_f(tA.prototype.readMultiPoint),LineString:_f(tA.prototype.readLineString),MultiLineString:_f(tA.prototype.readMultiLineString),LinearRing:_f(tA.prototype.readLinearRing),Polygon:_f(tA.prototype.readPolygon),MultiPolygon:_f(tA.prototype.readMultiPolygon),Box:_f(mA.prototype.readBox)}},mA.prototype.GEOMETRY_SERIALIZERS={"http://www.opengis.net/gml":{Curve:Ef(mA.prototype.writeCurveOrLineString),MultiCurve:Ef(mA.prototype.writeMultiCurveOrLineString),Point:Ef(mA.prototype.writePoint),MultiPoint:Ef(mA.prototype.writeMultiPoint),LineString:Ef(mA.prototype.writeCurveOrLineString),MultiLineString:Ef(mA.prototype.writeMultiCurveOrLineString),LinearRing:Ef(mA.prototype.writeLinearRing),Polygon:Ef(mA.prototype.writeSurfaceOrPolygon),MultiPolygon:Ef(mA.prototype.writeMultiSurfaceOrPolygon),Surface:Ef(mA.prototype.writeSurfaceOrPolygon),MultiSurface:Ef(mA.prototype.writeMultiSurfaceOrPolygon),Envelope:Ef(mA.prototype.writeEnvelope)}},mA.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{lineStringMember:Ef(mA.prototype.writeLineStringOrCurveMember),curveMember:Ef(mA.prototype.writeLineStringOrCurveMember)}},mA.prototype.RING_SERIALIZERS={"http://www.opengis.net/gml":{outerBoundaryIs:Ef(mA.prototype.writeRing),innerBoundaryIs:Ef(mA.prototype.writeRing)}},mA.prototype.POINTMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{pointMember:Ef(mA.prototype.writePointMember)}},mA.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{surfaceMember:Ef(mA.prototype.writeSurfaceOrPolygonMember),polygonMember:Ef(mA.prototype.writeSurfaceOrPolygonMember)}},mA.prototype.ENVELOPE_SERIALIZERS={"http://www.opengis.net/gml":{lowerCorner:Ef(dA),upperCorner:Ef(dA)}};var wA=mA,bA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),gA={MultiLineString:"lineStringMember",MultiCurve:"curveMember",MultiPolygon:"polygonMember",MultiSurface:"surfaceMember"},xA=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this,r)||this).iy=void 0!==r.surface&&r.surface,i.ey=void 0!==r.curve&&r.curve,i.oy=void 0===r.multiCurve||r.multiCurve,i.sy=void 0===r.multiSurface||r.multiSurface,i.schemaLocation=r.schemaLocation?r.schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",i.hasZ=void 0!==r.hasZ&&r.hasZ,i}return bA(n,t),n.prototype.readMultiCurve=function(t,n){var i=zf([],this.MULTICURVE_PARSERS,t,n,this);return i?new _j(i):void 0},n.prototype.readMultiSurface=function(t,n){var i=zf([],this.MULTISURFACE_PARSERS,t,n,this);if(i)return new Ej(i)},n.prototype.curveMemberParser=function(t,n){Nf(this.CURVEMEMBER_PARSERS,t,n,this)},n.prototype.surfaceMemberParser=function(t,n){Nf(this.SURFACEMEMBER_PARSERS,t,n,this)},n.prototype.readPatch=function(t,n){return zf([null],this.PATCHES_PARSERS,t,n,this)},n.prototype.readSegment=function(t,n){return zf([null],this.SEGMENTS_PARSERS,t,n,this)},n.prototype.readPolygonPatch=function(t,n){return zf([null],this.FLAT_LINEAR_RINGS_PARSERS,t,n,this)},n.prototype.readLineStringSegment=function(t,n){return zf([null],this.GEOMETRY_FLAT_COORDINATES_PARSERS,t,n,this)},n.prototype.interiorParser=function(t,n){var i=zf(void 0,this.RING_PARSERS,t,n,this);i&&n[n.length-1].push(i)},n.prototype.exteriorParser=function(t,n){var i=zf(void 0,this.RING_PARSERS,t,n,this);i&&(n[n.length-1][0]=i)},n.prototype.readSurface=function(t,n){var i=zf([null],this.SURFACE_PARSERS,t,n,this);if(i&&i[0]){var r,e=i[0],o=[e.length],s=void 0;for(s=1,r=i.length;s<r;++s)b(e,i[s]),o.push(e.length);return new Ye(e,At,o)}},n.prototype.readCurve=function(t,n){var i=zf([null],this.CURVE_PARSERS,t,n,this);return i?new kj(i,At):void 0},n.prototype.readEnvelope=function(t,n){var i=zf([null],this.ENVELOPE_PARSERS,t,n,this);return Cn(i[1][0],i[1][1],i[2][0],i[2][1])},n.prototype.readFlatPos=function(t,n){for(var i,r=bf(t,!1),e=/^\s*([+\-]?\d*\.?\d+(?:[eE][+\-]?\d+)?)\s*/,o=[];i=e.exec(r);)o.push(parseFloat(i[1])),r=r.substr(i[0].length);if(""===r){var s=n[0].srsName,a="enu";if(s)a=gr(s).getAxisOrientation();if("neu"===a){var u,c=void 0;for(c=0,u=o.length;c<u;c+=3){var h=o[c],f=o[c+1];o[c]=f,o[c+1]=h}}var l=o.length;if(2==l&&o.push(0),0!==l)return o}},n.prototype.readFlatPosList=function(t,n){var i=bf(t,!1).replace(/^\s*|\s*$/g,""),r=n[0],e=r.srsName,o=r.srsDimension,s="enu";e&&(s=gr(e).getAxisOrientation());var a,u,c,h=i.split(/\s+/),f=2;t.getAttribute("srsDimension")?f=aA(t.getAttribute("srsDimension")):t.getAttribute("dimension")?f=aA(t.getAttribute("dimension")):t.parentNode.getAttribute("srsDimension")?f=aA(t.parentNode.getAttribute("srsDimension")):o&&(f=aA(o));for(var l=[],v=0,d=h.length;v<d;v+=f)a=parseFloat(h[v]),u=parseFloat(h[v+1]),c=3===f?parseFloat(h[v+2]):0,"en"===s.substr(0,2)?l.push(a,u,c):l.push(u,a,c);return l},n.prototype.uy=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=e?"3":"2";t.setAttribute("srsDimension",o);var s=r.srsName,a="enu";s&&(a=gr(s).getAxisOrientation());var u,c=n.getCoordinates();(u="en"===a.substr(0,2)?c[0]+" "+c[1]:c[1]+" "+c[0],e)&&(u+=" "+(c[2]||0));dA(t,u)},n.prototype.Qp=function(t,n,i){var r="enu";n&&(r=gr(n).getAxisOrientation());var e="en"===r.substr(0,2)?t[0]+" "+t[1]:t[1]+" "+t[0];i&&(e+=" "+(t[2]||0));return e},n.prototype.hy=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=e?"3":"2";t.setAttribute("srsDimension",o);for(var s,a=r.srsName,u=n.getCoordinates(),c=u.length,h=new Array(c),f=0;f<c;++f)s=u[f],h[f]=this.Qp(s,a,e);dA(t,h.join(" "))},n.prototype.writePoint=function(t,n,i){var r=i[i.length-1].srsName;r&&t.setAttribute("srsName",r);var e=wf(t.namespaceURI,"pos");t.appendChild(e),this.uy(e,n,i)},n.prototype.writeEnvelope=function(t,n,i){var r=i[i.length-1].srsName;r&&t.setAttribute("srsName",r);var e=[n[0]+" "+n[1],n[2]+" "+n[3]];Lf({node:t},this.ENVELOPE_SERIALIZERS,Rf,e,i,["lowerCorner","upperCorner"],this)},n.prototype.writeLinearRing=function(t,n,i){var r=i[i.length-1].srsName;r&&t.setAttribute("srsName",r);var e=wf(t.namespaceURI,"posList");t.appendChild(e),this.hy(e,n,i)},n.prototype.ty=function(t,n,i){var r=n[n.length-1],e=r.node,o=r.exteriorWritten;return void 0===o&&(r.exteriorWritten=!0),wf(e.namespaceURI,void 0!==o?"interior":"exterior")},n.prototype.writeSurfaceOrPolygon=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=r.srsName;if("PolygonPatch"!==t.nodeName&&o&&t.setAttribute("srsName",o),"Polygon"===t.nodeName||"PolygonPatch"===t.nodeName){var s=n.getLinearRings();Lf({node:t,hasZ:e,srsName:o},this.RING_SERIALIZERS,this.ty,s,i,void 0,this)}else if("Surface"===t.nodeName){var a=wf(t.namespaceURI,"patches");t.appendChild(a),this.ny(a,n,i)}},n.prototype.writeCurveOrLineString=function(t,n,i){var r=i[i.length-1].srsName;if("LineStringSegment"!==t.nodeName&&r&&t.setAttribute("srsName",r),"LineString"===t.nodeName||"LineStringSegment"===t.nodeName){var e=wf(t.namespaceURI,"posList");t.appendChild(e),this.hy(e,n,i)}else if("Curve"===t.nodeName){var o=wf(t.namespaceURI,"segments");t.appendChild(o),this.Zp(o,n,i)}},n.prototype.writeMultiSurfaceOrPolygon=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=r.srsName,s=r.surface;o&&t.setAttribute("srsName",o);var a=n.getPolygons();Lf({node:t,hasZ:e,srsName:o,surface:s},this.SURFACEORPOLYGONMEMBER_SERIALIZERS,this.$p,a,i,void 0,this)},n.prototype.writeMultiPoint=function(t,n,i){var r=i[i.length-1],e=r.srsName,o=r.hasZ;e&&t.setAttribute("srsName",e);var s=n.getPoints();Lf({node:t,hasZ:o,srsName:e},this.POINTMEMBER_SERIALIZERS,Cf("pointMember"),s,i,void 0,this)},n.prototype.writeMultiCurveOrLineString=function(t,n,i){var r=i[i.length-1],e=r.hasZ,o=r.srsName,s=r.curve;o&&t.setAttribute("srsName",o);var a=n.getLineStrings();Lf({node:t,hasZ:e,srsName:o,curve:s},this.LINESTRINGORCURVEMEMBER_SERIALIZERS,this.$p,a,i,void 0,this)},n.prototype.writeRing=function(t,n,i){var r=wf(t.namespaceURI,"LinearRing");t.appendChild(r),this.writeLinearRing(r,n,i)},n.prototype.writeSurfaceOrPolygonMember=function(t,n,i){var r=this.Jp(n,i);r&&(t.appendChild(r),this.writeSurfaceOrPolygon(r,n,i))},n.prototype.writePointMember=function(t,n,i){var r=wf(t.namespaceURI,"Point");t.appendChild(r),this.writePoint(r,n,i)},n.prototype.writeLineStringOrCurveMember=function(t,n,i){var r=this.Jp(n,i);r&&(t.appendChild(r),this.writeCurveOrLineString(r,n,i))},n.prototype.ny=function(t,n,i){var r=wf(t.namespaceURI,"PolygonPatch");t.appendChild(r),this.writeSurfaceOrPolygon(r,n,i)},n.prototype.Zp=function(t,n,i){var r=wf(t.namespaceURI,"LineStringSegment");t.appendChild(r),this.writeCurveOrLineString(r,n,i)},n.prototype.writeGeometryElement=function(t,n,i){var r,e=i[i.length-1],o=E({},e);o.node=t,r=Array.isArray(n)?Zj(n,e):Yj(n,!0,e),Lf(o,this.GEOMETRY_SERIALIZERS,this.Jp,[r],i,void 0,this)},n.prototype.writeFeatureElement=function(t,n,i){var r=n.getId();r&&t.setAttribute("fid",r);var e=i[i.length-1],o=e.featureNS,s=n.getGeometryName();e.serializers||(e.serializers={},e.serializers[o]={});var a=[],u=[];if(n.hasProperties()){var c=n.getProperties();for(var h in c){var f=c[h];null!==f&&(a.push(h),u.push(f),h==s||"function"==typeof f.getSimplifiedGeometry?h in e.serializers[o]||(e.serializers[o][h]=Ef(this.writeGeometryElement,this)):h in e.serializers[o]||(e.serializers[o][h]=Ef(dA)))}}var l=E({},e);l.node=t,Lf(l,e.serializers,Cf(void 0,o),u,i,a)},n.prototype.ly=function(t,n,i){var r=i[i.length-1],e=r.featureType,o=r.featureNS,s={};s[o]={},s[o][e]=Ef(this.writeFeatureElement,this);var a=E({},r);a.node=t,Lf(a,s,Cf(e,o),n,i)},n.prototype.$p=function(t,n,i){var r=n[n.length-1].node;return wf(this.namespace,gA[r.nodeName])},n.prototype.Jp=function(t,n,i){var r,e=n[n.length-1],o=e.multiSurface,s=e.surface,a=e.curve,u=e.multiCurve;return Array.isArray(t)?r="Envelope":"MultiPolygon"===(r=t.getType())&&!0===o?r="MultiSurface":"Polygon"===r&&!0===s?r="Surface":"LineString"===r&&!0===a?r="Curve":"MultiLineString"===r&&!0===u&&(r="MultiCurve"),wf(this.namespace,r)},n.prototype.writeGeometryNode=function(t,n){n=this.adaptOptions(n);var i=wf(this.namespace,"geom"),r={node:i,hasZ:this.hasZ,srsName:this.srsName,curve:this.ey,surface:this.iy,multiSurface:this.sy,multiCurve:this.oy};return n&&E(r,n),this.writeGeometryElement(i,t,[r]),i},n.prototype.writeFeaturesNode=function(t,n){n=this.adaptOptions(n);var i=wf(this.namespace,"featureMembers");i.setAttributeNS(mf,"xsi:schemaLocation",this.schemaLocation);var r={srsName:this.srsName,hasZ:this.hasZ,curve:this.ey,surface:this.iy,multiSurface:this.sy,multiCurve:this.oy,featureNS:this.featureNS,featureType:this.featureType};return n&&E(r,n),this.ly(i,t,[r]),i},n}(tA);xA.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS={"http://www.opengis.net/gml":{pos:_f(xA.prototype.readFlatPos),posList:_f(xA.prototype.readFlatPosList),coordinates:_f(wA.prototype.readFlatCoordinates)}},xA.prototype.FLAT_LINEAR_RINGS_PARSERS={"http://www.opengis.net/gml":{interior:xA.prototype.interiorParser,exterior:xA.prototype.exteriorParser}},xA.prototype.GEOMETRY_PARSERS={"http://www.opengis.net/gml":{Point:_f(tA.prototype.readPoint),MultiPoint:_f(tA.prototype.readMultiPoint),LineString:_f(tA.prototype.readLineString),MultiLineString:_f(tA.prototype.readMultiLineString),LinearRing:_f(tA.prototype.readLinearRing),Polygon:_f(tA.prototype.readPolygon),MultiPolygon:_f(tA.prototype.readMultiPolygon),Surface:_f(xA.prototype.readSurface),MultiSurface:_f(xA.prototype.readMultiSurface),Curve:_f(xA.prototype.readCurve),MultiCurve:_f(xA.prototype.readMultiCurve),Envelope:_f(xA.prototype.readEnvelope)}},xA.prototype.MULTICURVE_PARSERS={"http://www.opengis.net/gml":{curveMember:Mf(xA.prototype.curveMemberParser),curveMembers:Mf(xA.prototype.curveMemberParser)}},xA.prototype.MULTISURFACE_PARSERS={"http://www.opengis.net/gml":{surfaceMember:Mf(xA.prototype.surfaceMemberParser),surfaceMembers:Mf(xA.prototype.surfaceMemberParser)}},xA.prototype.CURVEMEMBER_PARSERS={"http://www.opengis.net/gml":{LineString:Mf(tA.prototype.readLineString),Curve:Mf(xA.prototype.readCurve)}},xA.prototype.SURFACEMEMBER_PARSERS={"http://www.opengis.net/gml":{Polygon:Mf(tA.prototype.readPolygon),Surface:Mf(xA.prototype.readSurface)}},xA.prototype.SURFACE_PARSERS={"http://www.opengis.net/gml":{patches:_f(xA.prototype.readPatch)}},xA.prototype.CURVE_PARSERS={"http://www.opengis.net/gml":{segments:_f(xA.prototype.readSegment)}},xA.prototype.ENVELOPE_PARSERS={"http://www.opengis.net/gml":{lowerCorner:Mf(xA.prototype.readFlatPosList),upperCorner:Mf(xA.prototype.readFlatPosList)}},xA.prototype.PATCHES_PARSERS={"http://www.opengis.net/gml":{PolygonPatch:_f(xA.prototype.readPolygonPatch)}},xA.prototype.SEGMENTS_PARSERS={"http://www.opengis.net/gml":{LineStringSegment:_f(xA.prototype.readLineStringSegment)}},xA.prototype.writeFeatures,xA.prototype.RING_SERIALIZERS={"http://www.opengis.net/gml":{exterior:Ef(xA.prototype.writeRing),interior:Ef(xA.prototype.writeRing)}},xA.prototype.ENVELOPE_SERIALIZERS={"http://www.opengis.net/gml":{lowerCorner:Ef(dA),upperCorner:Ef(dA)}},xA.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{surfaceMember:Ef(xA.prototype.writeSurfaceOrPolygonMember),polygonMember:Ef(xA.prototype.writeSurfaceOrPolygonMember)}},xA.prototype.POINTMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{pointMember:Ef(xA.prototype.writePointMember)}},xA.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{lineStringMember:Ef(xA.prototype.writeLineStringOrCurveMember),curveMember:Ef(xA.prototype.writeLineStringOrCurveMember)}},xA.prototype.GEOMETRY_SERIALIZERS={"http://www.opengis.net/gml":{Curve:Ef(xA.prototype.writeCurveOrLineString),MultiCurve:Ef(xA.prototype.writeMultiCurveOrLineString),Point:Ef(xA.prototype.writePoint),MultiPoint:Ef(xA.prototype.writeMultiPoint),LineString:Ef(xA.prototype.writeCurveOrLineString),MultiLineString:Ef(xA.prototype.writeMultiCurveOrLineString),LinearRing:Ef(xA.prototype.writeLinearRing),Polygon:Ef(xA.prototype.writeSurfaceOrPolygon),MultiPolygon:Ef(xA.prototype.writeMultiSurfaceOrPolygon),Surface:Ef(xA.prototype.writeSurfaceOrPolygon),MultiSurface:Ef(xA.prototype.writeMultiSurfaceOrPolygon),Envelope:Ef(xA.prototype.writeEnvelope)}};var jA=xA,SA=jA;SA.prototype.writeFeatures,SA.prototype.writeFeaturesNode;var kA=SA,MA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_A=function(t){function n(n){var i=this,r=n||{};return(i=t.call(this,r)||this).schemaLocation=r.schemaLocation?r.schemaLocation:i.namespace+" http://schemas.opengis.net/gml/3.2.1/gml.xsd",i}return MA(n,t),n}(jA);_A.prototype.namespace="http://www.opengis.net/gml/3.2",_A.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS={"http://www.opengis.net/gml/3.2":{pos:_f(jA.prototype.readFlatPos),posList:_f(jA.prototype.readFlatPosList),coordinates:_f(wA.prototype.readFlatCoordinates)}},_A.prototype.FLAT_LINEAR_RINGS_PARSERS={"http://www.opengis.net/gml/3.2":{interior:jA.prototype.interiorParser,exterior:jA.prototype.exteriorParser}},_A.prototype.GEOMETRY_PARSERS={"http://www.opengis.net/gml/3.2":{Point:_f(tA.prototype.readPoint),MultiPoint:_f(tA.prototype.readMultiPoint),LineString:_f(tA.prototype.readLineString),MultiLineString:_f(tA.prototype.readMultiLineString),LinearRing:_f(tA.prototype.readLinearRing),Polygon:_f(tA.prototype.readPolygon),MultiPolygon:_f(tA.prototype.readMultiPolygon),Surface:_f(_A.prototype.readSurface),MultiSurface:_f(jA.prototype.readMultiSurface),Curve:_f(_A.prototype.readCurve),MultiCurve:_f(jA.prototype.readMultiCurve),Envelope:_f(_A.prototype.readEnvelope)}},_A.prototype.MULTICURVE_PARSERS={"http://www.opengis.net/gml/3.2":{curveMember:Mf(jA.prototype.curveMemberParser),curveMembers:Mf(jA.prototype.curveMemberParser)}},_A.prototype.MULTISURFACE_PARSERS={"http://www.opengis.net/gml/3.2":{surfaceMember:Mf(jA.prototype.surfaceMemberParser),surfaceMembers:Mf(jA.prototype.surfaceMemberParser)}},_A.prototype.CURVEMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{LineString:Mf(tA.prototype.readLineString),Curve:Mf(jA.prototype.readCurve)}},_A.prototype.SURFACEMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{Polygon:Mf(tA.prototype.readPolygon),Surface:Mf(jA.prototype.readSurface)}},_A.prototype.SURFACE_PARSERS={"http://www.opengis.net/gml/3.2":{patches:_f(jA.prototype.readPatch)}},_A.prototype.CURVE_PARSERS={"http://www.opengis.net/gml/3.2":{segments:_f(jA.prototype.readSegment)}},_A.prototype.ENVELOPE_PARSERS={"http://www.opengis.net/gml/3.2":{lowerCorner:Mf(jA.prototype.readFlatPosList),upperCorner:Mf(jA.prototype.readFlatPosList)}},_A.prototype.PATCHES_PARSERS={"http://www.opengis.net/gml/3.2":{PolygonPatch:_f(jA.prototype.readPolygonPatch)}},_A.prototype.SEGMENTS_PARSERS={"http://www.opengis.net/gml/3.2":{LineStringSegment:_f(jA.prototype.readLineStringSegment)}},_A.prototype.MULTIPOINT_PARSERS={"http://www.opengis.net/gml/3.2":{pointMember:Mf(tA.prototype.pointMemberParser),pointMembers:Mf(tA.prototype.pointMemberParser)}},_A.prototype.MULTILINESTRING_PARSERS={"http://www.opengis.net/gml/3.2":{lineStringMember:Mf(tA.prototype.lineStringMemberParser),lineStringMembers:Mf(tA.prototype.lineStringMemberParser)}},_A.prototype.MULTIPOLYGON_PARSERS={"http://www.opengis.net/gml/3.2":{polygonMember:Mf(tA.prototype.polygonMemberParser),polygonMembers:Mf(tA.prototype.polygonMemberParser)}},_A.prototype.POINTMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{Point:Mf(tA.prototype.readFlatCoordinatesFromNode)}},_A.prototype.LINESTRINGMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{LineString:Mf(tA.prototype.readLineString)}},_A.prototype.POLYGONMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{Polygon:Mf(tA.prototype.readPolygon)}},_A.prototype.RING_PARSERS={"http://www.opengis.net/gml/3.2":{LinearRing:_f(tA.prototype.readFlatLinearRing)}},_A.prototype.RING_SERIALIZERS={"http://www.opengis.net/gml/3.2":{exterior:Ef(jA.prototype.writeRing),interior:Ef(jA.prototype.writeRing)}},_A.prototype.ENVELOPE_SERIALIZERS={"http://www.opengis.net/gml/3.2":{lowerCorner:Ef(dA),upperCorner:Ef(dA)}},_A.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS={"http://www.opengis.net/gml/3.2":{surfaceMember:Ef(jA.prototype.writeSurfaceOrPolygonMember),polygonMember:Ef(jA.prototype.writeSurfaceOrPolygonMember)}},_A.prototype.POINTMEMBER_SERIALIZERS={"http://www.opengis.net/gml/3.2":{pointMember:Ef(jA.prototype.writePointMember)}},_A.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS={"http://www.opengis.net/gml/3.2":{lineStringMember:Ef(jA.prototype.writeLineStringOrCurveMember),curveMember:Ef(jA.prototype.writeLineStringOrCurveMember)}},_A.prototype.GEOMETRY_SERIALIZERS={"http://www.opengis.net/gml/3.2":{Curve:Ef(jA.prototype.writeCurveOrLineString),MultiCurve:Ef(jA.prototype.writeMultiCurveOrLineString),Point:Ef(_A.prototype.writePoint),MultiPoint:Ef(jA.prototype.writeMultiPoint),LineString:Ef(jA.prototype.writeCurveOrLineString),MultiLineString:Ef(jA.prototype.writeMultiCurveOrLineString),LinearRing:Ef(jA.prototype.writeLinearRing),Polygon:Ef(jA.prototype.writeSurfaceOrPolygon),MultiPolygon:Ef(jA.prototype.writeMultiSurfaceOrPolygon),Surface:Ef(jA.prototype.writeSurfaceOrPolygon),MultiSurface:Ef(jA.prototype.writeMultiSurfaceOrPolygon),Envelope:Ef(jA.prototype.writeEnvelope)}};var OA=_A,TA=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),EA=[null,"http://www.topografix.com/GPX/1/0","http://www.topografix.com/GPX/1/1"],AA={rte:eC,trk:oC,wpt:sC},CA=If(EA,{rte:Mf(eC),trk:Mf(oC),wpt:Mf(sC)}),RA=If(EA,{text:Tf(uA,"linkText"),type:Tf(uA,"linkType")}),PA=If(EA,{rte:Ef((function(t,n,i){var r=i[0],e=n.getProperties(),o={node:t};o.properties=e;var s=n.getGeometry();if(s.getType()==Pt.LINE_STRING){var a=Yj(s,!0,r);o.geometryLayout=a.getLayout(),e.rtept=a.getCoordinates()}var u=i[i.length-1].node,c=BA[u.namespaceURI],h=Pf(e,c);Lf(o,WA,Rf,h,i,c)})),trk:Ef((function(t,n,i){var r=i[0],e=n.getProperties(),o={node:t};o.properties=e;var s=n.getGeometry();if(s.getType()==Pt.MULTI_LINE_STRING){var a=Yj(s,!0,r);e.trkseg=a.getLineStrings()}var u=i[i.length-1].node,c=XA[u.namespaceURI],h=Pf(e,c);Lf(o,HA,Rf,h,i,c)})),wpt:Ef((function(t,n,i){var r=i[0],e=i[i.length-1];e.properties=n.getProperties();var o=n.getGeometry();if(o.getType()==Pt.POINT){var s=Yj(o,!0,r);e.geometryLayout=s.getLayout(),uC(t,s.getCoordinates(),i)}}))}),IA=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.dataProjection=gr("EPSG:4326"),i.vy=r.readExtensions,i}return TA(n,t),n.prototype.py=function(t){t||(t=[]);for(var n=0,i=t.length;n<i;++n){var r=t[n];if(this.vy){var e=r.get("extensionsNode_")||null;this.vy(r,e)}r.set("extensionsNode_",void 0)}},n.prototype.readFeatureFromNode=function(t,n){if(!y(EA,t.namespaceURI))return null;var i=AA[t.localName];if(!i)return null;var r=i(t,[this.getReadOptions(t,n)]);return r?(this.py([r]),r):null},n.prototype.readFeaturesFromNode=function(t,n){if(!y(EA,t.namespaceURI))return[];if("gpx"==t.localName){var i=zf([],CA,t,[this.getReadOptions(t,n)]);return i?(this.py(i),i):[]}return[]},n.prototype.writeFeaturesNode=function(t,n){n=this.adaptOptions(n);var i=wf("http://www.topografix.com/GPX/1/1","gpx");return i.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xsi",mf),i.setAttributeNS(mf,"xsi:schemaLocation","http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"),i.setAttribute("version","1.1"),i.setAttribute("creator","OpenLayers"),Lf({node:i},PA,QA,t,[n]),i},n}(KE),NA=If(EA,{name:Tf(uA),cmt:Tf(uA),desc:Tf(uA),src:Tf(uA),link:iC,number:Tf(sA),extensions:rC,type:Tf(uA),rtept:function(t,n){var i=zf({},zA,t,n);if(i){var r=n[n.length-1],e=r.flatCoordinates,o=r.layoutOptions;tC(e,o,t,i)}}}),zA=If(EA,{ele:Tf(eA),time:Tf(rA)}),FA=If(EA,{name:Tf(uA),cmt:Tf(uA),desc:Tf(uA),src:Tf(uA),link:iC,number:Tf(sA),type:Tf(uA),extensions:rC,trkseg:function(t,n){var i=n[n.length-1];Nf(LA,t,n);var r=i.flatCoordinates;i.ends.push(r.length)}}),LA=If(EA,{trkpt:function(t,n){var i=zf({},GA,t,n);if(i){var r=n[n.length-1],e=r.flatCoordinates,o=r.layoutOptions;tC(e,o,t,i)}}}),GA=If(EA,{ele:Tf(eA),time:Tf(rA)}),DA=If(EA,{ele:Tf(eA),time:Tf(rA),magvar:Tf(eA),geoidheight:Tf(eA),name:Tf(uA),cmt:Tf(uA),desc:Tf(uA),src:Tf(uA),link:iC,sym:Tf(uA),type:Tf(uA),fix:Tf(uA),sat:Tf(sA),hdop:Tf(eA),vdop:Tf(eA),pdop:Tf(eA),ageofdgpsdata:Tf(eA),dgpsid:Tf(sA),extensions:rC}),UA=["text","type"],qA=If(EA,{text:Ef(dA),type:Ef(dA)}),BA=If(EA,["name","cmt","desc","src","link","number","type","rtept"]),WA=If(EA,{name:Ef(dA),cmt:Ef(dA),desc:Ef(dA),src:Ef(dA),link:Ef(aC),number:Ef(vA),type:Ef(dA),rtept:Af(Ef(uC))}),VA=If(EA,["ele","time"]),XA=If(EA,["name","cmt","desc","src","link","number","type","trkseg"]),HA=If(EA,{name:Ef(dA),cmt:Ef(dA),desc:Ef(dA),src:Ef(dA),link:Ef(aC),number:Ef(vA),type:Ef(dA),trkseg:Af(Ef((function(t,n,i){var r={node:t};r.geometryLayout=n.getLayout(),r.properties={},Lf(r,KA,JA,n.getCoordinates(),i)})))}),JA=Cf("trkpt"),KA=If(EA,{trkpt:Ef(uC)}),YA=If(EA,["ele","time","magvar","geoidheight","name","cmt","desc","src","link","sym","type","fix","sat","hdop","vdop","pdop","ageofdgpsdata","dgpsid"]),ZA=If(EA,{ele:Ef(lA),time:Ef(fA),magvar:Ef(lA),geoidheight:Ef(lA),name:Ef(dA),cmt:Ef(dA),desc:Ef(dA),src:Ef(dA),link:Ef(aC),sym:Ef(dA),type:Ef(dA),fix:Ef(dA),sat:Ef(vA),hdop:Ef(lA),vdop:Ef(lA),pdop:Ef(lA),ageofdgpsdata:Ef(lA),dgpsid:Ef(vA)}),$A={Point:"wpt",LineString:"rte",MultiLineString:"trk"};function QA(t,n,i){var r=t.getGeometry();if(r){var e=$A[r.getType()];if(e)return wf(n[n.length-1].node.namespaceURI,e)}}function tC(t,n,i,r){return t.push(parseFloat(i.getAttribute("lon")),parseFloat(i.getAttribute("lat"))),"ele"in r?(t.push(r.ele),delete r.ele,n.hasZ=!0):t.push(0),"time"in r?(t.push(r.time),delete r.time,n.hasM=!0):t.push(0),t}function nC(t,n,i){var r=Et,e=2;if(t.hasZ&&t.hasM?(r=Rt,e=4):t.hasZ?(r=At,e=3):t.hasM&&(r=Ct,e=3),4!==e){for(var o=0,s=n.length/4;o<s;o++)n[o*e]=n[4*o],n[o*e+1]=n[4*o+1],t.hasZ&&(n[o*e+2]=n[4*o+2]),t.hasM&&(n[o*e+2]=n[4*o+3]);if(n.length=n.length/4*e,i)for(o=0,s=i.length;o<s;o++)i[o]=i[o]/4*e}return r}function iC(t,n){var i=n[n.length-1],r=t.getAttribute("href");null!==r&&(i.link=r),Nf(RA,t,n)}function rC(t,n){n[n.length-1].my=t}function eC(t,n){var i=n[0],r=zf({flatCoordinates:[],layoutOptions:{}},NA,t,n);if(r){var e=r.flatCoordinates;delete r.flatCoordinates;var o=r.layoutOptions;delete r.layoutOptions;var s=nC(o,e),a=new kj(e,s);Yj(a,!1,i);var u=new Tt(a);return u.setProperties(r,!0),u}}function oC(t,n){var i=n[0],r=zf({flatCoordinates:[],ends:[],layoutOptions:{}},FA,t,n);if(r){var e=r.flatCoordinates;delete r.flatCoordinates;var o=r.ends;delete r.ends;var s=r.layoutOptions;delete r.layoutOptions;var a=nC(s,e,o),u=new _j(e,a,o);Yj(u,!1,i);var c=new Tt(u);return c.setProperties(r,!0),c}}function sC(t,n){var i=n[0],r=zf({},DA,t,n);if(r){var e={},o=tC([],e,t,r),s=nC(e,o),a=new Te(o,s);Yj(a,!1,i);var u=new Tt(a);return u.setProperties(r,!0),u}}function aC(t,n,i){t.setAttribute("href",n);var r=i[i.length-1].properties,e=[r.linkText,r.linkType];Lf({node:t},qA,Rf,e,i,UA)}function uC(t,n,i){var r=i[i.length-1],e=r.node.namespaceURI,o=r.properties;switch(t.setAttributeNS(null,"lat",String(n[1])),t.setAttributeNS(null,"lon",String(n[0])),r.geometryLayout){case Rt:0!==n[3]&&(o.time=n[3]);case At:0!==n[2]&&(o.ele=n[2]);break;case Ct:0!==n[2]&&(o.time=n[2])}var s="rtept"==t.nodeName?VA[e]:YA[e],a=Pf(o,s);Lf({node:t,properties:o},ZA,Rf,a,i,s)}var cC=IA,hC=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function fC(t){return"string"==typeof t?t:""}var lC=function(t){function n(){return t.call(this)||this}return hC(n,t),n.prototype.getType=function(){return hh},n.prototype.readFeature=function(t,n){return this.readFeatureFromText(fC(t),this.adaptOptions(n))},n.prototype.readFeatureFromText=function(t,n){return r()},n.prototype.readFeatures=function(t,n){return this.readFeaturesFromText(fC(t),this.adaptOptions(n))},n.prototype.readFeaturesFromText=function(t,n){return r()},n.prototype.readGeometry=function(t,n){return this.readGeometryFromText(fC(t),this.adaptOptions(n))},n.prototype.readGeometryFromText=function(t,n){return r()},n.prototype.readProjection=function(t){return this.readProjectionFromText(fC(t))},n.prototype.readProjectionFromText=function(t){return this.dataProjection},n.prototype.writeFeature=function(t,n){return this.writeFeatureText(t,this.adaptOptions(n))},n.prototype.writeFeatureText=function(t,n){return r()},n.prototype.writeFeatures=function(t,n){return this.writeFeaturesText(t,this.adaptOptions(n))},n.prototype.writeFeaturesText=function(t,n){return r()},n.prototype.writeGeometry=function(t,n){return this.writeGeometryText(t,this.adaptOptions(n))},n.prototype.writeGeometryText=function(t,n){return r()},n}(Kj),vC=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),dC="barometric",pC="gps",yC="none",mC=/^B(\d{2})(\d{2})(\d{2})(\d{2})(\d{5})([NS])(\d{3})(\d{5})([EW])([AV])(\d{5})(\d{5})/,wC=/^H.([A-Z]{3}).*?:(.*)/,bC=/^HFDTE(\d{2})(\d{2})(\d{2})/,gC=/\r\n|\r|\n/,xC=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.dataProjection=gr("EPSG:4326"),i.wy=r.altitudeMode?r.altitudeMode:yC,i}return vC(n,t),n.prototype.readFeatureFromText=function(t,n){var i,r,e=this.wy,o=t.split(gC),s={},a=[],u=2e3,c=0,h=1,f=-1;for(i=0,r=o.length;i<r;++i){var l=o[i],v=void 0;if("B"==l.charAt(0)){if(v=mC.exec(l)){var d=parseInt(v[1],10),p=parseInt(v[2],10),y=parseInt(v[3],10),m=parseInt(v[4],10)+parseInt(v[5],10)/6e4;"S"==v[6]&&(m=-m);var w=parseInt(v[7],10)+parseInt(v[8],10)/6e4;if("W"==v[9]&&(w=-w),a.push(w,m),e!=yC){var b=void 0;b=e==pC?parseInt(v[11],10):e==dC?parseInt(v[12],10):0,a.push(b)}var g=Date.UTC(u,c,h,d,p,y);g<f&&(g=Date.UTC(u,c,h+1,d,p,y)),a.push(g/1e3),f=g}}else"H"==l.charAt(0)&&((v=bC.exec(l))?(h=parseInt(v[1],10),c=parseInt(v[2],10)-1,u=2e3+parseInt(v[3],10)):(v=wC.exec(l))&&(s[v[1]]=v[2].trim()))}if(0===a.length)return null;var x=new kj(a,e==yC?Ct:Rt),j=new Tt(Yj(x,!1,n));return j.setProperties(s,!0),j},n.prototype.readFeaturesFromText=function(t,n){var i=this.readFeatureFromText(t,n);return i?[i]:[]},n}(lC);function jC(t){return(jC="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var SC,kC,MC,_C,OC,TC,EC=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),AC=["http://www.google.com/kml/ext/2.2"],CC=[null,"http://earth.google.com/kml/2.0","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.2","http://www.opengis.net/kml/2.2"],RC={fraction:Rv,pixels:Pv,insetPixels:Pv},PC=If(CC,{ExtendedData:AR,Region:CR,MultiGeometry:Tf(xR,"geometry"),LineString:Tf(wR,"geometry"),LinearRing:Tf(bR,"geometry"),Point:Tf(jR,"geometry"),Polygon:Tf(kR,"geometry"),Style:Tf(_R),StyleMap:function(t,n){var i=eR.call(this,t,n);if(!i)return;var r=n[n.length-1];Array.isArray(i)?r.Style=i:"string"==typeof i?r.styleUrl=i:Mt(!1,38)},address:Tf(uA),description:Tf(uA),name:Tf(uA),open:Tf(nA),phoneNumber:Tf(uA),styleUrl:Tf(nR),visibility:Tf(nA)},If(AC,{MultiTrack:Tf((function(t,n){var i=zf([],fR,t,n);if(!i)return;return new _j(i)}),"geometry"),Track:Tf(vR,"geometry")})),IC=If(CC,{ExtendedData:AR,Region:CR,Link:function(t,n){Nf(NC,t,n)},address:Tf(uA),description:Tf(uA),name:Tf(uA),open:Tf(nA),phoneNumber:Tf(uA),visibility:Tf(nA)}),NC=If(CC,{href:Tf(tR)}),zC=If(CC,{LatLonAltBox:function(t,n){var i=zf({},IR,t,n);if(!i)return;var r=n[n.length-1],e=[parseFloat(i.west),parseFloat(i.south),parseFloat(i.east),parseFloat(i.north)];r.extent=e,r.altitudeMode=i.altitudeMode,r.minAltitude=parseFloat(i.minAltitude),r.maxAltitude=parseFloat(i.maxAltitude)},Lod:function(t,n){var i=zf({},NR,t,n);if(!i)return;var r=n[n.length-1];r.minLodPixels=parseFloat(i.minLodPixels),r.maxLodPixels=parseFloat(i.maxLodPixels),r.minFadeExtent=parseFloat(i.minFadeExtent),r.maxFadeExtent=parseFloat(i.maxFadeExtent)}}),FC=If(CC,["Document","Placemark"]),LC=If(CC,{Document:Ef((function(t,n,i){Lf({node:t},DR,UR,n,i,void 0,this)})),Placemark:Ef(fP)}),GC=null;var DC,UC=null;var qC,BC=null;var WC=null;var VC=null;var XC,HC=null;function JC(t){return 32/Math.min(t[0],t[1])}function KC(t){return t}var YC=function(t){function n(n){var i=t.call(this)||this,r=n||{};return HC||(GC=new Cv({color:SC=[255,255,255,1]}),TC="https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png",UC=new Wv({anchor:kC=[20,2],anchorOrigin:Iv,anchorXUnits:MC=Pv,anchorYUnits:_C=Pv,crossOrigin:"anonymous",rotation:0,scale:JC(OC=[64,64]),size:OC,src:TC}),DC="NO_IMAGE",BC=new Vv({color:SC,width:1}),qC=new Vv({color:[51,51,51,1],width:2}),WC=new id({font:"bold 16px Helvetica",fill:GC,stroke:qC,scale:.8}),VC=new Qv({fill:GC,image:UC,text:WC,stroke:BC,zIndex:0}),HC=[VC]),i.dataProjection=gr("EPSG:4326"),i.gy=r.defaultStyle?r.defaultStyle:HC,i.xy=void 0===r.extractStyles||r.extractStyles,i.jy=void 0===r.writeStyles||r.writeStyles,i.Sy={},i.ky=void 0===r.showPointNames||r.showPointNames,i.Bt=void 0!==r.crossOrigin?r.crossOrigin:"anonymous",i.My=r.iconUrlFunction?r.iconUrlFunction:KC,i.supportedMediaTypes=["application/vnd.google-earth.kml+xml"],i}return EC(n,t),n.prototype._y=function(t,n){var i=zf([],If(CC,{Document:kf(this._y,this),Folder:kf(this._y,this),Placemark:Mf(this.Oy,this),Style:this.Ty.bind(this),StyleMap:this.Ey.bind(this)}),t,n,this);return i||void 0},n.prototype.Oy=function(t,n){var i=zf({geometry:null},PC,t,n,this);if(i){var r=new Tt,e=t.getAttribute("id");null!==e&&r.setId(e);var o=n[0],s=i.geometry;if(s&&Yj(s,!1,o),r.setGeometry(s),delete i.geometry,this.xy){var a=function(t,n,i,r,e){return function(o,s){var a=e,u="",c=[];if(a){var h=o.getGeometry();if(h)if(h instanceof cS)a=(c=h.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return n===Pt.POINT||n===Pt.MULTI_POINT}))).length>0;else{var f=h.getType();a=f===Pt.POINT||f===Pt.MULTI_POINT}}a&&(u=o.get("name"),(a=a&&!!u)&&u.search(/&[^&]+;/)>-1&&(XC||(XC=document.createElement("textarea")),XC.innerHTML=u,u=XC.value));var l=i;if(t?l=t:n&&(l=ZC(n,i,r)),a){var v=function(t,n){var i=[0,0],r="start",e=t.getImage();if(e){var o=e.getSize();if(o&&2==o.length){var s=e.getScaleArray(),a=e.getAnchor();i[0]=s[0]*(o[0]-a[0]),i[1]=s[1]*(o[1]/2-a[1]),r="left"}}var u=t.getText();u?((u=u.clone()).setFont(u.getFont()||WC.getFont()),u.setScale(u.getScale()||WC.getScale()),u.setFill(u.getFill()||WC.getFill()),u.setStroke(u.getStroke()||qC)):u=WC.clone();return u.setText(n),u.setOffsetX(i[0]),u.setOffsetY(i[1]),u.setTextAlign(r),new Qv({image:e,text:u})}(l[0],u);return c.length>0?(v.setGeometry(new cS(c)),[v,new Qv({geometry:l[0].getGeometry(),image:null,fill:l[0].getFill(),stroke:l[0].getStroke(),text:null})].concat(l.slice(1))):v}return l}}(i.Style,i.styleUrl,this.gy,this.Sy,this.ky);r.setStyle(a)}return delete i.Style,r.setProperties(i,!0),r}},n.prototype.Ty=function(t,n){var i=t.getAttribute("id");if(null!==i){var r=_R.call(this,t,n);if(r){var e=void 0,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)e=new URL("#"+i,o).href;else e="#"+i;this.Sy[e]=r}}},n.prototype.Ey=function(t,n){var i=t.getAttribute("id");if(null!==i){var r=eR.call(this,t,n);if(r){var e,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)e=new URL("#"+i,o).href;else e="#"+i;this.Sy[e]=r}}},n.prototype.readFeatureFromNode=function(t,n){if(!y(CC,t.namespaceURI))return null;var i=this.Oy(t,[this.getReadOptions(t,n)]);return i||null},n.prototype.readFeaturesFromNode=function(t,n){if(!y(CC,t.namespaceURI))return[];var i,r=t.localName;if("Document"==r||"Folder"==r)return(i=this._y(t,[this.getReadOptions(t,n)]))||[];if("Placemark"==r){var e=this.Oy(t,[this.getReadOptions(t,n)]);return e?[e]:[]}if("kml"==r){i=[];for(var o=t.firstElementChild;o;o=o.nextElementSibling){var s=this.readFeaturesFromNode(o,n);s&&b(i,s)}return i}return[]},n.prototype.readName=function(t){if(t){if("string"==typeof t){var n=Sf(t);return this.readNameFromDocument(n)}return xf(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}},n.prototype.readNameFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE){var i=this.readNameFromNode(n);if(i)return i}},n.prototype.readNameFromNode=function(t){for(var n=t.firstElementChild;n;n=n.nextElementSibling)if(y(CC,n.namespaceURI)&&"name"==n.localName)return uA(n);for(n=t.firstElementChild;n;n=n.nextElementSibling){var i=n.localName;if(y(CC,n.namespaceURI)&&("Document"==i||"Folder"==i||"Placemark"==i||"kml"==i)){var r=this.readNameFromNode(n);if(r)return r}}},n.prototype.readNetworkLinks=function(t){var n=[];if("string"==typeof t){var i=Sf(t);b(n,this.readNetworkLinksFromDocument(i))}else xf(t)?b(n,this.readNetworkLinksFromDocument(t)):b(n,this.readNetworkLinksFromNode(t));return n},n.prototype.readNetworkLinksFromDocument=function(t){for(var n=[],i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&b(n,this.readNetworkLinksFromNode(i));return n},n.prototype.readNetworkLinksFromNode=function(t){for(var n=[],i=t.firstElementChild;i;i=i.nextElementSibling)if(y(CC,i.namespaceURI)&&"NetworkLink"==i.localName){var r=zf({},IC,i,[]);n.push(r)}for(i=t.firstElementChild;i;i=i.nextElementSibling){var e=i.localName;!y(CC,i.namespaceURI)||"Document"!=e&&"Folder"!=e&&"kml"!=e||b(n,this.readNetworkLinksFromNode(i))}return n},n.prototype.readRegion=function(t){var n=[];if("string"==typeof t){var i=Sf(t);b(n,this.readRegionFromDocument(i))}else xf(t)?b(n,this.readRegionFromDocument(t)):b(n,this.readRegionFromNode(t));return n},n.prototype.readRegionFromDocument=function(t){for(var n=[],i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&b(n,this.readRegionFromNode(i));return n},n.prototype.readRegionFromNode=function(t){for(var n=[],i=t.firstElementChild;i;i=i.nextElementSibling)if(y(CC,i.namespaceURI)&&"Region"==i.localName){var r=zf({},zC,i,[]);n.push(r)}for(i=t.firstElementChild;i;i=i.nextElementSibling){var e=i.localName;!y(CC,i.namespaceURI)||"Document"!=e&&"Folder"!=e&&"kml"!=e||b(n,this.readRegionFromNode(i))}return n},n.prototype.writeFeaturesNode=function(t,n){n=this.adaptOptions(n);var i=wf(CC[4],"kml"),r="http://www.w3.org/2000/xmlns/";i.setAttributeNS(r,"xmlns:gx",AC[0]),i.setAttributeNS(r,"xmlns:xsi",mf),i.setAttributeNS(mf,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var e={node:i},o={};t.length>1?o.Document=t:1==t.length&&(o.Placemark=t[0]);var s=FC[i.namespaceURI],a=Pf(o,s);return Lf(e,LC,Rf,a,[n],s,this),i},n}(KE);function ZC(t,n,i){return Array.isArray(t)?t:"string"==typeof t?ZC(i[t],n,i):n}function $C(t){var n=bf(t,!1),i=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(n);if(i){var r=i[1];return[parseInt(r.substr(6,2),16),parseInt(r.substr(4,2),16),parseInt(r.substr(2,2),16),parseInt(r.substr(0,2),16)/255]}}function QC(t){var n=bf(t,!1),i=[];n=n.replace(/\s*,\s*/g,",");for(var r,e=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i;r=e.exec(n);){var o=parseFloat(r[1]),s=parseFloat(r[2]),a=r[3]?parseFloat(r[3]):0;i.push(o,s,a),n=n.substr(r[0].length)}if(""===n)return i}function tR(t){var n=bf(t,!1).trim(),i=t.baseURI;return i&&"about:blank"!=i||(i=window.location.href),i?new URL(n,i).href:n}function nR(t){var n=bf(t,!1).trim().replace(/^(?!.*#)/,"#"),i=t.baseURI;return i&&"about:blank"!=i||(i=window.location.href),i?new URL(n,i).href:n}function iR(t){return eA(t)}var rR=If(CC,{Pair:function(t,n){var i=zf({},RR,t,n,this);if(!i)return;var r=i.key;if(r&&"normal"==r){var e=i.styleUrl;e&&(n[n.length-1]=e);var o=i.Style;o&&(n[n.length-1]=o)}}});function eR(t,n){return zf(void 0,rR,t,n,this)}var oR=If(CC,{Icon:Tf((function(t,n){var i=zf({},dR,t,n);return i||null})),color:Tf($C),heading:Tf(eA),hotSpot:Tf((function(t){var n,i=t.getAttribute("xunits"),r=t.getAttribute("yunits");return n="insetPixels"!==i?"insetPixels"!==r?Iv:zv:"insetPixels"!==r?Nv:Fv,{x:parseFloat(t.getAttribute("x")),xunits:RC[i],y:parseFloat(t.getAttribute("y")),yunits:RC[r],origin:n}})),scale:Tf(iR)});var sR=If(CC,{color:Tf($C),scale:Tf(iR)});var aR=If(CC,{color:Tf($C),width:Tf(eA)});var uR=If(CC,{color:Tf($C),fill:Tf(nA),outline:Tf(nA)});var cR=If(CC,{coordinates:_f(QC)});function hR(t,n){return zf(null,cR,t,n)}var fR=If(AC,{Track:Mf(vR)});var lR=If(CC,{when:function(t,n){var i=n[n.length-1].whens,r=bf(t,!1),e=Date.parse(r);i.push(isNaN(e)?0:e)}},If(AC,{coord:function(t,n){var i=n[n.length-1].coordinates,r=bf(t,!1),e=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(r);if(e){var o=parseFloat(e[1]),s=parseFloat(e[2]),a=parseFloat(e[3]);i.push([o,s,a])}else i.push([])}}));function vR(t,n){var i=zf({coordinates:[],whens:[]},lR,t,n);if(i){for(var r=[],e=i.coordinates,o=i.whens,s=0,a=Math.min(e.length,o.length);s<a;++s)3==e[s].length&&r.push(e[s][0],e[s][1],e[s][2],o[s]);return new kj(r,Rt)}}var dR=If(CC,{href:Tf(tR)},If(AC,{x:Tf(eA),y:Tf(eA),w:Tf(eA),h:Tf(eA)}));var pR=If(CC,{coordinates:_f(QC)});function yR(t,n){return zf(null,pR,t,n)}var mR=If(CC,{extrude:Tf(nA),tessellate:Tf(nA),altitudeMode:Tf(uA)});function wR(t,n){var i=zf({},mR,t,n),r=yR(t,n);if(r){var e=new kj(r,At);return e.setProperties(i,!0),e}}function bR(t,n){var i=zf({},mR,t,n),r=yR(t,n);if(r){var e=new Ye(r,At,[r.length]);return e.setProperties(i,!0),e}}var gR=If(CC,{LineString:Mf(wR),LinearRing:Mf(bR),MultiGeometry:Mf(xR),Point:Mf(jR),Polygon:Mf(kR)});function xR(t,n){var i,r=zf([],gR,t,n);if(!r)return null;if(0===r.length)return new cS(r);for(var e=!0,o=r[0].getType(),s=1,a=r.length;s<a;++s)if(r[s].getType()!=o){e=!1;break}if(e){var u=void 0,c=void 0;if(o==Pt.POINT){var h=r[0];u=h.getLayout(),c=h.getFlatCoordinates();for(s=1,a=r.length;s<a;++s)b(c,r[s].getFlatCoordinates());OR(i=new bj(c,u),r)}else o==Pt.LINE_STRING?OR(i=new _j(r),r):o==Pt.POLYGON?OR(i=new Ej(r),r):o==Pt.GEOMETRY_COLLECTION?i=new cS(r):Mt(!1,37)}else i=new cS(r);return i}function jR(t,n){var i=zf({},mR,t,n),r=yR(t,n);if(r){var e=new Te(r,At);return e.setProperties(i,!0),e}}var SR=If(CC,{innerBoundaryIs:function(t,n){var i=zf([],zR,t,n);if(i.length>0){var r=n[n.length-1];r.push.apply(r,i)}},outerBoundaryIs:function(t,n){var i=zf(void 0,FR,t,n);if(i){n[n.length-1][0]=i}}});function kR(t,n){var i=zf({},mR,t,n),r=zf([null],SR,t,n);if(r&&r[0]){for(var e=r[0],o=[e.length],s=1,a=r.length;s<a;++s)b(e,r[s]),o.push(e.length);var u=new Ye(e,At,o);return u.setProperties(i,!0),u}}var MR=If(CC,{IconStyle:function(t,n){var i=zf({},oR,t,n);if(i){var r,e,o,s,a=n[n.length-1],u="Icon"in i?i.Icon:{},c=!("Icon"in i)||Object.keys(u).length>0,h=u.href;h?r=h:c&&(r=TC);var f,l=Iv,v=i.hotSpot;v?(e=[v.x,v.y],o=v.xunits,s=v.yunits,l=v.origin):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(r)&&(/pushpin/.test(r)?(e=kC,o=MC,s=_C):/arrow-reverse/.test(r)?(e=[54,42],o=MC,s=_C):/paddle/.test(r)&&(e=[32,1],o=MC,s=_C));var d,p=u.x,y=u.y;void 0!==p&&void 0!==y&&(f=[p,y]);var m,w=u.w,b=u.h;void 0!==w&&void 0!==b&&(d=[w,b]);var g=i.heading;void 0!==g&&(m=yi(g));var x=i.scale,j=i.color;if(c){r==TC&&(d=OC);var S=new Wv({anchor:e,anchorOrigin:l,anchorXUnits:o,anchorYUnits:s,crossOrigin:this.Bt,offset:f,offsetOrigin:Iv,rotation:m,scale:x,size:d,src:this.My(r),color:j}),k=S.getScaleArray()[0],M=S.getSize();if(null===M){var _=S.getImageState();if(_===mo||_===wo){S.listenImageChange((function t(){var n=S.getImageState();if(n!==mo&&n!==wo){var i=S.getSize();if(i&&2==i.length){var r=JC(i);S.setScale(k*r)}S.unlistenImageChange(t)}})),_===mo&&S.load()}}else if(2==M.length){var O=JC(M);S.setScale(k*O)}a.imageStyle=S}else a.imageStyle=DC}},LabelStyle:function(t,n){var i=zf({},sR,t,n);if(i){var r=n[n.length-1],e=new id({fill:new Cv({color:"color"in i?i.color:SC}),scale:i.scale});r.textStyle=e}},LineStyle:function(t,n){var i=zf({},aR,t,n);if(i){var r=n[n.length-1],e=new Vv({color:"color"in i?i.color:SC,width:"width"in i?i.width:1});r.strokeStyle=e}},PolyStyle:function(t,n){var i=zf({},uR,t,n);if(i){var r=n[n.length-1],e=new Cv({color:"color"in i?i.color:SC});r.fillStyle=e;var o=i.fill;void 0!==o&&(r.fill=o);var s=i.outline;void 0!==s&&(r.outline=s)}}});function _R(t,n){var i=zf({},MR,t,n,this);if(!i)return null;var r,e="fillStyle"in i?i.fillStyle:GC,o=i.fill;void 0===o||o||(e=null),"imageStyle"in i?i.imageStyle!=DC&&(r=i.imageStyle):r=UC;var s="textStyle"in i?i.textStyle:WC,a="strokeStyle"in i?i.strokeStyle:BC,u=i.outline;return void 0===u||u?[new Qv({fill:e,image:r,stroke:a,text:s,zIndex:void 0})]:[new Qv({geometry:function(t){var n=t.getGeometry(),i=n.getType();return i===Pt.GEOMETRY_COLLECTION?new cS(n.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return n!==Pt.POLYGON&&n!==Pt.MULTI_POLYGON}))):i!==Pt.POLYGON&&i!==Pt.MULTI_POLYGON?n:void 0},fill:e,image:r,stroke:a,text:s,zIndex:void 0}),new Qv({geometry:function(t){var n=t.getGeometry(),i=n.getType();return i===Pt.GEOMETRY_COLLECTION?new cS(n.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return n===Pt.POLYGON||n===Pt.MULTI_POLYGON}))):i===Pt.POLYGON||i===Pt.MULTI_POLYGON?n:void 0},fill:e,stroke:null,zIndex:void 0})]}function OR(t,n){var i,r,e,o=n.length,s=new Array(n.length),a=new Array(n.length),u=new Array(n.length);i=!1,r=!1,e=!1;for(var c=0;c<o;++c){var h=n[c];s[c]=h.get("extrude"),a[c]=h.get("tessellate"),u[c]=h.get("altitudeMode"),i=i||void 0!==s[c],r=r||void 0!==a[c],e=e||u[c]}i&&t.set("extrude",s),r&&t.set("tessellate",a),e&&t.set("altitudeMode",u)}var TR=If(CC,{displayName:Tf(uA),value:Tf(uA)});var ER=If(CC,{Data:function(t,n){var i=t.getAttribute("name");Nf(TR,t,n);var r=n[n.length-1];i&&r.displayName?r[i]={value:r.value,displayName:r.displayName,toString:function(){return r.value}}:null!==i?r[i]=r.value:null!==r.displayName&&(r[r.displayName]=r.value),delete r.value},SchemaData:function(t,n){Nf(PR,t,n)}});function AR(t,n){Nf(ER,t,n)}function CR(t,n){Nf(zC,t,n)}var RR=If(CC,{Style:Tf(_R),key:Tf(uA),styleUrl:Tf(nR)});var PR=If(CC,{SimpleData:function(t,n){var i=t.getAttribute("name");if(null!==i){var r=uA(t);n[n.length-1][i]=r}}});var IR=If(CC,{altitudeMode:Tf(uA),minAltitude:Tf(eA),maxAltitude:Tf(eA),north:Tf(eA),south:Tf(eA),east:Tf(eA),west:Tf(eA)});var NR=If(CC,{minLodPixels:Tf(eA),maxLodPixels:Tf(eA),minFadeExtent:Tf(eA),maxFadeExtent:Tf(eA)});var zR=If(CC,{LinearRing:Mf(hR)});var FR=If(CC,{LinearRing:_f(hR)});function LR(t,n){for(var i=qo(n),r=[255*(4==i.length?i[3]:1),i[2],i[1],i[0]],e=0;e<4;++e){var o=Math.floor(r[e]).toString(16);r[e]=1==o.length?"0"+o:o}dA(t,r.join(""))}var GR=If(CC,{Data:Ef((function(t,n,i){t.setAttribute("name",n.name);var r={node:t},e=n.value;"object"==jC(e)?(null!==e&&e.displayName&&Lf(r,GR,Rf,[e.displayName],i,["displayName"]),null!==e&&e.value&&Lf(r,GR,Rf,[e.value],i,["value"])):Lf(r,GR,Rf,[e],i,["value"])})),value:Ef((function(t,n){dA(t,n)})),displayName:Ef((function(t,n){hA(t,n)}))});var DR=If(CC,{Placemark:Ef(fP)}),UR=function(t,n,i){return wf(n[n.length-1].node.namespaceURI,"Placemark")};var qR=Cf("Data");var BR=If(CC,["href"],If(AC,["x","y","w","h"])),WR=If(CC,{href:Ef(dA)},If(AC,{x:Ef(lA),y:Ef(lA),w:Ef(lA),h:Ef(lA)})),VR=function(t,n,i){return wf(AC[0],"gx:"+i)};var XR=If(CC,["scale","heading","Icon","color","hotSpot"]),HR=If(CC,{Icon:Ef((function(t,n,i){var r={node:t},e=i[i.length-1].node,o=BR[e.namespaceURI],s=Pf(n,o);Lf(r,WR,Rf,s,i,o),s=Pf(n,o=BR[AC[0]]),Lf(r,WR,VR,s,i,o)})),color:Ef(LR),heading:Ef(lA),hotSpot:Ef((function(t,n){t.setAttribute("x",String(n.x)),t.setAttribute("y",String(n.y)),t.setAttribute("xunits",n.xunits),t.setAttribute("yunits",n.yunits)})),scale:Ef(xP)});var JR=If(CC,["color","scale"]),KR=If(CC,{color:Ef(LR),scale:Ef(xP)});var YR=If(CC,["color","width"]),ZR=If(CC,{color:Ef(LR),width:Ef(lA)});var $R={Point:"Point",LineString:"LineString",LinearRing:"LinearRing",Polygon:"Polygon",MultiPoint:"MultiGeometry",MultiLineString:"MultiGeometry",MultiPolygon:"MultiGeometry",GeometryCollection:"MultiGeometry"},QR=function(t,n,i){if(t)return wf(n[n.length-1].node.namespaceURI,$R[t.getType()])},tP=Cf("Point"),nP=Cf("LineString"),iP=Cf("LinearRing"),rP=Cf("Polygon"),eP=If(CC,{LineString:Ef(dP),Point:Ef(dP),Polygon:Ef(bP),GeometryCollection:Ef(oP)});function oP(t,n,i){var r,e={node:t},o=n.getType(),s=[];o===Pt.GEOMETRY_COLLECTION?(n.getGeometriesArrayRecursive().forEach((function(t){var n=t.getType();n===Pt.MULTI_POINT?s=s.concat(t.getPoints()):n===Pt.MULTI_LINE_STRING?s=s.concat(t.getLineStrings()):n===Pt.MULTI_POLYGON?s=s.concat(t.getPolygons()):n===Pt.POINT||n===Pt.LINE_STRING||n===Pt.POLYGON?s.push(t):Mt(!1,39)})),r=QR):o===Pt.MULTI_POINT?(s=n.getPoints(),r=tP):o===Pt.MULTI_LINE_STRING?(s=n.getLineStrings(),r=nP):o===Pt.MULTI_POLYGON?(s=n.getPolygons(),r=rP):Mt(!1,39),Lf(e,eP,r,s,i)}var sP=If(CC,{LinearRing:Ef(dP)});function aP(t,n,i){Lf({node:t},sP,iP,[n],i)}var uP=If(CC,{ExtendedData:Ef((function(t,n,i){for(var r={node:t},e=n.names,o=n.values,s=e.length,a=0;a<s;a++)Lf(r,GR,qR,[{name:e[a],value:o[a]}],i)})),MultiGeometry:Ef(oP),LineString:Ef(dP),LinearRing:Ef(dP),Point:Ef(dP),Polygon:Ef(bP),Style:Ef((function(t,n,i){var r={node:t},e={};if(n.pointStyles.length){var o=n.pointStyles[0].getText();o&&(e.LabelStyle=o);var s=n.pointStyles[0].getImage();s&&"function"==typeof s.getSrc&&(e.IconStyle=s)}if(n.lineStyles.length){(a=n.lineStyles[0].getStroke())&&(e.LineStyle=a)}if(n.polyStyles.length){var a;(a=n.polyStyles[0].getStroke())&&!e.LineStyle&&(e.LineStyle=a),e.PolyStyle=n.polyStyles[0]}var u=i[i.length-1].node,c=jP[u.namespaceURI],h=Pf(e,c);Lf(r,SP,Rf,h,i,c)})),address:Ef(dA),description:Ef(dA),name:Ef(dA),open:Ef(cA),phoneNumber:Ef(dA),styleUrl:Ef(dA),visibility:Ef(cA)}),cP=If(CC,["name","open","visibility","address","phoneNumber","description","styleUrl","Style"]),hP=Cf("ExtendedData");function fP(t,n,i){var r={node:t};n.getId()&&t.setAttribute("id",n.getId());var e=n.getProperties(),o={address:1,description:1,name:1,open:1,phoneNumber:1,styleUrl:1,visibility:1};o[n.getGeometryName()]=1;var s=Object.keys(e||{}).sort().filter((function(t){return!o[t]})),a=n.getStyleFunction();if(a){var u=a(n,0);if(u){var c=Array.isArray(u)?u:[u],h=c;if(n.getGeometry()&&(h=c.filter((function(t){var i=t.getGeometryFunction()(n);if(i){var r=i.getType();return r===Pt.GEOMETRY_COLLECTION?i.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return n===Pt.POINT||n===Pt.MULTI_POINT})).length:r===Pt.POINT||r===Pt.MULTI_POINT}}))),this.jy){var f=c,l=c;n.getGeometry()&&(f=c.filter((function(t){var i=t.getGeometryFunction()(n);if(i){var r=i.getType();return r===Pt.GEOMETRY_COLLECTION?i.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return n===Pt.LINE_STRING||n===Pt.MULTI_LINE_STRING})).length:r===Pt.LINE_STRING||r===Pt.MULTI_LINE_STRING}})),l=c.filter((function(t){var i=t.getGeometryFunction()(n);if(i){var r=i.getType();return r===Pt.GEOMETRY_COLLECTION?i.getGeometriesArrayRecursive().filter((function(t){var n=t.getType();return n===Pt.POLYGON||n===Pt.MULTI_POLYGON})).length:r===Pt.POLYGON||r===Pt.MULTI_POLYGON}}))),e.Style={pointStyles:h,lineStyles:f,polyStyles:l}}if(h.length&&void 0===e.name){var v=h[0].getText();v&&(e.name=v.getText())}}}var d=i[i.length-1].node,p=cP[d.namespaceURI],y=Pf(e,p);if(Lf(r,uP,Rf,y,i,p),s.length>0){var m=Pf(e,s);Lf(r,uP,hP,[{names:s,values:m}],i)}var w=i[0],b=n.getGeometry();b&&(b=Yj(b,!0,w)),Lf(r,uP,QR,[b],i)}var lP=If(CC,["extrude","tessellate","altitudeMode","coordinates"]),vP=If(CC,{extrude:Ef(cA),tessellate:Ef(cA),altitudeMode:Ef(dA),coordinates:Ef((function(t,n,i){var r,e=i[i.length-1],o=e.layout,s=e.stride;o==Et||o==Ct?r=2:o==At||o==Rt?r=3:Mt(!1,34);var a=n.length,u="";if(a>0){u+=n[0];for(var c=1;c<r;++c)u+=","+n[c];for(var h=s;h<a;h+=s){u+=" "+n[h];for(c=1;c<r;++c)u+=","+n[h+c]}}dA(t,u)}))});function dP(t,n,i){var r=n.getFlatCoordinates(),e={node:t};e.layout=n.getLayout(),e.stride=n.getStride();var o=n.getProperties();o.coordinates=r;var s=i[i.length-1].node,a=lP[s.namespaceURI],u=Pf(o,a);Lf(e,vP,Rf,u,i,a)}var pP=If(CC,["color","fill","outline"]),yP=If(CC,{outerBoundaryIs:Ef(aP),innerBoundaryIs:Ef(aP)}),mP=Cf("innerBoundaryIs"),wP=Cf("outerBoundaryIs");function bP(t,n,i){var r=n.getLinearRings(),e=r.shift(),o={node:t};Lf(o,yP,mP,r,i),Lf(o,yP,wP,[e],i)}var gP=If(CC,{color:Ef(LR),fill:Ef(cA),outline:Ef(cA)});function xP(t,n){lA(t,Math.round(1e6*n)/1e6)}var jP=If(CC,["IconStyle","LabelStyle","LineStyle","PolyStyle"]),SP=If(CC,{IconStyle:Ef((function(t,n,i){var r={node:t},e={},o=n.getSrc(),s=n.getSize(),a=n.getImageSize(),u={href:o};if(s){u.w=s[0],u.h=s[1];var c=n.getAnchor(),h=n.getOrigin();if(h&&a&&0!==h[0]&&h[1]!==s[1]&&(u.x=h[0],u.y=a[1]-(h[1]+s[1])),c&&(c[0]!==s[0]/2||c[1]!==s[1]/2)){var f={x:c[0],xunits:Pv,y:s[1]-c[1],yunits:Pv};e.hotSpot=f}}e.Icon=u;var l=n.getScaleArray()[0],v=s;null===v&&(v=OC),2==v.length&&(l/=JC(v)),1!==l&&(e.scale=l);var d=n.getRotation();0!==d&&(e.heading=d);var p=n.getColor();p&&(e.color=p);var y=i[i.length-1].node,m=XR[y.namespaceURI],w=Pf(e,m);Lf(r,HR,Rf,w,i,m)})),LabelStyle:Ef((function(t,n,i){var r={node:t},e={},o=n.getFill();o&&(e.color=o.getColor());var s=n.getScale();s&&1!==s&&(e.scale=s);var a=i[i.length-1].node,u=JR[a.namespaceURI],c=Pf(e,u);Lf(r,KR,Rf,c,i,u)})),LineStyle:Ef((function(t,n,i){var r={node:t},e={color:n.getColor(),width:Number(n.getWidth())||1},o=i[i.length-1].node,s=YR[o.namespaceURI],a=Pf(e,s);Lf(r,ZR,Rf,a,i,s)})),PolyStyle:Ef((function(t,n,i){var r={node:t},e=n.getFill(),o=n.getStroke(),s={color:e?e.getColor():void 0,fill:!!e&&void 0,outline:!!o&&void 0},a=i[i.length-1].node,u=pP[a.namespaceURI],c=Pf(s,u);Lf(r,gP,Rf,c,i,u)}))});var kP=YC,MP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),_P=[null],OP=If(_P,{nd:function(t,n){n[n.length-1].ndrefs.push(t.getAttribute("ref"))},tag:CP}),TP=If(_P,{node:function(t,n){var i=n[0],r=n[n.length-1],e=t.getAttribute("id"),o=[parseFloat(t.getAttribute("lon")),parseFloat(t.getAttribute("lat"))];r.nodes[e]=o;var s=zf({tags:{}},AP,t,n);if(!R(s.tags)){var a=new Te(o);Yj(a,!1,i);var u=new Tt(a);void 0!==e&&u.setId(e),u.setProperties(s.tags,!0),r.features.push(u)}},way:function(t,n){var i=zf({id:t.getAttribute("id"),ndrefs:[],tags:{}},OP,t,n);n[n.length-1].ways.push(i)}}),EP=function(t){function n(){var n=t.call(this)||this;return n.dataProjection=gr("EPSG:4326"),n}return MP(n,t),n.prototype.readFeaturesFromNode=function(t,n){var i=this.getReadOptions(t,n);if("osm"==t.localName){for(var r=zf({nodes:{},ways:[],features:[]},TP,t,[i]),e=0;e<r.ways.length;e++){for(var o=r.ways[e],s=[],a=0,u=o.ndrefs.length;a<u;a++){b(s,r.nodes[o.ndrefs[a]])}var c=void 0;Yj(c=o.ndrefs[0]==o.ndrefs[o.ndrefs.length-1]?new Ye(s,Et,[s.length]):new kj(s,Et),!1,i);var h=new Tt(c);void 0!==o.id&&h.setId(o.id),h.setProperties(o.tags,!0),r.features.push(h)}if(r.features)return r.features}return[]},n}(KE),AP=If(_P,{tag:CP});function CP(t,n){n[n.length-1].tags[t.getAttribute("k")]=t.getAttribute("v")}var RP=EP,PP=function(){function t(){}return t.prototype.read=function(t){if(t){if("string"==typeof t){var n=Sf(t);return this.readFromDocument(n)}return xf(t)?this.readFromDocument(t):this.readFromNode(t)}return null},t.prototype.readFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readFromNode(n);return null},t.prototype.readFromNode=function(t){},t}();function IP(t){return t.getAttributeNS("http://www.w3.org/1999/xlink","href")}var NP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),zP=[null,"http://www.opengis.net/ows/1.1"],FP=If(zP,{ServiceIdentification:Tf((function(t,n){return zf({},YP,t,n)})),ServiceProvider:Tf((function(t,n){return zf({},ZP,t,n)})),OperationsMetadata:Tf((function(t,n){return zf({},XP,t,n)}))}),LP=function(t){function n(){return t.call(this)||this}return NP(n,t),n.prototype.readFromNode=function(t){var n=zf({},FP,t,[]);return n||null},n}(PP),GP=If(zP,{DeliveryPoint:Tf(uA),City:Tf(uA),AdministrativeArea:Tf(uA),PostalCode:Tf(uA),Country:Tf(uA),ElectronicMailAddress:Tf(uA)}),DP=If(zP,{Value:Of((function(t,n){return uA(t)}))}),UP=If(zP,{AllowedValues:Tf((function(t,n){return zf({},DP,t,n)}))}),qP=If(zP,{Phone:Tf((function(t,n){return zf({},HP,t,n)})),Address:Tf((function(t,n){return zf({},GP,t,n)}))}),BP=If(zP,{HTTP:Tf((function(t,n){return zf({},WP,t,n)}))}),WP=If(zP,{Get:Of((function(t,n){var i=IP(t);if(!i)return;return zf({href:i},JP,t,n)})),Post:void 0}),VP=If(zP,{DCP:Tf((function(t,n){return zf({},BP,t,n)}))}),XP=If(zP,{Operation:function(t,n){var i=t.getAttribute("name"),r=zf({},VP,t,n);if(!r)return;n[n.length-1][i]=r}}),HP=If(zP,{Voice:Tf(uA),Facsimile:Tf(uA)}),JP=If(zP,{Constraint:Of((function(t,n){var i=t.getAttribute("name");if(!i)return;return zf({name:i},UP,t,n)}))}),KP=If(zP,{IndividualName:Tf(uA),PositionName:Tf(uA),ContactInfo:Tf((function(t,n){return zf({},qP,t,n)}))}),YP=If(zP,{Abstract:Tf(uA),AccessConstraints:Tf(uA),Fees:Tf(uA),Title:Tf(uA),ServiceTypeVersion:Tf(uA),ServiceType:Tf(uA)}),ZP=If(zP,{ProviderName:Tf(uA),ProviderSite:Tf(IP),ServiceContact:Tf((function(t,n){return zf({},KP,t,n)}))});var $P=LP,QP=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}();function tI(t,n,i){var r,e=i||1e5,o=new Array(n);for(r=0;r<n;++r)o[r]=0;for(var s=0,a=t.length;s<a;)for(r=0;r<n;++r,++s){var u=t[s],c=u-o[r];o[r]=u,t[s]=c}return iI(t,e)}function nI(t,n,i){var r,e=i||1e5,o=new Array(n);for(r=0;r<n;++r)o[r]=0;for(var s=rI(t,e),a=0,u=s.length;a<u;)for(r=0;r<n;++r,++a)o[r]+=s[a],s[a]=o[r];return s}function iI(t,n){for(var i=n||1e5,r=0,e=t.length;r<e;++r)t[r]=Math.round(t[r]*i);return eI(t)}function rI(t,n){for(var i=n||1e5,r=oI(t),e=0,o=r.length;e<o;++e)r[e]/=i;return r}function eI(t){for(var n=0,i=t.length;n<i;++n){var r=t[n];t[n]=r<0?~(r<<1):r<<1}return sI(t)}function oI(t){for(var n=aI(t),i=0,r=n.length;i<r;++i){var e=n[i];n[i]=1&e?~(e>>1):e>>1}return n}function sI(t){for(var n="",i=0,r=t.length;i<r;++i)n+=uI(t[i]);return n}function aI(t){for(var n=[],i=0,r=0,e=0,o=t.length;e<o;++e){var s=t.charCodeAt(e)-63;i|=(31&s)<<r,s<32?(n.push(i),i=0,r=0):r+=5}return n}function uI(t){for(var n,i="";t>=32;)n=63+(32|31&t),i+=String.fromCharCode(n),t>>=5;return n=t+63,i+=String.fromCharCode(n)}var cI=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.dataProjection=gr("EPSG:4326"),i.Ay=r.factor?r.factor:1e5,i.Cy=r.geometryLayout?r.geometryLayout:Et,i}return QP(n,t),n.prototype.readFeatureFromText=function(t,n){var i=this.readGeometryFromText(t,n);return new Tt(i)},n.prototype.readFeaturesFromText=function(t,n){return[this.readFeatureFromText(t,n)]},n.prototype.readGeometryFromText=function(t,n){var i=$r(this.Cy),r=nI(t,i,this.Ay);GE(r,0,r.length,i,r);var e=be(r,0,r.length,i);return Yj(new kj(e,this.Cy),!1,this.adaptOptions(n))},n.prototype.writeFeatureText=function(t,n){var i=t.getGeometry();return i?this.writeGeometryText(i,n):(Mt(!1,40),"")},n.prototype.writeFeaturesText=function(t,n){return this.writeFeatureText(t[0],n)},n.prototype.writeGeometryText=function(t,n){var i=(t=Yj(t,!0,this.adaptOptions(n))).getFlatCoordinates(),r=t.getStride();return GE(i,0,i.length,r,i),tI(i,r,this.Ay)},n}(lC),hI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),fI=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.tv=r.layerName,i.qc=r.layers?r.layers:null,i.dataProjection=gr(r.dataProjection?r.dataProjection:"EPSG:4326"),i}return hI(n,t),n.prototype.readFeaturesFromObject=function(t,n){if("Topology"==t.type){var i=t,r=void 0,e=null,o=null;i.transform&&(e=(r=i.transform).scale,o=r.translate);var s=i.arcs;r&&function(t,n,i){for(var r=0,e=t.length;r<e;++r)yI(t[r],n,i)}(s,e,o);var a=[],u=i.objects,c=this.tv,h=void 0;for(var f in u)this.qc&&-1==this.qc.indexOf(f)||("GeometryCollection"===u[f].type?(h=u[f],a.push.apply(a,dI(h,s,e,o,c,f,n))):(h=u[f],a.push(pI(h,s,e,o,c,f,n))));return a}return[]},n.prototype.readProjectionFromObject=function(t){return this.dataProjection},n}(lS),lI={Point:function(t,n,i){var r=t.coordinates;n&&i&&mI(r,n,i);return new Te(r)},LineString:function(t,n){var i=vI(t.arcs,n);return new kj(i)},Polygon:function(t,n){for(var i=[],r=0,e=t.arcs.length;r<e;++r)i[r]=vI(t.arcs[r],n);return new Ye(i)},MultiPoint:function(t,n,i){var r=t.coordinates;if(n&&i)for(var e=0,o=r.length;e<o;++e)mI(r[e],n,i);return new bj(r)},MultiLineString:function(t,n){for(var i=[],r=0,e=t.arcs.length;r<e;++r)i[r]=vI(t.arcs[r],n);return new _j(i)},MultiPolygon:function(t,n){for(var i=[],r=0,e=t.arcs.length;r<e;++r){for(var o=t.arcs[r],s=[],a=0,u=o.length;a<u;++a)s[a]=vI(o[a],n);i[r]=s}return new Ej(i)}};function vI(t,n){for(var i,r=[],e=0,o=t.length;e<o;++e)if(i=t[e],e>0&&r.pop(),i>=0)for(var s=0,a=(u=n[i]).length;s<a;++s)r.push(u[s].slice(0));else{var u;for(s=(u=n[~i]).length-1;s>=0;--s)r.push(u[s].slice(0))}return r}function dI(t,n,i,r,e,o,s){for(var a=t.geometries,u=[],c=0,h=a.length;c<h;++c)u[c]=pI(a[c],n,i,r,e,o,s);return u}function pI(t,n,i,r,e,o,s){var a=null,u=t.type;if(u){var c=lI[u];a=Yj(a="Point"===u||"MultiPoint"===u?c(t,i,r):c(t,n),!1,s)}var h=new Tt({geometry:a});void 0!==t.id&&h.setId(t.id);var f=t.properties;return e&&(f||(f={}),f[e]=o),f&&h.setProperties(f,!0),h}function yI(t,n,i){for(var r=0,e=0,o=0,s=t.length;o<s;++o){var a=t[o];r+=a[0],e+=a[1],a[0]=r,a[1]=e,mI(a,n,i)}}function mI(t,n,i){t[0]=t[0]*n[0]+i[0],t[1]=t[1]*n[1]+i[1]}var wI=fI,bI=function(){function t(t){this.Ry=t}return t.prototype.getTagName=function(){return this.Ry},t}(),gI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),xI=function(t){function n(n,i){var r=t.call(this,n)||this;return r.conditions=i,Mt(r.conditions.length>=2,57),r}return gI(n,t),n}(bI),jI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),SI=function(t){function n(n){return t.call(this,"And",Array.prototype.slice.call(arguments))||this}return jI(n,t),n}(xI),kI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),MI=function(t){function n(n,i,r){var e=t.call(this,"BBOX")||this;if(e.geometryName=n,e.extent=i,4!==i.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");return e.srsName=r,e}return kI(n,t),n}(bI),_I=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),OI=function(t){function n(n,i,r,e){var o=t.call(this,n)||this;return o.geometryName=i||"the_geom",o.geometry=r,o.srsName=e,o}return _I(n,t),n}(bI),TI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),EI=function(t){function n(n,i,r){return t.call(this,"Contains",n,i,r)||this}return TI(n,t),n}(OI),AI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),CI=function(t){function n(n,i,r,e,o){var s=t.call(this,"DWithin",n,i,o)||this;return s.distance=r,s.unit=e,s}return AI(n,t),n}(OI),RI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),PI=function(t){function n(n,i,r){return t.call(this,"Disjoint",n,i,r)||this}return RI(n,t),n}(OI),II=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),NI=function(t){function n(n,i){var r=t.call(this,n)||this;return r.propertyName=i,r}return II(n,t),n}(bI),zI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),FI=function(t){function n(n,i,r){var e=t.call(this,"During",n)||this;return e.begin=i,e.end=r,e}return zI(n,t),n}(NI),LI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),GI=function(t){function n(n,i,r,e){var o=t.call(this,n,i)||this;return o.expression=r,o.matchCase=e,o}return LI(n,t),n}(NI),DI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),UI=function(t){function n(n,i,r){return t.call(this,"PropertyIsEqualTo",n,i,r)||this}return DI(n,t),n}(GI),qI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),BI=function(t){function n(n,i){return t.call(this,"PropertyIsGreaterThan",n,i)||this}return qI(n,t),n}(GI),WI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),VI=function(t){function n(n,i){return t.call(this,"PropertyIsGreaterThanOrEqualTo",n,i)||this}return WI(n,t),n}(GI),XI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),HI=function(t){function n(n,i,r){return t.call(this,"Intersects",n,i,r)||this}return XI(n,t),n}(OI),JI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),KI=function(t){function n(n,i,r){var e=t.call(this,"PropertyIsBetween",n)||this;return e.lowerBoundary=i,e.upperBoundary=r,e}return JI(n,t),n}(NI),YI=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),ZI=function(t){function n(n,i,r,e,o,s){var a=t.call(this,"PropertyIsLike",n)||this;return a.pattern=i,a.wildCard=void 0!==r?r:"*",a.singleChar=void 0!==e?e:".",a.escapeChar=void 0!==o?o:"!",a.matchCase=s,a}return YI(n,t),n}(NI),$I=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),QI=function(t){function n(n){return t.call(this,"PropertyIsNull",n)||this}return $I(n,t),n}(NI),tN=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),nN=function(t){function n(n,i){return t.call(this,"PropertyIsLessThan",n,i)||this}return tN(n,t),n}(GI),iN=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),rN=function(t){function n(n,i){return t.call(this,"PropertyIsLessThanOrEqualTo",n,i)||this}return iN(n,t),n}(GI),eN=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),oN=function(t){function n(n){var i=t.call(this,"Not")||this;return i.condition=n,i}return eN(n,t),n}(bI),sN=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),aN=function(t){function n(n,i,r){return t.call(this,"PropertyIsNotEqualTo",n,i,r)||this}return sN(n,t),n}(GI),uN=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),cN=function(t){function n(n){return t.call(this,"Or",Array.prototype.slice.call(arguments))||this}return uN(n,t),n}(xI),hN=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),fN=function(t){function n(n){var i=t.call(this,"ResourceId")||this;return i.rid=n,i}return hN(n,t),n}(bI),lN=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),vN=function(t){function n(n,i,r){return t.call(this,"Within",n,i,r)||this}return lN(n,t),n}(OI);function dN(t){var n=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(SI,n))}function pN(t,n,i){return new MI(t,n,i)}var yN=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),mN={"http://www.opengis.net/gml":{boundedBy:Tf(tA.prototype.readExtentElement,"bounds")},"http://www.opengis.net/wfs/2.0":{member:Mf(tA.prototype.readFeaturesInternal)}},wN={"http://www.opengis.net/wfs":{totalInserted:Tf(sA),totalUpdated:Tf(sA),totalDeleted:Tf(sA)},"http://www.opengis.net/wfs/2.0":{totalInserted:Tf(sA),totalUpdated:Tf(sA),totalDeleted:Tf(sA)}},bN={"http://www.opengis.net/wfs":{TransactionSummary:Tf(CN,"transactionSummary"),InsertResults:Tf(NN,"insertIds")},"http://www.opengis.net/wfs/2.0":{TransactionSummary:Tf(CN,"transactionSummary"),InsertResults:Tf(NN,"insertIds")}},gN={"http://www.opengis.net/wfs":{PropertyName:Ef(dA)},"http://www.opengis.net/wfs/2.0":{PropertyName:Ef(dA)}},xN={"http://www.opengis.net/wfs":{Insert:Ef(zN),Update:Ef(DN),Delete:Ef(GN),Property:Ef(UN),Native:Ef(qN)},"http://www.opengis.net/wfs/2.0":{Insert:Ef(zN),Update:Ef(DN),Delete:Ef(GN),Property:Ef(UN),Native:Ef(qN)}},jN="feature",SN="http://www.w3.org/2000/xmlns/",kN={"2.0.0":"http://www.opengis.net/ogc/1.1","1.1.0":"http://www.opengis.net/ogc","1.0.0":"http://www.opengis.net/ogc"},MN={"2.0.0":"http://www.opengis.net/wfs/2.0","1.1.0":"http://www.opengis.net/wfs","1.0.0":"http://www.opengis.net/wfs"},_N={"2.0.0":"http://www.opengis.net/fes/2.0","1.1.0":"http://www.opengis.net/fes","1.0.0":"http://www.opengis.net/fes"},ON={"2.0.0":"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd","1.1.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd","1.0.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"},TN={"2.0.0":OA,"1.1.0":jA,"1.0.0":wA},EN=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.sh=r.version?r.version:"1.1.0",i.Py=r.featureType,i.Iy=r.featureNS,i.Ny=r.gmlFormat?r.gmlFormat:new TN[i.sh],i.zy=r.schemaLocation?r.schemaLocation:ON[i.sh],i}return yN(n,t),n.prototype.getFeatureType=function(){return this.Py},n.prototype.setFeatureType=function(t){this.Py=t},n.prototype.readFeaturesFromNode=function(t,n){var i={node:t};E(i,{featureType:this.Py,featureNS:this.Iy}),E(i,this.getReadOptions(t,n||{}));var r=[i],e=zf([],"2.0.0"===this.sh?mN:this.Ny.FEATURE_COLLECTION_PARSERS,t,r,this.Ny);return e||(e=[]),e},n.prototype.readTransactionResponse=function(t){if(t){if("string"==typeof t){var n=Sf(t);return this.readTransactionResponseFromDocument(n)}return xf(t)?this.readTransactionResponseFromDocument(t):this.readTransactionResponseFromNode(t)}},n.prototype.readFeatureCollectionMetadata=function(t){if(t){if("string"==typeof t){var n=Sf(t);return this.readFeatureCollectionMetadataFromDocument(n)}return xf(t)?this.readFeatureCollectionMetadataFromDocument(t):this.readFeatureCollectionMetadataFromNode(t)}},n.prototype.readFeatureCollectionMetadataFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readFeatureCollectionMetadataFromNode(n)},n.prototype.readFeatureCollectionMetadataFromNode=function(t){var n={},i=aA(t.getAttribute("numberOfFeatures"));return n.numberOfFeatures=i,zf(n,mN,t,[],this.Ny)},n.prototype.readTransactionResponseFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readTransactionResponseFromNode(n)},n.prototype.readTransactionResponseFromNode=function(t){return zf({},bN,t,[])},n.prototype.writeGetFeature=function(t){var n=this,i=wf(MN[this.sh],"GetFeature");i.setAttribute("service","WFS"),i.setAttribute("version",this.sh),t.handle&&i.setAttribute("handle",t.handle),t.outputFormat&&i.setAttribute("outputFormat",t.outputFormat),void 0!==t.maxFeatures&&i.setAttribute("maxFeatures",String(t.maxFeatures)),t.resultType&&i.setAttribute("resultType",t.resultType),void 0!==t.startIndex&&i.setAttribute("startIndex",String(t.startIndex)),void 0!==t.count&&i.setAttribute("count",String(t.count)),void 0!==t.viewParams&&i.setAttribute("viewParams",t.viewParams),i.setAttributeNS(mf,"xsi:schemaLocation",this.zy);var r={node:i};if(E(r,{version:this.sh,srsName:t.srsName,featureNS:t.featureNS?t.featureNS:this.Iy,featurePrefix:t.featurePrefix,propertyNames:t.propertyNames?t.propertyNames:[]}),Mt(Array.isArray(t.featureTypes),11),"string"==typeof t.featureTypes[0]){var e=t.filter;t.bbox&&(Mt(t.geometryName,12),e=this.combineBboxAndFilter(t.geometryName,t.bbox,t.srsName,e)),E(r,{geometryName:t.geometryName,filter:e}),sz(i,t.featureTypes,[r])}else t.featureTypes.forEach((function(e){var o=n.combineBboxAndFilter(e.geometryName,e.bbox,t.srsName,t.filter);E(r,{geometryName:e.geometryName,filter:o}),sz(i,[e.name],[r])}));return i},n.prototype.combineBboxAndFilter=function(t,n,i,r){var e=pN(t,n,i);return r?dN(r,e):e},n.prototype.writeTransaction=function(t,n,i,r){var e,o=[],s=r.version?r.version:this.sh,a=wf(MN[s],"Transaction");a.setAttribute("service","WFS"),a.setAttribute("version",s),r&&(e=r.gmlOptions?r.gmlOptions:{},r.handle&&a.setAttribute("handle",r.handle)),a.setAttributeNS(mf,"xsi:schemaLocation",ON[s]);var u=function(t,n,i,r){var e,o=r.featurePrefix?r.featurePrefix:jN;"1.0.0"===i?e=2:"1.1.0"===i?e=3:"2.0.0"===i&&(e=3.2);return E({node:t},{version:i,featureNS:r.featureNS,featureType:r.featureType,featurePrefix:o,gmlVersion:e,hasZ:r.hasZ,srsName:r.srsName},n)}(a,e,s,r);return t&&AN("Insert",t,o,u),n&&AN("Update",n,o,u),i&&AN("Delete",i,o,u),r.nativeElements&&AN("Native",r.nativeElements,o,u),a},n.prototype.readProjectionFromDocument=function(t){for(var n=t.firstChild;n;n=n.nextSibling)if(n.nodeType==Node.ELEMENT_NODE)return this.readProjectionFromNode(n);return null},n.prototype.readProjectionFromNode=function(t){if(t.firstElementChild&&t.firstElementChild.firstElementChild)for(var n=(t=t.firstElementChild.firstElementChild).firstElementChild;n;n=n.nextElementSibling)if(0!==n.childNodes.length&&(1!==n.childNodes.length||3!==n.firstChild.nodeType)){var i=[{}];return this.Ny.readGeometryElement(n,i),gr(i.pop().srsName)}return null},n}(KE);function AN(t,n,i,r){Lf(r,xN,Cf(t),n,i)}function CN(t,n){return zf({},wN,t,n)}var RN={"http://www.opengis.net/ogc":{FeatureId:Mf((function(t,n){return t.getAttribute("fid")}))},"http://www.opengis.net/ogc/1.1":{FeatureId:Mf((function(t,n){return t.getAttribute("fid")}))}};function PN(t,n){Nf(RN,t,n)}var IN={"http://www.opengis.net/wfs":{Feature:PN},"http://www.opengis.net/wfs/2.0":{Feature:PN}};function NN(t,n){return zf([],IN,t,n)}function zN(t,n,i){var r=i[i.length-1],e=r.featureType,o=r.featureNS,s=r.gmlVersion,a=wf(o,e);t.appendChild(a),2===s?wA.prototype.writeFeatureElement(a,n,i):3===s?jA.prototype.writeFeatureElement(a,n,i):OA.prototype.writeFeatureElement(a,n,i)}function FN(t,n,i){var r=i[i.length-1].version,e=kN[r],o=wf(e,"Filter"),s=wf(e,"FeatureId");o.appendChild(s),s.setAttribute("fid",n),t.appendChild(o)}function LN(t,n){var i=(t=t||jN)+":";return 0===n.indexOf(i)?n:i+n}function GN(t,n,i){var r=i[i.length-1];Mt(void 0!==n.getId(),26);var e=r.featureType,o=r.featurePrefix,s=r.featureNS,a=LN(o,e);t.setAttribute("typeName",a),t.setAttributeNS(SN,"xmlns:"+o,s);var u=n.getId();void 0!==u&&FN(t,u,i)}function DN(t,n,i){var r=i[i.length-1];Mt(void 0!==n.getId(),27);var e=r.version,o=r.featureType,s=r.featurePrefix,a=r.featureNS,u=LN(s,o),c=n.getGeometryName();t.setAttribute("typeName",u),t.setAttributeNS(SN,"xmlns:"+s,a);var h=n.getId();if(void 0!==h){for(var f=n.getKeys(),l=[],v=0,d=f.length;v<d;v++){var p=n.get(f[v]);if(void 0!==p){var y=f[v];p&&"function"==typeof p.getSimplifiedGeometry&&(y=c),l.push({name:y,value:p})}}Lf({version:e,gmlVersion:r.gmlVersion,node:t,hasZ:r.hasZ,srsName:r.srsName},xN,Cf("Property"),l,i),FN(t,h,i)}}function UN(t,n,i){var r=i[i.length-1],e=r.version,o=MN[e],s=wf(o,"Name"),a=r.gmlVersion;if(t.appendChild(s),dA(s,n.name),void 0!==n.value&&null!==n.value){var u=wf(o,"Value");t.appendChild(u),n.value&&"function"==typeof n.value.getSimplifiedGeometry?2===a?wA.prototype.writeGeometryElement(u,n.value,i):3===a?jA.prototype.writeGeometryElement(u,n.value,i):OA.prototype.writeGeometryElement(u,n.value,i):dA(u,n.value)}}function qN(t,n,i){n.vendorId&&t.setAttribute("vendorId",n.vendorId),void 0!==n.safeToIgnore&&t.setAttribute("safeToIgnore",String(n.safeToIgnore)),void 0!==n.value&&dA(t,n.value)}var BN={"http://www.opengis.net/wfs":{Query:Ef(WN)},"http://www.opengis.net/wfs/2.0":{Query:Ef(WN)},"http://www.opengis.net/ogc":{During:Ef(KN),And:Ef(YN),Or:Ef(YN),Not:Ef(ZN),BBOX:Ef(XN),Contains:Ef(HN),Intersects:Ef(HN),Within:Ef(HN),DWithin:Ef(JN),PropertyIsEqualTo:Ef($N),PropertyIsNotEqualTo:Ef($N),PropertyIsLessThan:Ef($N),PropertyIsLessThanOrEqualTo:Ef($N),PropertyIsGreaterThan:Ef($N),PropertyIsGreaterThanOrEqualTo:Ef($N),PropertyIsNull:Ef(QN),PropertyIsBetween:Ef(tz),PropertyIsLike:Ef(nz)},"http://www.opengis.net/fes/2.0":{During:Ef(KN),And:Ef(YN),Or:Ef(YN),Not:Ef(ZN),BBOX:Ef(XN),Contains:Ef(HN),Disjoint:Ef(HN),Intersects:Ef(HN),ResourceId:Ef((function(t,n,i){t.setAttribute("rid",n.rid)})),Within:Ef(HN),DWithin:Ef(JN),PropertyIsEqualTo:Ef($N),PropertyIsNotEqualTo:Ef($N),PropertyIsLessThan:Ef($N),PropertyIsLessThanOrEqualTo:Ef($N),PropertyIsGreaterThan:Ef($N),PropertyIsGreaterThanOrEqualTo:Ef($N),PropertyIsNull:Ef(QN),PropertyIsBetween:Ef(tz),PropertyIsLike:Ef(nz)}};function WN(t,n,i){var r,e,o=i[i.length-1],s=o.version,a=o.featurePrefix,u=o.featureNS,c=o.propertyNames,h=o.srsName;r=a?LN(a,n):n,e="2.0.0"===s?"typeNames":"typeName",t.setAttribute(e,r),h&&t.setAttribute("srsName",h),u&&t.setAttributeNS(SN,"xmlns:"+a,u);var f=E({},o);f.node=t,Lf(f,gN,Cf("PropertyName"),c,i);var l=o.filter;if(l){var v=wf(az(s),"Filter");t.appendChild(v),VN(v,l,i)}}function VN(t,n,i){var r=i[i.length-1],e={node:t};E(e,{context:r}),Lf(e,BN,Cf(n.getTagName()),[n],i)}function XN(t,n,i){var r=i[i.length-1],e=r.context.version;r.srsName=n.srsName;var o=TN[e];ez(e,t,n.geometryName),o.prototype.writeGeometryElement(t,n.extent,i)}function HN(t,n,i){var r=i[i.length-1],e=r.context.version;r.srsName=n.srsName;var o=TN[e];ez(e,t,n.geometryName),o.prototype.writeGeometryElement(t,n.geometry,i)}function JN(t,n,i){var r=i[i.length-1].context.version;HN(t,n,i);var e=wf(az(r),"Distance");dA(e,n.distance.toString()),"2.0.0"===r?e.setAttribute("uom",n.unit):e.setAttribute("units",n.unit),t.appendChild(e)}function KN(t,n,i){var r=i[i.length-1].context.version;iz(_N[r],"ValueReference",t,n.propertyName);var e=wf(ZE,"TimePeriod");t.appendChild(e);var o=wf(ZE,"begin");e.appendChild(o),oz(o,n.begin);var s=wf(ZE,"end");e.appendChild(s),oz(s,n.end)}function YN(t,n,i){var r=i[i.length-1].context,e={node:t};E(e,{context:r});for(var o=n.conditions,s=0,a=o.length;s<a;++s){var u=o[s];Lf(e,BN,Cf(u.getTagName()),[u],i)}}function ZN(t,n,i){var r=i[i.length-1].context,e={node:t};E(e,{context:r});var o=n.condition;Lf(e,BN,Cf(o.getTagName()),[o],i)}function $N(t,n,i){var r=i[i.length-1].context.version;void 0!==n.matchCase&&t.setAttribute("matchCase",n.matchCase.toString()),ez(r,t,n.propertyName),rz(r,t,""+n.expression)}function QN(t,n,i){ez(i[i.length-1].context.version,t,n.propertyName)}function tz(t,n,i){var r=i[i.length-1].context.version,e=az(r);ez(r,t,n.propertyName);var o=wf(e,"LowerBoundary");t.appendChild(o),rz(r,o,""+n.lowerBoundary);var s=wf(e,"UpperBoundary");t.appendChild(s),rz(r,s,""+n.upperBoundary)}function nz(t,n,i){var r=i[i.length-1].context.version;t.setAttribute("wildCard",n.wildCard),t.setAttribute("singleChar",n.singleChar),t.setAttribute("escapeChar",n.escapeChar),void 0!==n.matchCase&&t.setAttribute("matchCase",n.matchCase.toString()),ez(r,t,n.propertyName),rz(r,t,""+n.pattern)}function iz(t,n,i,r){var e=wf(t,n);dA(e,r),i.appendChild(e)}function rz(t,n,i){iz(az(t),"Literal",n,i)}function ez(t,n,i){"2.0.0"===t?iz(_N[t],"ValueReference",n,i):iz(kN[t],"PropertyName",n,i)}function oz(t,n){var i=wf(ZE,"TimeInstant");t.appendChild(i);var r=wf(ZE,"timePosition");i.appendChild(r),dA(r,n)}function sz(t,n,i){var r=i[i.length-1],e=E({},r);e.node=t,Lf(e,BN,Cf("Query"),n,i)}function az(t){return"2.0.0"===t?_N[t]:kN[t]}var uz=EN,cz=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),hz=1,fz=2,lz=3,vz=4,dz=5,pz=6,yz=7,mz=15,wz=16,bz=17,gz=function(){function t(t){this.Fy=t,this.Ly=0,this.Gy=!1,this.Dy=!1,this.Uy=!1,this.qy=!1,this.By=null,this.Wy=Et}return t.prototype.readUint8=function(){return this.Fy.getUint8(this.Ly++)},t.prototype.readUint32=function(t){return this.Fy.getUint32((this.Ly+=4)-4,void 0!==t?t:this.Dy)},t.prototype.readDouble=function(t){return this.Fy.getFloat64((this.Ly+=8)-8,void 0!==t?t:this.Dy)},t.prototype.readPoint=function(){var t=[];return t.push(this.readDouble()),t.push(this.readDouble()),this.Uy&&t.push(this.readDouble()),this.qy&&t.push(this.readDouble()),t},t.prototype.readLineString=function(){for(var t=this.readUint32(),n=[],i=0;i<t;i++)n.push(this.readPoint());return n},t.prototype.readPolygon=function(){for(var t=this.readUint32(),n=[],i=0;i<t;i++)n.push(this.readLineString());return n},t.prototype.readWkbHeader=function(t){var n=this.readUint8()>0,i=this.readUint32(n),r=Math.floor((268435455&i)/1e3),e=Boolean(2147483648&i)||1===r||3===r,o=Boolean(1073741824&i)||2===r||3===r,s=Boolean(536870912&i),a=(268435455&i)%1e3,u=["XY",e?"Z":"",o?"M":""].join(""),c=s?this.readUint32(n):null;if(void 0!==t&&t!==a)throw new Error("Unexpected WKB geometry type "+a);if(this.Gy){if(this.Dy!==n)throw new Error("Inconsistent endian");if(this.Wy!==u)throw new Error("Inconsistent geometry layout");if(c&&this.By!==c)throw new Error("Inconsistent coordinate system (SRID)")}else this.Dy=n,this.Uy=e,this.qy=o,this.Wy=u,this.By=c,this.Gy=!0;return a},t.prototype.readWkbPayload=function(t){switch(t){case hz:return this.readPoint();case fz:return this.readLineString();case lz:case bz:return this.readPolygon();case vz:return this.readMultiPoint();case dz:return this.readMultiLineString();case pz:case mz:case wz:return this.readMultiPolygon();case yz:return this.readGeometryCollection();default:throw new Error("Unsupported WKB geometry type "+t+" is found")}},t.prototype.readWkbBlock=function(t){return this.readWkbPayload(this.readWkbHeader(t))},t.prototype.readWkbCollection=function(t,n){for(var i=this.readUint32(),r=[],e=0;e<i;e++){var o=t.call(this,n);o&&r.push(o)}return r},t.prototype.readMultiPoint=function(){return this.readWkbCollection(this.readWkbBlock,hz)},t.prototype.readMultiLineString=function(){return this.readWkbCollection(this.readWkbBlock,fz)},t.prototype.readMultiPolygon=function(){return this.readWkbCollection(this.readWkbBlock,lz)},t.prototype.readGeometryCollection=function(){return this.readWkbCollection(this.readGeometry)},t.prototype.readGeometry=function(){var t=this.readWkbHeader(),n=this.readWkbPayload(t);switch(t){case hz:return new Te(n,this.Wy);case fz:return new kj(n,this.Wy);case lz:case bz:return new Ye(n,this.Wy);case vz:return new bj(n,this.Wy);case dz:return new _j(n,this.Wy);case pz:case mz:case wz:return new Ej(n,this.Wy);case yz:return new cS(n);default:return null}},t.prototype.getSrid=function(){return this.By},t}(),xz=function(){function t(t){t=t||{},this.Wy=t.layout,this.Dy=!1!==t.littleEndian,this.Vy=!1!==t.ewkb,this.Xy=[],this.Hy=E({X:0,Y:0,Z:0,M:0},t.nodata)}return t.prototype.writeUint8=function(t){this.Xy.push([1,t])},t.prototype.writeUint32=function(t){this.Xy.push([4,t])},t.prototype.writeDouble=function(t){this.Xy.push([8,t])},t.prototype.writePoint=function(t,n){for(var i=E.apply(null,n.split("").map((function(n,i){var r;return(r={})[n]=t[i],r}))),r=0,e=this.Wy;r<e.length;r++){var o=e[r];this.writeDouble(o in i?i[o]:this.Hy[o])}},t.prototype.writeLineString=function(t,n){this.writeUint32(t.length);for(var i=0;i<t.length;i++)this.writePoint(t[i],n)},t.prototype.writePolygon=function(t,n){this.writeUint32(t.length);for(var i=0;i<t.length;i++)this.writeLineString(t[i],n)},t.prototype.writeWkbHeader=function(t,n){t%=1e3,this.Wy.indexOf("Z")>=0&&(t+=this.Vy?2147483648:1e3),this.Wy.indexOf("M")>=0&&(t+=this.Vy?1073741824:2e3),this.Vy&&Number.isInteger(n)&&(t|=536870912),this.writeUint8(this.Dy?1:0),this.writeUint32(t),this.Vy&&Number.isInteger(n)&&this.writeUint32(n)},t.prototype.writeMultiPoint=function(t,n){this.writeUint32(t.length);for(var i=0;i<t.length;i++)this.writeWkbHeader(1),this.writePoint(t[i],n)},t.prototype.writeMultiLineString=function(t,n){this.writeUint32(t.length);for(var i=0;i<t.length;i++)this.writeWkbHeader(2),this.writeLineString(t[i],n)},t.prototype.writeMultiPolygon=function(t,n){this.writeUint32(t.length);for(var i=0;i<t.length;i++)this.writeWkbHeader(3),this.writePolygon(t[i],n)},t.prototype.writeGeometryCollection=function(t){this.writeUint32(t.length);for(var n=0;n<t.length;n++)this.writeGeometry(t[n])},t.prototype.findMinimumLayout=function(t,n){void 0===n&&(n=Rt);var i,r;if(t instanceof te)return(i=t.getLayout())===(r=n)?i:i===Rt?r:r===Rt?i:Et;if(t instanceof cS)for(var e=t.getGeometriesArray(),o=0;o<e.length&&n!==Et;o++)n=this.findMinimumLayout(e[o],n);return n},t.prototype.writeGeometry=function(t,n){var i,r,e=((i={})[Pt.POINT]=hz,i[Pt.LINE_STRING]=fz,i[Pt.POLYGON]=lz,i[Pt.MULTI_POINT]=vz,i[Pt.MULTI_LINE_STRING]=dz,i[Pt.MULTI_POLYGON]=pz,i[Pt.GEOMETRY_COLLECTION]=yz,i),o=t.getType(),s=e[o];if(!s)throw new Error("GeometryType "+o+" is not supported");(this.Wy||(this.Wy=this.findMinimumLayout(t)),this.writeWkbHeader(s,n),t instanceof te)?((r={})[Pt.POINT]=this.writePoint,r[Pt.LINE_STRING]=this.writeLineString,r[Pt.POLYGON]=this.writePolygon,r[Pt.MULTI_POINT]=this.writeMultiPoint,r[Pt.MULTI_LINE_STRING]=this.writeMultiLineString,r[Pt.MULTI_POLYGON]=this.writeMultiPolygon,r)[o].call(this,t.getCoordinates(),t.getLayout()):t instanceof cS&&this.writeGeometryCollection(t.getGeometriesArray())},t.prototype.getBuffer=function(){var t=this,n=this.Xy.reduce((function(t,n){return t+n[0]}),0),i=new ArrayBuffer(n),r=new DataView(i),e=0;return this.Xy.forEach((function(n){switch(n[0]){case 1:r.setUint8(e,n[1]);break;case 4:r.setUint32(e,n[1],t.Dy);break;case 8:r.setFloat64(e,n[1],t.Dy)}e+=n[0]})),i},t}();function jz(t){return"string"==typeof t?function(t){for(var n=new Uint8Array(t.length/2),i=0;i<t.length/2;i++)n[i]=parseInt(t.substr(2*i,2),16);return new DataView(n.buffer)}(t):ArrayBuffer.isView(t)?t instanceof DataView?t:new DataView(t.buffer,t.byteOffset,t.byteLength):t instanceof ArrayBuffer?new DataView(t):null}var Sz=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.splitCollection=Boolean(r.splitCollection),i.Jy=null,i.Ky=!1!==r.hex,i.Yy=!1!==r.littleEndian,i.Zy=!1!==r.ewkb,i.Wy=r.geometryLayout,i.$y=r.nodataZ||0,i.Qy=r.nodataM||0,i.By=r.srid,i}return cz(n,t),n.prototype.getType=function(){return this.Ky?hh:uh},n.prototype.readFeature=function(t,n){return new Tt({geometry:this.readGeometry(t,n)})},n.prototype.readFeatures=function(t,n){var i=this.readGeometry(t,n);return(this.splitCollection&&i instanceof cS?i.getGeometriesArray():[i]).map((function(t){return new Tt({geometry:t})}))},n.prototype.readGeometry=function(t,n){var i=jz(t);if(!i)return null;var r=new gz(i).readGeometry();this.Jy=i;var e=this.getReadOptions(t,n);return this.Jy=null,Yj(r,!1,e)},n.prototype.readProjection=function(t){var n=this.Jy||jz(t);if(n){var i=new gz(n);return i.readWkbHeader(),i.getSrid()&&gr("EPSG:"+i.getSrid())||void 0}},n.prototype.writeFeature=function(t,n){return this.writeGeometry(t.getGeometry(),n)},n.prototype.writeFeatures=function(t,n){return this.writeGeometry(new cS(t.map((function(t){return t.getGeometry()}))),n)},n.prototype.writeGeometry=function(t,n){var i=this.adaptOptions(n),r=new xz({layout:this.Wy,littleEndian:this.Yy,ewkb:this.Zy,nodata:{Z:this.$y,M:this.Qy}}),e=Number.isInteger(this.By)?Number(this.By):null;if(!1!==this.By&&!Number.isInteger(this.By)){var o=i.dataProjection&&gr(i.dataProjection);if(o){var s=o.getCode();0===s.indexOf("EPSG:")&&(e=Number(s.substring(5)))}}r.writeGeometry(Yj(t,!0,i),e);var a=r.getBuffer();return this.Ky?function(t){var n=new Uint8Array(t);return Array.from(n.values()).map((function(t){return(t<16?"0":"")+Number(t).toString(16).toUpperCase()})).join("")}(a):a},n}(Kj),kz=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Mz={POINT:Te,LINESTRING:kj,POLYGON:Ye,MULTIPOINT:bj,MULTILINESTRING:_j,MULTIPOLYGON:Ej},_z="EMPTY",Oz=0,Tz=1,Ez=2,Az=3,Cz=4,Rz=5,Pz=6,Iz={};for(var Nz in Pt)Iz[Nz]=Pt[Nz].toUpperCase();var zz=function(){function t(t){this.wkt=t,this.tm=-1}return t.prototype.nm=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"},t.prototype.im=function(t,n){return t>="0"&&t<="9"||"."==t&&!(void 0!==n&&n)},t.prototype.rm=function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t},t.prototype.om=function(){return this.wkt.charAt(++this.tm)},t.prototype.nextToken=function(){var t,n=this.om(),i=this.tm,r=n;if("("==n)t=Ez;else if(","==n)t=Rz;else if(")"==n)t=Az;else if(this.im(n)||"-"==n)t=Cz,r=this.sm();else if(this.nm(n))t=Tz,r=this.am();else{if(this.rm(n))return this.nextToken();if(""!==n)throw new Error("Unexpected character: "+n);t=Pz}return{position:i,value:r,type:t}},t.prototype.sm=function(){var t,n=this.tm,i=!1,r=!1;do{"."==t?i=!0:"e"!=t&&"E"!=t||(r=!0),t=this.om()}while(this.im(t,i)||!r&&("e"==t||"E"==t)||r&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(n,this.tm--))},t.prototype.am=function(){var t,n=this.tm;do{t=this.om()}while(this.nm(t));return this.wkt.substring(n,this.tm--).toUpperCase()},t}(),Fz=function(){function t(t){this.um=t,this.hm={position:0,type:Oz},this.Wy=Et}return t.prototype.fm=function(){this.hm=this.um.nextToken()},t.prototype.isTokenType=function(t){return this.hm.type==t},t.prototype.match=function(t){var n=this.isTokenType(t);return n&&this.fm(),n},t.prototype.parse=function(){return this.fm(),this.lm()},t.prototype.vm=function(){var t=Et,n=this.hm;if(this.isTokenType(Tz)){var i=n.value;"Z"===i?t=At:"M"===i?t=Ct:"ZM"===i&&(t=Rt),t!==Et&&this.fm()}return t},t.prototype.dm=function(){if(this.match(Ez)){var t=[];do{t.push(this.lm())}while(this.match(Rz));if(this.match(Az))return t}throw new Error(this.pm())},t.prototype.ym=function(){if(this.match(Ez)){var t=this.wm();if(this.match(Az))return t}throw new Error(this.pm())},t.prototype.bm=function(){if(this.match(Ez)){var t=this.gm();if(this.match(Az))return t}throw new Error(this.pm())},t.prototype.xm=function(){if(this.match(Ez)){var t=this.jm();if(this.match(Az))return t}throw new Error(this.pm())},t.prototype.Sm=function(){if(this.match(Ez)){var t=void 0;if(t=this.hm.type==Ez?this.km():this.gm(),this.match(Az))return t}throw new Error(this.pm())},t.prototype.Mm=function(){if(this.match(Ez)){var t=this.jm();if(this.match(Az))return t}throw new Error(this.pm())},t.prototype._m=function(){if(this.match(Ez)){var t=this.Om();if(this.match(Az))return t}throw new Error(this.pm())},t.prototype.wm=function(){for(var t=[],n=this.Wy.length,i=0;i<n;++i){var r=this.hm;if(!this.match(Cz))break;t.push(r.value)}if(t.length==n)return t;throw new Error(this.pm())},t.prototype.gm=function(){for(var t=[this.wm()];this.match(Rz);)t.push(this.wm());return t},t.prototype.km=function(){for(var t=[this.ym()];this.match(Rz);)t.push(this.ym());return t},t.prototype.jm=function(){for(var t=[this.bm()];this.match(Rz);)t.push(this.bm());return t},t.prototype.Om=function(){for(var t=[this.xm()];this.match(Rz);)t.push(this.xm());return t},t.prototype.Tm=function(){var t=this.isTokenType(Tz)&&this.hm.value==_z;return t&&this.fm(),t},t.prototype.pm=function(){return"Unexpected `"+this.hm.value+"` at position "+this.hm.position+" in `"+this.um.wkt+"`"},t.prototype.lm=function(){var t=this.hm;if(this.match(Tz)){var n=t.value;this.Wy=this.vm();var i=this.Tm();if("GEOMETRYCOLLECTION"==n){if(i)return new cS([]);var r=this.dm();return new cS(r)}var e=Mz[n];if(!e)throw new Error("Invalid geometry type: "+n);var o=void 0;if(i)o="POINT"==n?[NaN,NaN]:[];else switch(n){case"POINT":o=this.ym();break;case"LINESTRING":o=this.bm();break;case"POLYGON":o=this.xm();break;case"MULTIPOINT":o=this.Sm();break;case"MULTILINESTRING":o=this.Mm();break;case"MULTIPOLYGON":o=this._m()}return new e(o,this.Wy)}throw new Error(this.pm())},t}(),Lz=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Em=void 0!==r.splitCollection&&r.splitCollection,i}return kz(n,t),n.prototype.Am=function(t){var n=new zz(t);return new Fz(n).parse()},n.prototype.readFeatureFromText=function(t,n){var i=this.readGeometryFromText(t,n),r=new Tt;return r.setGeometry(i),r},n.prototype.readFeaturesFromText=function(t,n){for(var i=[],r=this.readGeometryFromText(t,n),e=[],o=0,s=(i=this.Em&&r.getType()==Pt.GEOMETRY_COLLECTION?r.getGeometriesArray():[r]).length;o<s;++o){var a=new Tt;a.setGeometry(i[o]),e.push(a)}return e},n.prototype.readGeometryFromText=function(t,n){return Yj(this.Am(t),!1,n)},n.prototype.writeFeatureText=function(t,n){var i=t.getGeometry();return i?this.writeGeometryText(i,n):""},n.prototype.writeFeaturesText=function(t,n){if(1==t.length)return this.writeFeatureText(t[0],n);for(var i=[],r=0,e=t.length;r<e;++r)i.push(t[r].getGeometry());var o=new cS(i);return this.writeGeometryText(o,n)},n.prototype.writeGeometryText=function(t,n){return Bz(Yj(t,!0,n))},n}(lC);function Gz(t){var n=t.getCoordinates();return 0===n.length?"":n.join(" ")}function Dz(t){for(var n=t.getCoordinates(),i=[],r=0,e=n.length;r<e;++r)i.push(n[r].join(" "));return i.join(",")}function Uz(t){for(var n=[],i=t.getLinearRings(),r=0,e=i.length;r<e;++r)n.push("("+Dz(i[r])+")");return n.join(",")}var qz={Point:Gz,LineString:Dz,Polygon:Uz,MultiPoint:function(t){for(var n=[],i=t.getPoints(),r=0,e=i.length;r<e;++r)n.push("("+Gz(i[r])+")");return n.join(",")},MultiLineString:function(t){for(var n=[],i=t.getLineStrings(),r=0,e=i.length;r<e;++r)n.push("("+Dz(i[r])+")");return n.join(",")},MultiPolygon:function(t){for(var n=[],i=t.getPolygons(),r=0,e=i.length;r<e;++r)n.push("("+Uz(i[r])+")");return n.join(",")},GeometryCollection:function(t){for(var n=[],i=t.getGeometries(),r=0,e=i.length;r<e;++r)n.push(Bz(i[r]));return n.join(",")}};function Bz(t){var n=t.getType(),i=(0,qz[n])(t);if(n=n.toUpperCase(),"function"==typeof t.getFlatCoordinates){var r=function(t){var n=t.getLayout(),i="";return n!==At&&n!==Rt||(i+="Z"),n!==Ct&&n!==Rt||(i+="M"),i}(t);r.length>0&&(n+=" "+r)}return 0===i.length?n+" "+_z:n+"("+i+")"}var Wz=Lz,Vz=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),Xz=[null,"http://www.opengis.net/wms"],Hz=If(Xz,{Service:Tf((function(t,n){return zf({},Yz,t,n)})),Capability:Tf((function(t,n){return zf({},Jz,t,n)}))}),Jz=If(Xz,{Request:Tf((function(t,n){return zf({},eF,t,n)})),Exception:Tf((function(t,n){return zf([],tF,t,n)})),Layer:Tf((function(t,n){var i=zf({},nF,t,n);if(void 0===i.Layer)return Object.assign(i,fF(t,n));return i}))}),Kz=function(t){function n(){var n=t.call(this)||this;return n.version=void 0,n}return Vz(n,t),n.prototype.readFromNode=function(t){this.version=t.getAttribute("version").trim();var n=zf({version:this.version},Hz,t,[]);return n||null},n}(PP),Yz=If(Xz,{Name:Tf(uA),Title:Tf(uA),Abstract:Tf(uA),KeywordList:Tf(pF),OnlineResource:Tf(IP),ContactInformation:Tf((function(t,n){return zf({},Zz,t,n)})),Fees:Tf(uA),AccessConstraints:Tf(uA),LayerLimit:Tf(sA),MaxWidth:Tf(sA),MaxHeight:Tf(sA)}),Zz=If(Xz,{ContactPersonPrimary:Tf((function(t,n){return zf({},$z,t,n)})),ContactPosition:Tf(uA),ContactAddress:Tf((function(t,n){return zf({},Qz,t,n)})),ContactVoiceTelephone:Tf(uA),ContactFacsimileTelephone:Tf(uA),ContactElectronicMailAddress:Tf(uA)}),$z=If(Xz,{ContactPerson:Tf(uA),ContactOrganization:Tf(uA)}),Qz=If(Xz,{AddressType:Tf(uA),Address:Tf(uA),City:Tf(uA),StateOrProvince:Tf(uA),PostCode:Tf(uA),Country:Tf(uA)}),tF=If(Xz,{Format:Mf(uA)}),nF=If(Xz,{Name:Tf(uA),Title:Tf(uA),Abstract:Tf(uA),KeywordList:Tf(pF),CRS:Of(uA),EX_GeographicBoundingBox:Tf((function(t,n){var i=zf({},rF,t,n);if(!i)return;var r=i.westBoundLongitude,e=i.southBoundLatitude,o=i.eastBoundLongitude,s=i.northBoundLatitude;if(void 0===r||void 0===e||void 0===o||void 0===s)return;return[r,e,o,s]})),BoundingBox:Of((function(t,n){var i=[oA(t.getAttribute("minx")),oA(t.getAttribute("miny")),oA(t.getAttribute("maxx")),oA(t.getAttribute("maxy"))],r=[oA(t.getAttribute("resx")),oA(t.getAttribute("resy"))];return{crs:t.getAttribute("CRS"),extent:i,res:r}})),Dimension:Of((function(t,n){return{name:t.getAttribute("name"),units:t.getAttribute("units"),unitSymbol:t.getAttribute("unitSymbol"),default:t.getAttribute("default"),multipleValues:iA(t.getAttribute("multipleValues")),nearestValue:iA(t.getAttribute("nearestValue")),current:iA(t.getAttribute("current")),values:uA(t)}})),Attribution:Tf((function(t,n){return zf({},iF,t,n)})),AuthorityURL:Of((function(t,n){var i=lF(t,n);if(i)return i.name=t.getAttribute("name"),i;return})),Identifier:Of(uA),MetadataURL:Of((function(t,n){var i=lF(t,n);if(i)return i.type=t.getAttribute("type"),i;return})),DataURL:Of(lF),FeatureListURL:Of(lF),Style:Of((function(t,n){return zf({},uF,t,n)})),MinScaleDenominator:Tf(eA),MaxScaleDenominator:Tf(eA),Layer:Of(fF)}),iF=If(Xz,{Title:Tf(uA),OnlineResource:Tf(IP),LogoURL:Tf(dF)}),rF=If(Xz,{westBoundLongitude:Tf(eA),eastBoundLongitude:Tf(eA),southBoundLatitude:Tf(eA),northBoundLatitude:Tf(eA)}),eF=If(Xz,{GetCapabilities:Tf(vF),GetMap:Tf(vF),GetFeatureInfo:Tf(vF)}),oF=If(Xz,{Format:Of(uA),DCPType:Of((function(t,n){return zf({},sF,t,n)}))}),sF=If(Xz,{HTTP:Tf((function(t,n){return zf({},aF,t,n)}))}),aF=If(Xz,{Get:Tf(lF),Post:Tf(lF)}),uF=If(Xz,{Name:Tf(uA),Title:Tf(uA),Abstract:Tf(uA),LegendURL:Of(dF),StyleSheetURL:Tf(lF),StyleURL:Tf(lF)}),cF=If(Xz,{Format:Tf(uA),OnlineResource:Tf(IP)}),hF=If(Xz,{Keyword:Mf(uA)});function fF(t,n){var i=n[n.length-1],r=zf({},nF,t,n);if(r){var e=iA(t.getAttribute("queryable"));void 0===e&&(e=i.queryable),r.queryable=void 0!==e&&e;var o=aA(t.getAttribute("cascaded"));void 0===o&&(o=i.cascaded),r.cascaded=o;var s=iA(t.getAttribute("opaque"));void 0===s&&(s=i.opaque),r.opaque=void 0!==s&&s;var a=iA(t.getAttribute("noSubsets"));void 0===a&&(a=i.noSubsets),r.noSubsets=void 0!==a&&a;var u=oA(t.getAttribute("fixedWidth"));u||(u=i.fixedWidth),r.fixedWidth=u;var c=oA(t.getAttribute("fixedHeight"));c||(c=i.fixedHeight),r.fixedHeight=c;["Style","CRS","AuthorityURL"].forEach((function(t){if(t in i){var n=r[t]||[];r[t]=n.concat(i[t])}}));return["EX_GeographicBoundingBox","BoundingBox","Dimension","Attribution","MinScaleDenominator","MaxScaleDenominator"].forEach((function(t){if(!(t in r)){var n=i[t];r[t]=n}})),r}}function lF(t,n){return zf({},cF,t,n)}function vF(t,n){return zf({},oF,t,n)}function dF(t,n){var i=lF(t,n);if(i){var r=[aA(t.getAttribute("width")),aA(t.getAttribute("height"))];return i.size=r,i}}function pF(t,n){return zf([],hF,t,n)}var yF=Kz,mF=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),wF=function(t){function n(n){var i=t.call(this)||this,r=n||{};return i.Iy="http://mapserver.gis.umn.edu/mapserver",i.Ny=new wA,i.qc=r.layers?r.layers:null,i}return mF(n,t),n.prototype.getLayers=function(){return this.qc},n.prototype.setLayers=function(t){this.qc=t},n.prototype.Cm=function(t,n){t.setAttribute("namespaceURI",this.Iy);var i=t.localName,r=[];if(0===t.childNodes.length)return r;if("msGMLOutput"==i)for(var e=0,o=t.childNodes.length;e<o;e++){var s=t.childNodes[e];if(s.nodeType===Node.ELEMENT_NODE){var a=s,u=n[0],c=a.localName.replace("_layer","");if(!this.qc||y(this.qc,c)){var h=c+"_feature";u.featureType=h,u.featureNS=this.Iy;var f={};f[h]=Mf(this.Ny.readFeatureElement,this.Ny);var l=If([u.featureNS,null],f);a.setAttribute("namespaceURI",this.Iy);var v=zf([],l,a,n,this.Ny);v&&b(r,v)}}}if("FeatureCollection"==i){var d=zf([],this.Ny.FEATURE_COLLECTION_PARSERS,t,[{}],this.Ny);d&&(r=d)}return r},n.prototype.readFeaturesFromNode=function(t,n){var i={};return n&&E(i,this.getReadOptions(t,n)),this.Cm(t,[i])},n}(KE),bF=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),gF=[null,"http://www.opengis.net/wmts/1.0"],xF=[null,"http://www.opengis.net/ows/1.1"],jF=If(gF,{Contents:Tf((function(t,n){return zf({},kF,t,n)}))}),SF=function(t){function n(){var n=t.call(this)||this;return n.Rm=new $P,n}return bF(n,t),n.prototype.readFromNode=function(t){var n=t.getAttribute("version");n&&(n=n.trim());var i=this.Rm.readFromNode(t);return i?(i.version=n,(i=zf(i,jF,t,[]))||null):null},n}(PP),kF=If(gF,{Layer:Of((function(t,n){return zf({},MF,t,n)})),TileMatrixSet:Of((function(t,n){return zf({},RF,t,n)}))}),MF=If(gF,{Style:Of((function(t,n){var i=zf({},_F,t,n);if(!i)return;var r="true"===t.getAttribute("isDefault");return i.isDefault=r,i})),Format:Of(uA),TileMatrixSetLink:Of((function(t,n){return zf({},OF,t,n)})),Dimension:Of((function(t,n){return zf({},AF,t,n)})),ResourceURL:Of((function(t,n){var i=t.getAttribute("format"),r=t.getAttribute("template"),e=t.getAttribute("resourceType"),o={};i&&(o.format=i);r&&(o.template=r);e&&(o.resourceType=e);return o}))},If(xF,{Title:Tf(uA),Abstract:Tf(uA),WGS84BoundingBox:Tf(IF),Identifier:Tf(uA)})),_F=If(gF,{LegendURL:Of((function(t,n){var i={};return i.format=t.getAttribute("format"),i.href=IP(t),i}))},If(xF,{Title:Tf(uA),Identifier:Tf(uA)})),OF=If(gF,{TileMatrixSet:Tf(uA),TileMatrixSetLimits:Tf((function(t,n){return zf([],TF,t,n)}))}),TF=If(gF,{TileMatrixLimits:Mf((function(t,n){return zf({},EF,t,n)}))}),EF=If(gF,{TileMatrix:Tf(uA),MinTileRow:Tf(sA),MaxTileRow:Tf(sA),MinTileCol:Tf(sA),MaxTileCol:Tf(sA)}),AF=If(gF,{Default:Tf(uA),Value:Of(uA)},If(xF,{Identifier:Tf(uA)})),CF=If(xF,{LowerCorner:Mf(NF),UpperCorner:Mf(NF)}),RF=If(gF,{WellKnownScaleSet:Tf(uA),TileMatrix:Of((function(t,n){return zf({},PF,t,n)}))},If(xF,{SupportedCRS:Tf(uA),Identifier:Tf(uA),BoundingBox:Tf(IF)})),PF=If(gF,{TopLeftCorner:Tf(NF),ScaleDenominator:Tf(eA),TileWidth:Tf(sA),TileHeight:Tf(sA),MatrixWidth:Tf(sA),MatrixHeight:Tf(sA)},If(xF,{Identifier:Tf(uA)}));function IF(t,n){var i=zf([],CF,t,n);if(2==i.length)return jn(i)}function NF(t,n){var i=uA(t).split(/\s+/);if(i&&2==i.length){var r=+i[0],e=+i[1];if(!isNaN(r)&&!isNaN(e))return[r,e]}}var zF=SF,FF=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),LF=["fullscreenchange","webkitfullscreenchange","MSFullscreenChange"],GF="enterfullscreen",DF="leavefullscreen";function UF(t){var n=t.body;return!!(n.webkitRequestFullscreen||n.msRequestFullscreen&&t.msFullscreenEnabled||n.requestFullscreen&&t.fullscreenEnabled)}function qF(t){return!!(t.webkitIsFullScreen||t.msFullscreenElement||t.fullscreenElement)}function BF(t){t.requestFullscreen?t.requestFullscreen():t.msRequestFullscreen?t.msRequestFullscreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen()}var WF=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{element:document.createElement("div"),target:r.target})||this).on,i.once,i.un,i.nh=void 0!==r.keys&&r.keys,i.Ov=r.source,i.Pm=!1,i.Im=i.Nm.bind(i),i.zm=void 0!==r.className?r.className:"ol-full-screen",i.Fm=[],i.Lm=void 0!==r.activeClassName?r.activeClassName.split(" "):[i.zm+"-true"],i.Gm=void 0!==r.inactiveClassName?r.inactiveClassName.split(" "):[i.zm+"-false"];var e=void 0!==r.label?r.label:"猡�";i.Dm="string"==typeof e?document.createTextNode(e):e;var o=void 0!==r.labelActive?r.labelActive:"脳";i.Um="string"==typeof o?document.createTextNode(o):o;var s=r.tipLabel?r.tipLabel:"Toggle full-screen";return i.qm=document.createElement("button"),i.qm.title=s,i.qm.setAttribute("type","button"),i.qm.appendChild(i.Dm),i.qm.addEventListener(G,i.Rr.bind(i),!1),i.Bm(i.qm,i.Pm),i.element.className="".concat(i.zm," ").concat(Ts," ").concat(As),i.element.appendChild(i.qm),i}return FF(n,t),n.prototype.Rr=function(t){t.preventDefault(),this.Wm()},n.prototype.Wm=function(){var t=this.getMap();if(t){var n=t.getOwnerDocument();if(UF(n))if(qF(n))!function(t){t.exitFullscreen?t.exitFullscreen():t.msExitFullscreen?t.msExitFullscreen():t.webkitExitFullscreen&&t.webkitExitFullscreen()}(n);else{var i=void 0;i=this.Ov?"string"==typeof this.Ov?n.getElementById(this.Ov):this.Ov:t.getTargetElement(),this.nh?function(t){t.webkitRequestFullscreen?t.webkitRequestFullscreen():BF(t)}(i):BF(i)}}},n.prototype.Vm=function(){var t=this.getMap();if(t){var n=this.Pm;this.Pm=qF(t.getOwnerDocument()),n!==this.Pm&&(this.Bm(this.qm,this.Pm),this.Pm?(Ao(this.Um,this.Dm),this.dispatchEvent(GF)):(Ao(this.Dm,this.Um),this.dispatchEvent(DF)),t.updateSize())}},n.prototype.Bm=function(t,n){var i,r,e,o;n?((i=t.classList).remove.apply(i,this.Gm),(r=t.classList).add.apply(r,this.Lm)):((e=t.classList).remove.apply(e,this.Lm),(o=t.classList).add.apply(o,this.Gm))},n.prototype.setMap=function(n){var i=this.getMap();i&&i.removeChangeListener(Ea,this.Im),t.prototype.setMap.call(this,n),this.Nm(),n&&n.addChangeListener(Ea,this.Im)},n.prototype.Nm=function(){for(var t=this.Fm,n=0,i=t.length;n<i;++n)$(t[n]);t.length=0;var r=this.getMap();if(r){var e=r.getOwnerDocument();UF(e)?this.element.classList.remove(Es):this.element.classList.add(Es);for(n=0,i=LF.length;n<i;++n)t.push(Y(e,LF[n],this.Vm,this));this.Vm()}},n}(du),VF=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),XF="projection",HF="coordinateFormat",JF=function(t){function n(n){var i=this,r=n||{},e=document.createElement("div");e.className=void 0!==r.className?r.className:"ol-mouse-position",(i=t.call(this,{element:e,render:r.render,target:r.target})||this).on,i.once,i.un,i.addChangeListener(XF,i.Tt),r.coordinateFormat&&i.setCoordinateFormat(r.coordinateFormat),r.projection&&i.setProjection(r.projection);var o=!0,s="&#160;";return"undefinedHTML"in r?(void 0!==r.undefinedHTML&&(s=r.undefinedHTML),o=!!s):"placeholder"in r&&(!1===r.placeholder?o=!1:s=String(r.placeholder)),i.Xm=s,i.Hm=o,i.Jm=e.innerHTML,i.Km=null,i._t=null,i}return VF(n,t),n.prototype.Tt=function(){this._t=null},n.prototype.getCoordinateFormat=function(){return this.get(HF)},n.prototype.getProjection=function(){return this.get(XF)},n.prototype.handleMouseMove=function(t){var n=this.getMap();this.Ym(n.getEventPixel(t))},n.prototype.handleMouseOut=function(t){this.Ym(null)},n.prototype.setMap=function(n){if(t.prototype.setMap.call(this,n),n){var i=n.getViewport();this.listenerKeys.push(Y(i,ya,this.handleMouseMove,this)),this.Hm&&this.listenerKeys.push(Y(i,ba,this.handleMouseOut,this)),this.Ym(null)}},n.prototype.setCoordinateFormat=function(t){this.set(HF,t)},n.prototype.setProjection=function(t){this.set(XF,gr(t))},n.prototype.Ym=function(t){var n=this.Xm;if(t&&this.Km){if(!this._t){var i=this.getProjection();this._t=i?Er(this.Km,i):mr}var r=this.getMap().getCoordinateFromPixelInternal(t);if(r){var e=Nr();e&&(this._t=Er(this.Km,e)),this._t(r,r);var o=this.getCoordinateFormat();n=o?o(r):r.toString()}}this.Jm&&n===this.Jm||(this.element.innerHTML=n,this.Jm=n)},n.prototype.render=function(t){var n=t.frameState;n?this.Km!=n.viewState.projection&&(this.Km=n.viewState.projection,this._t=null):this.Km=null},n}(du),KF=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),YF=.75,ZF=.1,$F=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return KF(n,t),n.prototype.createRenderer=function(){return new sa(this)},n}(lu),QF=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{element:document.createElement("div"),render:r.render,target:r.target})||this).Zm=i.$m.bind(i),i.kr=void 0===r.collapsed||r.collapsed,i.Tr=void 0===r.collapsible||r.collapsible,i.Tr||(i.kr=!1),i.ca=void 0!==r.rotateWithView&&r.rotateWithView,i.Qm=void 0;var e=void 0!==r.className?r.className:"ol-overviewmap",o=void 0!==r.tipLabel?r.tipLabel:"Overview map",s=void 0!==r.collapseLabel?r.collapseLabel:"鈥�";"string"==typeof s?(i.Er=document.createElement("span"),i.Er.textContent=s):i.Er=s;var a=void 0!==r.label?r.label:"鈥�";"string"==typeof a?(i.Ar=document.createElement("span"),i.Ar.textContent=a):i.Ar=a;var u=i.Tr&&!i.kr?i.Er:i.Ar,c=document.createElement("button");c.setAttribute("type","button"),c.title=o,c.appendChild(u),c.addEventListener(G,i.Rr.bind(i),!1),i.tw=document.createElement("div"),i.tw.className="ol-overviewmap-map",i.Fy=r.view,i.nw=new $F({view:r.view});var h=i.nw;r.layers&&r.layers.forEach((function(t){h.addLayer(t)}));var f=document.createElement("div");f.className="ol-overviewmap-box",f.style.boxSizing="border-box",i.iw=new qc({position:[0,0],positioning:Ac,element:f}),i.nw.addOverlay(i.iw);var l=e+" "+"ol-unselectable "+As+(i.kr&&i.Tr?" ol-collapsed":"")+(i.Tr?"":" ol-uncollapsible"),v=i.element;v.className=l,v.appendChild(i.tw),v.appendChild(c);var d=i,p=i.iw,y=i.iw.getElement(),m=function(t){var n,i={clientX:(n=t).clientX,clientY:n.clientY},r=h.getEventCoordinateInternal(i);p.setPosition(r)},w=function t(n){var i=h.getEventCoordinateInternal(n);d.getMap().getView().setCenterInternal(i),window.removeEventListener("mousemove",m),window.removeEventListener("mouseup",t)};return y.addEventListener("mousedown",(function(){window.addEventListener("mousemove",m),window.addEventListener("mouseup",w)})),i}return KF(n,t),n.prototype.setMap=function(n){var i=this.getMap();if(n!==i){if(i){var r=i.getView();r&&this.rw(r),this.nw.setTarget(null)}if(t.prototype.setMap.call(this,n),n){this.nw.setTarget(this.tw),this.listenerKeys.push(Y(n,l,this.ew,this));var e=n.getView();e&&(this.ow(e),e.isDef()&&(this.nw.updateSize(),this.sw())),this.nw.isRendered()||this.aw()}}},n.prototype.ew=function(t){if(t.key===Aa){var n=t.oldValue;n&&this.rw(n);var i=this.getMap().getView();this.ow(i)}else this.nw.isRendered()||t.key!==Ea&&t.key!==Ta||this.nw.updateSize()},n.prototype.ow=function(t){if(!this.Fy){var n=new eu({projection:t.getProjection()});this.nw.setView(n)}t.addChangeListener(La.ROTATION,this.Zm),this.$m()},n.prototype.rw=function(t){t.removeChangeListener(La.ROTATION,this.Zm)},n.prototype.$m=function(){this.ca&&this.nw.getView().setRotation(this.getMap().getView().getRotation())},n.prototype.uw=function(){var t=this.getMap(),n=this.nw;if(t.isRendered()&&n.isRendered()){var i=t.getSize(),r=t.getView().calculateExtentInternal(i);if(!this.Qm||!Nn(r,this.Qm)){this.Qm=r;var e=n.getSize(),o=n.getView().calculateExtentInternal(e),s=n.getPixelFromCoordinateInternal($n(r)),a=n.getPixelFromCoordinateInternal(Xn(r)),u=Math.abs(s[0]-a[0]),c=Math.abs(s[1]-a[1]),h=e[0],f=e[1];u<h*ZF||c<f*ZF||u>h*YF||c>f*YF?this.sw():On(o,r)||this.cw()}}},n.prototype.sw=function(){var t=this.getMap(),n=this.nw,i=t.getSize(),r=t.getView().calculateExtentInternal(i),e=n.getView(),o=Math.log(7.5)/Math.LN2;ei(r,1/(Math.pow(2,o/2)*ZF)),e.fitInternal($e(r))},n.prototype.cw=function(){var t=this.getMap(),n=this.nw,i=t.getView();n.getView().setCenterInternal(i.getCenterInternal())},n.prototype.hw=function(){var t=this.getMap(),n=this.nw;if(t.isRendered()&&n.isRendered()){var i=t.getSize(),r=t.getView(),e=n.getView(),o=this.ca?0:-r.getRotation(),s=this.iw,a=this.iw.getElement(),u=r.getCenterInternal(),c=r.getResolution(),h=e.getResolution(),f=i[0]*c/h,l=i[1]*c/h;if(s.setPosition(u),a){a.style.width=f+"px",a.style.height=l+"px";var v="rotate("+o+"rad)";a.style.transform=v}}},n.prototype.aw=function(){this.fw||(this.fw=Z(this.nw,ja,(function(t){delete this.fw,this.hw()}),this))},n.prototype.Rr=function(t){t.preventDefault(),this.zr()},n.prototype.zr=function(){this.element.classList.toggle(Cs),this.kr?Ao(this.Er,this.Ar):Ao(this.Ar,this.Er),this.kr=!this.kr;var t=this.nw;if(!this.kr){if(t.isRendered())return this.Qm=void 0,void t.render();t.updateSize(),this.sw(),this.aw()}},n.prototype.getCollapsible=function(){return this.Tr},n.prototype.setCollapsible=function(t){this.Tr!==t&&(this.Tr=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.kr&&this.zr())},n.prototype.setCollapsed=function(t){this.Tr&&this.kr!==t&&this.zr()},n.prototype.getCollapsed=function(){return this.kr},n.prototype.getRotateWithView=function(){return this.ca},n.prototype.setRotateWithView=function(t){this.ca!==t&&(this.ca=t,0!==this.getMap().getView().getRotation()&&(this.ca?this.$m():this.nw.getView().setRotation(0),this.Qm=void 0,this.uw(),this.hw()))},n.prototype.getOverviewMap=function(){return this.nw},n.prototype.render=function(t){this.uw(),this.hw()},n}(du),tL=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),nL="units",iL="degrees",rL="imperial",eL="nautical",oL="metric",sL="us",aL=[1,2,5],uL=25.4/.28,cL=function(t){function n(n){var i=this,r=n||{},e=void 0!==r.className?r.className:r.bar?"ol-scale-bar":"ol-scale-line";return(i=t.call(this,{element:document.createElement("div"),render:r.render,target:r.target})||this).on,i.once,i.un,i.lw=document.createElement("div"),i.lw.className=e+"-inner",i.element.className=e+" "+Ts,i.element.appendChild(i.lw),i.dw=null,i.pw=void 0!==r.minWidth?r.minWidth:64,i.mn=!1,i.yw=void 0,i.Jm="",i.addChangeListener(nL,i.mw),i.setUnits(r.units||oL),i.ww=r.bar||!1,i.bw=r.steps||4,i.gw=r.text||!1,i.xw=r.dpi||void 0,i}return tL(n,t),n.prototype.getUnits=function(){return this.get(nL)},n.prototype.mw=function(){this.Nr()},n.prototype.setUnits=function(t){this.set(nL,t)},n.prototype.setDpi=function(t){this.xw=t},n.prototype.Nr=function(){var t=this.dw;if(t){var n=t.center,i=t.projection,r=this.getUnits(),e=r==iL?Gt.DEGREES:Gt.METERS,o=xr(i,t.resolution,n,e),s=this.pw*(this.xw||uL)/uL,a=s*o,u="";if(r==iL){var c=Ft[Gt.DEGREES];(a*=c)<c/60?(u="鈥�",o*=3600):a<c?(u="鈥�",o*=60):u="掳"}else r==rL?a<.9144?(u="in",o/=.0254):a<1609.344?(u="ft",o/=.3048):(u="mi",o/=1609.344):r==eL?(o/=1852,u="nm"):r==oL?a<.001?(u="渭m",o*=1e6):a<1?(u="mm",o*=1e3):a<1e3?u="m":(u="km",o/=1e3):r==sL?a<.9144?(u="in",o*=39.37):a<1609.344?(u="ft",o/=.30480061):(u="mi",o/=1609.3472):Mt(!1,33);for(var h,f,l,v,d=3*Math.floor(Math.log(s*o)/Math.log(10));;){l=Math.floor(d/3);var p=Math.pow(10,l);if(h=aL[(d%3+3)%3]*p,f=Math.round(h/o),isNaN(f))return this.element.style.display="none",void(this.mn=!1);if(f>=s)break;++d}v=this.ww?this.createScaleBar(f,h,u):h.toFixed(l<0?-l:0)+" "+u,this.Jm!=v&&(this.lw.innerHTML=v,this.Jm=v),this.yw!=f&&(this.lw.style.width=f+"px",this.yw=f),this.mn||(this.element.style.display="",this.mn=!0)}else this.mn&&(this.element.style.display="none",this.mn=!1)},n.prototype.createScaleBar=function(t,n,i){for(var r="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),e=[],o=t/this.bw,s="#ffffff",a=0;a<this.bw;a++)0===a&&e.push(this.createMarker("absolute",a)),e.push('<div><div class="ol-scale-singlebar" style="width: '+o+"px;background-color: "+s+';"></div>'+this.createMarker("relative",a)+(a%2==0||2===this.bw?this.createStepText(a,t,!1,n,i):"")+"</div>"),a===this.bw-1&&e.push(this.createStepText(a+1,t,!0,n,i)),s="#ffffff"===s?"#000000":"#ffffff";return'<div style="display: flex;">'+(this.gw?'<div class="ol-scale-text" style="width: '+t+'px;">'+r+"</div>":"")+e.join("")+"</div>"},n.prototype.createMarker=function(t,n){return'<div class="ol-scale-step-marker" style="position: '+t+";top: "+("absolute"===t?3:-10)+'px;"></div>'},n.prototype.createStepText=function(t,n,i,r,e){var o=(0===t?0:Math.round(r/this.bw*t*100)/100)+(0===t?"":" "+e);return'<div class="ol-scale-step-text" style="margin-left: '+(0===t?-3:n/this.bw*-1)+"px;text-align: "+(0===t?"left":"center")+"; min-width: "+(0===t?0:n/this.bw*2)+"px;left: "+(i?n+"px":"unset")+';">'+o+"</div>"},n.prototype.getScaleForResolution=function(){var t=xr(this.dw.projection,this.dw.resolution,this.dw.center,Gt.METERS),n=this.xw||uL;return parseFloat(t.toString())*(1e3/25.4)*n},n.prototype.render=function(t){var n=t.frameState;this.dw=n?n.viewState:null,this.Nr()},n}(du),hL=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),fL=0,lL=1,vL=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{element:document.createElement("div"),render:r.render})||this).Rn=[],i.jw=void 0,i.Sw=fL,i.Cn,i.kw=0,i.Mw=0,i._w,i.Ow,i.Tw=null,i.Ew=!1,i.Lr=void 0!==r.duration?r.duration:200;var e=void 0!==r.className?r.className:"ol-zoomslider",o=document.createElement("button");o.setAttribute("type","button"),o.className=e+"-thumb "+Ts;var s=i.element;return s.className=e+" "+"ol-unselectable "+As,s.appendChild(o),s.addEventListener(ma,i.Aw.bind(i),!1),s.addEventListener(ya,i.Cw.bind(i),!1),s.addEventListener(wa,i.Rw.bind(i),!1),s.addEventListener(G,i.Pw.bind(i),!1),o.addEventListener(G,h,!1),i}return hL(n,t),n.prototype.setMap=function(n){t.prototype.setMap.call(this,n),n&&n.render()},n.prototype.Iw=function(){var t=this.element,n=t.offsetWidth,i=t.offsetHeight;if(0===n&&0===i)return this.Ew=!1;var r=getComputedStyle(t);n-=parseFloat(r.paddingRight)+parseFloat(r.paddingLeft),i-=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);var e=t.firstElementChild,o=getComputedStyle(e),s=e.offsetWidth+parseFloat(o.marginRight)+parseFloat(o.marginLeft),a=e.offsetHeight+parseFloat(o.marginTop)+parseFloat(o.marginBottom);return this.Tw=[s,a],n>i?(this.Sw=lL,this.Mw=n-s):(this.Sw=fL,this.kw=i-a),this.Ew=!0},n.prototype.Pw=function(t){var n=this.getMap().getView(),i=this.Nw(t.offsetX-this.Tw[0]/2,t.offsetY-this.Tw[1]/2),r=this.zw(i),e=n.getConstrainedZoom(n.getZoomForResolution(r));n.animateInternal({zoom:e,duration:this.Lr,easing:wt})},n.prototype.Aw=function(t){if(!this.Cn&&t.target===this.element.firstElementChild){var n=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this._w=t.clientX-parseFloat(n.style.left),this.Ow=t.clientY-parseFloat(n.style.top),this.Cn=!0,0===this.Rn.length){var i=this.Cw,r=this.Rw,e=this.getMap().getOwnerDocument();this.Rn.push(Y(e,ya,i,this),Y(e,wa,r,this))}}},n.prototype.Cw=function(t){if(this.Cn){var n=t.clientX-this._w,i=t.clientY-this.Ow,r=this.Nw(n,i);this.jw=this.zw(r),this.getMap().getView().setResolution(this.jw)}},n.prototype.Rw=function(t){this.Cn&&(this.getMap().getView().endInteraction(),this.Cn=!1,this._w=void 0,this.Ow=void 0,this.Rn.forEach($),this.Rn.length=0)},n.prototype.Fw=function(t){var n=this.Lw(t),i=this.element.firstElementChild;this.Sw==lL?i.style.left=this.Mw*n+"px":i.style.top=this.kw*n+"px"},n.prototype.Nw=function(t,n){return ci(this.Sw===lL?t/this.Mw:n/this.kw,0,1)},n.prototype.zw=function(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)},n.prototype.Lw=function(t){return ci(1-this.getMap().getView().getValueForResolutionFunction()(t),0,1)},n.prototype.render=function(t){if(t.frameState&&(this.Ew||this.Iw())){var n=t.frameState.viewState.resolution;this.jw=n,this.Fw(n)}},n}(du),dL=function(){var t=function(n,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])})(n,i)};return function(n,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=n}t(n,i),n.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),pL=function(t){function n(n){var i=this,r=n||{};(i=t.call(this,{element:document.createElement("div"),target:r.target})||this).extent=r.extent?r.extent:null;var e=void 0!==r.className?r.className:"ol-zoom-extent",o=void 0!==r.label?r.label:"E",s=void 0!==r.tipLabel?r.tipLabel:"Fit to extent",a=document.createElement("button");a.setAttribute("type","button"),a.title=s,a.appendChild("string"==typeof o?document.createTextNode(o):o),a.addEventListener(G,i.Rr.bind(i),!1);var u=e+" "+"ol-unselectable "+As,c=i.element;return c.className=u,c.appendChild(a),i}return dL(n,t),n.prototype.Rr=function(t){t.preventDefault(),this.handleZoomToExtent()},n.prototype.handleZoomToExtent=function(){var t=this.getMap().getView(),n=this.extent?this.extent:t.getProjection().getExtent();t.fitInternal($e(n))},n}(du),yL={};yL.AssertionError=c,yL.Collection=ft,yL.Collection.CollectionEvent=ht,yL.DataTile=kt,yL.Disposable=v,yL.Feature=Tt,yL.Feature.createStyleFunction=Ot,yL.Geolocation=vo,yL.Image=ko,yL.Image.listenImage=So,yL.ImageBase=yo,yL.ImageCanvas=_o,yL.ImageTile=No,yL.Kinetic=zo,yL.Map=Mc,yL.MapBrowserEvent=da,yL.MapBrowserEventHandler=xa,yL.MapEvent=la,yL.Object=ot,yL.Object.ObjectEvent=et,yL.Observable=it,yL.Observable.unByKey=nt,yL.Overlay=qc,yL.PluggableMap=lu,yL.Tile=jt,yL.TileCache=$c,yL.TileQueue=Ia,yL.TileQueue.getTilePriority=Na,yL.TileRange=nh,yL.TileRange.createOrUpdate=th,yL.VectorRenderTile=eh,yL.VectorTile=sh,yL.View=eu,yL.View.createCenterConstraint=Qa,yL.View.createResolutionConstraint=tu,yL.View.createRotationConstraint=nu,yL.View.isNoopAnimation=iu,yL.array={},yL.array.binarySearch=d,yL.array.equals=x,yL.array.extend=b,yL.array.find=g,yL.array.findIndex=j,yL.array.includes=y,yL.array.isSorted=S,yL.array.linearFindNearest=m,yL.array.numberSafeCompareFunction=p,yL.array.remove=function(t,n){var i=t.indexOf(n),r=i>-1;return r&&t.splice(i,1),r},yL.array.reverseSubArray=w,yL.array.stableSort=function(t,n){var i,r=t.length,e=Array(t.length);for(i=0;i<r;i++)e[i]={index:i,value:t[i]};for(e.sort((function(t,i){return n(t.value,i.value)||t.index-i.index})),i=0;i<t.length;i++)t[i]=e[i].value},yL.asserts={},yL.asserts.assert=Mt,yL.centerconstraint={},yL.centerconstraint.createExtent=Da,yL.centerconstraint.none=Ua,yL.color={},yL.color.asArray=qo,yL.color.asString=Go,yL.color.fromString=Uo,yL.color.isStringColor=Vo,yL.color.normalize=Bo,yL.color.toString=Wo,yL.colorlike={},yL.colorlike.asColorLike=ah,yL.control={},yL.control.Attribution=yu,yL.control.Control=du,yL.control.FullScreen=WF,yL.control.MousePosition=JF,yL.control.OverviewMap=QF,yL.control.Rotate=wu,yL.control.ScaleLine=cL,yL.control.Zoom=gu,yL.control.ZoomSlider=vL,yL.control.ZoomToExtent=pL,yL.control.defaults=xu,yL.coordinate={},yL.coordinate.add=Ki,yL.coordinate.closestOnCircle=Yi,yL.coordinate.closestOnSegment=Zi,yL.coordinate.createStringXY=function(t){return function(n){return sr(n,t)}},yL.coordinate.degreesToStringHDMS=$i,yL.coordinate.distance=er,yL.coordinate.equals=tr,yL.coordinate.format=Qi,yL.coordinate.getWorldsAway=ur,yL.coordinate.rotate=nr,yL.coordinate.scale=ir,yL.coordinate.squaredDistance=rr,yL.coordinate.squaredDistanceToSegment=or,yL.coordinate.toStringHDMS=function(t,n){return t?$i("NS",t[1],n)+" "+$i("EW",t[0],n):""},yL.coordinate.toStringXY=sr,yL.coordinate.wrapX=ar,yL.css={},yL.css.CLASS_COLLAPSED=Cs,yL.css.CLASS_CONTROL=As,yL.css.CLASS_HIDDEN=_s,yL.css.CLASS_SELECTABLE=Os,yL.css.CLASS_UNSELECTABLE=Ts,yL.css.CLASS_UNSUPPORTED=Es,yL.css.cssOpacity=Ns,yL.css.getFontParameters=Is,yL.dom={},yL.dom.createCanvasContext2D=Oo,yL.dom.outerHeight=Eo,yL.dom.outerWidth=To,yL.dom.removeChildren=Ro,yL.dom.removeNode=Co,yL.dom.replaceChildren=Po,yL.dom.replaceNode=Ao,yL.easing={},yL.easing.easeIn=mt,yL.easing.easeOut=wt,yL.easing.inAndOut=bt,yL.easing.linear=gt,yL.easing.upAndDown=function(t){return t<.5?bt(2*t):1-bt(2*(t-.5))},yL.events={},yL.events.Event=f,yL.events.Event.preventDefault=function(t){t.preventDefault()},yL.events.Event.stopPropagation=h,yL.events.Target=I,yL.events.condition={},yL.events.condition.all=Ru,yL.events.condition.altKeyOnly=Pu,yL.events.condition.altShiftKeysOnly=Iu,yL.events.condition.always=Fu,yL.events.condition.click=function(t){return t.type==pa.CLICK},yL.events.condition.doubleClick=function(t){return t.type==pa.DBLCLICK},yL.events.condition.focus=Nu,yL.events.condition.focusWithTabindex=zu,yL.events.condition.mouseActionButton=Lu,yL.events.condition.mouseOnly=Wu,yL.events.condition.never=Gu,yL.events.condition.noModifierKeys=Uu,yL.events.condition.penOnly=function(t){var n=t.originalEvent;return Mt(void 0!==n,56),"pen"===n.pointerType},yL.events.condition.platformModifierKeyOnly=function(t){var n=t.originalEvent;return!n.altKey&&(Vt?n.metaKey:n.ctrlKey)&&!n.shiftKey},yL.events.condition.pointerMove=function(t){return"pointermove"==t.type},yL.events.condition.primaryAction=Vu,yL.events.condition.shiftKeyOnly=qu,yL.events.condition.singleClick=Du,yL.events.condition.targetNotEditable=Bu,yL.events.condition.touchOnly=function(t){var n=t.originalEvent;return Mt(void 0!==n,56),"touch"===n.pointerType},yL.events.listen=Y,yL.events.listenOnce=Z,yL.events.unlistenByKey=$,yL.extent={},yL.extent.applyTransform=si,yL.extent.approximatelyEquals=zn,yL.extent.boundingExtent=jn,yL.extent.buffer=Sn,yL.extent.clone=kn,yL.extent.closestSquaredDistanceXY=Mn,yL.extent.containsCoordinate=_n,yL.extent.containsExtent=On,yL.extent.containsXY=Tn,yL.extent.coordinateRelationship=En,yL.extent.createEmpty=An,yL.extent.createOrUpdate=Cn,yL.extent.createOrUpdateEmpty=Rn,yL.extent.createOrUpdateFromCoordinate=Pn,yL.extent.createOrUpdateFromCoordinates=function(t,n){return Gn(Rn(n),t)},yL.extent.createOrUpdateFromFlatCoordinates=In,yL.extent.createOrUpdateFromRings=function(t,n){return Un(Rn(n),t)},yL.extent.equals=Nn,yL.extent.extend=Fn,yL.extent.extendCoordinate=Ln,yL.extent.extendCoordinates=Gn,yL.extent.extendFlatCoordinates=Dn,yL.extent.extendRings=Un,yL.extent.extendXY=qn,yL.extent.forEachCorner=Bn,yL.extent.getArea=Wn,yL.extent.getBottomLeft=Vn,yL.extent.getBottomRight=Xn,yL.extent.getCenter=Hn,yL.extent.getCorner=Jn,yL.extent.getEnlargedArea=function(t,n){var i=Math.min(t[0],n[0]),r=Math.min(t[1],n[1]);return(Math.max(t[2],n[2])-i)*(Math.max(t[3],n[3])-r)},yL.extent.getForViewAndSize=Kn,yL.extent.getHeight=Yn,yL.extent.getIntersection=Zn,yL.extent.getIntersectionArea=function(t,n){return Wn(Zn(t,n))},yL.extent.getMargin=function(t){return ti(t)+Yn(t)},yL.extent.getSize=function(t){return[t[2]-t[0],t[3]-t[1]]},yL.extent.getTopLeft=$n,yL.extent.getTopRight=Qn,yL.extent.getWidth=ti,yL.extent.intersects=ni,yL.extent.intersectsSegment=oi,yL.extent.isEmpty=ii,yL.extent.returnOrUpdate=ri,yL.extent.scaleFromCenter=ei,yL.extent.wrapX=ai,yL.featureloader={},yL.featureloader.loadFeaturesXhr=vh,yL.featureloader.setWithCredentials=function(t){lh=t},yL.featureloader.xhr=dh,yL.format={},yL.format.EsriJSON=HE,yL.format.Feature=Kj,yL.format.Feature.transformExtentWithOptions=Zj,yL.format.Feature.transformGeometryWithOptions=Yj,yL.format.GML=kA,yL.format.GML2=wA,yL.format.GML3=jA,yL.format.GML32=OA,yL.format.GMLBase=tA,yL.format.GMLBase.GMLNS=ZE,yL.format.GPX=cC,yL.format.GeoJSON=yS,yL.format.IGC=xC,yL.format.IIIFInfo=Mb,yL.format.JSONFeature=lS,yL.format.KML=kP,yL.format.KML.getDefaultFillStyle=function(){return GC},yL.format.KML.getDefaultImageStyle=function(){return UC},yL.format.KML.getDefaultStrokeStyle=function(){return BC},yL.format.KML.getDefaultStyle=function(){return VC},yL.format.KML.getDefaultStyleArray=function(){return HC},yL.format.KML.getDefaultTextStyle=function(){return WC},yL.format.KML.readFlatCoordinates=QC,yL.format.MVT=eS,yL.format.OSMXML=RP,yL.format.OWS=$P,yL.format.Polyline=cI,yL.format.Polyline.decodeDeltas=nI,yL.format.Polyline.decodeFloats=rI,yL.format.Polyline.decodeSignedIntegers=oI,yL.format.Polyline.decodeUnsignedIntegers=aI,yL.format.Polyline.encodeDeltas=tI,yL.format.Polyline.encodeFloats=iI,yL.format.Polyline.encodeSignedIntegers=eI,yL.format.Polyline.encodeUnsignedInteger=uI,yL.format.Polyline.encodeUnsignedIntegers=sI,yL.format.TextFeature=lC,yL.format.TopoJSON=wI,yL.format.WFS=uz,yL.format.WFS.writeFilter=function(t,n){var i=n||"1.1.0",r=wf(az(i),"Filter"),e={node:r};return E(e,{version:i,filter:t}),VN(r,t,[e]),r},yL.format.WKB=Sz,yL.format.WKT=Wz,yL.format.WMSCapabilities=yF,yL.format.WMSGetFeatureInfo=wF,yL.format.WMTSCapabilities=zF,yL.format.XML=PP,yL.format.XMLFeature=KE,yL.format.filter={},yL.format.filter.And=SI,yL.format.filter.Bbox=MI,yL.format.filter.Comparison=NI,yL.format.filter.ComparisonBinary=GI,yL.format.filter.Contains=EI,yL.format.filter.DWithin=CI,yL.format.filter.Disjoint=PI,yL.format.filter.During=FI,yL.format.filter.EqualTo=UI,yL.format.filter.Filter=bI,yL.format.filter.GreaterThan=BI,yL.format.filter.GreaterThanOrEqualTo=VI,yL.format.filter.Intersects=HI,yL.format.filter.IsBetween=KI,yL.format.filter.IsLike=ZI,yL.format.filter.IsNull=QI,yL.format.filter.LessThan=nN,yL.format.filter.LessThanOrEqualTo=rN,yL.format.filter.LogicalNary=xI,yL.format.filter.Not=oN,yL.format.filter.NotEqualTo=aN,yL.format.filter.Or=cN,yL.format.filter.ResourceId=fN,yL.format.filter.Spatial=OI,yL.format.filter.Within=vN,yL.format.filter.and=dN,yL.format.filter.bbox=pN,yL.format.filter.between=function(t,n,i){return new KI(t,n,i)},yL.format.filter.contains=function(t,n,i){return new EI(t,n,i)},yL.format.filter.disjoint=function(t,n,i){return new PI(t,n,i)},yL.format.filter.during=function(t,n,i){return new FI(t,n,i)},yL.format.filter.dwithin=function(t,n,i,r,e){return new CI(t,n,i,r,e)},yL.format.filter.equalTo=function(t,n,i){return new UI(t,n,i)},yL.format.filter.greaterThan=function(t,n){return new BI(t,n)},yL.format.filter.greaterThanOrEqualTo=function(t,n){return new VI(t,n)},yL.format.filter.intersects=function(t,n,i){return new HI(t,n,i)},yL.format.filter.isNull=function(t){return new QI(t)},yL.format.filter.lessThan=function(t,n){return new nN(t,n)},yL.format.filter.lessThanOrEqualTo=function(t,n){return new rN(t,n)},yL.format.filter.like=function(t,n,i,r,e,o){return new ZI(t,n,i,r,e,o)},yL.format.filter.not=function(t){return new oN(t)},yL.format.filter.notEqualTo=function(t,n,i){return new aN(t,n,i)},yL.format.filter.or=function(t){var n=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(cN,n))},yL.format.filter.resourceId=function(t){return new fN(t)},yL.format.filter.within=function(t,n,i){return new vN(t,n,i)},yL.format.xlink={},yL.format.xlink.readHref=IP,yL.format.xsd={},yL.format.xsd.readBoolean=nA,yL.format.xsd.readBooleanString=iA,yL.format.xsd.readDateTime=rA,yL.format.xsd.readDecimal=eA,yL.format.xsd.readDecimalString=oA,yL.format.xsd.readNonNegativeIntegerString=aA,yL.format.xsd.readPositiveInteger=sA,yL.format.xsd.readString=uA,yL.format.xsd.writeBooleanTextNode=cA,yL.format.xsd.writeCDATASection=hA,yL.format.xsd.writeDateTimeTextNode=fA,yL.format.xsd.writeDecimalTextNode=lA,yL.format.xsd.writeNonNegativeIntegerTextNode=vA,yL.format.xsd.writeStringTextNode=dA,yL.functions={},yL.functions.FALSE=M,yL.functions.TRUE=k,yL.functions.VOID=_,yL.functions.memoizeOne=O,yL.functions.toPromise=T,yL.geom={},yL.geom.Circle=KT,yL.geom.Geometry=Yr,yL.geom.GeometryCollection=cS,yL.geom.LineString=kj,yL.geom.LinearRing=_e,yL.geom.MultiLineString=_j,yL.geom.MultiPoint=bj,yL.geom.MultiPolygon=Ej,yL.geom.Point=Te,yL.geom.Polygon=Ye,yL.geom.Polygon.circular=Ze,yL.geom.Polygon.fromCircle=Qe,yL.geom.Polygon.fromExtent=$e,yL.geom.Polygon.makeRegular=to,yL.geom.SimpleGeometry=te,yL.geom.SimpleGeometry.getStrideForLayout=$r,yL.geom.SimpleGeometry.transformGeom2D=Qr,yL.geom.flat={},yL.geom.flat.area={},yL.geom.flat.area.linearRing=je,yL.geom.flat.area.linearRings=Se,yL.geom.flat.area.linearRingss=ke,yL.geom.flat.center={},yL.geom.flat.center.linearRingss=Oj,yL.geom.flat.closest={},yL.geom.flat.closest.arrayMaxSquaredDelta=re,yL.geom.flat.closest.assignClosestArrayPoint=se,yL.geom.flat.closest.assignClosestMultiArrayPoint=ae,yL.geom.flat.closest.assignClosestPoint=oe,yL.geom.flat.closest.maxSquaredDelta=ie,yL.geom.flat.closest.multiArrayMaxSquaredDelta=ee,yL.geom.flat.contains={},yL.geom.flat.contains.linearRingContainsExtent=Ee,yL.geom.flat.contains.linearRingContainsXY=Ae,yL.geom.flat.contains.linearRingsContainsXY=Ce,yL.geom.flat.contains.linearRingssContainsXY=Re,yL.geom.flat.deflate={},yL.geom.flat.deflate.deflateCoordinate=ue,yL.geom.flat.deflate.deflateCoordinates=ce,yL.geom.flat.deflate.deflateCoordinatesArray=he,yL.geom.flat.deflate.deflateMultiCoordinatesArray=fe,yL.geom.flat.flip={},yL.geom.flat.flip.flipXY=GE,yL.geom.flat.geodesic={},yL.geom.flat.geodesic.greatCircleArc=function(t,n,i,r,e,o){var s=gr("EPSG:4326"),a=Math.cos(yi(n)),u=Math.sin(yi(n)),c=Math.cos(yi(r)),h=Math.sin(yi(r)),f=Math.cos(yi(i-t)),l=Math.sin(yi(i-t)),v=u*h+a*c*f;return zj((function(n){if(1<=v)return[i,r];var e=n*Math.acos(v),o=Math.cos(e),s=Math.sin(e),d=l*c,p=a*h-u*c*f,y=Math.atan2(d,p),m=Math.asin(u*o+a*s*Math.cos(y));return[pi(yi(t)+Math.atan2(Math.sin(y)*s*a,o-u*Math.sin(m))),pi(m)]}),Ar(s,e),o)},yL.geom.flat.geodesic.meridian=Fj,yL.geom.flat.geodesic.parallel=Lj,yL.geom.flat.inflate={},yL.geom.flat.inflate.inflateCoordinates=be,yL.geom.flat.inflate.inflateCoordinatesArray=ge,yL.geom.flat.inflate.inflateMultiCoordinatesArray=xe,yL.geom.flat.interiorpoint={},yL.geom.flat.interiorpoint.getInteriorPointOfArray=Pe,yL.geom.flat.interiorpoint.getInteriorPointsOfMultiArray=Ie,yL.geom.flat.interpolate={},yL.geom.flat.interpolate.interpolatePoint=gj,yL.geom.flat.interpolate.lineStringCoordinateAtM=xj,yL.geom.flat.interpolate.lineStringsCoordinateAtM=jj,yL.geom.flat.intersectsextent={},yL.geom.flat.intersectsextent.intersectsLineString=ze,yL.geom.flat.intersectsextent.intersectsLineStringArray=Fe,yL.geom.flat.intersectsextent.intersectsLinearRing=Le,yL.geom.flat.intersectsextent.intersectsLinearRingArray=Ge,yL.geom.flat.intersectsextent.intersectsLinearRingMultiArray=De,yL.geom.flat.length={},yL.geom.flat.length.lineStringLength=qx,yL.geom.flat.length.linearRingLength=function(t,n,i,r){var e=qx(t,n,i,r),o=t[i-r]-t[n],s=t[i-r+1]-t[n+1];return e+=Math.sqrt(o*o+s*s)},yL.geom.flat.orient={},yL.geom.flat.orient.inflateEnds=He,yL.geom.flat.orient.linearRingIsClockwise=qe,yL.geom.flat.orient.linearRingsAreOriented=Be,yL.geom.flat.orient.linearRingssAreOriented=We,yL.geom.flat.orient.orientLinearRings=Ve,yL.geom.flat.orient.orientLinearRingsArray=Xe,yL.geom.flat.reverse={},yL.geom.flat.reverse.coordinates=Ue,yL.geom.flat.segments={},yL.geom.flat.segments.forEach=Ne,yL.geom.flat.simplify={},yL.geom.flat.simplify.douglasPeucker=le,yL.geom.flat.simplify.douglasPeuckerArray=ve,yL.geom.flat.simplify.douglasPeuckerMultiArray=function(t,n,i,r,e,o,s,a){for(var u=0,c=i.length;u<c;++u){var h=i[u],f=[];s=ve(t,n,h,r,e,o,s,f),a.push(f),n=h[h.length-1]}return s},yL.geom.flat.simplify.quantize=ye,yL.geom.flat.simplify.quantizeArray=me,yL.geom.flat.simplify.quantizeMultiArray=we,yL.geom.flat.simplify.radialDistance=de,yL.geom.flat.simplify.simplifyLineString=function(t,n,i,r,e,o,s){var a=void 0!==s?s:[];return o||(i=de(t,n,i,r,e,a,0),t=a,n=0,r=2),a.length=le(t,n,i,r,e,a,0),a},yL.geom.flat.simplify.snap=pe,yL.geom.flat.straightchunk={},yL.geom.flat.straightchunk.matchingChunk=Nx,yL.geom.flat.textpath={},yL.geom.flat.textpath.drawTextOnPath=Ux,yL.geom.flat.topology={},yL.geom.flat.topology.lineStringIsClosed=function(t,n,i,r){var e=i-r;return t[n]===t[e]&&t[n+1]===t[e+1]&&(i-n)/r>3&&!!je(t,n,i,r)},yL.geom.flat.transform={},yL.geom.flat.transform.rotate=Vr,yL.geom.flat.transform.scale=Xr,yL.geom.flat.transform.transform2D=Wr,yL.geom.flat.transform.translate=Hr,yL.has={},yL.has.DEVICE_PIXEL_RATIO=Xt,yL.has.FIREFOX=Ut,yL.has.IMAGE_DECODE=Jt,yL.has.MAC=Vt,yL.has.PASSIVE_EVENT_LISTENERS=Kt,yL.has.SAFARI=qt,yL.has.SAFARI_BUG_237906=Bt,yL.has.WEBKIT=Wt,yL.has.WORKER_OFFSCREEN_CANVAS=Ht,yL.interaction={},yL.interaction.DoubleClickZoom=Tu,yL.interaction.DragAndDrop=WT,yL.interaction.DragAndDrop.DragAndDropEvent=BT,yL.interaction.DragBox=ec,yL.interaction.DragBox.DragBoxEvent=rc,yL.interaction.DragPan=Hu,yL.interaction.DragRotate=Ku,yL.interaction.DragRotateAndZoom=XT,yL.interaction.DragZoom=sc,yL.interaction.Draw=oE,yL.interaction.Draw.DrawEvent=eE,yL.interaction.Draw.createBox=function(){return function(t,n,i){var r=jn([t[0],t[t.length-1]].map((function(t){return Fr(t,i)}))),e=[[Vn(r),Xn(r),Qn(r),$n(r),Vn(r)]],o=n;o?o.setCoordinates(e):o=new Ye(e);var s=Nr();return s&&o.transform(i,s),o}},yL.interaction.Draw.createRegularPolygon=function(t,n){return function(i,r,e){var o=Fr(i[0],e),s=Fr(i[i.length-1],e),a=Math.sqrt(rr(o,s)),u=r||Qe(new KT(o),t),c=n;if(!n&&0!==n){var h=s[0]-o[0],f=s[1]-o[1];c=Math.atan2(f,h)}to(u,o,a,c);var l=Nr();return l&&u.transform(e,l),u}},yL.interaction.Extent=lE,yL.interaction.Extent.ExtentEvent=uE,yL.interaction.Interaction=_u,yL.interaction.Interaction.pan=ku,yL.interaction.Interaction.zoomByDelta=Mu,yL.interaction.KeyboardPan=lc,yL.interaction.KeyboardZoom=dc,yL.interaction.Modify=SE,yL.interaction.Modify.ModifyEvent=bE,yL.interaction.MouseWheelZoom=wc,yL.interaction.PinchRotate=gc,yL.interaction.PinchZoom=jc,yL.interaction.Pointer=Cu,yL.interaction.Pointer.centroid=Au,yL.interaction.Select=TE,yL.interaction.Select.SelectEvent=_E,yL.interaction.Snap=RE,yL.interaction.Translate=LE,yL.interaction.Translate.TranslateEvent=FE,yL.interaction.defaults=Sc,yL.layer={},yL.layer.Base=us,yL.layer.BaseImage=mg,yL.layer.BaseTile=Eg,yL.layer.BaseVector=wx,yL.layer.Graticule=qj,yL.layer.Group=ha,yL.layer.Group.GroupEvent=ua,yL.layer.Heatmap=Jj,yL.layer.Image=Mg,yL.layer.Layer=gs,yL.layer.Layer.inView=bs,yL.layer.MapboxVector=RT,yL.layer.MapboxVector.getMapboxPath=MT,yL.layer.MapboxVector.normalizeGlyphsUrl=OT,yL.layer.MapboxVector.normalizeSourceUrl=ET,yL.layer.MapboxVector.normalizeSpriteUrl=_T,yL.layer.MapboxVector.normalizeStyleUrl=TT,yL.layer.Tile=Pg,yL.layer.Vector=Nj,yL.layer.VectorImage=IT,yL.layer.VectorTile=sS,yL.layer.WebGLPoints=zT,yL.layer.WebGLTile=DT,yL.loadingstrategy={},yL.loadingstrategy.all=ph,yL.loadingstrategy.bbox=function(t,n){return[t]},yL.loadingstrategy.tile=function(t){return function(n,i,r){var e=t.getZForResolution(Ur(i,r)),o=t.getTileRangeForExtentAndZ(Gr(n,r),e),s=[],a=[e,0,0];for(a[1]=o.minX;a[1]<=o.maxX;++a[1])for(a[2]=o.minY;a[2]<=o.maxY;++a[2])s.push(Lr(t.getTileCoordExtent(a),r));return s}},yL.math={},yL.math.ceil=ji,yL.math.clamp=ci,yL.math.cosh=hi,yL.math.floor=xi,yL.math.lerp=wi,yL.math.log2=fi,yL.math.modulo=mi,yL.math.round=gi,yL.math.solveLinearSystem=di,yL.math.squaredDistance=vi,yL.math.squaredSegmentDistance=li,yL.math.toDegrees=pi,yL.math.toFixed=bi,yL.math.toRadians=yi,yL.net={},yL.net.ClientError=gh,yL.net.ResponseError=bh,yL.net.getJSON=xh,yL.net.jsonp=mh,yL.net.overrideXHR=function(t){"undefined"!=typeof XMLHttpRequest&&(wh=XMLHttpRequest),global.XMLHttpRequest=t},yL.net.resolveUrl=jh,yL.net.restoreXHR=function(){global.XMLHttpRequest=wh},yL.obj={},yL.obj.assign=E,yL.obj.clear=A,yL.obj.getValues=C,yL.obj.isEmpty=R,yL.proj={},yL.proj.Projection=ui,yL.proj.Units={},yL.proj.Units.METERS_PER_UNIT=Ft,yL.proj.Units.fromCode=zt,yL.proj.addCommon=Br,yL.proj.addCoordinateTransforms=_r,yL.proj.addEquivalentProjections=jr,yL.proj.addEquivalentTransforms=Sr,yL.proj.addProjection=wr,yL.proj.addProjections=br,yL.proj.clearAllProjections=function(){Di(),Wi()},yL.proj.clearUserProjection=function(){Pr=null},yL.proj.cloneTransform=yr,yL.proj.createProjection=kr,yL.proj.createSafeCoordinateTransform=qr,yL.proj.createTransformFromCoordinateTransform=Mr,yL.proj.disableCoordinateWarning=pr,yL.proj.epsg3857={},yL.proj.epsg3857.EXTENT=_i,yL.proj.epsg3857.HALF_SIZE=Mi,yL.proj.epsg3857.MAX_SAFE_Y=Ti,yL.proj.epsg3857.PROJECTIONS=Ai,yL.proj.epsg3857.RADIUS=ki,yL.proj.epsg3857.WORLD_EXTENT=Oi,yL.proj.epsg3857.fromEPSG4326=Ci,yL.proj.epsg3857.toEPSG4326=Ri,yL.proj.epsg4326={},yL.proj.epsg4326.EXTENT=Ni,yL.proj.epsg4326.METERS_PER_UNIT=zi,yL.proj.epsg4326.PROJECTIONS=Li,yL.proj.epsg4326.RADIUS=Ii,yL.proj.equivalent=Tr,yL.proj.fromLonLat=Or,yL.proj.fromUserCoordinate=Fr,yL.proj.fromUserExtent=Gr,yL.proj.fromUserResolution=Ur,yL.proj.get=gr,yL.proj.getPointResolution=xr,yL.proj.getTransform=Ar,yL.proj.getTransformFromProjections=Er,yL.proj.getUserProjection=Nr,yL.proj.identityTransform=mr,yL.proj.proj4={},yL.proj.proj4.register=function(t){var n,i,r=Object.keys(t.defs),e=r.length;for(n=0;n<e;++n){var o=r[n];if(!gr(o)){var s=t.defs(o),a=s.units;a||"longlat"!==s.projName||(a=Gt.DEGREES),wr(new ui({code:o,axisOrientation:s.axis,metersPerUnit:s.to_meter,units:a}))}}for(n=0;n<e;++n){var u=r[n],c=gr(u);for(i=0;i<e;++i){var h=r[i],f=gr(h);if(!Xi(u,h))if(t.defs[u]===t.defs[h])jr([c,f]);else{var l=t(u,h);_r(c,f,qr(c,f,l.forward),qr(f,c,l.inverse))}}}},yL.proj.projections={},yL.proj.projections.add=qi,yL.proj.projections.clear=Di,yL.proj.projections.get=Ui,yL.proj.setUserProjection=Ir,yL.proj.toLonLat=function(t,n){var i=Cr(t,void 0!==n?n:"EPSG:3857","EPSG:4326"),r=i[0];return(r<-180||r>180)&&(i[0]=mi(r+180,360)-180),i},yL.proj.toUserCoordinate=zr,yL.proj.toUserExtent=Lr,yL.proj.toUserResolution=Dr,yL.proj.transform=Cr,yL.proj.transformExtent=Rr,yL.proj.transformWithProjections=function(t,n,i){return Er(n,i)(t)},yL.proj.transforms={},yL.proj.transforms.add=Vi,yL.proj.transforms.clear=Wi,yL.proj.transforms.get=Xi,yL.proj.transforms.remove=function(t,n){var i=t.getCode(),r=n.getCode(),e=Bi[i][r];return delete Bi[i][r],R(Bi[i])&&delete Bi[i],e},yL.proj.useGeographic=function(){Ir("EPSG:4326")},yL.render={},yL.render.Box=Zu,yL.render.Event=Ms,yL.render.Feature=Pj,yL.render.Feature.toFeature=function(t,n){var i=t.getId(),r=Rj(t),e=t.getProperties(),o=new Tt;return void 0!==n&&o.setGeometryName(n),o.setGeometry(r),void 0!==i&&o.setId(i),o.setProperties(e,!0),o},yL.render.Feature.toGeometry=Rj,yL.render.VectorContext=Sh,yL.render.canvas={},yL.render.canvas.Builder=Tx,yL.render.canvas.BuilderGroup=Dx,yL.render.canvas.Executor=$x,yL.render.canvas.ExecutorGroup=rj,yL.render.canvas.ExecutorGroup.getPixelIndexArray=ij,yL.render.canvas.ImageBuilder=Ax,yL.render.canvas.Immediate=Mh,yL.render.canvas.Instruction={},yL.render.canvas.Instruction.beginPathInstruction=kx,yL.render.canvas.Instruction.closePathInstruction=Mx,yL.render.canvas.Instruction.fillInstruction=jx,yL.render.canvas.Instruction.strokeInstruction=Sx,yL.render.canvas.LineStringBuilder=Rx,yL.render.canvas.PolygonBuilder=Ix,yL.render.canvas.TextBuilder=Lx,yL.render.canvas.checkedFonts=Xs,yL.render.canvas.defaultFillStyle=Fs,yL.render.canvas.defaultFont=zs,yL.render.canvas.defaultLineCap=Ls,yL.render.canvas.defaultLineDash=Gs,yL.render.canvas.defaultLineDashOffset=0,yL.render.canvas.defaultLineJoin=Ds,yL.render.canvas.defaultLineWidth=1,yL.render.canvas.defaultMiterLimit=Us,yL.render.canvas.defaultPadding=Vs,yL.render.canvas.defaultStrokeStyle=qs,yL.render.canvas.defaultTextAlign=Bs,yL.render.canvas.defaultTextBaseline=Ws,yL.render.canvas.drawImageOrLabel=ea,yL.render.canvas.getTextDimensions=ra,yL.render.canvas.hitdetect={},yL.render.canvas.hitdetect.HIT_DETECT_RESOLUTION=ej,yL.render.canvas.hitdetect.createHitDetectionImageData=oj,yL.render.canvas.hitdetect.hitDetect=sj,yL.render.canvas.labelCache=Hs,yL.render.canvas.measureAndCacheTextWidth=ia,yL.render.canvas.measureTextHeight=Qs,yL.render.canvas.measureTextWidth=na,yL.render.canvas.registerFont=$s,yL.render.canvas.rotateAtOffset=function(t,n,i,r){0!==n&&(t.translate(i,r),t.rotate(n),t.translate(-i,-r))},yL.render.canvas.textHeights=Zs,yL.render.getRenderPixel=function(t,n){return rn(t.inversePixelTransform,n.slice(0))},yL.render.getVectorContext=Lh,yL.render.toContext=function(t,n){var i=t.canvas,r=n||{},e=r.pixelRatio||Xt,o=r.size;o&&(i.width=o[0]*e,i.height=o[1]*e,i.style.width=o[0]+"px",i.style.height=o[1]+"px");var s=[0,0,i.width,i.height],a=on([1,0,0,1,0,0],e,e);return new Mh(t,e,s,a,0)},yL.renderer={},yL.renderer.Composite=sa,yL.renderer.Layer=kl,yL.renderer.Map=Ss,yL.renderer.canvas={},yL.renderer.canvas.ImageLayer=Sg,yL.renderer.canvas.Layer=xg,yL.renderer.canvas.TileLayer=Cg,yL.renderer.canvas.VectorImageLayer=hj,yL.renderer.canvas.VectorLayer=uj,yL.renderer.canvas.VectorTileLayer=mj,yL.renderer.canvas.common={},yL.renderer.canvas.common.IMAGE_SMOOTHING_DISABLED=Dh,yL.renderer.canvas.common.IMAGE_SMOOTHING_ENABLED=Uh,yL.renderer.vector={},yL.renderer.vector.defaultOrder=Ph,yL.renderer.vector.getSquaredTolerance=Ih,yL.renderer.vector.getTolerance=Nh,yL.renderer.vector.renderFeature=zh,yL.renderer.webgl={},yL.renderer.webgl.Layer=Pl,yL.renderer.webgl.Layer.colorDecodeId=Rl,yL.renderer.webgl.Layer.colorEncodeId=Cl,yL.renderer.webgl.Layer.getBlankImageData=function(){var t=document.createElement("canvas").getContext("2d").createImageData(1,1);return t.data[0]=255,t.data[1]=255,t.data[2]=255,t.data[3]=255,t},yL.renderer.webgl.Layer.writePointFeatureToBuffers=function(t,n,i,r,e,o){var s=3+e,a=t[n+0],u=t[n+1],c=Tl;c.length=e;for(var h=0;h<c.length;h++)c[h]=t[n+2+h];var f=o?o.vertexPosition:0,l=o?o.indexPosition:0,v=f/s;return Al(i,f,a,u,0),c.length&&i.set(c,f+3),Al(i,f+=s,a,u,1),c.length&&i.set(c,f+3),Al(i,f+=s,a,u,2),c.length&&i.set(c,f+3),Al(i,f+=s,a,u,3),c.length&&i.set(c,f+3),f+=s,r[l++]=v,r[l++]=v+1,r[l++]=v+3,r[l++]=v+1,r[l++]=v+2,r[l++]=v+3,El.vertexPosition=f,El.indexPosition=l,El},yL.renderer.webgl.PointsLayer=gx,yL.renderer.webgl.TileLayer=Bl,yL.renderer.webgl.TileLayer.Attributes=zl,yL.renderer.webgl.TileLayer.Uniforms=Nl,yL.reproj={},yL.reproj.Image=Ab,yL.reproj.Tile=ml,yL.reproj.Triangulation=pl,yL.reproj.calculateSourceExtentResolution=Vh,yL.reproj.calculateSourceResolution=Wh,yL.reproj.common={},yL.reproj.common.ENABLE_RASTER_REPROJECTION=dl,yL.reproj.common.ERROR_THRESHOLD=.5,yL.reproj.render=Xh,yL.resolutionconstraint={},yL.resolutionconstraint.createMinMaxResolution=Xa,yL.resolutionconstraint.createSnapToPower=Va,yL.resolutionconstraint.createSnapToResolutions=Wa,yL.rotationconstraint={},yL.rotationconstraint.createSnapToN=Ka,yL.rotationconstraint.createSnapToZero=Ya,yL.rotationconstraint.disable=Ha,yL.rotationconstraint.none=Ja,yL.size={},yL.size.buffer=ou,yL.size.hasArea=su,yL.size.scale=au,yL.size.toSize=uu,yL.source={},yL.source.BingMaps=Sd,yL.source.BingMaps.quadKey=jd,yL.source.CartoDB=Od,yL.source.Cluster=Gd,yL.source.DataTile=Ud,yL.source.GeoTIFF=hb,yL.source.IIIF=Tb,yL.source.Image=Fb,yL.source.Image.ImageSourceEvent=Nb,yL.source.Image.defaultImageLoadFunction=zb,yL.source.ImageArcGISRest=Gb,yL.source.ImageCanvas=Ub,yL.source.ImageMapGuide=Bb,yL.source.ImageStatic=Vb,yL.source.ImageWMS=Qb,yL.source.OGCMapTile=ag,yL.source.OGCVectorTile=lg,yL.source.OSM=pg,yL.source.OSM.ATTRIBUTION=dg,yL.source.Raster=Kg,yL.source.Raster.Processor=Gg,yL.source.Raster.RasterSourceEvent=Wg,yL.source.Raster.newImageData=zg,yL.source.Source=fd,yL.source.Stamen=tx,yL.source.Tile=pd,yL.source.Tile.TileSourceEvent=dd,yL.source.TileArcGISRest=ix,yL.source.TileDebug=ex,yL.source.TileImage=gd,yL.source.TileJSON=sx,yL.source.TileWMS=ux,yL.source.UTFGrid=fx,yL.source.UTFGrid.CustomTile=hx,yL.source.UrlTile=md,yL.source.Vector=Fd,yL.source.Vector.VectorSourceEvent=zd,yL.source.VectorTile=cg,yL.source.VectorTile.defaultLoadFunction=hg,yL.source.WMTS=px,yL.source.WMTS.optionsFromCapabilities=function(t,n){var i=g(t.Contents.Layer,(function(t,i,r){return t.Identifier==n.layer}));if(null===i)return null;var r,e=t.Contents.TileMatrixSet;(r=i.TileMatrixSetLink.length>1?j(i.TileMatrixSetLink,"projection"in n?function(t,i,r){var o=g(e,(function(n){return n.Identifier==t.TileMatrixSet})).SupportedCRS,s=gr(o),a=gr(n.projection);return s&&a?Tr(s,a):o==n.projection}:function(t,i,r){return t.TileMatrixSet==n.matrixSet}):0)<0&&(r=0);var o=i.TileMatrixSetLink[r].TileMatrixSet,s=i.TileMatrixSetLink[r].TileMatrixSetLimits,a=i.Format[0];"format"in n&&(a=n.format),(r=j(i.Style,(function(t,i,r){return"style"in n?t.Title==n.style:t.isDefault})))<0&&(r=0);var u=i.Style[r].Identifier,c={};"Dimension"in i&&i.Dimension.forEach((function(t,n,i){var r=t.Identifier,e=t.Default;void 0===e&&(e=t.Value[0]),c[r]=e}));var h,f=g(t.Contents.TileMatrixSet,(function(t,n,i){return t.Identifier==o})),l=f.SupportedCRS;if(l&&(h=gr(l)),"projection"in n){var v=gr(n.projection);v&&(h&&!Tr(v,h)||(h=v))}var d=!1,p="ne"==h.getAxisOrientation().substr(0,2),m=f.TileMatrix[0],w={MinTileCol:0,MinTileRow:0,MaxTileCol:m.MatrixWidth-1,MaxTileRow:m.MatrixHeight-1};if(s){w=s[s.length-1];var b=g(f.TileMatrix,(function(t){return t.Identifier===w.TileMatrix||f.Identifier+":"+t.Identifier===w.TileMatrix}));b&&(m=b)}var x=28e-5*m.ScaleDenominator/h.getMetersPerUnit(),S=p?[m.TopLeftCorner[1],m.TopLeftCorner[0]]:m.TopLeftCorner,k=m.TileWidth*x,M=m.TileHeight*x,_=f.BoundingBox,O=[S[0]+k*w.MinTileCol,S[1]-M*(1+w.MaxTileRow),S[0]+k*(1+w.MaxTileCol),S[1]-M*w.MinTileRow];if(void 0!==_&&!On(_,O)){var T=i.WGS84BoundingBox,E=gr("EPSG:4326").getExtent();if(O=_,T)d=T[0]===E[0]&&T[2]===E[2];else{var A=Rr(_,f.SupportedCRS,"EPSG:4326");d=A[0]-1e-10<=E[0]&&A[2]+1e-10>=E[2]}}var C=Mv(f,O,s),R=[],P=n.requestEncoding;if(P=void 0!==P?P:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata)for(var I=t.OperationsMetadata.GetTile.DCP.HTTP.Get,N=0,z=I.length;N<z;++N)if(I[N].Constraint){var F=g(I[N].Constraint,(function(t){return"GetEncoding"==t.name})).AllowedValues.Value;if(""===P&&(P=F[0]),P!==lx)break;y(F,lx)&&R.push(I[N].href)}else I[N].href&&(P=lx,R.push(I[N].href));return 0===R.length&&(P=vx,i.ResourceURL.forEach((function(t){"tile"===t.resourceType&&(a=t.format,R.push(t.template))}))),{urls:R,layer:n.layer,matrixSet:o,format:a,projection:h,requestEncoding:P,tileGrid:C,style:u,dimensions:c,wrapX:d,crossOrigin:n.crossOrigin}},yL.source.XYZ=Md,yL.source.Zoomify=pb,yL.source.Zoomify.CustomTile=db,yL.source.common={},yL.source.common.DEFAULT_WMS_VERSION=Xb,yL.source.ogcTileUtil={},yL.source.ogcTileUtil.getMapTileUrlTemplate=ig,yL.source.ogcTileUtil.getTileSetInfo=og,yL.source.ogcTileUtil.getVectorTileUrlTemplate=rg,yL.source.sourcesFromTileGrid=function(t,n){var i=new Bc(32),r=t.getExtent();return function(e,o){i.expireCache(),r&&(e=Zn(r,e));var s=t.getZForResolution(o),a=[];return t.forEachTileCoord(e,s,(function(t){var r=t.toString();if(!i.containsKey(r)){var e=n(t);i.set(r,e)}a.push(i.get(r))})),a}},yL.sphere={},yL.sphere.DEFAULT_RADIUS=cr,yL.sphere.getArea=function t(n,i){var r=i||{},e=r.radius||cr,o=r.projection||"EPSG:3857",s=n.getType();s!==Pt.GEOMETRY_COLLECTION&&(n=n.clone().transform(o,"EPSG:4326"));var a,u,c,h,f,l,v=0;switch(s){case Pt.POINT:case Pt.MULTI_POINT:case Pt.LINE_STRING:case Pt.MULTI_LINE_STRING:case Pt.LINEAR_RING:break;case Pt.POLYGON:for(a=n.getCoordinates(),v=Math.abs(lr(a[0],e)),c=1,h=a.length;c<h;++c)v-=Math.abs(lr(a[c],e));break;case Pt.MULTI_POLYGON:for(c=0,h=(a=n.getCoordinates()).length;c<h;++c)for(u=a[c],v+=Math.abs(lr(u[0],e)),f=1,l=u.length;f<l;++f)v-=Math.abs(lr(u[f],e));break;case Pt.GEOMETRY_COLLECTION:var d=n.getGeometries();for(c=0,h=d.length;c<h;++c)v+=t(d[c],i);break;default:throw new Error("Unsupported geometry type: "+s)}return v},yL.sphere.getDistance=hr,yL.sphere.getLength=function t(n,i){var r=i||{},e=r.radius||cr,o=r.projection||"EPSG:3857",s=n.getType();s!==Pt.GEOMETRY_COLLECTION&&(n=n.clone().transform(o,"EPSG:4326"));var a,u,c,h,f,l,v=0;switch(s){case Pt.POINT:case Pt.MULTI_POINT:break;case Pt.LINE_STRING:case Pt.LINEAR_RING:v=fr(a=n.getCoordinates(),e);break;case Pt.MULTI_LINE_STRING:case Pt.POLYGON:for(c=0,h=(a=n.getCoordinates()).length;c<h;++c)v+=fr(a[c],e);break;case Pt.MULTI_POLYGON:for(c=0,h=(a=n.getCoordinates()).length;c<h;++c)for(f=0,l=(u=a[c]).length;f<l;++f)v+=fr(u[f],e);break;case Pt.GEOMETRY_COLLECTION:var d=n.getGeometries();for(c=0,h=d.length;c<h;++c)v+=t(d[c],i);break;default:throw new Error("Unsupported geometry type: "+s)}return v},yL.sphere.offset=vr,yL.string={},yL.string.compareVersions=Ji,yL.string.padNumber=Hi,yL.structs={},yL.structs.LRUCache=Bc,yL.structs.LinkedList=rd,yL.structs.PriorityQueue=Ra,yL.structs.PriorityQueue.DROP=Ca,yL.structs.RBush=od,yL.style={},yL.style.Circle=Av,yL.style.Fill=Cv,yL.style.Icon=Wv,yL.style.IconImage=qv,yL.style.IconImage.get=Uv,yL.style.IconImageCache=Jo,yL.style.IconImageCache.shared=Ko,yL.style.Image=_v,yL.style.RegularShape=Tv,yL.style.Stroke=Vv,yL.style.Style=Qv,yL.style.Style.createDefaultStyle=Yv,yL.style.Style.createEditingStyle=Zv,yL.style.Style.toFunction=Jv,yL.style.Text=id,yL.style.expressions={},yL.style.expressions.Operators=Zl,yL.style.expressions.PALETTE_TEXTURE_ARRAY=yv,yL.style.expressions.arrayToGlsl=nv,yL.style.expressions.colorToGlsl=iv,yL.style.expressions.expressionToGlsl=ov,yL.style.expressions.getStringNumberEquivalent=rv,yL.style.expressions.getValueType=$l,yL.style.expressions.isTypeUnique=Ql,yL.style.expressions.numberToGlsl=tv,yL.style.expressions.stringToGlsl=ev,yL.style.expressions.uniformNameForVariable=pv,yL.tilecoord={},yL.tilecoord.createOrUpdate=Wc,yL.tilecoord.fromKey=Jc,yL.tilecoord.getCacheKeyForTileKey=Hc,yL.tilecoord.getKey=Xc,yL.tilecoord.getKeyZXY=Vc,yL.tilecoord.hash=Kc,yL.tilecoord.withinExtentAndZ=Yc,yL.tilegrid={},yL.tilegrid.TileGrid=Jh,yL.tilegrid.WMTS=kv,yL.tilegrid.WMTS.createFromCapabilitiesMatrixSet=Mv,yL.tilegrid.common={},yL.tilegrid.common.DEFAULT_MAX_ZOOM=42,yL.tilegrid.common.DEFAULT_TILE_SIZE=Ga,yL.tilegrid.createForExtent=Zh,yL.tilegrid.createForProjection=tf,yL.tilegrid.createXYZ=$h,yL.tilegrid.extentFromProjection=nf,yL.tilegrid.getForProjection=Kh,yL.tilegrid.wrapX=Yh,yL.tileurlfunction={},yL.tileurlfunction.createFromTemplate=rf,yL.tileurlfunction.createFromTemplates=ef;yL.tileurlfunction.createFromTileUrlFunctions=of,yL.tileurlfunction.expandUrl=af,yL.tileurlfunction.nullTileUrlFunction=sf,yL.transform={},yL.transform.apply=rn,yL.transform.compose=un,yL.transform.composeCssTransform=function(t,n,i,r,e,o,s){return fn(un([1,0,0,1,0,0],t,n,i,r,e,o,s))},yL.transform.create=Zt,yL.transform.determinant=hn,yL.transform.invert=function(t){return cn(t,t)},yL.transform.makeInverse=cn,yL.transform.makeScale=sn,yL.transform.multiply=Qt,yL.transform.reset=$t,yL.transform.rotate=en,yL.transform.scale=on,yL.transform.set=tn,yL.transform.setFromArray=nn,yL.transform.toString=fn,yL.transform.translate=an,yL.uri={},yL.uri.appendParams=uf,yL.util={},yL.util.VERSION=a,yL.util.abstract=r,yL.util.getUid=o,yL.vec={},yL.vec.mat4={},yL.vec.mat4.create=Kf,yL.vec.mat4.fromTransform=Yf,yL.webgl={},yL.webgl.ARRAY_BUFFER=hf,yL.webgl.Buffer=Vf,yL.webgl.Buffer.getArrayClassForType=Wf,yL.webgl.DYNAMIC_DRAW=vf,yL.webgl.ELEMENT_ARRAY_BUFFER=ff,yL.webgl.FLOAT=df,yL.webgl.Helper=hl,yL.webgl.Helper.computeAttributesStride=ul,yL.webgl.PaletteTexture=fl,yL.webgl.PostProcessingPass=Jf,yL.webgl.RenderTarget=vl,yL.webgl.STATIC_DRAW=lf,yL.webgl.STREAM_DRAW=35040,yL.webgl.ShaderBuilder={},yL.webgl.ShaderBuilder.ShaderBuilder=gv,yL.webgl.ShaderBuilder.parseLiteralStyle=xv,yL.webgl.TileTexture=jl,yL.webgl.UNSIGNED_BYTE=5121,yL.webgl.UNSIGNED_INT=5125,yL.webgl.UNSIGNED_SHORT=5123,yL.webgl.getContext=yf,yL.webgl.getSupportedExtensions=function(){if(!cf){var t=yf(document.createElement("canvas"));t&&(cf=t.getSupportedExtensions())}return cf},yL.xml={},yL.xml.OBJECT_PROPERTY_NODE_FACTORY=Rf,yL.xml.XML_SCHEMA_INSTANCE_URI=mf,yL.xml.createElementNS=wf,yL.xml.getAllTextContent=bf,yL.xml.Gw=gf,yL.xml.getAttributeNS=jf,yL.xml.getDocument=qf,yL.xml.getXMLSerializer=Df,yL.xml.isDocument=xf,yL.xml.makeArrayExtender=kf,yL.xml.makeArrayPusher=Mf,yL.xml.makeArraySerializer=Af,yL.xml.makeChildAppender=Ef,yL.xml.makeObjectPropertyPusher=Of,yL.xml.makeObjectPropertySetter=Tf,yL.xml.makeReplacer=_f,yL.xml.makeSequence=Pf,yL.xml.makeSimpleNodeFactory=Cf,yL.xml.makeStructureNS=If,yL.xml.parse=Sf,yL.xml.parseNode=Nf,yL.xml.pushParseAndPop=zf,yL.xml.pushSerializeAndPop=Lf,yL.xml.registerDocument=function(t){Uf=t},yL.xml.registerXMLSerializer=function(t){Gf=t},yL.xml.serialize=Ff;var mL=yL},150:function(t,n,i){"use strict";i.d(n,{Ie:function(){return h},It:function(){return s},L:function(){return r},L5:function(){return l},P1:function(){return d},Qb:function(){return v},pd:function(){return f},sf:function(){return u}});var r={315:"Artist",258:"BitsPerSample",265:"CellLength",264:"CellWidth",320:"ColorMap",259:"Compression",33432:"Copyright",306:"DateTime",338:"ExtraSamples",266:"FillOrder",289:"FreeByteCounts",288:"FreeOffsets",291:"GrayResponseCurve",290:"GrayResponseUnit",316:"HostComputer",270:"ImageDescription",257:"ImageLength",256:"ImageWidth",271:"Make",281:"MaxSampleValue",280:"MinSampleValue",272:"Model",254:"NewSubfileType",274:"Orientation",262:"PhotometricInterpretation",284:"PlanarConfiguration",296:"ResolutionUnit",278:"RowsPerStrip",277:"SamplesPerPixel",305:"Software",279:"StripByteCounts",273:"StripOffsets",255:"SubfileType",263:"Threshholding",282:"XResolution",283:"YResolution",326:"BadFaxLines",327:"CleanFaxData",343:"ClipPath",328:"ConsecutiveBadFaxLines",433:"Decode",434:"DefaultImageColor",269:"DocumentName",336:"DotRange",321:"HalftoneHints",346:"Indexed",347:"JPEGTables",285:"PageName",297:"PageNumber",317:"Predictor",319:"PrimaryChromaticities",532:"ReferenceBlackWhite",339:"SampleFormat",340:"SMinSampleValue",341:"SMaxSampleValue",559:"StripRowCounts",330:"SubIFDs",292:"T4Options",293:"T6Options",325:"TileByteCounts",323:"TileLength",324:"TileOffsets",322:"TileWidth",301:"TransferFunction",318:"WhitePoint",344:"XClipPathUnits",286:"XPosition",529:"YCbCrCoefficients",531:"YCbCrPositioning",530:"YCbCrSubSampling",345:"YClipPathUnits",287:"YPosition",37378:"ApertureValue",40961:"ColorSpace",36868:"DateTimeDigitized",36867:"DateTimeOriginal",34665:"Exif IFD",36864:"ExifVersion",33434:"ExposureTime",41728:"FileSource",37385:"Flash",40960:"FlashpixVersion",33437:"FNumber",42016:"ImageUniqueID",37384:"LightSource",37500:"MakerNote",37377:"ShutterSpeedValue",37510:"UserComment",33723:"IPTC",34675:"ICC Profile",700:"XMP",42112:"GDAL_METADATA",42113:"GDAL_NODATA",34377:"Photoshop",33550:"ModelPixelScale",33922:"ModelTiepoint",34264:"ModelTransformation",34735:"GeoKeyDirectory",34736:"GeoDoubleParams",34737:"GeoAsciiParams",50674:"LercParameters"},e={};for(var o in r)r.hasOwnProperty(o)&&(e[r[o]]=parseInt(o,10));var s=[e.BitsPerSample,e.ExtraSamples,e.SampleFormat,e.StripByteCounts,e.StripOffsets,e.StripRowCounts,e.TileByteCounts,e.TileOffsets,e.SubIFDs],a={1:"BYTE",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",6:"SBYTE",7:"UNDEFINED",8:"SSHORT",9:"SLONG",10:"SRATIONAL",11:"FLOAT",12:"DOUBLE",13:"IFD",16:"LONG8",17:"SLONG8",18:"IFD8"},u={};for(var c in a)a.hasOwnProperty(c)&&(u[a[c]]=parseInt(c,10));var h={WhiteIsZero:0,BlackIsZero:1,RGB:2,Palette:3,TransparencyMask:4,CMYK:5,YCbCr:6,CIELab:8,ICCLab:9},f={Unspecified:0,Assocalpha:1,Unassalpha:2},l={Version:0,AddCompression:1},v={None:0,Deflate:1},d={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"},p={};for(var y in d)d.hasOwnProperty(y)&&(p[d[y]]=parseInt(y,10))}},i={};function r(t){var e=i[t];if(void 0!==e)return e.exports;var o=i[t]={id:t,loaded:!1,exports:{}};return n[t].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=n,r.d=function(t,n){for(var i in n)r.o(n,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},r.f={},r.e=function(t){return Promise.all(Object.keys(r.f).reduce((function(n,i){return r.f[i](t,n),n}),[]))},r.u=function(t){return t+".ol.js"},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},t={},r.l=function(n,i,e,o){if(t[n])t[n].push(i);else{var s,a;if(void 0!==e)for(var u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var h=u[c];if(h.getAttribute("src")==n||h.getAttribute("data-webpack")=="ol:"+e){s=h;break}}s||(a=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,r.nc&&s.setAttribute("nonce",r.nc),s.setAttribute("data-webpack","ol:"+e),s.src=n),t[n]=[i];var f=function(i,r){s.onerror=s.onload=null,clearTimeout(l);var e=t[n];if(delete t[n],s.parentNode&&s.parentNode.removeChild(s),e&&e.forEach((function(t){return t(r)})),i)return i(r)},l=setTimeout(f.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=f.bind(null,s.onerror),s.onload=f.bind(null,s.onload),a&&document.head.appendChild(s)}},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},function(){var t;r.g.importScripts&&(t=r.g.location+"");var n=r.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var i=n.getElementsByTagName("script");i.length&&(t=i[i.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=t}(),function(){var t={179:0};r.f.j=function(n,i){var e=r.o(t,n)?t[n]:void 0;if(0!==e)if(e)i.push(e[2]);else{var o=new Promise((function(i,r){e=t[n]=[i,r]}));i.push(e[2]=o);var s=r.p+r.u(n),a=new Error;r.l(s,(function(i){if(r.o(t,n)&&(0!==(e=t[n])&&(t[n]=void 0),e)){var o=i&&("load"===i.type?"missing":i.type),s=i&&i.target&&i.target.src;a.message="Loading chunk "+n+" failed.\n("+o+": "+s+")",a.name="ChunkLoadError",a.type=o,a.request=s,e[1](a)}}),"chunk-"+n,n)}};var n=function(n,i){var e,o,s=i[0],a=i[1],u=i[2],c=0;if(s.some((function(n){return 0!==t[n]}))){for(e in a)r.o(a,e)&&(r.m[e]=a[e]);if(u)u(r)}for(n&&n(i);c<s.length;c++)o=s[c],r.o(t,o)&&t[o]&&t[o][0](),t[o]=0},i=self.webpackChunkol=self.webpackChunkol||[];i.forEach(n.bind(null,0)),i.push=n.bind(null,i.push.bind(i))}(),r(760);var e=r(920);return e=e.default}()}));
diff --git a/public/Markdown.md b/public/Markdown.md
new file mode 100644
index 0000000..a9f3667
--- /dev/null
+++ b/public/Markdown.md
@@ -0,0 +1,49 @@
+# 鍫や赴绯荤粺
+
+## 鍫や赴锛圱yphon锛�
+- **绫诲瀷**锛氶檰鍩轰腑绋嬪寮圭郴缁�
+- **鑳屾櫙**锛氱編鍥介��鍑恒�婁腑瀵兼潯绾︺�嬪悗鐨勪骇鐗╋紝鍙ゅ笇鑵婄璇濅腑鐨勫牑涓帮紝璞″緛寮哄ぇ鐏姏
+- **浣嶇疆**锛氶璁¢儴缃插湪涓浗鍛ㄨ竟鍦板尯
+- **鐢ㄩ��**锛氳礋璐e寮虹編鍐涜繙绋嬬簿纭伀鍔涙墦鍑昏兘鍔涳紝瀵规姉娼滃湪瀵规墜鐨勪腑绋嬪寮瑰▉鑳�
+
+### 鍖呭惈瀛愮被
+
+#### 瀹炰綋浜岋細鍙戝皠鍣�
+- **鍚嶇О**锛歁k41+
+- **绫诲瀷**锛氶檰鍩轰腑绋嬪寮瑰彂灏勫櫒
+- **鑳屾櫙**锛氬熀浜嶮k41鍨傜洿鍙戝皠绯荤粺鏀硅繘
+- **鏁伴噺**锛�4涓�
+- **鐢ㄩ��**锛氳礋璐e彂灏勫寮癸紝绫诲瀷涓哄绉嶉泦瑁呯寮忓寮�
+
+#### 瀹炰綋涓夛細鎸囨尌鎵�
+- **鍚嶇О**锛氬牑涓扮郴缁熸寚鎸ユ墍
+- **绫诲瀷**锛氭寚鎸ユ墍
+- **鑳屾櫙**锛氫竴鑸寘鎷數婧愯溅銆佹帶鍒惰溅銆佽濉溅绛�
+- **鏁伴噺**锛�1涓�
+- **鐢ㄩ��**锛氳礋璐g洰鏍囦俊鎭鐞嗗拰鍙戝皠鎸囨尌
+
+#### 瀹炰綋鍥涳細鎴樻枾宸¤埅瀵煎脊
+- **鍚嶇О**锛氭垬鏂у贰鑸寮癸紙Tactical Tomahawk锛�
+- **绫诲瀷**锛氬贰鑸寮�
+- **鑳屾櫙**锛氱敤浜庤繙绋嬬簿纭墦鍑�
+- **鏁伴噺**锛氭湭鎻愪緵
+- **鐢ㄩ��**锛氳礋璐h繙绋嬫墦鍑�
+
+### 鎬ц兘鎸囨爣
+
+#### 鎴樻枾宸¤埅瀵煎脊锛圱actical Tomahawk锛�
+- **鏈�澶у皠绋�**锛�1800鍏噷
+- **鎴樻枟閮�**锛氬父瑙勬垬鏂楅儴
+
+#### 鏍囧噯-6瀵煎脊锛圫M-6锛�
+- **鏈�澶у皠绋�**锛�460鍏噷锛堝噯寮归亾妯″紡锛�
+- **璁捐鍒濊》**锛氶槻绌哄寮癸紝鍏峰瀵瑰湴鏀诲嚮鑳藉姏
+
+### 鎴樼暐鎰忎箟
+寮ヨˉ鐏姏绌虹己锛屽寮烘墦鍑婚�夐」
+
+### 閮ㄧ讲璁″垝
+璁″垝閮ㄧ讲鍒颁腑鍥藉懆杈瑰湴鍖�
+
+### 鍛藉悕鐢辨潵
+鍙ゅ笇鑵婄璇濅腑鑳藉彂灏勭伀鐒扮殑铔囧舰宸ㄤ汉
diff --git a/public/config/config.js b/public/config/config.js
index b2abe2e..6e6821a 100644
--- a/public/config/config.js
+++ b/public/config/config.js
@@ -6,7 +6,15 @@
   loadTime: 2000,
   //闂撮殧澶氫箙鍥炴秷鎭�
   retTime: 2000,
-  // apiUrl: "http://192.168.11.41:7777/",
-  apiUrl: "http://106.120.22.26:5367/",
-  imgUrl: webHost + "/image/"
+  apiUrl: "http://192.168.11.41:7777/",
+  // apiUrl: "http://106.120.22.26:5367/",
+  imgUrl: webHost + "/image/",
+  modelBase: {
+    url: "http://106.120.22.26:8013",
+    account: "/account-service",
+    geo: "/geo-service",
+    password: "NIZEHAN",
+    userId: "NIZEHAN",
+    modelLayer: "澶фā鍨嬫祴璇曞簱"
+  }
 };
diff --git a/public/index.html b/public/index.html
index 2bc4e2a..a878fad 100644
--- a/public/index.html
+++ b/public/index.html
@@ -4,7 +4,7 @@
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
- 
+ <link rel="stylesheet" href="./CimSDK/ol/ol.css"></link>
     <link rel="stylesheet" href="./CimSDK/Workers/layui/css/layui.css">
     <link rel="stylesheet" href="./CimSDK/CimSDK.min.css">
     <script src="./CimSDK/Assets/jquery-2.0.3.js"></script>
@@ -12,6 +12,7 @@
     <script src="./CimSDK/CimSDK.min.js"></script>
     <script src="./config/config.js"></script>
     <script src="./config/aiData.js"></script>
+    <script src="./CimSDK/ol/OpenLayers.js"></script>
   </head>
   <body>
     <noscript>
diff --git a/public/test.html b/public/test.html
new file mode 100644
index 0000000..2f930dc
--- /dev/null
+++ b/public/test.html
@@ -0,0 +1,106 @@
+<!-- 鐗堟潈鎵�鏈� 娉扮憺鏁板垱绉戞妧锛堝寳浜級鏈夐檺鍏徃 -->
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>缂撳啿鑼冨洿鍒嗘瀽</title>
+    <link rel="stylesheet" href="./CimSDK/CimSDK.min.css">
+    <link rel="stylesheet" href="./CimSDK/Workers/layui/css/layui.css">
+    <style>
+        .funcBox {
+            position: absolute;
+            top: 30px;
+            padding: 10px;
+            width: 350px;
+            background-color: rgba(0, 0, 0, .7);
+            border-radius: 4px;
+            left: 20px;
+            color: #fff;
+        }
+
+        .layui-form-item {
+            text-align: center;
+        }
+
+        .layui-form-label {
+            width: unset !important;
+            padding: 9px 0px !important;
+        }
+
+        .layui-input-block {
+            margin-left: 90px !important;
+        }
+    </style>
+</head>
+
+<body>
+    <div id="sdkContainer"></div>
+    <!--鎸夐挳-->
+    <div class="funcBox layui-form">
+        <div class="layui-form-item">
+            <label class="layui-form-label">缂撳啿鑼冨洿(km)</label>
+            <div class="layui-input-block">
+                <input type="number" id="buff" placeholder="璇疯緭鍏ョ紦鍐茶寖鍥�(km)" value="1" class="layui-input">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <div class="layui-input-block">
+                <button class="layui-btn" onclick="add3()">闈�</button>
+                <button class="layui-btn" onclick="clear1()">娓呴櫎</button>
+            </div>
+        </div>
+    </div>
+    <script src="./CimSDK/Workers/jquery-3.5.0.min.js"></script>
+    <script src="./CimSDK/CimSDK.min.js"></script>
+    <script src="./CimSDK/Workers/layui/layui.js"></script>
+    <script>
+        window.earthCtrl = new SmartEarth.EarthCtrl("sdkContainer");
+        window.Viewer = earthCtrl.viewer;
+        earthCtrl.camera.stop(); //鍙栨秷椋炶鐘舵��
+        earthCtrl.camera.jumpTo({      //璺宠浆瑙嗚
+            destination: new SmartEarth.Cesium.Cartesian3.fromDegrees(116, 39, 500000)
+        });
+    
+        let buffRadius = 1;
+        let Buffers = []
+
+        $('#buff').on('input propertychange', function (event) {
+            let num = $(this).val();
+            if (num < 0) {
+                layui.layer.msg('璇疯緭鍏ヤ竴涓ぇ浜�0鐨勬暟鍊�');
+                $(".layui-btn").prop('disabled', true);
+            } else {
+                buffRadius = num;
+                $(".layui-btn").prop('disabled', false);
+            }
+        });
+
+        //鐢婚潰
+        function add3() {
+            buff = earthCtrl.Analysis.DrawPolygonBuffer(0, function () {
+                let area = buff.positions.flat().join(" ");
+                console.log(area);
+                let url = `https://skyzt.bda.gov.cn/gisserver/wfsserver/liushisijiayuanqu1012?format=json&version=1.3.0&request=GetFeature&typename=64瀹跺洯鍖哄熀鏈儏鍐佃寖鍥碿oordinates10092&propertyname=*&filter=<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:Intersects><ogc:PropertyName /><gml:Polygon xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326"><gml:exterior><gml:LinearRing><gml:posList>${area}</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></ogc:Intersects></ogc:Filter>`
+                $.get(url, function (result) {
+                    console.log(result)
+                });
+
+            })
+
+        }
+ 
+
+        //鍔犺浇ArcGIS鍦ㄧ嚎褰卞儚鏈嶅姟
+        ArcgisImageryLayer();
+        function ArcgisImageryLayer() {
+            const layer = earthCtrl.factory.createImageryLayer({
+                sourceType: "arcgis",
+                url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
+            });
+        }
+    </script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
index 49dfd4c..28ee1f1 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -41,6 +41,8 @@
 .container {
   width: 100%;
   height: 100%;
+  padding: 39px 40px 39px 0px !important;
+
   position: absolute;
 }
 .leftMenu {
@@ -51,6 +53,7 @@
   width: calc(100% - 62px);
   height: 100%;
   padding: 0px !important;
+  border-radius:5px !important ;
 }
 .contBox {
   width: 100%;
diff --git a/src/api/api.js b/src/api/api.js
index b5f3596..2bfbdeb 100644
--- a/src/api/api.js
+++ b/src/api/api.js
@@ -2,5 +2,11 @@
 export function getAIMessage(params) {
   //璇锋眰鍦板潃
   // return service.get("/api/v1/chat?message=" + params);
-  return service.get("/intention?message=" + params);
+  // return service.get("/intention?message=" + params);
+  // return service.get("/api/v1/mix?message=" + params);
+  return service.get("/api/v1/intent?message=" + params);
 }
+
+export function getV1Fastgpt(params){
+  return service.get("/api/v1/fastgpt?message=" + params);
+}
\ No newline at end of file
diff --git a/src/api/modelBase.js b/src/api/modelBase.js
new file mode 100644
index 0000000..793cd10
--- /dev/null
+++ b/src/api/modelBase.js
@@ -0,0 +1,18 @@
+//#endregion
+
+import modelAccount from "../utils/modelAccount.js";
+// 
+import modelGeo from "../utils/modelGeo.js";
+
+export function getPublickey(params) {
+  return modelAccount.get("/security/publickey", params);
+}
+export function getSecurityLogin(params) {
+  return modelAccount.post("/security/login", params);
+}
+
+export function getListCanview(params) {
+  return modelGeo.post("/entitydb/list/canview", params);
+}
+
+
diff --git a/src/assets/js/map/mapConfig.js b/src/assets/js/map/mapConfig.js
index 6f03c8a..e878070 100644
--- a/src/assets/js/map/mapConfig.js
+++ b/src/assets/js/map/mapConfig.js
@@ -1,6 +1,13 @@
+import * as turf from "@turf/turf";
 const mapConfig = {
   flyToImageryLayer(res) {
     earthCtrl.userScene.flyTo(res);
+  },
+  setPointToCrical(lon, lat, distance) {
+    const radius = distance ? distance : 100;
+    var point = turf.point([lon, lat]);
+    var buffered = turf.buffer(point, radius, { units: "miles", steps: 64 });
+    return buffered;
   }
 };
 export default mapConfig;
diff --git a/src/assets/js/map/mapInfo.js b/src/assets/js/map/mapInfo.js
index 66a6453..eede9a4 100644
--- a/src/assets/js/map/mapInfo.js
+++ b/src/assets/js/map/mapInfo.js
@@ -3,16 +3,36 @@
 const mapInfo = {
   init(res) {
     switch (res) {
-      case "flyToImageryLayer":
+      case "flyto-tool":
         this.setFlyToImageryLayer();
+        break;
+      case "addWeapons":
+        this.setAddWeapons();
+        break;
+      case "EntityQueryInput":
+        this.setEntityQueryInput();
         break;
     }
   },
   setFlyToImageryLayer() {
     mapServer.addServer({
       sourceType: "tms",
-      url: "http://test.smartearth.cn:9037/gisserver/tmsserver/SubicBayArea"
+      url: "http://192.168.11.41:9001/gisserver/tmsserver/SubicBayArea"
     });
-  }
+  },
+  setAddWeapons() {
+    mapServer.addServer({
+      sourceType: "wfs",
+      url: "https://cim.smartearth.cn/geoserver/PolygonFeature/ows",
+      layer: "PolygonFeature:Weapon",
+      outlineColor: "#ff0000",
+      alpha: 0
+    });
+  },
+  setEntityQueryInput(){
+    earthCtrl.camera.flyTo(120.27012029869624, 14.794107005718674, 2921.642108119077, 0, -90, 0, 2);
+    // earthCtrl.camera.flyTo(120.298738742, 14.80902903, 2921.642108119077, 0, -90, 0, 2);
+  },
+ 
 };
 export default mapInfo;
diff --git a/src/assets/js/map/mapServer.js b/src/assets/js/map/mapServer.js
index ab6694a..5f00d01 100644
--- a/src/assets/js/map/mapServer.js
+++ b/src/assets/js/map/mapServer.js
@@ -1,11 +1,12 @@
 import mapConfig from "./mapConfig";
-
+var tileset;
 const mapServer = {
   listData: [],
   sourceType: null,
+  tileContent: null,
   init() {},
   addServer(res) {
-    this.remoServer(res);
+    // this.remoServer(res);
     this.sourceType = res.sourceType;
 
     switch (this.sourceType) {
@@ -18,6 +19,12 @@
       case "tms":
         this.addTmsLayer(res);
         break;
+      case "wfs":
+        this.addWfsLayer(res);
+        break;
+      case "Tileset":
+        this.addTileSetLayer(res);
+        break;
     }
   },
   remoServer(res) {
@@ -29,17 +36,56 @@
       }
     }
   },
+  addTileSetLayer(res) {
+    const tileset = new Cesium.Cesium3DTileset({
+      url: res.url
+    });
+
+    Viewer.scene.primitives.add(tileset);
+    // const that = this;
+    // tileset.readyPromise.then((tileObj) => {
+    //   tileObj.tileVisible.addEventListener((tile) => {
+    //     if (Cesium.defined(tile.content)) {
+    //               var featuresLength = tile.content.featuresLength;
+    //               for (var i = 0; i < featuresLength; i++) {
+    //                 var feature = tile.content.getFeature(i);
+    //                 // console.log(feature.getProperty("id"));
+    //               }
+    //     }
+    //   });
+    // });
+    this.listData.push({
+      layer: tileset,
+      type: this.sourceType
+    });
+  },
+  traverseVisibleTiles() {
+    tileset.readyPromise.then((tileset) => {
+      tileset.tileVisibility.forEachTile(function (tile) {});
+    });
+  },
+  addWfsLayer(res) {
+    const layer = earthCtrl.factory.createWfsLayer("polygon", {
+      urls: res.url,
+      layer: res.layer,
+      outlineColor: res.outlineColor,
+      alpha: res.alpha
+    });
+    this.listData.push({
+      layer: layer,
+      type: this.sourceType
+    });
+  },
   addTmsLayer(res) {
-    var layer = earthCtrl.factory.createImageryLayer({
+    const layer = earthCtrl.factory.createImageryLayer({
       sourceType: "tms",
-      // url: "http://test.smartearth.cn:9037/gisserver/tmsserver/SubicBayArea"
+
       url: res.url
     });
     this.listData.push({
       layer: layer,
       type: this.sourceType
     });
-    mapConfig.flyToImageryLayer(layer);
   },
   addArcgisServer(res) {
     const layer = earthCtrl.factory.createImageryLayer({
diff --git a/src/assets/js/map/mapView.js b/src/assets/js/map/mapView.js
index a73a0d2..cb1b052 100644
--- a/src/assets/js/map/mapView.js
+++ b/src/assets/js/map/mapView.js
@@ -1,6 +1,12 @@
+import axios from "axios";
+import mapConfig from "./mapConfig";
 import mapServer from "./mapServer";
+import modelLayer from "./modelLayer";
+import wfsConfig from "./wfsConfig";
+import mapInfo from "./mapInfo";
 
 const mapViewer = {
+  configTooles: null,
   initMap() {
     window.earthCtrl = new SmartEarth.EarthCtrl("sdkContainer", {
       // 闅愯棌榛樿搴曞浘
@@ -14,18 +20,165 @@
     Viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString("#A9A9A9"); //璁剧疆鍦扮悆棰滆壊
     // 娓呯┖榛樿搴曞浘
     Viewer.imageryLayers.removeAll();
-   
+
     mapServer.addServer({
       sourceType: "arcgis",
       url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
     });
-   
-    
-    // mapServer.addServer({
-    //   sourceType: "geoserver",
-    //   url: "https://cim.smartearth.cn/geoserver/PolygonFeature/ows",
-    //   layer: "PolygonFeature:GeoEntity"
+    // earthCtrl.factory.createTerrainLayer({
+    //   sourceType: "ctb",
+    //   url: "https://tiles1.geovisearth.com/base/v1/terrain?token=486dac3bec56d7d7c2a581c150be2bd937462f1e8f3bc9c78b5658b396122405"
     // });
+
+    mapServer.addServer({
+      sourceType: "tms",
+      url: "http://192.168.11.41:9001/gisserver/tmsserver/SubicBayArea"
+    });
+    mapInfo.setEntityQueryInput();
+
+    const url =
+      "http://103.135.160.14:9038/gisserver/wfsserver/SubicBayAreaVector_wfs?version=1.1.0&request=GetFeature&format=json&typename=GeoEntity";
+    const areaBox =
+      "120.28915940000012 14.809144082000034 120.28915940000012 14.837205054000039 120.31165600000003 14.837205054000039 120.31165600000003 14.809144082000034 120.28915940000012 14.809144082000034";
+
+    Cesium.GeoJsonDataSource.load(url, {
+      stroke: Cesium.Color.fromCssColorString("#FFF0F5"), //澶氳竟褰㈡垨绾跨殑棰滆壊
+      fill: Cesium.Color.fromCssColorString("#FFF0F5"), //澶氳竟褰㈡垨绾跨殑棰滆壊
+      strokeWidth: 1, //澶氳竟褰㈡垨绾� 瀹藉害
+      clampToGround: true //澶氳竟褰㈡垨绾� 鍥哄畾鍦ㄥ湴闈笂true/false
+    }).then((dataSource) => {
+      const entities = dataSource.entities.values;
+      entities.map((item) => {
+        item.polygon.heightReference =
+          Cesium.HeightReference.RELATIVE_TO_GROUND; // 璐村湴
+        item.polygon.height = 0; // 璺濆湴楂樺害0绫�
+        item.polygon.extrudedHeightReference =
+          Cesium.HeightReference.RELATIVE_TO_GROUND; //鎷変几
+        item.polygon.extrudedHeight = item.properties["ELEVATION"]; // 鎷変几楂樺害
+
+        var polyPositions = item.polygon.hierarchy.getValue().positions;
+        var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center; //涓績鐐�
+        polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);
+        item.position = polyCenter;
+
+        item.label = {
+          //鏂囧瓧鏍囩
+          text: "",
+          font: "500 20px Helvetica", // 15pt monospace
+          scale: 1,
+          style: Cesium.LabelStyle.FILL,
+          fillColor: Cesium.Color.WHITE,
+
+          eyeOffset: new Cesium.Cartesian3(
+            0.0,
+            item.polygon.extrudedHeight + 1,
+            -(item.polygon.extrudedHeight + 1)
+          ),
+
+          verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+          showBackground: true,
+          distanceDisplayCondition: new Cesium.DistanceDisplayCondition(50.0, 500.0),
+          // heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+          // disableDepthTestDistance: Number.POSITIVE_INFINITY,
+         backgroundColor: new Cesium.Color(26 / 255, 196 / 255, 228 / 255, 1.0)   //鑳屾櫙椤旇壊
+        };
+      });
+      Viewer.dataSources.add(dataSource);
+      this.setQueryProperty(dataSource, "鍐涗簨鐩爣");
+      this.getQuery(url, areaBox, dataSource);
+    });
+  },
+  setQueryProperty(layer, property) {
+    const entity = layer.entities.values;
+    entity.filter((rs) => {
+      if (rs.properties["TargetType"]._value == property) {
+        rs.polygon.material = Cesium.Color.RED;
+        // 鏄剧ず鏂囧瓧鏍囩
+        rs.label.text = rs.properties["TYPE"];
+      }
+    });
+  },
+  getQuery(url, area, layer) {
+    axios
+      .get(url, {
+        params: {
+          version: "1.3.0",
+          request: "GetFeature",
+          typename: "GeoEntity",
+          propertyname: "*",
+          format: "json",
+          filter: `<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:Intersects><ogc:PropertyName /><gml:Polygon xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326"><gml:exterior><gml:LinearRing><gml:posList>${area}</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></ogc:Intersects></ogc:Filter>`
+        }
+      })
+      .then((res) => {
+        const obj = res.data.features;
+
+        // const dataSource = Viewer.dataSources._dataSources.filter((item) => {
+        //   if (item.name == layer) {
+        //     return item;
+        //   }
+        // });
+        const entity = layer.entities.values;
+        // const entity = dataSource[0].entities.values;
+        obj.filter((item) => {
+          entity.filter((rs) => {
+            if (item.id == rs.id) {
+              rs.polygon.material = Cesium.Color.CORNFLOWERBLUE;
+            }
+          });
+        });
+      });
+  },
+  getLayerModelCount(res) {
+    axios
+      .post(
+        res.url,
+        {
+          dbid: res.dbid,
+          geometry: res.geometry,
+          layerid: res.layerid,
+          returnCountOnly: res.containCount,
+          token: res.token
+        },
+        {
+          headers: {
+            Authorization: res.token,
+            "Content-Type": res.contentType
+          }
+        }
+      )
+      .then((response) => {
+        if (response.status === 200) {
+          this.getLayerModelList(res, response.data.data);
+        } else {
+          this.getLayerModelList(res, 200);
+        }
+      });
+  },
+  getLayerModelList(res, count) {
+    axios
+      .post(
+        res.url,
+        {
+          dbid: res.dbid,
+          geometry: res.geometry,
+          layerid: res.layerid,
+          containCount: res.containCount,
+          token: res.token,
+          count: count,
+          start: 1,
+          outfields: res.outfields
+        },
+        {
+          headers: {
+            Authorization: res.token,
+            "Content-Type": res.contentType
+          }
+        }
+      )
+      .then((response) => {
+        console.log("List", response);
+      });
   }
 };
 export default mapViewer;
diff --git a/src/assets/js/map/modelLayer.js b/src/assets/js/map/modelLayer.js
new file mode 100644
index 0000000..dfd6536
--- /dev/null
+++ b/src/assets/js/map/modelLayer.js
@@ -0,0 +1,199 @@
+import {
+  getPublickey,
+  getSecurityLogin,
+  getListCanview
+} from "../../../api/modelBase.js";
+import JSEncrypt from "jsencrypt";
+import store from "../../../store/index.js";
+import { getToken, setToken } from "../../../utils/auth.js";
+import mapConfig from "./mapConfig.js";
+import axios from "axios";
+import mapServer from "./mapServer.js";
+
+const modelLayer = {
+  modelBase: null,
+  dbid: null,
+  geom: null,
+  // 鑾峰彇Publickey
+  init() {
+    this.modelBase = config.modelBase;
+    getPublickey().then((response) => {
+      const password = this.modelBase.password;
+      const userId = this.modelBase.userId;
+      const publickey = response.data;
+      const encrypt = new JSEncrypt();
+      encrypt.setPublicKey(publickey);
+      let encrypted = encrypt.encrypt(password.substring(0, 50)) + "";
+      let submit = {
+        userid: userId,
+        password: encrypted
+      };
+      this.setLoginsubmit(submit);
+    });
+  },
+  // 鑾峰彇Token
+  setLoginsubmit(res) {
+    // const token = getToken();
+    // if (token) {
+    getSecurityLogin(res).then((response) => {
+      const val = response.data.token;
+      setToken(val);
+      this.getModelLayerList();
+    });
+    // } else {
+    //   this.getModelLayerList( );
+    // }
+  },
+  // 鑾峰彇鍒楄〃
+  getModelLayerList() {
+    const token = getToken();
+    getListCanview({ token: token }).then((response) => {
+      const data = response.data;
+      const obj = data.filter((item) => {
+        if (item.name == this.modelBase.modelLayer) {
+          return item;
+        }
+      });
+      if (obj.length > 0) {
+        this.dbid = obj[0].dbid;
+      }
+    });
+    this.setLayerQuery();
+  },
+  setLayerQuery() {
+    const token = getToken();
+    this.geom = mapConfig.setPointToCrical(120.27, 14.79, null);
+
+    const obj = {
+      type: "FeatureCollection",
+      totalFeatures: 1086,
+      features: [this.geom]
+    };
+    // earthCtrl.factory.createFeatureLayer({
+    //   sourceType: "geojson",
+    //   url: obj,
+    //   style: {
+    //     layerType: "polygon",
+    //     material: new SmartEarth.Cesium.ColorMaterialProperty(
+    //       new SmartEarth.Cesium.Color.fromCssColorString("#00f")
+    //     ),
+    //     outlineColor: new SmartEarth.Cesium.Color.fromCssColorString("#fff"),
+    //     outline: true
+    //   }
+    // });
+    this.configTooles = {
+      url:
+        config.modelBase.url +
+        config.modelBase.geo +
+        "/entitydbdata/query/entity",
+      layerid: "432a7d4f-b136-4649-91a3-52709db9c3ef",
+      dbid: "a02c1f922bd64a0ea5979dbebc60d337",
+      geometry: this.geom.geometry,
+      start: 1,
+      token: token,
+      outfields: "*",
+      containCount: true,
+      contentType: "application/x-www-form-urlencoded"
+    };
+    this.getLayerModelCount(this.configTooles);
+  },
+  getLayerModelCount(res) {
+    axios
+      .post(
+        res.url,
+        {
+          dbid: res.dbid,
+          geometry: res.geometry,
+          layerid: res.layerid,
+          returnCountOnly: res.containCount,
+          token: res.token
+        },
+        {
+          headers: {
+            Authorization: res.token,
+            "Content-Type": res.contentType
+          }
+        }
+      )
+      .then((response) => {
+        if (response.status === 200) {
+          this.getLayerModelList(res, response.data.data);
+        } else {
+          this.getLayerModelList(res, 200);
+        }
+      });
+  },
+  getLayerModelList(res, count) {
+    const that = this;
+    axios
+      .post(
+        res.url,
+        {
+          dbid: res.dbid,
+          geometry: res.geometry,
+          layerid: res.layerid,
+          containCount: res.containCount,
+          token: res.token,
+          count: count,
+          start: 1,
+          outfields: res.outfields
+        },
+        {
+          headers: {
+            Authorization: res.token,
+            "Content-Type": res.contentType
+          }
+        }
+      )
+      .then((response) => {
+        console.log("List", response);
+        that.setLayerFilter(response.data.data.items);
+      });
+  },
+  setLayerFilter(rs) {
+    const obj = mapServer.listData.filter((item) => {
+      if (item.type == "Tileset") {
+        return item;
+      }
+    });
+    if (!obj) return;
+    const tileset = obj[0].layer;
+    const a = [];
+    // rs.filter((item) => {
+    //   if (item.targettype == "鍐涗簨鐩爣") {
+    //     console.log(item);
+    //     // a.push(["${id} === '" + item.sid + "'",  "color('#FF0000', 0.5)"]);
+    //   }
+    // });
+    //
+    a.push([
+      // "${id} == '1_b092c0c26de646b984801e29fba37f82'",
+      '${id} == 1_b092c0c26de646b984801e29fba37f82',
+       'color("purple", 0.5)'
+    ]);
+    a.push(["true", "color('#E8F1F2', 0.5)"]);
+    console.log(   tileset);
+    tileset.style = new Cesium.Cesium3DTileStyle({
+      // color: "vec4(1.0,1.0,1.0, 1.0)", // 绾㈣壊
+      color: {
+        conditions: [
+          [
+            // "${id} == '1_b092c0c26de646b984801e29fba37f82'",
+            '${targettype} == "鍐涗簨鐩爣"',
+             'color("purple", 0.5)'
+          ]
+        ]
+      }
+    });
+    //   window.Cesium.when(tileset.readyPromise, function(tileset) {
+    //     var tilesetId = tileset.id;
+    //     console.log('Tileset ID: ' + tilesetId);
+    // });
+    //   tileset.readyPromise.then( (item)=> {
+    //     tileset.tileVisible.addEventListener( (tile)=> {
+    //       console.log(tile);
+    //     })
+    //   })
+  }
+};
+export default modelLayer;
diff --git a/src/assets/js/map/wfsConfig.js b/src/assets/js/map/wfsConfig.js
new file mode 100644
index 0000000..d5c2702
--- /dev/null
+++ b/src/assets/js/map/wfsConfig.js
@@ -0,0 +1,94 @@
+const wfsConfig = {
+  url: "",
+  layer: "",
+  color: "",
+  property: "",
+  keyVal: "",
+  polygonLayer: null,
+  wfsLayer: null,
+  //   鍙傛暟鍒濆鍖�
+  Init() {
+    this.url =
+      "https://cim.smartearth.cn/SEserver/wfsserver/SubicBayAreaVector_wfs";
+    this.layer = "GeoEntity";
+    this.color = "#f40824";
+    this.keyVal = "甯傛斂";
+    this.setPolyGonStart();
+  },
+  //wfsLayer鍒濆鍖�
+  setPolyGonStart() {
+    this.polygonLayer = earthCtrl.factory.createWfsLayer("polygon", {
+      urls: this.url,
+      layer: this.layer,
+      color: this.color,
+      extrudedHeight: 100, // 鎷変几楂樺害锛屾棤鎷変几楂樺害鍒欎负璐村湴闈�
+      extrudedkey: "ELEVATION"
+    });
+    this.setWfsLayerStart();
+  },
+  //wfsLayer鍒濆鍖�
+  setWfsLayerStart() {
+    this.wfsLayer = new OpenLayers.Protocol.WFS({
+      version: "1.1.0",
+      url: this.url,
+      layer: this.layer
+    });
+    this.setLayerQuery();
+  },
+  setLayerQuery() {
+    const filter = new OpenLayers.Filter.Comparison({
+      type: OpenLayers.Filter.Comparison.EQUAL_TO,
+      property: "SJFL",
+      value: this.keyVals
+    });
+    var that = this;
+    console.log(this.wfsLayer);
+    that.wfsLayer.read({
+      filter: filter,
+      callback: function (result) {
+        console.log(1231,result);
+        if (result.success() && result.features.length > 0) {
+          var feature = result.features[0];
+          // var lon = Number(feature.attributes.lon);
+          // var lat = Number(feature.attributes.lat);
+          that.setLayerQuery2(feature);
+        }
+      }
+    });
+  },
+  setLayerQuery2() {
+    var that = this;
+    var wfs2 = new OpenLayers.Protocol.WFS({
+      version: "1.1.0",
+      url: this.url,
+      featureType: this.layer,
+      geometryName: "TargetType"
+    });
+    wfs2.read({
+      filter: new OpenLayers.Filter.Spatial({
+        type: OpenLayers.Filter.Spatial.DWITHIN,
+        value: feature.geometry,
+        distance: 0.1,
+        distanceUnits: "km"
+      }),
+      callback: function (result) {
+        console.log('w1223',result);
+        if (result.success()) {
+          if (result.features && result.features.length) {
+            that.addFeaturesToMap(result.features);
+          }
+        }
+      }
+    });
+  },
+  addFeaturesToMap(features) {
+    const highlightColor = Cesium.Color.YELLOW.withAlpha(0.5);
+    const highlightIds = [];
+    features.forEach((feature) => {
+      const id = feature.attributes.OBJECTID;
+      highlightIds.push(id);
+    });
+    this.polygonLayer.setHighlightColor(highlightIds, highlightColor);
+  }
+};
+export default wfsConfig;
diff --git a/src/assets/js/msg/msgData.js b/src/assets/js/msg/msgData.js
index 4503e46..cd40b06 100644
--- a/src/assets/js/msg/msgData.js
+++ b/src/assets/js/msg/msgData.js
@@ -3,6 +3,20 @@
 const msgData = {
   mine: null,
   getRole(type, msg) {
+    if (type == "markDown") {
+      return {
+        msg: {
+          date: this.getDate(),
+          text: { text: msg },
+          mine: false,
+          name: "[GeoAgent]",
+          img: this.getImgUrl("ai"),
+          file: null,
+          fileList: [],
+          markDown: true
+        }
+      };
+    }
     const imgurl = this.getImgUrl(type);
     var roleMsg = this.getTest(msg);
     this.mine = this.getMine(type);
@@ -177,12 +191,43 @@
   },
 
   getMsg(imgurl, msg) {
+    // const fileContent = [];
+    // const fileMile = null;
+
+    // if (msg.text.indexOf("鑻忔瘮鍏嬫咕") > -1) {
+    //   fileContent = [
+    //     {
+    //       name: "宸叉壘鍒�2浠界浉鍏虫枃妗�",
+    //       url: "testUrl"
+    //     },
+    //     {
+    //       name: "Markdown.md",
+    //       url: "http://192.168.11.66:12316/Markdown.md"
+    //     },
+    //     {
+    //       name: "Markdown.md",
+    //       url: "http://192.168.11.66:12316/Markdown1.md"
+    //     }
+    //   ];
+    //   fileMile = fileContent[0].url;
+    //   return {
+    //     date: this.getDate(),
+    //     text: msg,
+    //     mine: false,
+    //     name: this.mine ? "[GeoAgent]" : "[鎮╙",
+    //     img: imgurl,
+    //     file: fileMile,
+    //     fileList: fileConten,
+    //     markDown: false
+    //   };
+    // }
     return {
       date: this.getDate(),
       text: msg,
       mine: false,
       name: this.mine ? "[GeoAgent]" : "[鎮╙",
-      img: imgurl
+      img: imgurl,
+      markDown: false
     };
   },
   getDate() {
diff --git a/src/components/Chat/chatList.vue b/src/components/Chat/chatList.vue
index b1e8e3d..22c0501 100644
--- a/src/components/Chat/chatList.vue
+++ b/src/components/Chat/chatList.vue
@@ -15,16 +15,38 @@
             <div class="web__main_Date">
               <div>
                 <cite>
-                  <div>
+                  <div style="display: flex">
                     {{ item.name }}
+
+                    <div style="margin-left: 10px" v-show="item.file">
+                      <el-select
+                        @change="(val) => setFileChange(val)"
+                        v-model="item.file"
+                        size="mini"
+                      >
+                        <el-option
+                          v-for="(res, key) in item.fileList"
+                          :key="key"
+                          :label="res.name"
+                          :value="res.url"
+                        >
+                        </el-option>
+                      </el-select>
+                    </div>
                   </div>
+
                   <div>
                     {{ item.date }}
                   </div>
                 </cite>
               </div>
-
-              <div class="web__main-text">
+              <div v-show="item.markDown == true" class="web__main-text">
+                <VueMarkdown
+                  class="web_Main_markDown"
+                  :source="item.text.text"
+                ></VueMarkdown>
+              </div>
+              <div v-show="item.markDown == false" class="web__main-text">
                 <div class="web__main-arrow"></div>
                 <span
                   v-html="handleDetail(item.text.text)"
@@ -42,11 +64,6 @@
               </div>
             </div>
           </div>
-          <!-- <div class="web__main-user">
-
-           
-          </div> -->
-          <!--  -->
         </div>
       </div>
     </div>
@@ -77,13 +94,24 @@
 <script>
 import emojiParser from "wechat-emoji-parser";
 
+import VueMarkdown from "vue-markdown";
+
+import axios from "axios";
+import bus from "../../assets/js/bus";
 export default {
   name: "JwChat_list",
+  arr: [],
+  components: {
+    VueMarkdown
+  },
   filters: {
     setWidth(value) {
       let width = value;
       if (`${value}`.match(/^\d+$/)) {
-        width = value + "px";
+        width = value-30 + "px";
+      }
+      if(width=="100vh"){
+        return "99vh"
       }
       return width;
     }
@@ -120,6 +148,14 @@
     }
   },
   methods: {
+    setFileChange(res) {
+      if (res == "testUrl") return;
+      axios.get(res).then((response) => {
+        if (response.status == 200) {
+          bus.$emit("setInsertMarkDown", response.data);
+        }
+      });
+    },
     loding(index) {
       const size = this.list.length;
       if (index == size - 1) {
@@ -254,6 +290,11 @@
     @css { * }zoom: 1; */
   vertical-align: top;
   font-size: 20px;
+  background: #555555;
+  padding: 10px !important;
+  border-radius:10px !important;
+  margin-top:10px ;
+
 }
 
 .web__main-user {
@@ -309,7 +350,7 @@
   word-break: break-all;
 }
 .web__main_content {
-  width: 100%;
+  width:  calc(100% - 50px);
   padding: 10px 0px;
   display: flex;
 }
@@ -487,3 +528,36 @@
   }
 }
 </style>
+
+
+<style >
+ .web_Main_markDown h1 {
+  line-height: 30px !important;
+  font-size: 20px !important;
+}
+.web_Main_markDown h2  {
+  line-height: 25px !important;
+  font-size: 18px !important;
+  margin-left: 10px;
+}
+.web_Main_markDown h3 {
+  line-height: 25px !important;
+  font-size: 18px !important;
+  margin-left: 10px;
+}
+.web_Main_markDown li {
+  line-height: 20px !important;
+  font-size: 16px !important;
+  margin-left: 20px;
+}
+.web_Main_markDown p {
+  line-height: 20px !important;
+  font-size: 16px !important;
+  margin-left: 20px;
+}
+.web_Main_markDown   {
+   background: #555555;
+   padding: 10px;
+   border-radius: 10px;
+}
+</style>
\ No newline at end of file
diff --git a/src/store/index.js b/src/store/index.js
index 534deaf..518455c 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -1,22 +1,17 @@
-import Vue from 'vue';
-import Vuex from 'vuex';
- 
- 
+import Vue from "vue";
+import Vuex from "vuex";
+
 Vue.use(Vuex);
 
 export default new Vuex.Store({
   state: {
-    setMenuFlag:false,
-    setMsgData:null,
-    setScreenFlag:true,
- 
-    erroInfoMessage:null,
+    setMenuFlag: false,
+    setMsgData: null,
+    setScreenFlag: true,
+    erroInfoMessage: null,
+    token: null
   },
-  mutations: {
-    
-  },
-  actions: {
-    
-  },
-  modules: {},
+  mutations: {},
+  actions: {},
+  modules: {}
 });
diff --git a/src/utils/auth.js b/src/utils/auth.js
new file mode 100644
index 0000000..77e87e6
--- /dev/null
+++ b/src/utils/auth.js
@@ -0,0 +1,12 @@
+const TokenKey = "Admin-Token";
+
+export function setToken(token) {
+  return window.sessionStorage.setItem(TokenKey, token);
+}
+export function getToken() {
+
+    return window.sessionStorage.getItem(TokenKey);
+  }
+export function removeToken() {
+  return window.sessionStorage.removeItem(TokenKey);
+}
diff --git a/src/utils/modelAccount.js b/src/utils/modelAccount.js
new file mode 100644
index 0000000..547386a
--- /dev/null
+++ b/src/utils/modelAccount.js
@@ -0,0 +1,41 @@
+import axios from "axios";
+
+// arcgis 鏈嶅姟璇锋眰
+// 鍒涘缓axios瀹炰緥
+const mode_base = config.modelBase;
+
+const modelAccount = axios.create({
+  baseURL: mode_base.url + mode_base.account, // api鐨刡ase_url
+  timeout: -1 // 璇锋眰瓒呮椂鏃堕棿
+});
+
+// 璇锋眰鎷︽埅鍣�
+modelAccount.interceptors.request.use(
+  (config) => {
+    // 鍙互鍦ㄨ繖閲屾坊鍔犺姹傚ご绛変俊鎭�
+    return config;
+  },
+  (error) => {
+    // 璇锋眰閿欒澶勭悊
+    console.log(error); // for debug
+    Promise.reject(error);
+  }
+);
+
+// 鍝嶅簲鎷︽埅鍣�
+modelAccount.interceptors.response.use(
+  (response) => {
+    // 瀵瑰搷搴旀暟鎹仛澶勭悊锛屼緥濡傚彧杩斿洖data閮ㄥ垎
+    const res = response.data;
+    // 鏍规嵁杩斿洖鐨勭姸鎬佺爜鍋氱浉搴斿鐞嗭紝渚嬪401鏈巿鏉冪瓑
+    return res;
+  },
+  (error) => {
+    // 鍝嶅簲閿欒澶勭悊
+    // console.log('err' + error.response.status); // for debug
+
+    return Promise.reject(error);
+  }
+);
+
+export default modelAccount;
diff --git a/src/utils/modelGeo.js b/src/utils/modelGeo.js
new file mode 100644
index 0000000..7b0ed02
--- /dev/null
+++ b/src/utils/modelGeo.js
@@ -0,0 +1,49 @@
+import axios from "axios";
+import store from "../store";
+import { getToken } from "./auth";
+
+// arcgis 鏈嶅姟璇锋眰
+// 鍒涘缓axios瀹炰緥
+const mode_base = config.modelBase;
+
+const modelGeo = axios.create({
+  baseURL: mode_base.url + mode_base.geo, // api鐨刡ase_url
+  timeout: -1 // 璇锋眰瓒呮椂鏃堕棿
+});
+
+// 璇锋眰鎷︽埅鍣�
+modelGeo.interceptors.request.use(
+  (config) => {
+    // 鍙互鍦ㄨ繖閲屾坊鍔犺姹傚ご绛変俊鎭�
+    let token = getToken();
+    console.log("213",token);
+    if (token) {
+      config.headers["Authorization"] = token;
+    }
+    config.headers["Content-Type"] = "application/json;charset=utf-8";
+    return config;
+  },
+  (error) => {
+    // 璇锋眰閿欒澶勭悊
+    console.log(error); // for debug
+    Promise.reject(error);
+  }
+);
+
+// 鍝嶅簲鎷︽埅鍣�
+modelGeo.interceptors.response.use(
+  (response) => {
+    // 瀵瑰搷搴旀暟鎹仛澶勭悊锛屼緥濡傚彧杩斿洖data閮ㄥ垎
+    const res = response.data;
+    // 鏍规嵁杩斿洖鐨勭姸鎬佺爜鍋氱浉搴斿鐞嗭紝渚嬪401鏈巿鏉冪瓑
+    return res;
+  },
+  (error) => {
+    // 鍝嶅簲閿欒澶勭悊
+    // console.log('err' + error.response.status); // for debug
+
+    return Promise.reject(error);
+  }
+);
+
+export default modelGeo;
diff --git a/src/views/chartView/index.vue b/src/views/chartView/index.vue
index 49426a3..5ccfc60 100644
--- a/src/views/chartView/index.vue
+++ b/src/views/chartView/index.vue
@@ -1,12 +1,7 @@
 <template>
   <div class="chartBox">
     <div class="ChartBox">
-      <JwChat-index
-        :taleList="list"
-        @enter="bindEnter"
-        v-model="inputMsg"
-        :toolConfig="tool"
-      >
+      <JwChat-index :taleList="list" @enter="bindEnter" v-model="inputMsg" :toolConfig="tool">
       </JwChat-index>
     </div>
   </div>
@@ -17,8 +12,9 @@
 import msgData from "../../assets/js/msg/msgData";
 import store from "../../store";
 import bus from "./../../assets/js/bus.js";
-import { getAIMessage } from "../../api/api.js";
+import { getAIMessage, getV1Fastgpt } from "../../api/api.js";
 import mapInfo from "../../assets/js/map/mapInfo.js";
+import axios from "axios";
 export default {
   name: "jwChat",
 
@@ -70,13 +66,24 @@
     }
     // this.setLoading();
     setTimeout(() => {
-      // this.setMsgStart("鎮ㄥソ");
+      this.setMsgStart("鎮ㄥソ");
     }, config.loadTime);
     bus.$on("mapInfo", (res) => {
       if (res) {
         this.setMapInfo(res);
       }
     });
+    bus.$on("setInsertMarkDown", (res) => {
+      if (res) {
+        this.setMarkDownInfo(res);
+      }
+    });
+    // axios.get("http://192.168.11.89:12315/Markdown.md").then((response) => {
+    //     if (response.status == 200) {
+    //       console.log(response);
+    //       this.setMarkDownInfo(response.data);
+    //     }
+    //   });
   },
   methods: {
     bindEnter() {
@@ -89,16 +96,61 @@
       }, 200);
     },
     async setMsgStart(res) {
-      const data = await getAIMessage(res);
-      const message = data.order;
-      if (data.order.args && data.order.args.place) {
-        message = data.order.args.place;
+
+      if (res == "涓夌淮瀹炴櫙") {
+        this.setV1Fastgpt(res)
+      } else {
+        const data = await getAIMessage(res);
+        if (data.status == 200) {
+          if (data.content) {
+            this.getMsg("ai", data.content);
+          } else {
+            this.getMsg("ai", "");
+          }
+          if (data.name) {
+            this.$store.state.setScreenFlag = true;
+            this.$nextTick(() => {
+              setTimeout(() => {
+                mapInfo.init(data.name);
+              }, 1000);
+            });
+          }
+        }
       }
-      this.getMsg("ai", message);
-      if (data.order.name) {
-        mapInfo.init(data.order.name);
-      }
-      
+    },
+    async setV1Fastgpt(res) {
+      const data = await getV1Fastgpt(res);
+      const obj = data.split(/[\n]/)
+      const list_a = [];
+      obj.filter(item => {
+        if (item.indexOf("data: ") > -1) {
+          if (item.indexOf('nodeId') > -1) {
+          } else  if(item.indexOf("content")>-1){
+            const a = JSON.parse(item.split('data: '))
+            console.log(a);
+            // if (a.choices[0].content) {
+            //   console.log(a.choices[0].content);
+            // }
+
+
+
+          }
+
+        }
+      })
+      // console.log(list_a)
+      // const a = val_data[0].split('data: ');
+      // const b = JSON.parse(a[1]);
+      // console.log(b)
+      // const c = b[1].historyPreview.length - 1;
+      // const d = b[1].historyPreview[c].value
+      // this.getMsg("ai", d);
+    },
+    setMarkDownInfo(res) {
+
+      var roleMsg = msgData.getRole("markDown", res);
+      this.list.push(roleMsg.msg);
+      // 
     },
     setMapInfo(res) {
       var msg = "";
@@ -210,6 +262,7 @@
   line-height: 30px;
   border-bottom: 1px solid #c1c1c1;
 }
+
 @keyframes siz {
   from {
     width: 0;
diff --git a/src/views/header/header.vue b/src/views/header/header.vue
index 79d8c22..0d29e7c 100644
--- a/src/views/header/header.vue
+++ b/src/views/header/header.vue
@@ -1,17 +1,18 @@
 <template>
-  <div class="headerBox">
+  <div class="headerBox" v-bind:class="{ 'headerBoxActive': !headSwitch }">
     <div class="headerSwitch">
-      <el-switch
-        v-model="headSwitch"
-        active-color="#FFFFFF"
-        inactive-color="#FFFFFF"
-      >
+      <el-switch v-model="headSwitch" class="headSwitch" v-bind:class="{ 'headSwitchActive': !headSwitch }"
+        active-color="#FFFFFF" inactive-color="#FFFFFF">
       </el-switch>
     </div>
     <div class="headerContent">
-      <div>
+      <div v-show="headSwitch">
         <span>{{ headerLabel }}</span>
-        <img class="haerImg"  src="../../assets/img/header/normal_u42.svg" alt="">
+        <img class="haerImg" src="../../assets/img/header/normal_u42.svg" alt="">
+      </div>
+      <div v-show="!headSwitch">
+        <span>{{ headerLabel1 }}</span>
+        <img class="haerImg" src="../../assets/img/header/normal_u42.svg" alt="">
       </div>
     </div>
   </div>
@@ -22,8 +23,9 @@
 export default {
   data() {
     return {
-      headSwitch: false,
-      headerLabel: "宸茶繛鎺ュ缃�"
+      headSwitch: true,
+      headerLabel: "宸茶繛鎺ュ缃�",
+      headerLabel1: "宸叉柇寮�澶栫綉"
     };
   }
 };
@@ -36,11 +38,20 @@
   background: #63a103;
   display: flex;
 }
+
+.headerBoxActive {
+  width: 100%;
+  height: 100%;
+  background: red;
+  display: flex;
+}
+
 .headerSwitch {
   padding-left: 16px;
   display: flex;
   align-items: center;
 }
+
 .headerContent {
   flex: 1;
   font-family: "寰蒋闆呴粦", sans-serif;
@@ -48,15 +59,20 @@
   display: flex;
   align-items: center;
   justify-content: center;
- 
-}
-.haerImg{
-    width: 15px;
-    height: 17px;
-    margin-left: 10px;
+
 }
 
-/deep/.el-switch__core:after {
+.haerImg {
+  width: 15px;
+  height: 17px;
+  margin-left: 10px;
+}
+
+.headSwitch /deep/.el-switch__core:after {
   background-color: #63a103 !important;
 }
+
+.headSwitchActive /deep/.el-switch__core:after {
+  background-color: red !important;
+}
 </style>
diff --git a/src/views/homePage/index.vue b/src/views/homePage/index.vue
index ddd7f6c..0b0cd92 100644
--- a/src/views/homePage/index.vue
+++ b/src/views/homePage/index.vue
@@ -1,13 +1,24 @@
 <template>
   <div class="mapChart">
     <div class="leftChart">
-      <div
-        :class="
-          $store.state.setScreenFlag ? 'leftContentActive' : 'leftContent'
-        "
-      >
-      <map-chart></map-chart></div>
+      <div class="chartContent">
+        <div class="chartHeader">
+          <chartHeader></chartHeader>
+        </div>
+        <div class="chartBox">
+          <div
+            :class="
+              $store.state.setScreenFlag ? 'leftContentActive' : 'leftContent'
+            "
+          >
+            <map-chart></map-chart>
+          </div>
+        </div>
+      </div>
       <!--  -->
+      <!-- -->
+
+      <!-- </div> -->
     </div>
     <div :class="$store.state.setScreenFlag ? 'rightMapActive' : 'rightMap'">
       <map-view></map-view>
@@ -18,37 +29,61 @@
 <script>
 import mapChart from "./../mapChart/index.vue";
 import mapView from "./../mapView/index.vue";
+import chartHeader from "./../mapChart/chartHeader.vue";
 export default {
   components: {
     mapChart,
-    mapView
+    mapView,
+    chartHeader
   },
   mounted() {}
 };
 </script>
 
-<style>
+<style scoped>
 .mapChart {
   width: 100%;
   height: 100%;
   display: flex;
   overflow: hidden;
+  background: #333333;
 }
 .leftChart {
   flex: 1;
+}
+.chartContent {
+  width: 100%;
+  height: 100%;
+  /* background: skyblue; */
+  display: flex;
+  flex-direction: column;
+}
+.chartHeader {
+  width: 100%;
+  height: 38px;
+}
+.chartContent .chartBox {
+  flex: 1;
   display: flex;
   justify-content: center;
+
+  /* 
+  height: (100% - 38px);
+*/
 }
 .leftContent {
-  width: 50%;
+  width: 40%;
   height: 100%;
   transition: 1s ease-out;
+  display: flex;
+  justify-content: center;
+  background: skyblue;
 }
 .leftContentActive {
   width: 100%;
   height: 100%;
   transition: 1s ease-out;
- 
+  background: skyblue;
 }
 .rightMapActive {
   width: 50%;
diff --git a/src/views/mapChart/index.vue b/src/views/mapChart/index.vue
index 1a0ea48..0158223 100644
--- a/src/views/mapChart/index.vue
+++ b/src/views/mapChart/index.vue
@@ -1,11 +1,11 @@
 <template>
   <div class="mapChart">
-    <div class="chartHeader">
+    <!-- <div class="chartHeader">
       <chart-header></chart-header>
-    </div>
-    <div class="chartContent">
+    </div> -->
+    <div class="chartContent1">
       <div class="chartView">
-        <chart-view></chart-view>
+      <chart-view></chart-view>
       </div>
     </div>
   </div>
@@ -36,7 +36,7 @@
   width: 100%;
   height: 38px;
 }
-.chartContent {
+.chartContent1 {
   flex: 1;
   position: relative;
 }
diff --git a/yarn.lock b/yarn.lock
index beb061e..746f6b9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1,8330 +1,10557 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e"
-  integrity sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=
-  dependencies:
-    "@babel/highlight" "^7.8.3"
-
-"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/compat-data/download/@babel/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c"
-  integrity sha1-BIFVVvyQsMF0q9LAwbuWb6oDamw=
-  dependencies:
-    browserslist "^4.9.1"
-    invariant "^2.2.4"
-    semver "^5.5.0"
-
-"@babel/core@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.9.0.tgz?cache=0&sync_timestamp=1584718830004&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e"
-  integrity sha1-rJd7U4t34TL/cG87ik260JwDxW4=
-  dependencies:
-    "@babel/code-frame" "^7.8.3"
-    "@babel/generator" "^7.9.0"
-    "@babel/helper-module-transforms" "^7.9.0"
-    "@babel/helpers" "^7.9.0"
-    "@babel/parser" "^7.9.0"
-    "@babel/template" "^7.8.6"
-    "@babel/traverse" "^7.9.0"
-    "@babel/types" "^7.9.0"
-    convert-source-map "^1.7.0"
-    debug "^4.1.0"
-    gensync "^1.0.0-beta.1"
-    json5 "^2.1.2"
-    lodash "^4.17.13"
-    resolve "^1.3.2"
-    semver "^5.4.1"
-    source-map "^0.5.0"
-
-"@babel/generator@^7.9.0", "@babel/generator@^7.9.5":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9"
-  integrity sha1-J/CRd0GsxB5uqs7W1o+Ww/qa+vk=
-  dependencies:
-    "@babel/types" "^7.9.5"
-    jsesc "^2.5.1"
-    lodash "^4.17.13"
-    source-map "^0.5.0"
-
-"@babel/helper-annotate-as-pure@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee"
-  integrity sha1-YLwLxlf2Ogkk/5pLSgskoTz03u4=
-  dependencies:
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor%2Fdownload%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503"
-  integrity sha1-yECXpCegYaxWocMOv1S3si0kFQM=
-  dependencies:
-    "@babel/helper-explode-assignable-expression" "^7.8.3"
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-compilation-targets@^7.8.7":
-  version "7.8.7"
-  resolved "https://registry.npm.taobao.org/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde"
-  integrity sha1-2sHuoVnA5L1G4wm1obBKZrU8Hd4=
-  dependencies:
-    "@babel/compat-data" "^7.8.6"
-    browserslist "^4.9.1"
-    invariant "^2.2.4"
-    levenary "^1.1.1"
-    semver "^5.5.0"
-
-"@babel/helper-create-class-features-plugin@^7.8.3":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.9.5.tgz#79753d44017806b481017f24b02fd4113c7106ea"
-  integrity sha1-eXU9RAF4BrSBAX8ksC/UETxxBuo=
-  dependencies:
-    "@babel/helper-function-name" "^7.9.5"
-    "@babel/helper-member-expression-to-functions" "^7.8.3"
-    "@babel/helper-optimise-call-expression" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-replace-supers" "^7.8.6"
-    "@babel/helper-split-export-declaration" "^7.8.3"
-
-"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8":
-  version "7.8.8"
-  resolved "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087"
-  integrity sha1-XYQYC1iPVgt4ZO+u6okkPlgxIIc=
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.8.3"
-    "@babel/helper-regex" "^7.8.3"
-    regexpu-core "^4.7.0"
-
-"@babel/helper-define-map@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-define-map%2Fdownload%2F%40babel%2Fhelper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15"
-  integrity sha1-oGVcrVRRw3YLcm66h18c2PqgLBU=
-  dependencies:
-    "@babel/helper-function-name" "^7.8.3"
-    "@babel/types" "^7.8.3"
-    lodash "^4.17.13"
-
-"@babel/helper-explode-assignable-expression@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-explode-assignable-expression%2Fdownload%2F%40babel%2Fhelper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982"
-  integrity sha1-pyjcW06J4w/C38fQT6KKkwZT+YI=
-  dependencies:
-    "@babel/traverse" "^7.8.3"
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c"
-  integrity sha1-K1OCDTUnUSDhh0qC5aq+E3aSClw=
-  dependencies:
-    "@babel/helper-get-function-arity" "^7.8.3"
-    "@babel/template" "^7.8.3"
-    "@babel/types" "^7.9.5"
-
-"@babel/helper-get-function-arity@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5"
-  integrity sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=
-  dependencies:
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-hoist-variables@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134"
-  integrity sha1-Hb6ba1XXjJtBg/yM3G4wzrg7cTQ=
-  dependencies:
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-member-expression-to-functions@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c"
-  integrity sha1-ZZtxBJjqbB2ZB+DHPyBu7n2twkw=
-  dependencies:
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498"
-  integrity sha1-f+OVibOcAWMxtrjD9EHo8LFBlJg=
-  dependencies:
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-module-transforms@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5"
-  integrity sha1-Q7NN/hWWGRhwfSRzJ0MTiOn+luU=
-  dependencies:
-    "@babel/helper-module-imports" "^7.8.3"
-    "@babel/helper-replace-supers" "^7.8.6"
-    "@babel/helper-simple-access" "^7.8.3"
-    "@babel/helper-split-export-declaration" "^7.8.3"
-    "@babel/template" "^7.8.6"
-    "@babel/types" "^7.9.0"
-    lodash "^4.17.13"
-
-"@babel/helper-optimise-call-expression@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9"
-  integrity sha1-ftBxgT0Jx1KY708giVYAa2ER7Lk=
-  dependencies:
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670"
-  integrity sha1-nqKTvhm6vA9S/4yoizTDYRsghnA=
-
-"@babel/helper-regex@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-regex%2Fdownload%2F%40babel%2Fhelper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965"
-  integrity sha1-E5dyYH1RuT8j7/5yEFsxnSpMaWU=
-  dependencies:
-    lodash "^4.17.13"
-
-"@babel/helper-remap-async-to-generator@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86"
-  integrity sha1-JzxgDYub9QBhQsHjWIfVVcEu3YY=
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.8.3"
-    "@babel/helper-wrap-function" "^7.8.3"
-    "@babel/template" "^7.8.3"
-    "@babel/traverse" "^7.8.3"
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6":
-  version "7.8.6"
-  resolved "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.8.6.tgz?cache=0&sync_timestamp=1582806192406&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8"
-  integrity sha1-Wtp0T9WtcyA78dZ0WaJ9y6Z+/8g=
-  dependencies:
-    "@babel/helper-member-expression-to-functions" "^7.8.3"
-    "@babel/helper-optimise-call-expression" "^7.8.3"
-    "@babel/traverse" "^7.8.6"
-    "@babel/types" "^7.8.6"
-
-"@babel/helper-simple-access@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae"
-  integrity sha1-f4EJkotNq0ZUB2mGr1dSMd62Oa4=
-  dependencies:
-    "@babel/template" "^7.8.3"
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-split-export-declaration@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9"
-  integrity sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=
-  dependencies:
-    "@babel/types" "^7.8.3"
-
-"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80"
-  integrity sha1-kJd6jm+/a0MafcMXUu7iM78FLYA=
-
-"@babel/helper-wrap-function@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610"
-  integrity sha1-nb2yu1XvFKqgH+jJm2Kb1TUthhA=
-  dependencies:
-    "@babel/helper-function-name" "^7.8.3"
-    "@babel/template" "^7.8.3"
-    "@babel/traverse" "^7.8.3"
-    "@babel/types" "^7.8.3"
-
-"@babel/helpers@^7.9.0":
-  version "7.9.2"
-  resolved "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f"
-  integrity sha1-tCqBqBHx5zE7iMuorcZrPZrmwJ8=
-  dependencies:
-    "@babel/template" "^7.8.3"
-    "@babel/traverse" "^7.9.0"
-    "@babel/types" "^7.9.0"
-
-"@babel/highlight@^7.8.3":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079"
-  integrity sha1-TptFzLgreWBycbKXmtgse2gWMHk=
-  dependencies:
-    "@babel/helper-validator-identifier" "^7.9.0"
-    chalk "^2.0.0"
-    js-tokens "^4.0.0"
-
-"@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0":
-  version "7.9.4"
-  resolved "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8"
-  integrity sha1-aKNeawMZu8AURlvkOCgwARPy8ug=
-
-"@babel/plugin-proposal-async-generator-functions@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-async-generator-functions%2Fdownload%2F%40babel%2Fplugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f"
-  integrity sha1-utMpxnCzgliXIbJ1QMfSiGAcbm8=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-remap-async-to-generator" "^7.8.3"
-    "@babel/plugin-syntax-async-generators" "^7.8.0"
-
-"@babel/plugin-proposal-class-properties@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.8.3.tgz?cache=0&sync_timestamp=1578951896490&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e"
-  integrity sha1-XgZlSvXNBLYIkVqtqbKmeIAERk4=
-  dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-proposal-decorators@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e"
-  integrity sha1-IVaGCrZcWr8GjD9nBCGEBBBmVD4=
-  dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/plugin-syntax-decorators" "^7.8.3"
-
-"@babel/plugin-proposal-dynamic-import@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054"
-  integrity sha1-OMT+VVdEgm6X4q6TCw+0zAfmYFQ=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/plugin-syntax-dynamic-import" "^7.8.0"
-
-"@babel/plugin-proposal-json-strings@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-json-strings%2Fdownload%2F%40babel%2Fplugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b"
-  integrity sha1-2lIWsjipi1ih4F1oUhBLEPmnDWs=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/plugin-syntax-json-strings" "^7.8.0"
-
-"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz?cache=0&sync_timestamp=1578952594995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2"
-  integrity sha1-5FciU/3u1lzd7s/as/kor+sv1dI=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
-
-"@babel/plugin-proposal-numeric-separator@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8"
-  integrity sha1-XWdpQJaZ7Js7aGhM2BFs7f+Tutg=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/plugin-syntax-numeric-separator" "^7.8.3"
-
-"@babel/plugin-proposal-object-rest-spread@^7.9.5":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.9.5.tgz?cache=0&sync_timestamp=1586288694061&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.9.5.tgz#3fd65911306d8746014ec0d0cf78f0e39a149116"
-  integrity sha1-P9ZZETBth0YBTsDQz3jw45oUkRY=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
-    "@babel/plugin-transform-parameters" "^7.9.5"
-
-"@babel/plugin-proposal-optional-catch-binding@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-catch-binding%2Fdownload%2F%40babel%2Fplugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9"
-  integrity sha1-ne6WqxZQ7tiGRq6XNMoWesSpxck=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
-
-"@babel/plugin-proposal-optional-chaining@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58"
-  integrity sha1-MdsWsVTDnWuKZFKSRyuYOUwpKlg=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/plugin-syntax-optional-chaining" "^7.8.0"
-
-"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3":
-  version "7.8.8"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.8.8.tgz?cache=0&sync_timestamp=1584039006999&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-unicode-property-regex%2Fdownload%2F%40babel%2Fplugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d"
-  integrity sha1-7jqV6QzcBP6M2S7DJ5+gF9aKDR0=
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.8.8"
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-syntax-async-generators@^7.8.0":
-  version "7.8.4"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
-  integrity sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-decorators@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-decorators%2Fdownload%2F%40babel%2Fplugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda"
-  integrity sha1-jSwVqfGvYksAJflhaCqdU9MAG9o=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
-  integrity sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-json-strings@^7.8.0":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
-  integrity sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.8.3.tgz?cache=0&sync_timestamp=1578952595130&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-jsx%2Fdownload%2F%40babel%2Fplugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94"
-  integrity sha1-UhsGyDxASA8eWLT9M7kuzrHW6pQ=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
-  integrity sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f"
-  integrity sha1-Dj+2Pgm+obEelkZyccgwgAfnxB8=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-syntax-object-rest-spread@^7.8.0":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.8.3.tgz?cache=0&sync_timestamp=1578950070697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
-  integrity sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-optional-catch-binding@^7.8.0":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
-  integrity sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-optional-chaining@^7.8.0":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz?cache=0&sync_timestamp=1578952519472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-optional-chaining%2Fdownload%2F%40babel%2Fplugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
-  integrity sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-top-level-await@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.8.3.tgz?cache=0&sync_timestamp=1578952595485&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-top-level-await%2Fdownload%2F%40babel%2Fplugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391"
-  integrity sha1-Os3s5pXmsTqvV/wpHRqACVDHE5E=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-arrow-functions@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6"
-  integrity sha1-gndsLtDNnhpJlW2uuJYCTJRzuLY=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-async-to-generator@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086"
-  integrity sha1-Qwj60NlAnXHq+5sabuNfnWS2QIY=
-  dependencies:
-    "@babel/helper-module-imports" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-remap-async-to-generator" "^7.8.3"
-
-"@babel/plugin-transform-block-scoped-functions@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3"
-  integrity sha1-Q37sW3mbWFIHIISzrl72boNJ6KM=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-block-scoping@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a"
-  integrity sha1-l9Ndq2aFekN8FmNYuR0JBQyGjzo=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    lodash "^4.17.13"
-
-"@babel/plugin-transform-classes@^7.9.5":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c"
-  integrity sha1-gAWX3biu/CwpPtJ0WcH8yTWibCw=
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.8.3"
-    "@babel/helper-define-map" "^7.8.3"
-    "@babel/helper-function-name" "^7.9.5"
-    "@babel/helper-optimise-call-expression" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-replace-supers" "^7.8.6"
-    "@babel/helper-split-export-declaration" "^7.8.3"
-    globals "^11.1.0"
-
-"@babel/plugin-transform-computed-properties@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b"
-  integrity sha1-ltDSi3985OtbEguy4OlDNDyG+Bs=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-destructuring@^7.9.5":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50"
-  integrity sha1-csl89fOGBK6jq/O5NbDhex23alA=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e"
-  integrity sha1-w8bsXuYSXGmTxcvKINyGIanqem4=
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-duplicate-keys@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1"
-  integrity sha1-jRLfMJqlN/JyiZxWXqF2jihuIfE=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-exponentiation-operator@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7"
-  integrity sha1-WBptf1aXDga/UVYM1k9elHtw17c=
-  dependencies:
-    "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-for-of@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e"
-  integrity sha1-DyYOJ9PinNG7MSjaXnbHYapsEI4=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-function-name@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b"
-  integrity sha1-J5NzyycyKqrWfCaD53bfxHGW7Ys=
-  dependencies:
-    "@babel/helper-function-name" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-literals@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1"
-  integrity sha1-rvI5gj2RmU7Hto5VGTUl1229XcE=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-member-expression-literals@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410"
-  integrity sha1-lj/tS2IKx8v2Apx1VCQCn6OkBBA=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-modules-amd@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.9.0.tgz?cache=0&sync_timestamp=1584718863960&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-amd%2Fdownload%2F%40babel%2Fplugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4"
-  integrity sha1-GXVe5yGRLPW7BMB9UCgK80hO/vQ=
-  dependencies:
-    "@babel/helper-module-transforms" "^7.9.0"
-    "@babel/helper-plugin-utils" "^7.8.3"
-    babel-plugin-dynamic-import-node "^2.3.0"
-
-"@babel/plugin-transform-modules-commonjs@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940"
-  integrity sha1-4+cvTLybSiYOML4OpZvfWjl0iUA=
-  dependencies:
-    "@babel/helper-module-transforms" "^7.9.0"
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-simple-access" "^7.8.3"
-    babel-plugin-dynamic-import-node "^2.3.0"
-
-"@babel/plugin-transform-modules-systemjs@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-systemjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90"
-  integrity sha1-6f1Gopb8keAJtk4H3aqG1vDt65A=
-  dependencies:
-    "@babel/helper-hoist-variables" "^7.8.3"
-    "@babel/helper-module-transforms" "^7.9.0"
-    "@babel/helper-plugin-utils" "^7.8.3"
-    babel-plugin-dynamic-import-node "^2.3.0"
-
-"@babel/plugin-transform-modules-umd@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-umd%2Fdownload%2F%40babel%2Fplugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697"
-  integrity sha1-6Qmsridv7CgPm4IaXzjh8ItIBpc=
-  dependencies:
-    "@babel/helper-module-transforms" "^7.9.0"
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c"
-  integrity sha1-oqcr/6ICrA4tBQav0JOcXsvEjGw=
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.8.3"
-
-"@babel/plugin-transform-new-target@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43"
-  integrity sha1-YMwq5m2FyVq1QOs0urtkNNTHDEM=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-object-super@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725"
-  integrity sha1-67ah56hv+paFi9asAQLWWUQmFyU=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-replace-supers" "^7.8.3"
-
-"@babel/plugin-transform-parameters@^7.9.5":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795"
-  integrity sha1-FzsmV0b14Vsq/lJ+7aZbc2I6B5U=
-  dependencies:
-    "@babel/helper-get-function-arity" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-property-literals@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263"
-  integrity sha1-MxlDANhTnB7SjGKtUIe6OAe5gmM=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-regenerator@^7.8.7":
-  version "7.8.7"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8"
-  integrity sha1-Xkag3KK+4a2ChesFJ+arycN2cvg=
-  dependencies:
-    regenerator-transform "^0.14.2"
-
-"@babel/plugin-transform-reserved-words@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5"
-  integrity sha1-mgY1rE5mXSmxYoN908xQdF398fU=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-runtime@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b"
-  integrity sha1-RUaMCudMwTIE4dOx9M5u6DJYrws=
-  dependencies:
-    "@babel/helper-module-imports" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-    resolve "^1.8.1"
-    semver "^5.5.1"
-
-"@babel/plugin-transform-shorthand-properties@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8"
-  integrity sha1-KFRSFuAjqDLU06EYXtSSvP6sCMg=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-spread@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8"
-  integrity sha1-nI/+gXD9+4ixFOy5ILgvtulf5eg=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-sticky-regex@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.8.3.tgz?cache=0&sync_timestamp=1578963041594&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-sticky-regex%2Fdownload%2F%40babel%2Fplugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100"
-  integrity sha1-vnoSkPgdrnZ0dUUhmeH3bWF1sQA=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-regex" "^7.8.3"
-
-"@babel/plugin-transform-template-literals@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80"
-  integrity sha1-e/pHMrRV6mpDEwrcC6dn7A5AKoA=
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-typeof-symbol@^7.8.4":
-  version "7.8.4"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.8.4.tgz?cache=0&sync_timestamp=1580387843621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412"
-  integrity sha1-7eQGIxXOCq+KZXqSCFjxovNfxBI=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-transform-unicode-regex@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad"
-  integrity sha1-DO8247pz5cVyc+/7GC9GuRoeyq0=
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/preset-env@^7.9.0":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.9.5.tgz?cache=0&sync_timestamp=1586288694473&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-env%2Fdownload%2F%40babel%2Fpreset-env-7.9.5.tgz#8ddc76039bc45b774b19e2fc548f6807d8a8919f"
-  integrity sha1-jdx2A5vEW3dLGeL8VI9oB9iokZ8=
-  dependencies:
-    "@babel/compat-data" "^7.9.0"
-    "@babel/helper-compilation-targets" "^7.8.7"
-    "@babel/helper-module-imports" "^7.8.3"
-    "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/plugin-proposal-async-generator-functions" "^7.8.3"
-    "@babel/plugin-proposal-dynamic-import" "^7.8.3"
-    "@babel/plugin-proposal-json-strings" "^7.8.3"
-    "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3"
-    "@babel/plugin-proposal-numeric-separator" "^7.8.3"
-    "@babel/plugin-proposal-object-rest-spread" "^7.9.5"
-    "@babel/plugin-proposal-optional-catch-binding" "^7.8.3"
-    "@babel/plugin-proposal-optional-chaining" "^7.9.0"
-    "@babel/plugin-proposal-unicode-property-regex" "^7.8.3"
-    "@babel/plugin-syntax-async-generators" "^7.8.0"
-    "@babel/plugin-syntax-dynamic-import" "^7.8.0"
-    "@babel/plugin-syntax-json-strings" "^7.8.0"
-    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
-    "@babel/plugin-syntax-numeric-separator" "^7.8.0"
-    "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
-    "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
-    "@babel/plugin-syntax-optional-chaining" "^7.8.0"
-    "@babel/plugin-syntax-top-level-await" "^7.8.3"
-    "@babel/plugin-transform-arrow-functions" "^7.8.3"
-    "@babel/plugin-transform-async-to-generator" "^7.8.3"
-    "@babel/plugin-transform-block-scoped-functions" "^7.8.3"
-    "@babel/plugin-transform-block-scoping" "^7.8.3"
-    "@babel/plugin-transform-classes" "^7.9.5"
-    "@babel/plugin-transform-computed-properties" "^7.8.3"
-    "@babel/plugin-transform-destructuring" "^7.9.5"
-    "@babel/plugin-transform-dotall-regex" "^7.8.3"
-    "@babel/plugin-transform-duplicate-keys" "^7.8.3"
-    "@babel/plugin-transform-exponentiation-operator" "^7.8.3"
-    "@babel/plugin-transform-for-of" "^7.9.0"
-    "@babel/plugin-transform-function-name" "^7.8.3"
-    "@babel/plugin-transform-literals" "^7.8.3"
-    "@babel/plugin-transform-member-expression-literals" "^7.8.3"
-    "@babel/plugin-transform-modules-amd" "^7.9.0"
-    "@babel/plugin-transform-modules-commonjs" "^7.9.0"
-    "@babel/plugin-transform-modules-systemjs" "^7.9.0"
-    "@babel/plugin-transform-modules-umd" "^7.9.0"
-    "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3"
-    "@babel/plugin-transform-new-target" "^7.8.3"
-    "@babel/plugin-transform-object-super" "^7.8.3"
-    "@babel/plugin-transform-parameters" "^7.9.5"
-    "@babel/plugin-transform-property-literals" "^7.8.3"
-    "@babel/plugin-transform-regenerator" "^7.8.7"
-    "@babel/plugin-transform-reserved-words" "^7.8.3"
-    "@babel/plugin-transform-shorthand-properties" "^7.8.3"
-    "@babel/plugin-transform-spread" "^7.8.3"
-    "@babel/plugin-transform-sticky-regex" "^7.8.3"
-    "@babel/plugin-transform-template-literals" "^7.8.3"
-    "@babel/plugin-transform-typeof-symbol" "^7.8.4"
-    "@babel/plugin-transform-unicode-regex" "^7.8.3"
-    "@babel/preset-modules" "^0.1.3"
-    "@babel/types" "^7.9.5"
-    browserslist "^4.9.1"
-    core-js-compat "^3.6.2"
-    invariant "^2.2.2"
-    levenary "^1.1.1"
-    semver "^5.5.0"
-
-"@babel/preset-modules@^0.1.3":
-  version "0.1.3"
-  resolved "https://registry.npm.taobao.org/@babel/preset-modules/download/@babel/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72"
-  integrity sha1-EyQrU7XvjIg8PPfd3VWzbOgPvHI=
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.0.0"
-    "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
-    "@babel/plugin-transform-dotall-regex" "^7.4.4"
-    "@babel/types" "^7.4.4"
-    esutils "^2.0.2"
-
-"@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
-  version "7.9.2"
-  resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.9.2.tgz?cache=0&sync_timestamp=1584800126869&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
-  integrity sha1-2Q3wWDo6JS8JqqYZZlNnuuUY2wY=
-  dependencies:
-    regenerator-runtime "^0.13.4"
-
-"@babel/template@^7.8.3", "@babel/template@^7.8.6":
-  version "7.8.6"
-  resolved "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.6.tgz?cache=0&sync_timestamp=1582806154512&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b"
-  integrity sha1-hrIq8V+CjfsIZHT5ZNzD45xDzis=
-  dependencies:
-    "@babel/code-frame" "^7.8.3"
-    "@babel/parser" "^7.8.6"
-    "@babel/types" "^7.8.6"
-
-"@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2"
-  integrity sha1-bnxWtE4qxwEalIwh4oPd2dnbl6I=
-  dependencies:
-    "@babel/code-frame" "^7.8.3"
-    "@babel/generator" "^7.9.5"
-    "@babel/helper-function-name" "^7.9.5"
-    "@babel/helper-split-export-declaration" "^7.8.3"
-    "@babel/parser" "^7.9.0"
-    "@babel/types" "^7.9.5"
-    debug "^4.1.0"
-    globals "^11.1.0"
-    lodash "^4.17.13"
-
-"@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5":
-  version "7.9.5"
-  resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444"
-  integrity sha1-iSMfgpFailZqcDs7IBM/c9prlEQ=
-  dependencies:
-    "@babel/helper-validator-identifier" "^7.9.5"
-    lodash "^4.17.13"
-    to-fast-properties "^2.0.0"
-
-"@hapi/address@2.x.x":
-  version "2.1.4"
-  resolved "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz?cache=0&sync_timestamp=1584171913757&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
-  integrity sha1-XWftQ/P9QaadS5/3tW58DR0KgeU=
-
-"@hapi/bourne@1.x.x":
-  version "1.3.2"
-  resolved "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a"
-  integrity sha1-CnCVreoGckPOMoPhtWuKj0U7JCo=
-
-"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0":
-  version "8.5.1"
-  resolved "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06"
-  integrity sha1-/elgZMpEbeyMVajC8TCVewcMbgY=
-
-"@hapi/joi@^15.0.1":
-  version "15.1.1"
-  resolved "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz?cache=0&sync_timestamp=1584171913948&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7"
-  integrity sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc=
-  dependencies:
-    "@hapi/address" "2.x.x"
-    "@hapi/bourne" "1.x.x"
-    "@hapi/hoek" "8.x.x"
-    "@hapi/topo" "3.x.x"
-
-"@hapi/topo@3.x.x":
-  version "3.1.6"
-  resolved "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.6.tgz?cache=0&sync_timestamp=1578128698166&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Ftopo%2Fdownload%2F%40hapi%2Ftopo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29"
-  integrity sha1-aNk1+j6uf91asNf5U/MgXYsr/Ck=
-  dependencies:
-    "@hapi/hoek" "^8.3.0"
-
-"@intervolga/optimize-cssnano-plugin@^1.0.5":
-  version "1.0.6"
-  resolved "https://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8"
-  integrity sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg=
-  dependencies:
-    cssnano "^4.0.0"
-    cssnano-preset-default "^4.0.0"
-    postcss "^7.0.0"
-
-"@mrmlnc/readdir-enhanced@^2.2.1":
-  version "2.2.1"
-  resolved "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
-  integrity sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=
-  dependencies:
-    call-me-maybe "^1.0.1"
-    glob-to-regexp "^0.3.0"
-
-"@nodelib/fs.stat@^1.1.2":
-  version "1.1.3"
-  resolved "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
-  integrity sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=
-
-"@soda/friendly-errors-webpack-plugin@^1.7.1":
-  version "1.7.1"
-  resolved "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz#706f64bcb4a8b9642b48ae3ace444c70334d615d"
-  integrity sha1-cG9kvLSouWQrSK46zkRMcDNNYV0=
-  dependencies:
-    chalk "^1.1.3"
-    error-stack-parser "^2.0.0"
-    string-width "^2.0.0"
-
-"@soda/get-current-script@^1.0.0":
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/@soda/get-current-script/download/@soda/get-current-script-1.0.0.tgz#623aa40623550e3b94767cffeb096a6fb597ed09"
-  integrity sha1-YjqkBiNVDjuUdnz/6wlqb7WX7Qk=
-
-"@types/color-name@^1.1.1":
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/@types/color-name/download/@types/color-name-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcolor-name%2Fdownload%2F%40types%2Fcolor-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
-  integrity sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=
-
-"@types/events@*":
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
-  integrity sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=
-
-"@types/glob@^7.1.1":
-  version "7.1.1"
-  resolved "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
-  integrity sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=
-  dependencies:
-    "@types/events" "*"
-    "@types/minimatch" "*"
-    "@types/node" "*"
-
-"@types/minimatch@*":
-  version "3.0.3"
-  resolved "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
-  integrity sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=
-
-"@types/node@*":
-  version "13.13.2"
-  resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-13.13.2.tgz#160d82623610db590a64e8ca81784e11117e5a54"
-  integrity sha1-Fg2CYjYQ21kKZOjKgXhOERF+WlQ=
-
-"@types/normalize-package-data@^2.4.0":
-  version "2.4.0"
-  resolved "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
-  integrity sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=
-
-"@types/q@^1.5.1":
-  version "1.5.2"
-  resolved "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz?cache=0&sync_timestamp=1580864603569&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fq%2Fdownload%2F%40types%2Fq-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
-  integrity sha1-aQoUdbhPKohP0HzXl8APXzE1bqg=
-
-"@vue/babel-helper-vue-jsx-merge-props@^1.0.0":
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040"
-  integrity sha1-BI/leZWNpAj7eosqPsBQtQpmEEA=
-
-"@vue/babel-plugin-transform-vue-jsx@^1.1.2":
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.1.2.tgz#c0a3e6efc022e75e4247b448a8fc6b86f03e91c0"
-  integrity sha1-wKPm78Ai515CR7RIqPxrhvA+kcA=
-  dependencies:
-    "@babel/helper-module-imports" "^7.0.0"
-    "@babel/plugin-syntax-jsx" "^7.2.0"
-    "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0"
-    html-tags "^2.0.0"
-    lodash.kebabcase "^4.1.1"
-    svg-tags "^1.0.0"
-
-"@vue/babel-preset-app@^4.3.1":
-  version "4.3.1"
-  resolved "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-4.3.1.tgz#bb67aae562983067c5b242c27fb7de17f40cf109"
-  integrity sha1-u2eq5WKYMGfFskLCf7feF/QM8Qk=
-  dependencies:
-    "@babel/core" "^7.9.0"
-    "@babel/helper-compilation-targets" "^7.8.7"
-    "@babel/helper-module-imports" "^7.8.3"
-    "@babel/plugin-proposal-class-properties" "^7.8.3"
-    "@babel/plugin-proposal-decorators" "^7.8.3"
-    "@babel/plugin-syntax-dynamic-import" "^7.8.3"
-    "@babel/plugin-syntax-jsx" "^7.8.3"
-    "@babel/plugin-transform-runtime" "^7.9.0"
-    "@babel/preset-env" "^7.9.0"
-    "@babel/runtime" "^7.9.2"
-    "@vue/babel-preset-jsx" "^1.1.2"
-    babel-plugin-dynamic-import-node "^2.3.0"
-    core-js "^3.6.4"
-    core-js-compat "^3.6.4"
-
-"@vue/babel-preset-jsx@^1.1.2":
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.1.2.tgz#2e169eb4c204ea37ca66c2ea85a880bfc99d4f20"
-  integrity sha1-LhaetMIE6jfKZsLqhaiAv8mdTyA=
-  dependencies:
-    "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0"
-    "@vue/babel-plugin-transform-vue-jsx" "^1.1.2"
-    "@vue/babel-sugar-functional-vue" "^1.1.2"
-    "@vue/babel-sugar-inject-h" "^1.1.2"
-    "@vue/babel-sugar-v-model" "^1.1.2"
-    "@vue/babel-sugar-v-on" "^1.1.2"
-
-"@vue/babel-sugar-functional-vue@^1.1.2":
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.1.2.tgz#f7e24fba09e6f1ee70104560a8808057555f1a9a"
-  integrity sha1-9+JPugnm8e5wEEVgqICAV1VfGpo=
-  dependencies:
-    "@babel/plugin-syntax-jsx" "^7.2.0"
-
-"@vue/babel-sugar-inject-h@^1.1.2":
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.1.2.tgz#8a5276b6d8e2ed16ffc8078aad94236274e6edf0"
-  integrity sha1-ilJ2ttji7Rb/yAeKrZQjYnTm7fA=
-  dependencies:
-    "@babel/plugin-syntax-jsx" "^7.2.0"
-
-"@vue/babel-sugar-v-model@^1.1.2":
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.1.2.tgz#1ff6fd1b800223fc9cb1e84dceb5e52d737a8192"
-  integrity sha1-H/b9G4ACI/ycsehNzrXlLXN6gZI=
-  dependencies:
-    "@babel/plugin-syntax-jsx" "^7.2.0"
-    "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0"
-    "@vue/babel-plugin-transform-vue-jsx" "^1.1.2"
-    camelcase "^5.0.0"
-    html-tags "^2.0.0"
-    svg-tags "^1.0.0"
-
-"@vue/babel-sugar-v-on@^1.1.2":
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.1.2.tgz#b2ef99b8f2fab09fbead25aad70ef42e1cf5b13b"
-  integrity sha1-su+ZuPL6sJ++rSWq1w70Lhz1sTs=
-  dependencies:
-    "@babel/plugin-syntax-jsx" "^7.2.0"
-    "@vue/babel-plugin-transform-vue-jsx" "^1.1.2"
-    camelcase "^5.0.0"
-
-"@vue/cli-overlay@^4.3.1":
-  version "4.3.1"
-  resolved "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-4.3.1.tgz#434529c188b628a54773670201667a0b4a361e07"
-  integrity sha1-Q0UpwYi2KKVHc2cCAWZ6C0o2Hgc=
-
-"@vue/cli-plugin-babel@^4.3.0":
-  version "4.3.1"
-  resolved "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-4.3.1.tgz#6e3a6aa18595b98ad5c52898a2850d452404712b"
-  integrity sha1-bjpqoYWVuYrVxSiYooUNRSQEcSs=
-  dependencies:
-    "@babel/core" "^7.9.0"
-    "@vue/babel-preset-app" "^4.3.1"
-    "@vue/cli-shared-utils" "^4.3.1"
-    babel-loader "^8.1.0"
-    cache-loader "^4.1.0"
-    thread-loader "^2.1.3"
-    webpack "^4.0.0"
-
-"@vue/cli-plugin-eslint@^4.3.0":
-  version "4.3.1"
-  resolved "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-4.3.1.tgz#2f5e09bd7d1d8c494134b6c71af2b779938d289a"
-  integrity sha1-L14JvX0djElBNLbHGvK3eZONKJo=
-  dependencies:
-    "@vue/cli-shared-utils" "^4.3.1"
-    eslint-loader "^2.2.1"
-    globby "^9.2.0"
-    inquirer "^7.1.0"
-    webpack "^4.0.0"
-    yorkie "^2.0.0"
-
-"@vue/cli-plugin-router@^4.3.1":
-  version "4.3.1"
-  resolved "https://registry.npm.taobao.org/@vue/cli-plugin-router/download/@vue/cli-plugin-router-4.3.1.tgz?cache=0&sync_timestamp=1586274103703&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-router%2Fdownload%2F%40vue%2Fcli-plugin-router-4.3.1.tgz#0ba589f4e9a1f3e64a8ff6ccd92f7ce2845586bf"
-  integrity sha1-C6WJ9Omh8+ZKj/bM2S984oRVhr8=
-  dependencies:
-    "@vue/cli-shared-utils" "^4.3.1"
-
-"@vue/cli-plugin-vuex@^4.3.1":
-  version "4.3.1"
-  resolved "https://registry.npm.taobao.org/@vue/cli-plugin-vuex/download/@vue/cli-plugin-vuex-4.3.1.tgz#2b73aff56f9e1be31018873d5ed2d59f155e7476"
-  integrity sha1-K3Ov9W+eG+MQGIc9XtLVnxVedHY=
-
-"@vue/cli-service@^4.3.0":
-  version "4.3.1"
-  resolved "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-4.3.1.tgz#94b2121d08e343a55f7ecef260af5257a9ffe7e5"
-  integrity sha1-lLISHQjjQ6Vffs7yYK9SV6n/5+U=
-  dependencies:
-    "@intervolga/optimize-cssnano-plugin" "^1.0.5"
-    "@soda/friendly-errors-webpack-plugin" "^1.7.1"
-    "@soda/get-current-script" "^1.0.0"
-    "@vue/cli-overlay" "^4.3.1"
-    "@vue/cli-plugin-router" "^4.3.1"
-    "@vue/cli-plugin-vuex" "^4.3.1"
-    "@vue/cli-shared-utils" "^4.3.1"
-    "@vue/component-compiler-utils" "^3.0.2"
-    "@vue/preload-webpack-plugin" "^1.1.0"
-    "@vue/web-component-wrapper" "^1.2.0"
-    acorn "^7.1.0"
-    acorn-walk "^7.1.1"
-    address "^1.1.2"
-    autoprefixer "^9.7.5"
-    browserslist "^4.11.1"
-    cache-loader "^4.1.0"
-    case-sensitive-paths-webpack-plugin "^2.3.0"
-    cli-highlight "^2.1.4"
-    clipboardy "^2.3.0"
-    cliui "^6.0.0"
-    copy-webpack-plugin "^5.1.1"
-    css-loader "^3.4.2"
-    cssnano "^4.1.10"
-    debug "^4.1.1"
-    default-gateway "^5.0.5"
-    dotenv "^8.2.0"
-    dotenv-expand "^5.1.0"
-    file-loader "^4.2.0"
-    fs-extra "^7.0.1"
-    globby "^9.2.0"
-    hash-sum "^2.0.0"
-    html-webpack-plugin "^3.2.0"
-    launch-editor-middleware "^2.2.1"
-    lodash.defaultsdeep "^4.6.1"
-    lodash.mapvalues "^4.6.0"
-    lodash.transform "^4.6.0"
-    mini-css-extract-plugin "^0.9.0"
-    minimist "^1.2.5"
-    pnp-webpack-plugin "^1.6.4"
-    portfinder "^1.0.25"
-    postcss-loader "^3.0.0"
-    ssri "^7.1.0"
-    terser-webpack-plugin "^2.3.5"
-    thread-loader "^2.1.3"
-    url-loader "^2.2.0"
-    vue-loader "^15.9.1"
-    vue-style-loader "^4.1.2"
-    webpack "^4.0.0"
-    webpack-bundle-analyzer "^3.6.1"
-    webpack-chain "^6.4.0"
-    webpack-dev-server "^3.10.3"
-    webpack-merge "^4.2.2"
-
-"@vue/cli-shared-utils@^4.3.1":
-  version "4.3.1"
-  resolved "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-4.3.1.tgz?cache=0&sync_timestamp=1586274245123&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-4.3.1.tgz#a74bf4d53825d4a4b05a84b03e023974871bc38a"
-  integrity sha1-p0v01Tgl1KSwWoSwPgI5dIcbw4o=
-  dependencies:
-    "@hapi/joi" "^15.0.1"
-    chalk "^2.4.2"
-    execa "^1.0.0"
-    launch-editor "^2.2.1"
-    lru-cache "^5.1.1"
-    node-ipc "^9.1.1"
-    open "^6.3.0"
-    ora "^3.4.0"
-    read-pkg "^5.1.1"
-    request "^2.88.2"
-    request-promise-native "^1.0.8"
-    semver "^6.1.0"
-    strip-ansi "^6.0.0"
-
-"@vue/component-compiler-utils@^3.0.2", "@vue/component-compiler-utils@^3.1.0":
-  version "3.1.2"
-  resolved "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.1.2.tgz#8213a5ff3202f9f2137fe55370f9e8b9656081c3"
-  integrity sha1-ghOl/zIC+fITf+VTcPnouWVggcM=
-  dependencies:
-    consolidate "^0.15.1"
-    hash-sum "^1.0.2"
-    lru-cache "^4.1.2"
-    merge-source-map "^1.1.0"
-    postcss "^7.0.14"
-    postcss-selector-parser "^6.0.2"
-    source-map "~0.6.1"
-    vue-template-es2015-compiler "^1.9.0"
-  optionalDependencies:
-    prettier "^1.18.2"
-
-"@vue/preload-webpack-plugin@^1.1.0":
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.1.tgz#18723530d304f443021da2292d6ec9502826104a"
-  integrity sha1-GHI1MNME9EMCHaIpLW7JUCgmEEo=
-
-"@vue/web-component-wrapper@^1.2.0":
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.2.0.tgz#bb0e46f1585a7e289b4ee6067dcc5a6ae62f1dd1"
-  integrity sha1-uw5G8VhafiibTuYGfcxaauYvHdE=
-
-"@webassemblyjs/ast@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
-  integrity sha1-vYUGBLQEJFmlpBzX0zjL7Wle2WQ=
-  dependencies:
-    "@webassemblyjs/helper-module-context" "1.9.0"
-    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
-    "@webassemblyjs/wast-parser" "1.9.0"
-
-"@webassemblyjs/floating-point-hex-parser@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.9.0.tgz?cache=0&sync_timestamp=1580600186633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Ffloating-point-hex-parser%2Fdownload%2F%40webassemblyjs%2Ffloating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
-  integrity sha1-PD07Jxvd/ITesA9xNEQ4MR1S/7Q=
-
-"@webassemblyjs/helper-api-error@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
-  integrity sha1-ID9nbjM7lsnaLuqzzO8zxFkotqI=
-
-"@webassemblyjs/helper-buffer@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.9.0.tgz?cache=0&sync_timestamp=1580600188490&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-buffer%2Fdownload%2F%40webassemblyjs%2Fhelper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
-  integrity sha1-oUQtJpxf6yP8vJ73WdrDVH8p3gA=
-
-"@webassemblyjs/helper-code-frame@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
-  integrity sha1-ZH+Iks0gQ6gqwMjF51w28dkVnyc=
-  dependencies:
-    "@webassemblyjs/wast-printer" "1.9.0"
-
-"@webassemblyjs/helper-fsm@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.9.0.tgz?cache=0&sync_timestamp=1580600184873&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-fsm%2Fdownload%2F%40webassemblyjs%2Fhelper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
-  integrity sha1-wFJWtxJEIUZx9LCOwQitY7cO3bg=
-
-"@webassemblyjs/helper-module-context@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
-  integrity sha1-JdiIS3aDmHGgimxvgGw5ee9xLwc=
-  dependencies:
-    "@webassemblyjs/ast" "1.9.0"
-
-"@webassemblyjs/helper-wasm-bytecode@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.9.0.tgz?cache=0&sync_timestamp=1580600300818&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-wasm-bytecode%2Fdownload%2F%40webassemblyjs%2Fhelper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
-  integrity sha1-T+2L6sm4wU+MWLcNEk1UndH+V5A=
-
-"@webassemblyjs/helper-wasm-section@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
-  integrity sha1-WkE41aYpK6GLBMWuSXF+QWeWU0Y=
-  dependencies:
-    "@webassemblyjs/ast" "1.9.0"
-    "@webassemblyjs/helper-buffer" "1.9.0"
-    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
-    "@webassemblyjs/wasm-gen" "1.9.0"
-
-"@webassemblyjs/ieee754@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.9.0.tgz?cache=0&sync_timestamp=1580627709910&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fieee754%2Fdownload%2F%40webassemblyjs%2Fieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
-  integrity sha1-Fceg+6roP7JhQ7us9tbfFwKtOeQ=
-  dependencies:
-    "@xtuc/ieee754" "^1.2.0"
-
-"@webassemblyjs/leb128@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.9.0.tgz?cache=0&sync_timestamp=1580627709555&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fleb128%2Fdownload%2F%40webassemblyjs%2Fleb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
-  integrity sha1-8Zygt2ptxVYjoJz/p2noOPoeHJU=
-  dependencies:
-    "@xtuc/long" "4.2.2"
-
-"@webassemblyjs/utf8@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Futf8%2Fdownload%2F%40webassemblyjs%2Futf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
-  integrity sha1-BNM7Y2945qaBMifoJAL3Y3tiKas=
-
-"@webassemblyjs/wasm-edit@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
-  integrity sha1-P+bXnT8PkiGDqoYALELdJWz+6c8=
-  dependencies:
-    "@webassemblyjs/ast" "1.9.0"
-    "@webassemblyjs/helper-buffer" "1.9.0"
-    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
-    "@webassemblyjs/helper-wasm-section" "1.9.0"
-    "@webassemblyjs/wasm-gen" "1.9.0"
-    "@webassemblyjs/wasm-opt" "1.9.0"
-    "@webassemblyjs/wasm-parser" "1.9.0"
-    "@webassemblyjs/wast-printer" "1.9.0"
-
-"@webassemblyjs/wasm-gen@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-gen%2Fdownload%2F%40webassemblyjs%2Fwasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
-  integrity sha1-ULxw7Gje2OJ2OwGhQYv0NJGnpJw=
-  dependencies:
-    "@webassemblyjs/ast" "1.9.0"
-    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
-    "@webassemblyjs/ieee754" "1.9.0"
-    "@webassemblyjs/leb128" "1.9.0"
-    "@webassemblyjs/utf8" "1.9.0"
-
-"@webassemblyjs/wasm-opt@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
-  integrity sha1-IhEYHlsxMmRDzIES658LkChyGmE=
-  dependencies:
-    "@webassemblyjs/ast" "1.9.0"
-    "@webassemblyjs/helper-buffer" "1.9.0"
-    "@webassemblyjs/wasm-gen" "1.9.0"
-    "@webassemblyjs/wasm-parser" "1.9.0"
-
-"@webassemblyjs/wasm-parser@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
-  integrity sha1-nUjkSCbfSmWYKUqmyHRp1kL/9l4=
-  dependencies:
-    "@webassemblyjs/ast" "1.9.0"
-    "@webassemblyjs/helper-api-error" "1.9.0"
-    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
-    "@webassemblyjs/ieee754" "1.9.0"
-    "@webassemblyjs/leb128" "1.9.0"
-    "@webassemblyjs/utf8" "1.9.0"
-
-"@webassemblyjs/wast-parser@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-parser%2Fdownload%2F%40webassemblyjs%2Fwast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
-  integrity sha1-MDERXXmsW9JhVWzsw/qQo+9FGRQ=
-  dependencies:
-    "@webassemblyjs/ast" "1.9.0"
-    "@webassemblyjs/floating-point-hex-parser" "1.9.0"
-    "@webassemblyjs/helper-api-error" "1.9.0"
-    "@webassemblyjs/helper-code-frame" "1.9.0"
-    "@webassemblyjs/helper-fsm" "1.9.0"
-    "@xtuc/long" "4.2.2"
-
-"@webassemblyjs/wast-printer@1.9.0":
-  version "1.9.0"
-  resolved "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-printer%2Fdownload%2F%40webassemblyjs%2Fwast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
-  integrity sha1-STXVTIX+9jewDOn1I3dFHQDUeJk=
-  dependencies:
-    "@webassemblyjs/ast" "1.9.0"
-    "@webassemblyjs/wast-parser" "1.9.0"
-    "@xtuc/long" "4.2.2"
-
-"@xtuc/ieee754@^1.2.0":
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
-  integrity sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=
-
-"@xtuc/long@4.2.2":
-  version "4.2.2"
-  resolved "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
-  integrity sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=
-
-accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
-  version "1.3.7"
-  resolved "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
-  integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80=
-  dependencies:
-    mime-types "~2.1.24"
-    negotiator "0.6.2"
-
-acorn-jsx@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
-  integrity sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=
-
-acorn-walk@^7.1.1:
-  version "7.1.1"
-  resolved "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.1.1.tgz?cache=0&sync_timestamp=1581612804260&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e"
-  integrity sha1-NF8N/61cc15zc9L+yaECPmpEuD4=
-
-acorn@^6.4.1:
-  version "6.4.1"
-  resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
-  integrity sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=
-
-acorn@^7.1.0, acorn@^7.1.1:
-  version "7.1.1"
-  resolved "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf"
-  integrity sha1-41Zo3gtALzWd5RXFSCoaufiaab8=
-
-address@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
-  integrity sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=
-
-aggregate-error@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0"
-  integrity sha1-2y/nJG5Tb0DZtUQqOeEX191qJOA=
-  dependencies:
-    clean-stack "^2.0.0"
-    indent-string "^4.0.0"
-
-ajv-errors@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
-  integrity sha1-81mGrOuRr63sQQL72FAUlQzvpk0=
-
-ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
-  version "3.4.1"
-  resolved "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da"
-  integrity sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo=
-
-ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5:
-  version "6.12.2"
-  resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.12.2.tgz?cache=0&sync_timestamp=1587338477514&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
-  integrity sha1-xinF7O0XuvMUQ3kY0tqIyZ1ZWM0=
-  dependencies:
-    fast-deep-equal "^3.1.1"
-    fast-json-stable-stringify "^2.0.0"
-    json-schema-traverse "^0.4.1"
-    uri-js "^4.2.2"
-
-alphanum-sort@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
-  integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
-
-ansi-colors@^3.0.0:
-  version "3.2.4"
-  resolved "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
-  integrity sha1-46PaS/uubIapwoViXeEkojQCb78=
-
-ansi-escapes@^4.2.1:
-  version "4.3.1"
-  resolved "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
-  integrity sha1-pcR8xDGB8fOP/XB2g3cA05VSKmE=
-  dependencies:
-    type-fest "^0.11.0"
-
-ansi-html@0.0.7:
-  version "0.0.7"
-  resolved "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
-  integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
-
-ansi-regex@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-  integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
-ansi-regex@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-  integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
-ansi-regex@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
-  integrity sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=
-
-ansi-regex@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
-  integrity sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=
-
-ansi-styles@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-  integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-
-ansi-styles@^3.2.0, ansi-styles@^3.2.1:
-  version "3.2.1"
-  resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
-  integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=
-  dependencies:
-    color-convert "^1.9.0"
-
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
-  version "4.2.1"
-  resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
-  integrity sha1-kK51xCTQCNJiTFvynq0xd+v881k=
-  dependencies:
-    "@types/color-name" "^1.1.1"
-    color-convert "^2.0.1"
-
-any-promise@^1.0.0:
-  version "1.3.0"
-  resolved "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
-  integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
-
-anymatch@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
-  integrity sha1-vLJLTzeTTZqnrBe0ra+J58du8us=
-  dependencies:
-    micromatch "^3.1.4"
-    normalize-path "^2.1.1"
-
-aproba@^1.1.1:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
-  integrity sha1-aALmJk79GMeQobDVF/DyYnvyyUo=
-
-arch@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e"
-  integrity sha1-j1wnMao1owkpIhuwZA7tZRdeyE4=
-
-argparse@^1.0.7:
-  version "1.0.10"
-  resolved "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
-  integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=
-  dependencies:
-    sprintf-js "~1.0.2"
-
-arr-diff@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
-  integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
-arr-flatten@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-  integrity sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=
-
-arr-union@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
-  integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
-array-flatten@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
-  integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
-
-array-flatten@^2.1.0:
-  version "2.1.2"
-  resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
-  integrity sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=
-
-array-union@^1.0.1, array-union@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
-  integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
-  dependencies:
-    array-uniq "^1.0.1"
-
-array-uniq@^1.0.1:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
-  integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
-
-array-unique@^0.3.2:
-  version "0.3.2"
-  resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
-  integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-
-asn1.js@^4.0.0:
-  version "4.10.1"
-  resolved "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
-  integrity sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=
-  dependencies:
-    bn.js "^4.0.0"
-    inherits "^2.0.1"
-    minimalistic-assert "^1.0.0"
-
-asn1@~0.2.3:
-  version "0.2.4"
-  resolved "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
-  integrity sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=
-  dependencies:
-    safer-buffer "~2.1.0"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
-  integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-
-assert@^1.1.1:
-  version "1.5.0"
-  resolved "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
-  integrity sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=
-  dependencies:
-    object-assign "^4.1.1"
-    util "0.10.3"
-
-assign-symbols@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
-  integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
-astral-regex@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
-  integrity sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=
-
-async-each@^1.0.1:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
-  integrity sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=
-
-async-limiter@~1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz?cache=0&sync_timestamp=1574272018408&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-limiter%2Fdownload%2Fasync-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
-  integrity sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=
-
-async-validator@~1.8.1:
-  version "1.8.5"
-  resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0"
-  integrity sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==
-  dependencies:
-    babel-runtime "6.x"
-
-async@^2.6.2:
-  version "2.6.3"
-  resolved "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
-  integrity sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=
-  dependencies:
-    lodash "^4.17.14"
-
-asynckit@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-  integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
-
-atob@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
-  integrity sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=
-
-autoprefixer@^9.7.5:
-  version "9.7.6"
-  resolved "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.7.6.tgz#63ac5bbc0ce7934e6997207d5bb00d68fa8293a4"
-  integrity sha1-Y6xbvAznk05plyB9W7ANaPqCk6Q=
-  dependencies:
-    browserslist "^4.11.1"
-    caniuse-lite "^1.0.30001039"
-    chalk "^2.4.2"
-    normalize-range "^0.1.2"
-    num2fraction "^1.2.2"
-    postcss "^7.0.27"
-    postcss-value-parser "^4.0.3"
-
-aws-sign2@~0.7.0:
-  version "0.7.0"
-  resolved "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
-  integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
-
-aws4@^1.8.0:
-  version "1.9.1"
-  resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e"
-  integrity sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4=
-
-babel-eslint@^10.1.0:
-  version "10.1.0"
-  resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1582676152339&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
-  integrity sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=
-  dependencies:
-    "@babel/code-frame" "^7.0.0"
-    "@babel/parser" "^7.7.0"
-    "@babel/traverse" "^7.7.0"
-    "@babel/types" "^7.7.0"
-    eslint-visitor-keys "^1.0.0"
-    resolve "^1.12.0"
-
-babel-helper-vue-jsx-merge-props@^2.0.0:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6"
-  integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==
-
-babel-loader@^8.1.0:
-  version "8.1.0"
-  resolved "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.1.0.tgz?cache=0&sync_timestamp=1584715910722&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-loader%2Fdownload%2Fbabel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3"
-  integrity sha1-xhHVESvVIJq+i5+oTD5NolJ18cM=
-  dependencies:
-    find-cache-dir "^2.1.0"
-    loader-utils "^1.4.0"
-    mkdirp "^0.5.3"
-    pify "^4.0.1"
-    schema-utils "^2.6.5"
-
-babel-plugin-dynamic-import-node@^2.3.0:
-  version "2.3.3"
-  resolved "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
-  integrity sha1-hP2hnJduxcbe/vV/lCez3vZuF6M=
-  dependencies:
-    object.assign "^4.1.0"
-
-babel-runtime@6.x:
-  version "6.26.0"
-  resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
-  integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
-  dependencies:
-    core-js "^2.4.0"
-    regenerator-runtime "^0.11.0"
-
-balanced-match@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-  integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
-base64-js@^1.0.2:
-  version "1.3.1"
-  resolved "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
-  integrity sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=
-
-base@^0.11.1:
-  version "0.11.2"
-  resolved "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
-  integrity sha1-e95c7RRbbVUakNuH+DxVi060io8=
-  dependencies:
-    cache-base "^1.0.1"
-    class-utils "^0.3.5"
-    component-emitter "^1.2.1"
-    define-property "^1.0.0"
-    isobject "^3.0.1"
-    mixin-deep "^1.2.0"
-    pascalcase "^0.1.1"
-
-batch@0.6.1:
-  version "0.6.1"
-  resolved "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
-  integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
-
-bcrypt-pbkdf@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
-  integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
-  dependencies:
-    tweetnacl "^0.14.3"
-
-bfj@^6.1.1:
-  version "6.1.2"
-  resolved "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f"
-  integrity sha1-MlyGGoIryzWKQceKM7jm4ght3n8=
-  dependencies:
-    bluebird "^3.5.5"
-    check-types "^8.0.3"
-    hoopy "^0.1.4"
-    tryer "^1.0.1"
-
-big.js@^3.1.3:
-  version "3.2.0"
-  resolved "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
-  integrity sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=
-
-big.js@^5.2.2:
-  version "5.2.2"
-  resolved "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
-  integrity sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=
-
-binary-extensions@^1.0.0:
-  version "1.13.1"
-  resolved "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
-  integrity sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=
-
-bindings@^1.5.0:
-  version "1.5.0"
-  resolved "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
-  integrity sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=
-  dependencies:
-    file-uri-to-path "1.0.0"
-
-bluebird@^3.1.1, bluebird@^3.5.5:
-  version "3.7.2"
-  resolved "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
-  integrity sha1-nyKcFb4nJFT/qXOs4NvueaGww28=
-
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
-  version "4.11.8"
-  resolved "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
-  integrity sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=
-
-body-parser@1.19.0:
-  version "1.19.0"
-  resolved "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbody-parser%2Fdownload%2Fbody-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
-  integrity sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=
-  dependencies:
-    bytes "3.1.0"
-    content-type "~1.0.4"
-    debug "2.6.9"
-    depd "~1.1.2"
-    http-errors "1.7.2"
-    iconv-lite "0.4.24"
-    on-finished "~2.3.0"
-    qs "6.7.0"
-    raw-body "2.4.0"
-    type-is "~1.6.17"
-
-bonjour@^3.5.0:
-  version "3.5.0"
-  resolved "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
-  integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
-  dependencies:
-    array-flatten "^2.1.0"
-    deep-equal "^1.0.1"
-    dns-equal "^1.0.0"
-    dns-txt "^2.0.2"
-    multicast-dns "^6.0.1"
-    multicast-dns-service-types "^1.1.0"
-
-boolbase@^1.0.0, boolbase@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
-  integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
-
-brace-expansion@^1.1.7:
-  version "1.1.11"
-  resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
-  integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=
-  dependencies:
-    balanced-match "^1.0.0"
-    concat-map "0.0.1"
-
-braces@^2.3.1, braces@^2.3.2:
-  version "2.3.2"
-  resolved "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
-  integrity sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=
-  dependencies:
-    arr-flatten "^1.1.0"
-    array-unique "^0.3.2"
-    extend-shallow "^2.0.1"
-    fill-range "^4.0.0"
-    isobject "^3.0.1"
-    repeat-element "^1.1.2"
-    snapdragon "^0.8.1"
-    snapdragon-node "^2.0.1"
-    split-string "^3.0.2"
-    to-regex "^3.0.1"
-
-brorand@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
-  integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
-
-browserify-aes@^1.0.0, browserify-aes@^1.0.4:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
-  integrity sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=
-  dependencies:
-    buffer-xor "^1.0.3"
-    cipher-base "^1.0.0"
-    create-hash "^1.1.0"
-    evp_bytestokey "^1.0.3"
-    inherits "^2.0.1"
-    safe-buffer "^5.0.1"
-
-browserify-cipher@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
-  integrity sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=
-  dependencies:
-    browserify-aes "^1.0.4"
-    browserify-des "^1.0.0"
-    evp_bytestokey "^1.0.0"
-
-browserify-des@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
-  integrity sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=
-  dependencies:
-    cipher-base "^1.0.1"
-    des.js "^1.0.0"
-    inherits "^2.0.1"
-    safe-buffer "^5.1.2"
-
-browserify-rsa@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
-  integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
-  dependencies:
-    bn.js "^4.1.0"
-    randombytes "^2.0.1"
-
-browserify-sign@^4.0.0:
-  version "4.0.4"
-  resolved "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
-  integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
-  dependencies:
-    bn.js "^4.1.1"
-    browserify-rsa "^4.0.0"
-    create-hash "^1.1.0"
-    create-hmac "^1.1.2"
-    elliptic "^6.0.0"
-    inherits "^2.0.1"
-    parse-asn1 "^5.0.0"
-
-browserify-zlib@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
-  integrity sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=
-  dependencies:
-    pako "~1.0.5"
-
-browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.8.5, browserslist@^4.9.1:
-  version "4.12.0"
-  resolved "https://registry.npm.taobao.org/browserslist/download/browserslist-4.12.0.tgz?cache=0&sync_timestamp=1587419861078&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d"
-  integrity sha1-BsbVcVoe3mxR/Dn/Z/1kf3QLZW0=
-  dependencies:
-    caniuse-lite "^1.0.30001043"
-    electron-to-chromium "^1.3.413"
-    node-releases "^1.1.53"
-    pkg-up "^2.0.0"
-
-buffer-from@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
-  integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=
-
-buffer-indexof@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
-  integrity sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=
-
-buffer-json@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/buffer-json/download/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23"
-  integrity sha1-9z4TseQvGW/i/WfQAcfXEH7dfCM=
-
-buffer-xor@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
-  integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
-
-buffer@^4.3.0:
-  version "4.9.2"
-  resolved "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
-  integrity sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=
-  dependencies:
-    base64-js "^1.0.2"
-    ieee754 "^1.1.4"
-    isarray "^1.0.0"
-
-builtin-status-codes@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
-  integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
-
-bytes@3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
-  integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
-
-bytes@3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
-  integrity sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=
-
-cacache@^12.0.2, cacache@^12.0.3:
-  version "12.0.4"
-  resolved "https://registry.npm.taobao.org/cacache/download/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
-  integrity sha1-ZovL0QWutfHZL+JVcOyVJcj6pAw=
-  dependencies:
-    bluebird "^3.5.5"
-    chownr "^1.1.1"
-    figgy-pudding "^3.5.1"
-    glob "^7.1.4"
-    graceful-fs "^4.1.15"
-    infer-owner "^1.0.3"
-    lru-cache "^5.1.1"
-    mississippi "^3.0.0"
-    mkdirp "^0.5.1"
-    move-concurrently "^1.0.1"
-    promise-inflight "^1.0.1"
-    rimraf "^2.6.3"
-    ssri "^6.0.1"
-    unique-filename "^1.1.1"
-    y18n "^4.0.0"
-
-cacache@^13.0.1:
-  version "13.0.1"
-  resolved "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c"
-  integrity sha1-qAAMIWlwiQgvhSh6GuxuOCAkpxw=
-  dependencies:
-    chownr "^1.1.2"
-    figgy-pudding "^3.5.1"
-    fs-minipass "^2.0.0"
-    glob "^7.1.4"
-    graceful-fs "^4.2.2"
-    infer-owner "^1.0.4"
-    lru-cache "^5.1.1"
-    minipass "^3.0.0"
-    minipass-collect "^1.0.2"
-    minipass-flush "^1.0.5"
-    minipass-pipeline "^1.2.2"
-    mkdirp "^0.5.1"
-    move-concurrently "^1.0.1"
-    p-map "^3.0.0"
-    promise-inflight "^1.0.1"
-    rimraf "^2.7.1"
-    ssri "^7.0.0"
-    unique-filename "^1.1.1"
-
-cache-base@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
-  integrity sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=
-  dependencies:
-    collection-visit "^1.0.0"
-    component-emitter "^1.2.1"
-    get-value "^2.0.6"
-    has-value "^1.0.0"
-    isobject "^3.0.1"
-    set-value "^2.0.0"
-    to-object-path "^0.3.0"
-    union-value "^1.0.0"
-    unset-value "^1.0.0"
-
-cache-loader@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.npm.taobao.org/cache-loader/download/cache-loader-4.1.0.tgz#9948cae353aec0a1fcb1eafda2300816ec85387e"
-  integrity sha1-mUjK41OuwKH8ser9ojAIFuyFOH4=
-  dependencies:
-    buffer-json "^2.0.0"
-    find-cache-dir "^3.0.0"
-    loader-utils "^1.2.3"
-    mkdirp "^0.5.1"
-    neo-async "^2.6.1"
-    schema-utils "^2.0.0"
-
-call-me-maybe@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
-  integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
-
-caller-callsite@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
-  integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
-  dependencies:
-    callsites "^2.0.0"
-
-caller-path@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz?cache=0&sync_timestamp=1574395720588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-path%2Fdownload%2Fcaller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
-  integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
-  dependencies:
-    caller-callsite "^2.0.0"
-
-callsites@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
-  integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
-
-callsites@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
-  integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=
-
-camel-case@3.0.x:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
-  integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
-  dependencies:
-    no-case "^2.2.0"
-    upper-case "^1.1.1"
-
-camelcase@^5.0.0, camelcase@^5.3.1:
-  version "5.3.1"
-  resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
-  integrity sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=
-
-caniuse-api@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
-  integrity sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=
-  dependencies:
-    browserslist "^4.0.0"
-    caniuse-lite "^1.0.0"
-    lodash.memoize "^4.1.2"
-    lodash.uniq "^4.5.0"
-
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001039, caniuse-lite@^1.0.30001043:
-  version "1.0.30001046"
-  resolved "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001046.tgz?cache=0&sync_timestamp=1587623815718&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001046.tgz#7a06d3e8fd8aa7f4d21c9a2e313f35f2d06b013e"
-  integrity sha1-egbT6P2Kp/TSHJouMT818tBrAT4=
-
-case-sensitive-paths-webpack-plugin@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.3.0.tgz?cache=0&sync_timestamp=1579125374167&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcase-sensitive-paths-webpack-plugin%2Fdownload%2Fcase-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7"
-  integrity sha1-I6xhPMmoVuT4j/i7c7u16YmCXPc=
-
-caseless@~0.12.0:
-  version "0.12.0"
-  resolved "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
-  integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-
-chalk@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
-  integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
-  dependencies:
-    ansi-styles "^2.2.1"
-    escape-string-regexp "^1.0.2"
-    has-ansi "^2.0.0"
-    strip-ansi "^3.0.0"
-    supports-color "^2.0.0"
-
-chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
-  version "2.4.2"
-  resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
-  integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=
-  dependencies:
-    ansi-styles "^3.2.1"
-    escape-string-regexp "^1.0.5"
-    supports-color "^5.3.0"
-
-chalk@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
-  integrity sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ=
-  dependencies:
-    ansi-styles "^4.1.0"
-    supports-color "^7.1.0"
-
-chardet@^0.7.0:
-  version "0.7.0"
-  resolved "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
-  integrity sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=
-
-check-types@^8.0.3:
-  version "8.0.3"
-  resolved "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz?cache=0&sync_timestamp=1579455903027&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcheck-types%2Fdownload%2Fcheck-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552"
-  integrity sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=
-
-chokidar@^2.1.8:
-  version "2.1.8"
-  resolved "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1587380303979&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
-  integrity sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=
-  dependencies:
-    anymatch "^2.0.0"
-    async-each "^1.0.1"
-    braces "^2.3.2"
-    glob-parent "^3.1.0"
-    inherits "^2.0.3"
-    is-binary-path "^1.0.0"
-    is-glob "^4.0.0"
-    normalize-path "^3.0.0"
-    path-is-absolute "^1.0.0"
-    readdirp "^2.2.1"
-    upath "^1.1.1"
-  optionalDependencies:
-    fsevents "^1.2.7"
-
-chownr@^1.1.1, chownr@^1.1.2:
-  version "1.1.4"
-  resolved "https://registry.npm.taobao.org/chownr/download/chownr-1.1.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchownr%2Fdownload%2Fchownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
-  integrity sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs=
-
-chrome-trace-event@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
-  integrity sha1-I0CQ7pfH1K0aLEvq4nUF3v/GCKQ=
-  dependencies:
-    tslib "^1.9.0"
-
-ci-info@^1.5.0:
-  version "1.6.0"
-  resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
-  integrity sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=
-
-cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
-  integrity sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=
-  dependencies:
-    inherits "^2.0.1"
-    safe-buffer "^5.0.1"
-
-class-utils@^0.3.5:
-  version "0.3.6"
-  resolved "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
-  integrity sha1-+TNprouafOAv1B+q0MqDAzGQxGM=
-  dependencies:
-    arr-union "^3.1.0"
-    define-property "^0.2.5"
-    isobject "^3.0.0"
-    static-extend "^0.1.1"
-
-clean-css@4.2.x:
-  version "4.2.3"
-  resolved "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclean-css%2Fdownload%2Fclean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
-  integrity sha1-UHtd59l7SO5T2ErbAWD/YhY4D3g=
-  dependencies:
-    source-map "~0.6.0"
-
-clean-stack@^2.0.0:
-  version "2.2.0"
-  resolved "https://registry.npm.taobao.org/clean-stack/download/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
-  integrity sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=
-
-cli-cursor@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
-  integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
-  dependencies:
-    restore-cursor "^2.0.0"
-
-cli-cursor@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
-  integrity sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=
-  dependencies:
-    restore-cursor "^3.1.0"
-
-cli-highlight@^2.1.4:
-  version "2.1.4"
-  resolved "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.4.tgz?cache=0&sync_timestamp=1573949240542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-highlight%2Fdownload%2Fcli-highlight-2.1.4.tgz#098cb642cf17f42adc1c1145e07f960ec4d7522b"
-  integrity sha1-CYy2Qs8X9CrcHBFF4H+WDsTXUis=
-  dependencies:
-    chalk "^3.0.0"
-    highlight.js "^9.6.0"
-    mz "^2.4.0"
-    parse5 "^5.1.1"
-    parse5-htmlparser2-tree-adapter "^5.1.1"
-    yargs "^15.0.0"
-
-cli-spinners@^2.0.0:
-  version "2.3.0"
-  resolved "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5"
-  integrity sha1-BjIjmktapMlYYQFCw0u3plH8jfU=
-
-cli-width@^2.0.0:
-  version "2.2.1"
-  resolved "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.1.tgz?cache=0&sync_timestamp=1586877902436&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-width%2Fdownload%2Fcli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
-  integrity sha1-sEM9C06chH7xiGik7xb9X8gnHEg=
-
-clipboardy@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290"
-  integrity sha1-PCkDZQxo5GqRs4iYW8J3QofbopA=
-  dependencies:
-    arch "^2.1.1"
-    execa "^1.0.0"
-    is-wsl "^2.1.1"
-
-cliui@^4.0.0:
-  version "4.1.0"
-  resolved "https://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
-  integrity sha1-NIQi2+gtgAswIu709qwQvy5NG0k=
-  dependencies:
-    string-width "^2.1.1"
-    strip-ansi "^4.0.0"
-    wrap-ansi "^2.0.0"
-
-cliui@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
-  integrity sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=
-  dependencies:
-    string-width "^4.2.0"
-    strip-ansi "^6.0.0"
-    wrap-ansi "^6.2.0"
-
-clone@^1.0.2:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
-  integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
-
-coa@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
-  integrity sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=
-  dependencies:
-    "@types/q" "^1.5.1"
-    chalk "^2.4.1"
-    q "^1.1.2"
-
-code-point-at@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-  integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
-collection-visit@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
-  integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
-  dependencies:
-    map-visit "^1.0.0"
-    object-visit "^1.0.0"
-
-color-convert@^1.9.0, color-convert@^1.9.1:
-  version "1.9.3"
-  resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
-  integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=
-  dependencies:
-    color-name "1.1.3"
-
-color-convert@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
-  integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=
-  dependencies:
-    color-name "~1.1.4"
-
-color-name@1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
-  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
-color-name@^1.0.0, color-name@~1.1.4:
-  version "1.1.4"
-  resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
-  integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=
-
-color-string@^1.5.2:
-  version "1.5.3"
-  resolved "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
-  integrity sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=
-  dependencies:
-    color-name "^1.0.0"
-    simple-swizzle "^0.2.2"
-
-color@^3.0.0:
-  version "3.1.2"
-  resolved "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10"
-  integrity sha1-aBSOf4XUGtdknF+oyBBvCY0inhA=
-  dependencies:
-    color-convert "^1.9.1"
-    color-string "^1.5.2"
-
-combined-stream@^1.0.6, combined-stream@~1.0.6:
-  version "1.0.8"
-  resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
-  integrity sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=
-  dependencies:
-    delayed-stream "~1.0.0"
-
-commander@2.17.x:
-  version "2.17.1"
-  resolved "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1584148318639&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
-  integrity sha1-vXerfebelCBc6sxy8XFtKfIKd78=
-
-commander@^2.18.0, commander@^2.20.0:
-  version "2.20.3"
-  resolved "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1584148318639&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
-  integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=
-
-commander@~2.19.0:
-  version "2.19.0"
-  resolved "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz?cache=0&sync_timestamp=1584148318639&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
-  integrity sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=
-
-commondir@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-  integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-
-component-emitter@^1.2.1:
-  version "1.3.0"
-  resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
-  integrity sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=
-
-compressible@~2.0.16:
-  version "2.0.18"
-  resolved "https://registry.npm.taobao.org/compressible/download/compressible-2.0.18.tgz?cache=0&sync_timestamp=1578286227326&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcompressible%2Fdownload%2Fcompressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
-  integrity sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=
-  dependencies:
-    mime-db ">= 1.43.0 < 2"
-
-compression@^1.7.4:
-  version "1.7.4"
-  resolved "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
-  integrity sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=
-  dependencies:
-    accepts "~1.3.5"
-    bytes "3.0.0"
-    compressible "~2.0.16"
-    debug "2.6.9"
-    on-headers "~1.0.2"
-    safe-buffer "5.1.2"
-    vary "~1.1.2"
-
-concat-map@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-
-concat-stream@^1.5.0:
-  version "1.6.2"
-  resolved "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
-  integrity sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=
-  dependencies:
-    buffer-from "^1.0.0"
-    inherits "^2.0.3"
-    readable-stream "^2.2.2"
-    typedarray "^0.0.6"
-
-connect-history-api-fallback@^1.6.0:
-  version "1.6.0"
-  resolved "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
-  integrity sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=
-
-console-browserify@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
-  integrity sha1-ZwY871fOts9Jk6KrOlWECujEkzY=
-
-consolidate@^0.15.1:
-  version "0.15.1"
-  resolved "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7"
-  integrity sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=
-  dependencies:
-    bluebird "^3.1.1"
-
-constants-browserify@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
-  integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
-
-content-disposition@0.5.3:
-  version "0.5.3"
-  resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
-  integrity sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=
-  dependencies:
-    safe-buffer "5.1.2"
-
-content-type@~1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
-  integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js=
-
-convert-source-map@^1.7.0:
-  version "1.7.0"
-  resolved "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
-  integrity sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=
-  dependencies:
-    safe-buffer "~5.1.1"
-
-cookie-signature@1.0.6:
-  version "1.0.6"
-  resolved "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
-  integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
-
-cookie@0.4.0:
-  version "0.4.0"
-  resolved "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
-  integrity sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=
-
-copy-concurrently@^1.0.0:
-  version "1.0.5"
-  resolved "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
-  integrity sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=
-  dependencies:
-    aproba "^1.1.1"
-    fs-write-stream-atomic "^1.0.8"
-    iferr "^0.1.5"
-    mkdirp "^0.5.1"
-    rimraf "^2.5.4"
-    run-queue "^1.0.0"
-
-copy-descriptor@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
-  integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-
-copy-webpack-plugin@^5.1.1:
-  version "5.1.1"
-  resolved "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-5.1.1.tgz?cache=0&sync_timestamp=1576144901286&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-webpack-plugin%2Fdownload%2Fcopy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88"
-  integrity sha1-VIGgPeoRI9iKmIxv+LeCRyFPC4g=
-  dependencies:
-    cacache "^12.0.3"
-    find-cache-dir "^2.1.0"
-    glob-parent "^3.1.0"
-    globby "^7.1.1"
-    is-glob "^4.0.1"
-    loader-utils "^1.2.3"
-    minimatch "^3.0.4"
-    normalize-path "^3.0.0"
-    p-limit "^2.2.1"
-    schema-utils "^1.0.0"
-    serialize-javascript "^2.1.2"
-    webpack-log "^2.0.0"
-
-core-js-compat@^3.6.2, core-js-compat@^3.6.4:
-  version "3.6.5"
-  resolved "https://registry.npm.taobao.org/core-js-compat/download/core-js-compat-3.6.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js-compat%2Fdownload%2Fcore-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c"
-  integrity sha1-KlHZpOJd/W5pAlGqgfmePAVIHxw=
-  dependencies:
-    browserslist "^4.8.5"
-    semver "7.0.0"
-
-core-js@^2.4.0:
-  version "2.6.11"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
-  integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
-
-core-js@^3.6.4:
-  version "3.6.5"
-  resolved "https://registry.npm.taobao.org/core-js/download/core-js-3.6.5.tgz?cache=0&sync_timestamp=1586450269267&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
-  integrity sha1-c5XcJzrzf7LlDpvT2f6EEoUjHRo=
-
-core-util-is@1.0.2, core-util-is@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-cosmiconfig@^5.0.0:
-  version "5.2.1"
-  resolved "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
-  integrity sha1-BA9yaAnFked6F8CjYmykW08Wixo=
-  dependencies:
-    import-fresh "^2.0.0"
-    is-directory "^0.3.1"
-    js-yaml "^3.13.1"
-    parse-json "^4.0.0"
-
-create-ecdh@^4.0.0:
-  version "4.0.3"
-  resolved "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
-  integrity sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=
-  dependencies:
-    bn.js "^4.1.0"
-    elliptic "^6.0.0"
-
-create-hash@^1.1.0, create-hash@^1.1.2:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
-  integrity sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=
-  dependencies:
-    cipher-base "^1.0.1"
-    inherits "^2.0.1"
-    md5.js "^1.3.4"
-    ripemd160 "^2.0.1"
-    sha.js "^2.4.0"
-
-create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
-  version "1.1.7"
-  resolved "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
-  integrity sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=
-  dependencies:
-    cipher-base "^1.0.3"
-    create-hash "^1.1.0"
-    inherits "^2.0.1"
-    ripemd160 "^2.0.0"
-    safe-buffer "^5.0.1"
-    sha.js "^2.4.8"
-
-cross-spawn@^5.0.1:
-  version "5.1.0"
-  resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
-  integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
-  dependencies:
-    lru-cache "^4.0.1"
-    shebang-command "^1.2.0"
-    which "^1.2.9"
-
-cross-spawn@^6.0.0, cross-spawn@^6.0.5:
-  version "6.0.5"
-  resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
-  integrity sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=
-  dependencies:
-    nice-try "^1.0.4"
-    path-key "^2.0.1"
-    semver "^5.5.0"
-    shebang-command "^1.2.0"
-    which "^1.2.9"
-
-cross-spawn@^7.0.0:
-  version "7.0.2"
-  resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6"
-  integrity sha1-0Nfc+nTokRXHYZ9PchqU4f23FtY=
-  dependencies:
-    path-key "^3.1.0"
-    shebang-command "^2.0.0"
-    which "^2.0.1"
-
-crypto-browserify@^3.11.0:
-  version "3.12.0"
-  resolved "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
-  integrity sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=
-  dependencies:
-    browserify-cipher "^1.0.0"
-    browserify-sign "^4.0.0"
-    create-ecdh "^4.0.0"
-    create-hash "^1.1.0"
-    create-hmac "^1.1.0"
-    diffie-hellman "^5.0.0"
-    inherits "^2.0.1"
-    pbkdf2 "^3.0.3"
-    public-encrypt "^4.0.0"
-    randombytes "^2.0.0"
-    randomfill "^1.0.3"
-
-css-color-names@0.0.4, css-color-names@^0.0.4:
-  version "0.0.4"
-  resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
-  integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
-
-css-declaration-sorter@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
-  integrity sha1-wZiUD2OnbX42wecQGLABchBUyyI=
-  dependencies:
-    postcss "^7.0.1"
-    timsort "^0.3.0"
-
-css-loader@^3.4.2:
-  version "3.5.3"
-  resolved "https://registry.npm.taobao.org/css-loader/download/css-loader-3.5.3.tgz#95ac16468e1adcd95c844729e0bb167639eb0bcf"
-  integrity sha1-lawWRo4a3NlchEcp4LsWdjnrC88=
-  dependencies:
-    camelcase "^5.3.1"
-    cssesc "^3.0.0"
-    icss-utils "^4.1.1"
-    loader-utils "^1.2.3"
-    normalize-path "^3.0.0"
-    postcss "^7.0.27"
-    postcss-modules-extract-imports "^2.0.0"
-    postcss-modules-local-by-default "^3.0.2"
-    postcss-modules-scope "^2.2.0"
-    postcss-modules-values "^3.0.0"
-    postcss-value-parser "^4.0.3"
-    schema-utils "^2.6.6"
-    semver "^6.3.0"
-
-css-select-base-adapter@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
-  integrity sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=
-
-css-select@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
-  integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
-  dependencies:
-    boolbase "~1.0.0"
-    css-what "2.1"
-    domutils "1.5.1"
-    nth-check "~1.0.1"
-
-css-select@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/css-select/download/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
-  integrity sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=
-  dependencies:
-    boolbase "^1.0.0"
-    css-what "^3.2.1"
-    domutils "^1.7.0"
-    nth-check "^1.0.2"
-
-css-tree@1.0.0-alpha.37:
-  version "1.0.0-alpha.37"
-  resolved "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
-  integrity sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=
-  dependencies:
-    mdn-data "2.0.4"
-    source-map "^0.6.1"
-
-css-tree@1.0.0-alpha.39:
-  version "1.0.0-alpha.39"
-  resolved "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb"
-  integrity sha1-K/8//huz93bPfu/ZHuXLp3oUnus=
-  dependencies:
-    mdn-data "2.0.6"
-    source-map "^0.6.1"
-
-css-what@2.1:
-  version "2.1.3"
-  resolved "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz?cache=0&sync_timestamp=1573341698559&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
-  integrity sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI=
-
-css-what@^3.2.1:
-  version "3.2.1"
-  resolved "https://registry.npm.taobao.org/css-what/download/css-what-3.2.1.tgz?cache=0&sync_timestamp=1573341698559&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1"
-  integrity sha1-9KjxJCEGRiG0VnVeNKA6LCLfXaE=
-
-cssesc@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
-  integrity sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=
-
-cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.7:
-  version "4.0.7"
-  resolved "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
-  integrity sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y=
-  dependencies:
-    css-declaration-sorter "^4.0.1"
-    cssnano-util-raw-cache "^4.0.1"
-    postcss "^7.0.0"
-    postcss-calc "^7.0.1"
-    postcss-colormin "^4.0.3"
-    postcss-convert-values "^4.0.1"
-    postcss-discard-comments "^4.0.2"
-    postcss-discard-duplicates "^4.0.2"
-    postcss-discard-empty "^4.0.1"
-    postcss-discard-overridden "^4.0.1"
-    postcss-merge-longhand "^4.0.11"
-    postcss-merge-rules "^4.0.3"
-    postcss-minify-font-values "^4.0.2"
-    postcss-minify-gradients "^4.0.2"
-    postcss-minify-params "^4.0.2"
-    postcss-minify-selectors "^4.0.2"
-    postcss-normalize-charset "^4.0.1"
-    postcss-normalize-display-values "^4.0.2"
-    postcss-normalize-positions "^4.0.2"
-    postcss-normalize-repeat-style "^4.0.2"
-    postcss-normalize-string "^4.0.2"
-    postcss-normalize-timing-functions "^4.0.2"
-    postcss-normalize-unicode "^4.0.1"
-    postcss-normalize-url "^4.0.1"
-    postcss-normalize-whitespace "^4.0.2"
-    postcss-ordered-values "^4.1.2"
-    postcss-reduce-initial "^4.0.3"
-    postcss-reduce-transforms "^4.0.2"
-    postcss-svgo "^4.0.2"
-    postcss-unique-selectors "^4.0.1"
-
-cssnano-util-get-arguments@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
-  integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
-
-cssnano-util-get-match@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
-  integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
-
-cssnano-util-raw-cache@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
-  integrity sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI=
-  dependencies:
-    postcss "^7.0.0"
-
-cssnano-util-same-parent@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
-  integrity sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=
-
-cssnano@^4.0.0, cssnano@^4.1.10:
-  version "4.1.10"
-  resolved "https://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
-  integrity sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI=
-  dependencies:
-    cosmiconfig "^5.0.0"
-    cssnano-preset-default "^4.0.7"
-    is-resolvable "^1.0.0"
-    postcss "^7.0.0"
-
-csso@^4.0.2:
-  version "4.0.3"
-  resolved "https://registry.npm.taobao.org/csso/download/csso-4.0.3.tgz?cache=0&sync_timestamp=1585052130344&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsso%2Fdownload%2Fcsso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903"
-  integrity sha1-DZmF3IUsfMKyys+74QeQFNGo6QM=
-  dependencies:
-    css-tree "1.0.0-alpha.39"
-
-cyclist@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
-  integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
-
-dashdash@^1.12.0:
-  version "1.14.1"
-  resolved "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
-  integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
-  dependencies:
-    assert-plus "^1.0.0"
-
-de-indent@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
-  integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
-
-debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
-  version "2.6.9"
-  resolved "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
-  integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=
-  dependencies:
-    ms "2.0.0"
-
-debug@^3.0.0, debug@^3.1.1, debug@^3.2.5:
-  version "3.2.6"
-  resolved "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
-  integrity sha1-6D0X3hbYp++3cX7b5fsQE17uYps=
-  dependencies:
-    ms "^2.1.1"
-
-debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
-  integrity sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=
-  dependencies:
-    ms "^2.1.1"
-
-decamelize@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz?cache=0&sync_timestamp=1580010393599&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-  integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-
-decode-uri-component@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
-  integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
-
-deep-equal@^1.0.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
-  integrity sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=
-  dependencies:
-    is-arguments "^1.0.4"
-    is-date-object "^1.0.1"
-    is-regex "^1.0.4"
-    object-is "^1.0.1"
-    object-keys "^1.1.1"
-    regexp.prototype.flags "^1.2.0"
-
-deep-is@~0.1.3:
-  version "0.1.3"
-  resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-  integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-
-deepmerge@^1.2.0, deepmerge@^1.5.2:
-  version "1.5.2"
-  resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1572279720382&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753"
-  integrity sha1-EEmdhohEza1P7ghC34x/bwyVp1M=
-
-default-gateway@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
-  integrity sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=
-  dependencies:
-    execa "^1.0.0"
-    ip-regex "^2.1.0"
-
-default-gateway@^5.0.5:
-  version "5.0.5"
-  resolved "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.5.tgz#4fd6bd5d2855d39b34cc5a59505486e9aafc9b10"
-  integrity sha1-T9a9XShV05s0zFpZUFSG6ar8mxA=
-  dependencies:
-    execa "^3.3.0"
-
-defaults@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
-  integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
-  dependencies:
-    clone "^1.0.2"
-
-define-properties@^1.1.2, define-properties@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
-  integrity sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=
-  dependencies:
-    object-keys "^1.0.12"
-
-define-property@^0.2.5:
-  version "0.2.5"
-  resolved "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
-  integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
-  dependencies:
-    is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
-  integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
-  dependencies:
-    is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
-  integrity sha1-1Flono1lS6d+AqgX+HENcCyxbp0=
-  dependencies:
-    is-descriptor "^1.0.2"
-    isobject "^3.0.1"
-
-del@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
-  integrity sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=
-  dependencies:
-    "@types/glob" "^7.1.1"
-    globby "^6.1.0"
-    is-path-cwd "^2.0.0"
-    is-path-in-cwd "^2.0.0"
-    p-map "^2.0.0"
-    pify "^4.0.1"
-    rimraf "^2.6.3"
-
-delayed-stream@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
-  integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
-
-depd@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
-  integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-
-des.js@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/des.js/download/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
-  integrity sha1-U4IULhvcU/hdhtU+X0qn3rkeCEM=
-  dependencies:
-    inherits "^2.0.1"
-    minimalistic-assert "^1.0.0"
-
-destroy@~1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
-  integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
-
-detect-node@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
-  integrity sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=
-
-diffie-hellman@^5.0.0:
-  version "5.0.3"
-  resolved "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
-  integrity sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=
-  dependencies:
-    bn.js "^4.1.0"
-    miller-rabin "^4.0.0"
-    randombytes "^2.0.0"
-
-dir-glob@^2.0.0, dir-glob@^2.2.2:
-  version "2.2.2"
-  resolved "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4"
-  integrity sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=
-  dependencies:
-    path-type "^3.0.0"
-
-dns-equal@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
-  integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
-
-dns-packet@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
-  integrity sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=
-  dependencies:
-    ip "^1.1.0"
-    safe-buffer "^5.0.1"
-
-dns-txt@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
-  integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
-  dependencies:
-    buffer-indexof "^1.0.0"
-
-doctrine@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
-  integrity sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=
-  dependencies:
-    esutils "^2.0.2"
-
-dom-converter@^0.2:
-  version "0.2.0"
-  resolved "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
-  integrity sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=
-  dependencies:
-    utila "~0.4"
-
-dom-serializer@0:
-  version "0.2.2"
-  resolved "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
-  integrity sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=
-  dependencies:
-    domelementtype "^2.0.1"
-    entities "^2.0.0"
-
-domain-browser@^1.1.1:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz?cache=0&sync_timestamp=1585176402043&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomain-browser%2Fdownload%2Fdomain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
-  integrity sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=
-
-domelementtype@1, domelementtype@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
-  integrity sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=
-
-domelementtype@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d"
-  integrity sha1-H4vf6R9aeAYydOgDtL3O326U+U0=
-
-domhandler@^2.3.0:
-  version "2.4.2"
-  resolved "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
-  integrity sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=
-  dependencies:
-    domelementtype "1"
-
-domutils@1.5.1:
-  version "1.5.1"
-  resolved "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
-  integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
-  dependencies:
-    dom-serializer "0"
-    domelementtype "1"
-
-domutils@^1.5.1, domutils@^1.7.0:
-  version "1.7.0"
-  resolved "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
-  integrity sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=
-  dependencies:
-    dom-serializer "0"
-    domelementtype "1"
-
-dot-prop@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.npm.taobao.org/dot-prop/download/dot-prop-5.2.0.tgz?cache=0&sync_timestamp=1572620767955&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb"
-  integrity sha1-w07MKVVtxF8fTCJpe29JBODMT8s=
-  dependencies:
-    is-obj "^2.0.0"
-
-dotenv-expand@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
-  integrity sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=
-
-dotenv@^8.2.0:
-  version "8.2.0"
-  resolved "https://registry.npm.taobao.org/dotenv/download/dotenv-8.2.0.tgz?cache=0&sync_timestamp=1571190782798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdotenv%2Fdownload%2Fdotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
-  integrity sha1-l+YZJZradQ7qPk6j4mvO6lQksWo=
-
-duplexer@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
-  integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
-
-duplexify@^3.4.2, duplexify@^3.6.0:
-  version "3.7.1"
-  resolved "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
-  integrity sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=
-  dependencies:
-    end-of-stream "^1.0.0"
-    inherits "^2.0.1"
-    readable-stream "^2.0.0"
-    stream-shift "^1.0.0"
-
-easy-stack@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.0.tgz#12c91b3085a37f0baa336e9486eac4bf94e3e788"
-  integrity sha1-EskbMIWjfwuqM26UhurEv5Tj54g=
-
-ecc-jsbn@~0.1.1:
-  version "0.1.2"
-  resolved "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
-  integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
-  dependencies:
-    jsbn "~0.1.0"
-    safer-buffer "^2.1.0"
-
-ee-first@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
-  integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-
-ejs@^2.6.1:
-  version "2.7.4"
-  resolved "https://registry.npm.taobao.org/ejs/download/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
-  integrity sha1-SGYSh1c9zFPjZsehrlLDoSDuybo=
-
-electron-to-chromium@^1.3.413:
-  version "1.3.417"
-  resolved "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.417.tgz#7663efb1e81911d56be8f39d12cdc63b86011ee1"
-  integrity sha1-dmPvsegZEdVr6POdEs3GO4YBHuE=
-
-element-ui@^2.13.1:
-  version "2.13.1"
-  resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.13.1.tgz#0cb1a45cf27aa61c601defbe192740ac5cb9df7c"
-  integrity sha512-jyvJmXa2c6ElRc4NOw4V1vnjHsvfzTRhbwElZ68CyF9by2F64B+AJRzujg/HJgXCimHwd2g1Av9D04EP3mWymg==
-  dependencies:
-    async-validator "~1.8.1"
-    babel-helper-vue-jsx-merge-props "^2.0.0"
-    deepmerge "^1.2.0"
-    normalize-wheel "^1.0.1"
-    resize-observer-polyfill "^1.5.0"
-    throttle-debounce "^1.0.1"
-
-elliptic@^6.0.0:
-  version "6.5.2"
-  resolved "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.2.tgz?cache=0&sync_timestamp=1574449776597&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762"
-  integrity sha1-BcVnjXFzwEnYykM1UiJKSV0ON2I=
-  dependencies:
-    bn.js "^4.4.0"
-    brorand "^1.0.1"
-    hash.js "^1.0.0"
-    hmac-drbg "^1.0.0"
-    inherits "^2.0.1"
-    minimalistic-assert "^1.0.0"
-    minimalistic-crypto-utils "^1.0.0"
-
-emoji-regex@^7.0.1:
-  version "7.0.3"
-  resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
-  integrity sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=
-
-emoji-regex@^8.0.0:
-  version "8.0.0"
-  resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
-  integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=
-
-emojis-list@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-  integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
-
-emojis-list@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
-  integrity sha1-VXBmIEatKeLpFucariYKvf9Pang=
-
-encodeurl@~1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
-  integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-
-end-of-stream@^1.0.0, end-of-stream@^1.1.0:
-  version "1.4.4"
-  resolved "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
-  integrity sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=
-  dependencies:
-    once "^1.4.0"
-
-enhanced-resolve@^4.1.0:
-  version "4.1.1"
-  resolved "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.1.tgz?cache=0&sync_timestamp=1572991764265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66"
-  integrity sha1-KTfiuAZs0P584JkKmPDXGjUYn2Y=
-  dependencies:
-    graceful-fs "^4.1.2"
-    memory-fs "^0.5.0"
-    tapable "^1.0.0"
-
-entities@^1.1.1:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
-  integrity sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=
-
-entities@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4"
-  integrity sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=
-
-errno@^0.1.3, errno@~0.1.7:
-  version "0.1.7"
-  resolved "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
-  integrity sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=
-  dependencies:
-    prr "~1.0.1"
-
-error-ex@^1.3.1:
-  version "1.3.2"
-  resolved "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
-  integrity sha1-tKxAZIEH/c3PriQvQovqihTU8b8=
-  dependencies:
-    is-arrayish "^0.2.1"
-
-error-stack-parser@^2.0.0:
-  version "2.0.6"
-  resolved "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8"
-  integrity sha1-WpmnB716TFinl5AtSNgoA+3mqtg=
-  dependencies:
-    stackframe "^1.1.1"
-
-es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5:
-  version "1.17.5"
-  resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9"
-  integrity sha1-2MnR1myJgfuSAOIlHXme7pJ3Suk=
-  dependencies:
-    es-to-primitive "^1.2.1"
-    function-bind "^1.1.1"
-    has "^1.0.3"
-    has-symbols "^1.0.1"
-    is-callable "^1.1.5"
-    is-regex "^1.0.5"
-    object-inspect "^1.7.0"
-    object-keys "^1.1.1"
-    object.assign "^4.1.0"
-    string.prototype.trimleft "^2.1.1"
-    string.prototype.trimright "^2.1.1"
-
-es-to-primitive@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
-  integrity sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=
-  dependencies:
-    is-callable "^1.1.4"
-    is-date-object "^1.0.1"
-    is-symbol "^1.0.2"
-
-escape-html@~1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
-  integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
-
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
-eslint-loader@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337"
-  integrity sha1-KLnBLaVAV68IReKmEScBova/gzc=
-  dependencies:
-    loader-fs-cache "^1.0.0"
-    loader-utils "^1.0.2"
-    object-assign "^4.0.1"
-    object-hash "^1.1.4"
-    rimraf "^2.6.1"
-
-eslint-plugin-vue@^6.2.2:
-  version "6.2.2"
-  resolved "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe"
-  integrity sha1-J/7NmjokeJsPER7N1UCp5WGY4P4=
-  dependencies:
-    natural-compare "^1.4.0"
-    semver "^5.6.0"
-    vue-eslint-parser "^7.0.0"
-
-eslint-scope@^4.0.3:
-  version "4.0.3"
-  resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
-  integrity sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=
-  dependencies:
-    esrecurse "^4.1.0"
-    estraverse "^4.1.1"
-
-eslint-scope@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
-  integrity sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=
-  dependencies:
-    esrecurse "^4.1.0"
-    estraverse "^4.1.1"
-
-eslint-utils@^1.4.3:
-  version "1.4.3"
-  resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
-  integrity sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=
-  dependencies:
-    eslint-visitor-keys "^1.1.0"
-
-eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
-  integrity sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=
-
-eslint@^6.7.2:
-  version "6.8.0"
-  resolved "https://registry.npm.taobao.org/eslint/download/eslint-6.8.0.tgz?cache=0&sync_timestamp=1587765712562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb"
-  integrity sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s=
-  dependencies:
-    "@babel/code-frame" "^7.0.0"
-    ajv "^6.10.0"
-    chalk "^2.1.0"
-    cross-spawn "^6.0.5"
-    debug "^4.0.1"
-    doctrine "^3.0.0"
-    eslint-scope "^5.0.0"
-    eslint-utils "^1.4.3"
-    eslint-visitor-keys "^1.1.0"
-    espree "^6.1.2"
-    esquery "^1.0.1"
-    esutils "^2.0.2"
-    file-entry-cache "^5.0.1"
-    functional-red-black-tree "^1.0.1"
-    glob-parent "^5.0.0"
-    globals "^12.1.0"
-    ignore "^4.0.6"
-    import-fresh "^3.0.0"
-    imurmurhash "^0.1.4"
-    inquirer "^7.0.0"
-    is-glob "^4.0.0"
-    js-yaml "^3.13.1"
-    json-stable-stringify-without-jsonify "^1.0.1"
-    levn "^0.3.0"
-    lodash "^4.17.14"
-    minimatch "^3.0.4"
-    mkdirp "^0.5.1"
-    natural-compare "^1.4.0"
-    optionator "^0.8.3"
-    progress "^2.0.0"
-    regexpp "^2.0.1"
-    semver "^6.1.2"
-    strip-ansi "^5.2.0"
-    strip-json-comments "^3.0.1"
-    table "^5.2.3"
-    text-table "^0.2.0"
-    v8-compile-cache "^2.0.3"
-
-espree@^6.1.2:
-  version "6.2.1"
-  resolved "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
-  integrity sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=
-  dependencies:
-    acorn "^7.1.1"
-    acorn-jsx "^5.2.0"
-    eslint-visitor-keys "^1.1.0"
-
-esprima@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
-  integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=
-
-esquery@^1.0.1:
-  version "1.3.1"
-  resolved "https://registry.npm.taobao.org/esquery/download/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
-  integrity sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=
-  dependencies:
-    estraverse "^5.1.0"
-
-esrecurse@^4.1.0:
-  version "4.2.1"
-  resolved "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
-  integrity sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=
-  dependencies:
-    estraverse "^4.1.0"
-
-estraverse@^4.1.0, estraverse@^4.1.1:
-  version "4.3.0"
-  resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1586996117385&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
-  integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=
-
-estraverse@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-5.1.0.tgz?cache=0&sync_timestamp=1586996117385&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
-  integrity sha1-N0MJ05/ZNa5QDnuS6Ka0xyDllkI=
-
-esutils@^2.0.2:
-  version "2.0.3"
-  resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
-  integrity sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=
-
-etag@~1.8.1:
-  version "1.8.1"
-  resolved "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
-  integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
-
-event-pubsub@4.3.0:
-  version "4.3.0"
-  resolved "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e"
-  integrity sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=
-
-eventemitter3@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb"
-  integrity sha1-1lF2FjiH7lnzhtZMgmELaWpKdOs=
-
-events@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/events/download/events-3.1.0.tgz?cache=0&sync_timestamp=1578498239809&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fevents%2Fdownload%2Fevents-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59"
-  integrity sha1-hCea8bNMt1qoi/X/KR9tC9mzGlk=
-
-eventsource@^1.0.7:
-  version "1.0.7"
-  resolved "https://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0"
-  integrity sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA=
-  dependencies:
-    original "^1.0.0"
-
-evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
-  integrity sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=
-  dependencies:
-    md5.js "^1.3.4"
-    safe-buffer "^5.1.1"
-
-execa@^0.8.0:
-  version "0.8.0"
-  resolved "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da"
-  integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=
-  dependencies:
-    cross-spawn "^5.0.1"
-    get-stream "^3.0.0"
-    is-stream "^1.1.0"
-    npm-run-path "^2.0.0"
-    p-finally "^1.0.0"
-    signal-exit "^3.0.0"
-    strip-eof "^1.0.0"
-
-execa@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
-  integrity sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=
-  dependencies:
-    cross-spawn "^6.0.0"
-    get-stream "^4.0.0"
-    is-stream "^1.1.0"
-    npm-run-path "^2.0.0"
-    p-finally "^1.0.0"
-    signal-exit "^3.0.0"
-    strip-eof "^1.0.0"
-
-execa@^3.3.0:
-  version "3.4.0"
-  resolved "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89"
-  integrity sha1-wI7UVQ72XYWPrCaf/IVyRG8364k=
-  dependencies:
-    cross-spawn "^7.0.0"
-    get-stream "^5.0.0"
-    human-signals "^1.1.1"
-    is-stream "^2.0.0"
-    merge-stream "^2.0.0"
-    npm-run-path "^4.0.0"
-    onetime "^5.1.0"
-    p-finally "^2.0.0"
-    signal-exit "^3.0.2"
-    strip-final-newline "^2.0.0"
-
-expand-brackets@^2.1.4:
-  version "2.1.4"
-  resolved "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
-  integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
-  dependencies:
-    debug "^2.3.3"
-    define-property "^0.2.5"
-    extend-shallow "^2.0.1"
-    posix-character-classes "^0.1.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-express@^4.16.3, express@^4.17.1:
-  version "4.17.1"
-  resolved "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
-  integrity sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=
-  dependencies:
-    accepts "~1.3.7"
-    array-flatten "1.1.1"
-    body-parser "1.19.0"
-    content-disposition "0.5.3"
-    content-type "~1.0.4"
-    cookie "0.4.0"
-    cookie-signature "1.0.6"
-    debug "2.6.9"
-    depd "~1.1.2"
-    encodeurl "~1.0.2"
-    escape-html "~1.0.3"
-    etag "~1.8.1"
-    finalhandler "~1.1.2"
-    fresh "0.5.2"
-    merge-descriptors "1.0.1"
-    methods "~1.1.2"
-    on-finished "~2.3.0"
-    parseurl "~1.3.3"
-    path-to-regexp "0.1.7"
-    proxy-addr "~2.0.5"
-    qs "6.7.0"
-    range-parser "~1.2.1"
-    safe-buffer "5.1.2"
-    send "0.17.1"
-    serve-static "1.14.1"
-    setprototypeof "1.1.1"
-    statuses "~1.5.0"
-    type-is "~1.6.18"
-    utils-merge "1.0.1"
-    vary "~1.1.2"
-
-extend-shallow@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
-  integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
-  dependencies:
-    is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
-  integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
-  dependencies:
-    assign-symbols "^1.0.0"
-    is-extendable "^1.0.1"
-
-extend@~3.0.2:
-  version "3.0.2"
-  resolved "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
-  integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=
-
-external-editor@^3.0.3:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
-  integrity sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=
-  dependencies:
-    chardet "^0.7.0"
-    iconv-lite "^0.4.24"
-    tmp "^0.0.33"
-
-extglob@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
-  integrity sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=
-  dependencies:
-    array-unique "^0.3.2"
-    define-property "^1.0.0"
-    expand-brackets "^2.1.4"
-    extend-shallow "^2.0.1"
-    fragment-cache "^0.2.1"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-extsprintf@1.3.0:
-  version "1.3.0"
-  resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
-  integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
-
-extsprintf@^1.2.0:
-  version "1.4.0"
-  resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
-  integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
-
-fast-deep-equal@^3.1.1:
-  version "3.1.1"
-  resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
-  integrity sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=
-
-fast-glob@^2.2.6:
-  version "2.2.7"
-  resolved "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&sync_timestamp=1582318805379&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
-  integrity sha1-aVOFfDr6R1//ku5gFdUtpwpM050=
-  dependencies:
-    "@mrmlnc/readdir-enhanced" "^2.2.1"
-    "@nodelib/fs.stat" "^1.1.2"
-    glob-parent "^3.1.0"
-    is-glob "^4.0.0"
-    merge2 "^1.2.3"
-    micromatch "^3.1.10"
-
-fast-json-stable-stringify@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
-  integrity sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=
-
-fast-levenshtein@~2.0.6:
-  version "2.0.6"
-  resolved "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-  integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
-
-faye-websocket@^0.10.0:
-  version "0.10.0"
-  resolved "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
-  integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=
-  dependencies:
-    websocket-driver ">=0.5.1"
-
-faye-websocket@~0.11.1:
-  version "0.11.3"
-  resolved "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
-  integrity sha1-XA6aiWjokSwoZjn96XeosgnyUI4=
-  dependencies:
-    websocket-driver ">=0.5.1"
-
-figgy-pudding@^3.5.1:
-  version "3.5.2"
-  resolved "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
-  integrity sha1-tO7oFIq7Adzx0aw0Nn1Z4S+mHW4=
-
-figures@^3.0.0:
-  version "3.2.0"
-  resolved "https://registry.npm.taobao.org/figures/download/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
-  integrity sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=
-  dependencies:
-    escape-string-regexp "^1.0.5"
-
-file-entry-cache@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
-  integrity sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=
-  dependencies:
-    flat-cache "^2.0.1"
-
-file-loader@^4.2.0:
-  version "4.3.0"
-  resolved "https://registry.npm.taobao.org/file-loader/download/file-loader-4.3.0.tgz?cache=0&sync_timestamp=1584446884489&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-loader%2Fdownload%2Ffile-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af"
-  integrity sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8=
-  dependencies:
-    loader-utils "^1.2.3"
-    schema-utils "^2.5.0"
-
-file-uri-to-path@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
-  integrity sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=
-
-filesize@^3.6.1:
-  version "3.6.1"
-  resolved "https://registry.npm.taobao.org/filesize/download/filesize-3.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffilesize%2Fdownload%2Ffilesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
-  integrity sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=
-
-fill-range@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
-  integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
-  dependencies:
-    extend-shallow "^2.0.1"
-    is-number "^3.0.0"
-    repeat-string "^1.6.1"
-    to-regex-range "^2.1.0"
-
-finalhandler@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
-  integrity sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=
-  dependencies:
-    debug "2.6.9"
-    encodeurl "~1.0.2"
-    escape-html "~1.0.3"
-    on-finished "~2.3.0"
-    parseurl "~1.3.3"
-    statuses "~1.5.0"
-    unpipe "~1.0.0"
-
-find-cache-dir@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
-  integrity sha1-yN765XyKUqinhPnjHFfHQumToLk=
-  dependencies:
-    commondir "^1.0.1"
-    mkdirp "^0.5.1"
-    pkg-dir "^1.0.0"
-
-find-cache-dir@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
-  integrity sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=
-  dependencies:
-    commondir "^1.0.1"
-    make-dir "^2.0.0"
-    pkg-dir "^3.0.0"
-
-find-cache-dir@^3.0.0, find-cache-dir@^3.2.0:
-  version "3.3.1"
-  resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
-  integrity sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=
-  dependencies:
-    commondir "^1.0.1"
-    make-dir "^3.0.2"
-    pkg-dir "^4.1.0"
-
-find-up@^1.0.0:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
-  integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
-  dependencies:
-    path-exists "^2.0.0"
-    pinkie-promise "^2.0.0"
-
-find-up@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
-  integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
-  dependencies:
-    locate-path "^2.0.0"
-
-find-up@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
-  integrity sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=
-  dependencies:
-    locate-path "^3.0.0"
-
-find-up@^4.0.0, find-up@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
-  integrity sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=
-  dependencies:
-    locate-path "^5.0.0"
-    path-exists "^4.0.0"
-
-flat-cache@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
-  integrity sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=
-  dependencies:
-    flatted "^2.0.0"
-    rimraf "2.6.3"
-    write "1.0.3"
-
-flatted@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.npm.taobao.org/flatted/download/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
-  integrity sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=
-
-flush-write-stream@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
-  integrity sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=
-  dependencies:
-    inherits "^2.0.3"
-    readable-stream "^2.3.6"
-
-follow-redirects@^1.0.0:
-  version "1.11.0"
-  resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.11.0.tgz#afa14f08ba12a52963140fe43212658897bc0ecb"
-  integrity sha1-r6FPCLoSpSljFA/kMhJliJe8Dss=
-  dependencies:
-    debug "^3.0.0"
-
-for-in@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-  integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-
-forever-agent@~0.6.1:
-  version "0.6.1"
-  resolved "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
-  integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
-
-form-data@~2.3.2:
-  version "2.3.3"
-  resolved "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz?cache=0&sync_timestamp=1573027118125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
-  integrity sha1-3M5SwF9kTymManq5Nr1yTO/786Y=
-  dependencies:
-    asynckit "^0.4.0"
-    combined-stream "^1.0.6"
-    mime-types "^2.1.12"
-
-forwarded@~0.1.2:
-  version "0.1.2"
-  resolved "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
-  integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
-
-fragment-cache@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
-  integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
-  dependencies:
-    map-cache "^0.2.2"
-
-fresh@0.5.2:
-  version "0.5.2"
-  resolved "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
-  integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-
-from2@^2.1.0:
-  version "2.3.0"
-  resolved "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
-  integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
-  dependencies:
-    inherits "^2.0.1"
-    readable-stream "^2.0.0"
-
-fs-extra@^7.0.1:
-  version "7.0.1"
-  resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
-  integrity sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=
-  dependencies:
-    graceful-fs "^4.1.2"
-    jsonfile "^4.0.0"
-    universalify "^0.1.0"
-
-fs-minipass@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-2.1.0.tgz?cache=0&sync_timestamp=1579628689954&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-minipass%2Fdownload%2Ffs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
-  integrity sha1-f1A2/b8SxjwWkZDL5BmchSJx+fs=
-  dependencies:
-    minipass "^3.0.0"
-
-fs-write-stream-atomic@^1.0.8:
-  version "1.0.10"
-  resolved "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
-  integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
-  dependencies:
-    graceful-fs "^4.1.2"
-    iferr "^0.1.5"
-    imurmurhash "^0.1.4"
-    readable-stream "1 || 2"
-
-fs.realpath@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-fsevents@^1.2.7:
-  version "1.2.12"
-  resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.12.tgz?cache=0&sync_timestamp=1587572647225&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c"
-  integrity sha1-234NjsOwtFck/U2D1DVUqPHw3lw=
-  dependencies:
-    bindings "^1.5.0"
-    nan "^2.12.1"
-
-function-bind@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
-  integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=
-
-functional-red-black-tree@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
-  integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-
-gensync@^1.0.0-beta.1:
-  version "1.0.0-beta.1"
-  resolved "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
-  integrity sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk=
-
-get-caller-file@^1.0.1:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
-  integrity sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=
-
-get-caller-file@^2.0.1:
-  version "2.0.5"
-  resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
-  integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=
-
-get-stream@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
-  integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
-
-get-stream@^4.0.0:
-  version "4.1.0"
-  resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
-  integrity sha1-wbJVV189wh1Zv8ec09K0axw6VLU=
-  dependencies:
-    pump "^3.0.0"
-
-get-stream@^5.0.0:
-  version "5.1.0"
-  resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9"
-  integrity sha1-ASA83JJZf5uQkGfD5lbMH008Tck=
-  dependencies:
-    pump "^3.0.0"
-
-get-value@^2.0.3, get-value@^2.0.6:
-  version "2.0.6"
-  resolved "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
-  integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-
-getpass@^0.1.1:
-  version "0.1.7"
-  resolved "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
-  integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
-  dependencies:
-    assert-plus "^1.0.0"
-
-glob-parent@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
-  integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
-  dependencies:
-    is-glob "^3.1.0"
-    path-dirname "^1.0.0"
-
-glob-parent@^5.0.0:
-  version "5.1.1"
-  resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
-  integrity sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=
-  dependencies:
-    is-glob "^4.0.1"
-
-glob-to-regexp@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
-  integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
-
-glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
-  version "7.1.6"
-  resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz?cache=0&sync_timestamp=1573078079496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
-  integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=
-  dependencies:
-    fs.realpath "^1.0.0"
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "^3.0.4"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
-
-globals@^11.1.0:
-  version "11.12.0"
-  resolved "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
-  integrity sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=
-
-globals@^12.1.0:
-  version "12.4.0"
-  resolved "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
-  integrity sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=
-  dependencies:
-    type-fest "^0.8.1"
-
-globby@^6.1.0:
-  version "6.1.0"
-  resolved "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
-  integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
-  dependencies:
-    array-union "^1.0.1"
-    glob "^7.0.3"
-    object-assign "^4.0.1"
-    pify "^2.0.0"
-    pinkie-promise "^2.0.0"
-
-globby@^7.1.1:
-  version "7.1.1"
-  resolved "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
-  integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA=
-  dependencies:
-    array-union "^1.0.1"
-    dir-glob "^2.0.0"
-    glob "^7.1.2"
-    ignore "^3.3.5"
-    pify "^3.0.0"
-    slash "^1.0.0"
-
-globby@^9.2.0:
-  version "9.2.0"
-  resolved "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d"
-  integrity sha1-/QKacGxwPSm90XD0tts6P3p8tj0=
-  dependencies:
-    "@types/glob" "^7.1.1"
-    array-union "^1.0.2"
-    dir-glob "^2.2.2"
-    fast-glob "^2.2.6"
-    glob "^7.1.3"
-    ignore "^4.0.3"
-    pify "^4.0.1"
-    slash "^2.0.0"
-
-graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.2:
-  version "4.2.3"
-  resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
-  integrity sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=
-
-gzip-size@^5.0.0:
-  version "5.1.1"
-  resolved "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
-  integrity sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=
-  dependencies:
-    duplexer "^0.1.1"
-    pify "^4.0.1"
-
-handle-thing@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
-  integrity sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=
-
-har-schema@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
-  integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-
-har-validator@~5.1.3:
-  version "5.1.3"
-  resolved "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
-  integrity sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=
-  dependencies:
-    ajv "^6.5.5"
-    har-schema "^2.0.0"
-
-has-ansi@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
-  integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
-  dependencies:
-    ansi-regex "^2.0.0"
-
-has-flag@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
-  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-
-has-flag@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
-  integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=
-
-has-symbols@^1.0.0, has-symbols@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
-  integrity sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=
-
-has-value@^0.3.1:
-  version "0.3.1"
-  resolved "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
-  integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
-  dependencies:
-    get-value "^2.0.3"
-    has-values "^0.1.4"
-    isobject "^2.0.0"
-
-has-value@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
-  integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
-  dependencies:
-    get-value "^2.0.6"
-    has-values "^1.0.0"
-    isobject "^3.0.0"
-
-has-values@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
-  integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
-
-has-values@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
-  integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
-  dependencies:
-    is-number "^3.0.0"
-    kind-of "^4.0.0"
-
-has@^1.0.0, has@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
-  integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=
-  dependencies:
-    function-bind "^1.1.1"
-
-hash-base@^3.0.0:
-  version "3.0.4"
-  resolved "https://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
-  integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
-  dependencies:
-    inherits "^2.0.1"
-    safe-buffer "^5.0.1"
-
-hash-sum@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
-  integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=
-
-hash-sum@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
-  integrity sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=
-
-hash.js@^1.0.0, hash.js@^1.0.3:
-  version "1.1.7"
-  resolved "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
-  integrity sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=
-  dependencies:
-    inherits "^2.0.3"
-    minimalistic-assert "^1.0.1"
-
-he@1.2.x, he@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
-  integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8=
-
-hex-color-regex@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
-  integrity sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=
-
-highlight.js@^9.6.0:
-  version "9.18.1"
-  resolved "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c"
-  integrity sha1-7SGqAB/mJSuxCj121HVzxlOf4Tw=
-
-hmac-drbg@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
-  integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
-  dependencies:
-    hash.js "^1.0.3"
-    minimalistic-assert "^1.0.0"
-    minimalistic-crypto-utils "^1.0.1"
-
-hoopy@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
-  integrity sha1-YJIH1mEQADOpqUAq096mdzgcGx0=
-
-hosted-git-info@^2.1.4:
-  version "2.8.8"
-  resolved "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
-  integrity sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=
-
-hpack.js@^2.1.6:
-  version "2.1.6"
-  resolved "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
-  integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
-  dependencies:
-    inherits "^2.0.1"
-    obuf "^1.0.0"
-    readable-stream "^2.0.1"
-    wbuf "^1.1.0"
-
-hsl-regex@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
-  integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
-
-hsla-regex@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
-  integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
-
-html-comment-regex@^1.1.0:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
-  integrity sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=
-
-html-entities@^1.2.1:
-  version "1.3.1"
-  resolved "https://registry.npm.taobao.org/html-entities/download/html-entities-1.3.1.tgz?cache=0&sync_timestamp=1586616304085&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-entities%2Fdownload%2Fhtml-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
-  integrity sha1-+5oaS1sUxdq6gtPjTGrk/nAaDkQ=
-
-html-minifier@^3.2.3:
-  version "3.5.21"
-  resolved "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c"
-  integrity sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=
-  dependencies:
-    camel-case "3.0.x"
-    clean-css "4.2.x"
-    commander "2.17.x"
-    he "1.2.x"
-    param-case "2.1.x"
-    relateurl "0.2.x"
-    uglify-js "3.4.x"
-
-html-tags@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b"
-  integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=
-
-html-webpack-plugin@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1586450111527&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b"
-  integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s=
-  dependencies:
-    html-minifier "^3.2.3"
-    loader-utils "^0.2.16"
-    lodash "^4.17.3"
-    pretty-error "^2.0.2"
-    tapable "^1.0.0"
-    toposort "^1.0.0"
-    util.promisify "1.0.0"
-
-htmlparser2@^3.3.0:
-  version "3.10.1"
-  resolved "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1582422905208&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
-  integrity sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=
-  dependencies:
-    domelementtype "^1.3.1"
-    domhandler "^2.3.0"
-    domutils "^1.5.1"
-    entities "^1.1.1"
-    inherits "^2.0.1"
-    readable-stream "^3.1.1"
-
-http-deceiver@^1.2.7:
-  version "1.2.7"
-  resolved "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
-  integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
-
-http-errors@1.7.2:
-  version "1.7.2"
-  resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
-  integrity sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=
-  dependencies:
-    depd "~1.1.2"
-    inherits "2.0.3"
-    setprototypeof "1.1.1"
-    statuses ">= 1.5.0 < 2"
-    toidentifier "1.0.0"
-
-http-errors@~1.6.2:
-  version "1.6.3"
-  resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
-  integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
-  dependencies:
-    depd "~1.1.2"
-    inherits "2.0.3"
-    setprototypeof "1.1.0"
-    statuses ">= 1.4.0 < 2"
-
-http-errors@~1.7.2:
-  version "1.7.3"
-  resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
-  integrity sha1-bGGeT5xgMIw4UZSYwU+7EKrOuwY=
-  dependencies:
-    depd "~1.1.2"
-    inherits "2.0.4"
-    setprototypeof "1.1.1"
-    statuses ">= 1.5.0 < 2"
-    toidentifier "1.0.0"
-
-"http-parser-js@>=0.4.0 <0.4.11":
-  version "0.4.10"
-  resolved "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4"
-  integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=
-
-http-proxy-middleware@0.19.1:
-  version "0.19.1"
-  resolved "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
-  integrity sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=
-  dependencies:
-    http-proxy "^1.17.0"
-    is-glob "^4.0.0"
-    lodash "^4.17.11"
-    micromatch "^3.1.10"
-
-http-proxy@^1.17.0:
-  version "1.18.0"
-  resolved "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a"
-  integrity sha1-2+VfY+daNH2389mZdPJpKjFKajo=
-  dependencies:
-    eventemitter3 "^4.0.0"
-    follow-redirects "^1.0.0"
-    requires-port "^1.0.0"
-
-http-signature@~1.2.0:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
-  integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
-  dependencies:
-    assert-plus "^1.0.0"
-    jsprim "^1.2.2"
-    sshpk "^1.7.0"
-
-https-browserify@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
-  integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
-
-human-signals@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz?cache=0&sync_timestamp=1584198706482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhuman-signals%2Fdownload%2Fhuman-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
-  integrity sha1-xbHNFPUK6uCatsWf5jujOV/k36M=
-
-iconv-lite@0.4.24, iconv-lite@^0.4.24:
-  version "0.4.24"
-  resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1579334008444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
-  integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=
-  dependencies:
-    safer-buffer ">= 2.1.2 < 3"
-
-icss-utils@^4.0.0, icss-utils@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
-  integrity sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc=
-  dependencies:
-    postcss "^7.0.14"
-
-ieee754@^1.1.4:
-  version "1.1.13"
-  resolved "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
-  integrity sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=
-
-iferr@^0.1.5:
-  version "0.1.5"
-  resolved "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
-  integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
-
-ignore@^3.3.5:
-  version "3.3.10"
-  resolved "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
-  integrity sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=
-
-ignore@^4.0.3, ignore@^4.0.6:
-  version "4.0.6"
-  resolved "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
-  integrity sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=
-
-import-cwd@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
-  integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=
-  dependencies:
-    import-from "^2.1.0"
-
-import-fresh@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1573665074534&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
-  integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
-  dependencies:
-    caller-path "^2.0.0"
-    resolve-from "^3.0.0"
-
-import-fresh@^3.0.0:
-  version "3.2.1"
-  resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.1.tgz?cache=0&sync_timestamp=1573665074534&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
-  integrity sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=
-  dependencies:
-    parent-module "^1.0.0"
-    resolve-from "^4.0.0"
-
-import-from@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
-  integrity sha1-M1238qev/VOqpHHUuAId7ja387E=
-  dependencies:
-    resolve-from "^3.0.0"
-
-import-local@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
-  integrity sha1-VQcL44pZk88Y72236WH1vuXFoJ0=
-  dependencies:
-    pkg-dir "^3.0.0"
-    resolve-cwd "^2.0.0"
-
-imurmurhash@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
-  integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-
-indent-string@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/indent-string/download/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
-  integrity sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=
-
-indexes-of@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
-  integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
-
-infer-owner@^1.0.3, infer-owner@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
-  integrity sha1-xM78qo5RBRwqQLos6KPScpWvlGc=
-
-inflight@^1.0.4:
-  version "1.0.6"
-  resolved "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
-  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
-  dependencies:
-    once "^1.3.0"
-    wrappy "1"
-
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
-  version "2.0.4"
-  resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
-  integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
-
-inherits@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
-  integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
-
-inherits@2.0.3:
-  version "2.0.3"
-  resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-
-inquirer@^7.0.0, inquirer@^7.1.0:
-  version "7.1.0"
-  resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-7.1.0.tgz?cache=0&sync_timestamp=1583819607980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29"
-  integrity sha1-EpigGFmIPhfHJkuChwrhA0+S3Sk=
-  dependencies:
-    ansi-escapes "^4.2.1"
-    chalk "^3.0.0"
-    cli-cursor "^3.1.0"
-    cli-width "^2.0.0"
-    external-editor "^3.0.3"
-    figures "^3.0.0"
-    lodash "^4.17.15"
-    mute-stream "0.0.8"
-    run-async "^2.4.0"
-    rxjs "^6.5.3"
-    string-width "^4.1.0"
-    strip-ansi "^6.0.0"
-    through "^2.3.6"
-
-internal-ip@^4.3.0:
-  version "4.3.0"
-  resolved "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
-  integrity sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=
-  dependencies:
-    default-gateway "^4.2.0"
-    ipaddr.js "^1.9.0"
-
-invariant@^2.2.2, invariant@^2.2.4:
-  version "2.2.4"
-  resolved "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
-  integrity sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=
-  dependencies:
-    loose-envify "^1.0.0"
-
-invert-kv@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
-  integrity sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=
-
-ip-regex@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
-  integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
-
-ip@^1.1.0, ip@^1.1.5:
-  version "1.1.5"
-  resolved "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
-  integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
-
-ipaddr.js@1.9.1, ipaddr.js@^1.9.0:
-  version "1.9.1"
-  resolved "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
-  integrity sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=
-
-is-absolute-url@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
-  integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
-
-is-absolute-url@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
-  integrity sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=
-
-is-accessor-descriptor@^0.1.6:
-  version "0.1.6"
-  resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
-  integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
-  dependencies:
-    kind-of "^3.0.2"
-
-is-accessor-descriptor@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
-  integrity sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=
-  dependencies:
-    kind-of "^6.0.0"
-
-is-arguments@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
-  integrity sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM=
-
-is-arrayish@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-  integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-
-is-arrayish@^0.3.1:
-  version "0.3.2"
-  resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
-  integrity sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=
-
-is-binary-path@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
-  integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
-  dependencies:
-    binary-extensions "^1.0.0"
-
-is-buffer@^1.1.5:
-  version "1.1.6"
-  resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-  integrity sha1-76ouqdqg16suoTqXsritUf776L4=
-
-is-callable@^1.1.4, is-callable@^1.1.5:
-  version "1.1.5"
-  resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
-  integrity sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=
-
-is-ci@^1.0.10:
-  version "1.2.1"
-  resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
-  integrity sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=
-  dependencies:
-    ci-info "^1.5.0"
-
-is-color-stop@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
-  integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
-  dependencies:
-    css-color-names "^0.0.4"
-    hex-color-regex "^1.1.0"
-    hsl-regex "^1.0.0"
-    hsla-regex "^1.0.0"
-    rgb-regex "^1.0.1"
-    rgba-regex "^1.0.0"
-
-is-data-descriptor@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
-  integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
-  dependencies:
-    kind-of "^3.0.2"
-
-is-data-descriptor@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
-  integrity sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=
-  dependencies:
-    kind-of "^6.0.0"
-
-is-date-object@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz?cache=0&sync_timestamp=1576729165697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-date-object%2Fdownload%2Fis-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
-  integrity sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=
-
-is-descriptor@^0.1.0:
-  version "0.1.6"
-  resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
-  integrity sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=
-  dependencies:
-    is-accessor-descriptor "^0.1.6"
-    is-data-descriptor "^0.1.4"
-    kind-of "^5.0.0"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
-  integrity sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=
-  dependencies:
-    is-accessor-descriptor "^1.0.0"
-    is-data-descriptor "^1.0.0"
-    kind-of "^6.0.2"
-
-is-directory@^0.3.1:
-  version "0.3.1"
-  resolved "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
-  integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-  integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
-
-is-extendable@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
-  integrity sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=
-  dependencies:
-    is-plain-object "^2.0.4"
-
-is-extglob@^2.1.0, is-extglob@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-fullwidth-code-point@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
-  integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
-  dependencies:
-    number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-  integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
-is-fullwidth-code-point@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
-  integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=
-
-is-glob@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
-  integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
-  dependencies:
-    is-extglob "^2.1.0"
-
-is-glob@^4.0.0, is-glob@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
-  integrity sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=
-  dependencies:
-    is-extglob "^2.1.1"
-
-is-number@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
-  integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
-  dependencies:
-    kind-of "^3.0.2"
-
-is-obj@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/is-obj/download/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
-  integrity sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=
-
-is-path-cwd@^2.0.0:
-  version "2.2.0"
-  resolved "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
-  integrity sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=
-
-is-path-in-cwd@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
-  integrity sha1-v+Lcomxp85cmWkAJljYCk1oFOss=
-  dependencies:
-    is-path-inside "^2.1.0"
-
-is-path-inside@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
-  integrity sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=
-  dependencies:
-    path-is-inside "^1.0.2"
-
-is-plain-obj@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz?cache=0&sync_timestamp=1579603005816&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
-  integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
-
-is-plain-object@^2.0.3, is-plain-object@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
-  integrity sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=
-  dependencies:
-    isobject "^3.0.1"
-
-is-promise@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
-  integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
-
-is-regex@^1.0.4, is-regex@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz?cache=0&sync_timestamp=1576454499491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regex%2Fdownload%2Fis-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae"
-  integrity sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=
-  dependencies:
-    has "^1.0.3"
-
-is-resolvable@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
-  integrity sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=
-
-is-stream@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
-  integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
-
-is-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
-  integrity sha1-venDJoDW+uBBKdasnZIc54FfeOM=
-
-is-svg@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz?cache=0&sync_timestamp=1579236106979&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-svg%2Fdownload%2Fis-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
-  integrity sha1-kyHb0pwhLlypnE+peUxxS8r6L3U=
-  dependencies:
-    html-comment-regex "^1.1.0"
-
-is-symbol@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz?cache=0&sync_timestamp=1574296307739&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
-  integrity sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=
-  dependencies:
-    has-symbols "^1.0.1"
-
-is-typedarray@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-  integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
-is-windows@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
-  integrity sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=
-
-is-wsl@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
-  integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
-
-is-wsl@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d"
-  integrity sha1-ShwVLUKd89RBZpSY4khtNZbrrx0=
-
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isexe@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
-isobject@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
-  integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
-  dependencies:
-    isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
-  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-isstream@~0.1.2:
-  version "0.1.2"
-  resolved "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
-  integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-
-javascript-stringify@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-2.0.1.tgz?cache=0&sync_timestamp=1572948916758&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjavascript-stringify%2Fdownload%2Fjavascript-stringify-2.0.1.tgz#6ef358035310e35d667c675ed63d3eb7c1aa19e5"
-  integrity sha1-bvNYA1MQ411mfGde1j0+t8GqGeU=
-
-jest-worker@^25.1.0:
-  version "25.4.0"
-  resolved "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.4.0.tgz?cache=0&sync_timestamp=1587361519380&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-25.4.0.tgz#ee0e2ceee5a36ecddf5172d6d7e0ab00df157384"
-  integrity sha1-7g4s7uWjbs3fUXLW1+CrAN8Vc4Q=
-  dependencies:
-    merge-stream "^2.0.0"
-    supports-color "^7.0.0"
-
-js-message@1.0.5:
-  version "1.0.5"
-  resolved "https://registry.npm.taobao.org/js-message/download/js-message-1.0.5.tgz#2300d24b1af08e89dd095bc1a4c9c9cfcb892d15"
-  integrity sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=
-
-js-queue@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.0.tgz#362213cf860f468f0125fc6c96abc1742531f948"
-  integrity sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=
-  dependencies:
-    easy-stack "^1.0.0"
-
-"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
-  integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk=
-
-js-yaml@^3.13.1:
-  version "3.13.1"
-  resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
-  integrity sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=
-  dependencies:
-    argparse "^1.0.7"
-    esprima "^4.0.0"
-
-jsbn@~0.1.0:
-  version "0.1.1"
-  resolved "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
-  integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-
-jsesc@^2.5.1:
-  version "2.5.2"
-  resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
-  integrity sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=
-
-jsesc@~0.5.0:
-  version "0.5.0"
-  resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-  integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-
-json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
-  integrity sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=
-
-json-schema-traverse@^0.4.1:
-  version "0.4.1"
-  resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
-  integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA=
-
-json-schema@0.2.3:
-  version "0.2.3"
-  resolved "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
-  integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
-
-json-stable-stringify-without-jsonify@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
-  integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-
-json-stringify-safe@~5.0.1:
-  version "5.0.1"
-  resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz?cache=0&sync_timestamp=1573614722142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-stringify-safe%2Fdownload%2Fjson-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-  integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-
-json3@^3.3.2:
-  version "3.3.3"
-  resolved "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
-  integrity sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=
-
-json5@^0.5.0:
-  version "0.5.1"
-  resolved "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz?cache=0&sync_timestamp=1586045666090&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
-  integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
-
-json5@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz?cache=0&sync_timestamp=1586045666090&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
-  integrity sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=
-  dependencies:
-    minimist "^1.2.0"
-
-json5@^2.1.2:
-  version "2.1.3"
-  resolved "https://registry.npm.taobao.org/json5/download/json5-2.1.3.tgz?cache=0&sync_timestamp=1586045666090&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
-  integrity sha1-ybD3+pIzv+WAf+ZvzzpWF+1ZfUM=
-  dependencies:
-    minimist "^1.2.5"
-
-jsonfile@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1583593992319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
-  integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
-  optionalDependencies:
-    graceful-fs "^4.1.6"
-
-jsprim@^1.2.2:
-  version "1.4.1"
-  resolved "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
-  integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
-  dependencies:
-    assert-plus "1.0.0"
-    extsprintf "1.3.0"
-    json-schema "0.2.3"
-    verror "1.10.0"
-
-jwchat@^0.1.2:
-  version "0.1.11"
-  resolved "https://registry.yarnpkg.com/jwchat/-/jwchat-0.1.11.tgz#07b8ff680bd05be5d2027d1f9a6f85f908acb60d"
-  integrity sha512-cuR0ggTJ7gxL76kO6sVBhzWlzieTv6HEY+I9LR11i+YrX0dqbHcpqO2VZ7ZyX7TqcQ8ZclEqc96LuowivNw7VQ==
-  dependencies:
-    core-js "^3.6.4"
-    element-ui "^2.13.1"
-    vue "^2.6.11"
-
-jwchat@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/jwchat/-/jwchat-0.2.0.tgz#b3395d546ea2356ade2939a426a5e29bed2dce90"
-  integrity sha512-TGSJSWU1CvYDIHWOXKUiz/9p4xSs448Qm1U4tz6d/cNtB1jfc82b7TKOFJdx/qMuAmwCwKPOpbSVXLFvIGJRVg==
-  dependencies:
-    core-js "^3.6.4"
-    element-ui "^2.13.1"
-    jwchat "^0.1.2"
-    vue "^2.6.11"
-    wechat-emoji-parser "^1.0.4"
-
-jwchat@^0.2.3:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/jwchat/-/jwchat-0.2.3.tgz#c04c3b59aae835703999842d081c71a1d24a320e"
-  integrity sha512-qm7+e3pCC7DAxb7E7urlkpWe/XwP36QdDfcG6VWvbVZcH8FDQgDHYELefoau0KfMXiZl9uUSJ2qigZerenZWqQ==
-  dependencies:
-    core-js "^3.6.4"
-    element-ui "^2.13.1"
-    jwchat "^0.2.0"
-    vue "^2.6.11"
-    wechat-emoji-parser "^1.0.4"
-
-killable@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
-  integrity sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
-  version "3.2.2"
-  resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
-  integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
-  integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^5.0.0:
-  version "5.1.0"
-  resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
-  integrity sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=
-
-kind-of@^6.0.0, kind-of@^6.0.2:
-  version "6.0.3"
-  resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
-  integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=
-
-launch-editor-middleware@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157"
-  integrity sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=
-  dependencies:
-    launch-editor "^2.2.1"
-
-launch-editor@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz#871b5a3ee39d6680fcc26d37930b6eeda89db0ca"
-  integrity sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=
-  dependencies:
-    chalk "^2.3.0"
-    shell-quote "^1.6.1"
-
-lcid@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
-  integrity sha1-bvXS32DlL4LrIopMNz6NHzlyU88=
-  dependencies:
-    invert-kv "^2.0.0"
-
-leven@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
-  integrity sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I=
-
-levenary@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/levenary/download/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77"
-  integrity sha1-hCqe6Y0gdap/ru2+MmeekgX0b3c=
-  dependencies:
-    leven "^3.1.0"
-
-levn@^0.3.0, levn@~0.3.0:
-  version "0.3.0"
-  resolved "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
-  integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
-  dependencies:
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-
-lines-and-columns@^1.1.6:
-  version "1.1.6"
-  resolved "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
-  integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
-
-loader-fs-cache@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9"
-  integrity sha1-8IZXZG1gcHi+LwoDL4vWndbyd9k=
-  dependencies:
-    find-cache-dir "^0.1.1"
-    mkdirp "^0.5.1"
-
-loader-runner@^2.3.1, loader-runner@^2.4.0:
-  version "2.4.0"
-  resolved "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
-  integrity sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=
-
-loader-utils@^0.2.16:
-  version "0.2.17"
-  resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
-  integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=
-  dependencies:
-    big.js "^3.1.3"
-    emojis-list "^2.0.0"
-    json5 "^0.5.0"
-    object-assign "^4.0.1"
-
-loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
-  integrity sha1-xXm140yzSxp07cbB+za/o3HVphM=
-  dependencies:
-    big.js "^5.2.2"
-    emojis-list "^3.0.0"
-    json5 "^1.0.1"
-
-locate-path@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
-  integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
-  dependencies:
-    p-locate "^2.0.0"
-    path-exists "^3.0.0"
-
-locate-path@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
-  integrity sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=
-  dependencies:
-    p-locate "^3.0.0"
-    path-exists "^3.0.0"
-
-locate-path@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
-  integrity sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=
-  dependencies:
-    p-locate "^4.1.0"
-
-lodash.defaultsdeep@^4.6.1:
-  version "4.6.1"
-  resolved "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6"
-  integrity sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=
-
-lodash.kebabcase@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
-  integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY=
-
-lodash.mapvalues@^4.6.0:
-  version "4.6.0"
-  resolved "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c"
-  integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=
-
-lodash.memoize@^4.1.2:
-  version "4.1.2"
-  resolved "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
-  integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
-
-lodash.transform@^4.6.0:
-  version "4.6.0"
-  resolved "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0"
-  integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=
-
-lodash.uniq@^4.5.0:
-  version "4.5.0"
-  resolved "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
-  integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-
-lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3:
-  version "4.17.15"
-  resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
-  integrity sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=
-
-log-symbols@^2.2.0:
-  version "2.2.0"
-  resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
-  integrity sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=
-  dependencies:
-    chalk "^2.0.1"
-
-loglevel@^1.6.6:
-  version "1.6.8"
-  resolved "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171"
-  integrity sha1-iiX7ddCSIw7NRFcnDYC1TigBEXE=
-
-loose-envify@^1.0.0:
-  version "1.4.0"
-  resolved "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
-  integrity sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=
-  dependencies:
-    js-tokens "^3.0.0 || ^4.0.0"
-
-lower-case@^1.1.1:
-  version "1.1.4"
-  resolved "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
-  integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
-
-lru-cache@^4.0.1, lru-cache@^4.1.2:
-  version "4.1.5"
-  resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
-  integrity sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=
-  dependencies:
-    pseudomap "^1.0.2"
-    yallist "^2.1.2"
-
-lru-cache@^5.1.1:
-  version "5.1.1"
-  resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
-  integrity sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=
-  dependencies:
-    yallist "^3.0.2"
-
-make-dir@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1587567610342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
-  integrity sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=
-  dependencies:
-    pify "^4.0.1"
-    semver "^5.6.0"
-
-make-dir@^3.0.2:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz?cache=0&sync_timestamp=1587567610342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
-  integrity sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=
-  dependencies:
-    semver "^6.0.0"
-
-map-age-cleaner@^0.1.1:
-  version "0.1.3"
-  resolved "https://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
-  integrity sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo=
-  dependencies:
-    p-defer "^1.0.0"
-
-map-cache@^0.2.2:
-  version "0.2.2"
-  resolved "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
-  integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-
-map-visit@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
-  integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
-  dependencies:
-    object-visit "^1.0.0"
-
-md5.js@^1.3.4:
-  version "1.3.5"
-  resolved "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
-  integrity sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=
-  dependencies:
-    hash-base "^3.0.0"
-    inherits "^2.0.1"
-    safe-buffer "^5.1.2"
-
-mdn-data@2.0.4:
-  version "2.0.4"
-  resolved "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
-  integrity sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=
-
-mdn-data@2.0.6:
-  version "2.0.6"
-  resolved "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978"
-  integrity sha1-hS3GD8ql2qLoz2yRicRA7T4EKXg=
-
-media-typer@0.3.0:
-  version "0.3.0"
-  resolved "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
-  integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-
-mem@^4.0.0:
-  version "4.3.0"
-  resolved "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmem%2Fdownload%2Fmem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
-  integrity sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg=
-  dependencies:
-    map-age-cleaner "^0.1.1"
-    mimic-fn "^2.0.0"
-    p-is-promise "^2.0.0"
-
-memory-fs@^0.4.1:
-  version "0.4.1"
-  resolved "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
-  integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
-  dependencies:
-    errno "^0.1.3"
-    readable-stream "^2.0.1"
-
-memory-fs@^0.5.0:
-  version "0.5.0"
-  resolved "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
-  integrity sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=
-  dependencies:
-    errno "^0.1.3"
-    readable-stream "^2.0.1"
-
-merge-descriptors@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
-  integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
-
-merge-source-map@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
-  integrity sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=
-  dependencies:
-    source-map "^0.6.1"
-
-merge-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
-  integrity sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=
-
-merge2@^1.2.3:
-  version "1.3.0"
-  resolved "https://registry.npm.taobao.org/merge2/download/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81"
-  integrity sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=
-
-methods@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
-  integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-
-micromatch@^3.1.10, micromatch@^3.1.4:
-  version "3.1.10"
-  resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
-  integrity sha1-cIWbyVyYQJUvNZoGij/En57PrCM=
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    braces "^2.3.1"
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    extglob "^2.0.4"
-    fragment-cache "^0.2.1"
-    kind-of "^6.0.2"
-    nanomatch "^1.2.9"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.2"
-
-miller-rabin@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
-  integrity sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=
-  dependencies:
-    bn.js "^4.0.0"
-    brorand "^1.0.1"
-
-mime-db@1.44.0, "mime-db@>= 1.43.0 < 2":
-  version "1.44.0"
-  resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
-  integrity sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=
-
-mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
-  version "2.1.27"
-  resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
-  integrity sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=
-  dependencies:
-    mime-db "1.44.0"
-
-mime@1.6.0:
-  version "1.6.0"
-  resolved "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
-  integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=
-
-mime@^2.4.4:
-  version "2.4.4"
-  resolved "https://registry.npm.taobao.org/mime/download/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5"
-  integrity sha1-vXuRE1/GsBzePpuuM9ZZtj2IV+U=
-
-mimic-fn@^1.0.0:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
-  integrity sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=
-
-mimic-fn@^2.0.0, mimic-fn@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
-  integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=
-
-mini-css-extract-plugin@^0.9.0:
-  version "0.9.0"
-  resolved "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e"
-  integrity sha1-R/LPB6oWWrNXM7H8l9TEbAVkM54=
-  dependencies:
-    loader-utils "^1.1.0"
-    normalize-url "1.9.1"
-    schema-utils "^1.0.0"
-    webpack-sources "^1.1.0"
-
-minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
-  integrity sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=
-
-minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
-  integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-
-minimatch@^3.0.4:
-  version "3.0.4"
-  resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
-  integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=
-  dependencies:
-    brace-expansion "^1.1.7"
-
-minimist@^1.2.0, minimist@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
-  integrity sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=
-
-minipass-collect@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/minipass-collect/download/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
-  integrity sha1-IrgTv3Rdxu26JXa5QAIq1u3Ixhc=
-  dependencies:
-    minipass "^3.0.0"
-
-minipass-flush@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.npm.taobao.org/minipass-flush/download/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
-  integrity sha1-gucTXX6JpQ/+ZGEKeHlTxMTLs3M=
-  dependencies:
-    minipass "^3.0.0"
-
-minipass-pipeline@^1.2.2:
-  version "1.2.2"
-  resolved "https://registry.npm.taobao.org/minipass-pipeline/download/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a"
-  integrity sha1-PctrtKVG4ylpx61xDyx5qGq7qTo=
-  dependencies:
-    minipass "^3.0.0"
-
-minipass@^3.0.0, minipass@^3.1.1:
-  version "3.1.1"
-  resolved "https://registry.npm.taobao.org/minipass/download/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5"
-  integrity sha1-dgfOd4RyoYWtbYkIKqIHD3nO3NU=
-  dependencies:
-    yallist "^4.0.0"
-
-mississippi@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
-  integrity sha1-6goykfl+C16HdrNj1fChLZTGcCI=
-  dependencies:
-    concat-stream "^1.5.0"
-    duplexify "^3.4.2"
-    end-of-stream "^1.1.0"
-    flush-write-stream "^1.0.0"
-    from2 "^2.1.0"
-    parallel-transform "^1.1.0"
-    pump "^3.0.0"
-    pumpify "^1.3.3"
-    stream-each "^1.1.0"
-    through2 "^2.0.0"
-
-mixin-deep@^1.2.0:
-  version "1.3.2"
-  resolved "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
-  integrity sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=
-  dependencies:
-    for-in "^1.0.2"
-    is-extendable "^1.0.1"
-
-mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1:
-  version "0.5.5"
-  resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz?cache=0&sync_timestamp=1587535418745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
-  integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=
-  dependencies:
-    minimist "^1.2.5"
-
-move-concurrently@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
-  integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
-  dependencies:
-    aproba "^1.1.1"
-    copy-concurrently "^1.0.0"
-    fs-write-stream-atomic "^1.0.8"
-    mkdirp "^0.5.1"
-    rimraf "^2.5.4"
-    run-queue "^1.0.3"
-
-ms@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-  integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
-  integrity sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=
-
-ms@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
-  integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=
-
-multicast-dns-service-types@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
-  integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
-
-multicast-dns@^6.0.1:
-  version "6.2.3"
-  resolved "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
-  integrity sha1-oOx72QVcQoL3kMPIL04o2zsxsik=
-  dependencies:
-    dns-packet "^1.3.1"
-    thunky "^1.0.2"
-
-mute-stream@0.0.8:
-  version "0.0.8"
-  resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
-  integrity sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=
-
-mz@^2.4.0:
-  version "2.7.0"
-  resolved "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
-  integrity sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=
-  dependencies:
-    any-promise "^1.0.0"
-    object-assign "^4.0.1"
-    thenify-all "^1.0.0"
-
-nan@^2.12.1:
-  version "2.14.1"
-  resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.1.tgz?cache=0&sync_timestamp=1587497111086&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
-  integrity sha1-174036MQW5FJTDFHCJMV7/iHSwE=
-
-nanomatch@^1.2.9:
-  version "1.2.13"
-  resolved "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
-  integrity sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    fragment-cache "^0.2.1"
-    is-windows "^1.0.2"
-    kind-of "^6.0.2"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-natural-compare@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
-  integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-
-negotiator@0.6.2:
-  version "0.6.2"
-  resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
-  integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=
-
-neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
-  version "2.6.1"
-  resolved "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
-  integrity sha1-rCetpmFn+ohJpq3dg39rGJrSCBw=
-
-nice-try@^1.0.4:
-  version "1.0.5"
-  resolved "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz?cache=0&sync_timestamp=1584699756095&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnice-try%2Fdownload%2Fnice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
-  integrity sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=
-
-no-case@^2.2.0:
-  version "2.3.2"
-  resolved "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
-  integrity sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=
-  dependencies:
-    lower-case "^1.1.1"
-
-node-forge@0.9.0:
-  version "0.9.0"
-  resolved "https://registry.npm.taobao.org/node-forge/download/node-forge-0.9.0.tgz?cache=0&sync_timestamp=1569524669712&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579"
-  integrity sha1-1iQFDtu0SHStyhK7mlLsY8t4JXk=
-
-node-ipc@^9.1.1:
-  version "9.1.1"
-  resolved "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.1.tgz#4e245ed6938e65100e595ebc5dc34b16e8dd5d69"
-  integrity sha1-TiRe1pOOZRAOWV68XcNLFujdXWk=
-  dependencies:
-    event-pubsub "4.3.0"
-    js-message "1.0.5"
-    js-queue "2.0.0"
-
-node-libs-browser@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
-  integrity sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=
-  dependencies:
-    assert "^1.1.1"
-    browserify-zlib "^0.2.0"
-    buffer "^4.3.0"
-    console-browserify "^1.1.0"
-    constants-browserify "^1.0.0"
-    crypto-browserify "^3.11.0"
-    domain-browser "^1.1.1"
-    events "^3.0.0"
-    https-browserify "^1.0.0"
-    os-browserify "^0.3.0"
-    path-browserify "0.0.1"
-    process "^0.11.10"
-    punycode "^1.2.4"
-    querystring-es3 "^0.2.0"
-    readable-stream "^2.3.3"
-    stream-browserify "^2.0.1"
-    stream-http "^2.7.2"
-    string_decoder "^1.0.0"
-    timers-browserify "^2.0.4"
-    tty-browserify "0.0.0"
-    url "^0.11.0"
-    util "^0.11.0"
-    vm-browserify "^1.0.1"
-
-node-releases@^1.1.53:
-  version "1.1.53"
-  resolved "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
-  integrity sha1-LYIb+kme18Xf/F4vKMiOeKCO4/Q=
-
-normalize-package-data@^2.5.0:
-  version "2.5.0"
-  resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
-  integrity sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=
-  dependencies:
-    hosted-git-info "^2.1.4"
-    resolve "^1.10.0"
-    semver "2 || 3 || 4 || 5"
-    validate-npm-package-license "^3.0.1"
-
-normalize-path@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379"
-  integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=
-
-normalize-path@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
-  integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
-  dependencies:
-    remove-trailing-separator "^1.0.1"
-
-normalize-path@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
-  integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=
-
-normalize-range@^0.1.2:
-  version "0.1.2"
-  resolved "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
-  integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
-
-normalize-url@1.9.1:
-  version "1.9.1"
-  resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz?cache=0&sync_timestamp=1580491128021&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
-  integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=
-  dependencies:
-    object-assign "^4.0.1"
-    prepend-http "^1.0.0"
-    query-string "^4.1.0"
-    sort-keys "^1.0.0"
-
-normalize-url@^3.0.0:
-  version "3.3.0"
-  resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz?cache=0&sync_timestamp=1580491128021&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
-  integrity sha1-suHE3E98bVd0PfczpPWXjRhlBVk=
-
-normalize-wheel@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz#aec886affdb045070d856447df62ecf86146ec45"
-  integrity sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=
-
-npm-run-path@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz?cache=0&sync_timestamp=1577052941951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
-  integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
-  dependencies:
-    path-key "^2.0.0"
-
-npm-run-path@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-4.0.1.tgz?cache=0&sync_timestamp=1577052941951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
-  integrity sha1-t+zR5e1T2o43pV4cImnguX7XSOo=
-  dependencies:
-    path-key "^3.0.0"
-
-nth-check@^1.0.2, nth-check@~1.0.1:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
-  integrity sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=
-  dependencies:
-    boolbase "~1.0.0"
-
-num2fraction@^1.2.2:
-  version "1.2.2"
-  resolved "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
-  integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
-
-number-is-nan@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-  integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
-oauth-sign@~0.9.0:
-  version "0.9.0"
-  resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
-  integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=
-
-object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-object-copy@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
-  integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
-  dependencies:
-    copy-descriptor "^0.1.0"
-    define-property "^0.2.5"
-    kind-of "^3.0.3"
-
-object-hash@^1.1.4:
-  version "1.3.1"
-  resolved "https://registry.npm.taobao.org/object-hash/download/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df"
-  integrity sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=
-
-object-inspect@^1.7.0:
-  version "1.7.0"
-  resolved "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
-  integrity sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=
-
-object-is@^1.0.1:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/object-is/download/object-is-1.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6"
-  integrity sha1-xdLof/nhGfeLegiEQVGeLuwVc7Y=
-  dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.5"
-
-object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
-  integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4=
-
-object-visit@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
-  integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
-  dependencies:
-    isobject "^3.0.0"
-
-object.assign@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
-  integrity sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=
-  dependencies:
-    define-properties "^1.1.2"
-    function-bind "^1.1.1"
-    has-symbols "^1.0.0"
-    object-keys "^1.0.11"
-
-object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
-  integrity sha1-Npvx+VktiridcS3O1cuBx8U1Jkk=
-  dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.0-next.1"
-
-object.pick@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
-  integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
-  dependencies:
-    isobject "^3.0.1"
-
-object.values@^1.1.0:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/object.values/download/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e"
-  integrity sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=
-  dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.0-next.1"
-    function-bind "^1.1.1"
-    has "^1.0.3"
-
-obuf@^1.0.0, obuf@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
-  integrity sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=
-
-on-finished@~2.3.0:
-  version "2.3.0"
-  resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
-  integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
-  dependencies:
-    ee-first "1.1.1"
-
-on-headers@~1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
-  integrity sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=
-
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
-  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
-  dependencies:
-    wrappy "1"
-
-onetime@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
-  integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
-  dependencies:
-    mimic-fn "^1.0.0"
-
-onetime@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
-  integrity sha1-//DzyRYX/mK7UBiWNumayKbfe+U=
-  dependencies:
-    mimic-fn "^2.1.0"
-
-open@^6.3.0:
-  version "6.4.0"
-  resolved "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9"
-  integrity sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=
-  dependencies:
-    is-wsl "^1.1.0"
-
-opener@^1.5.1:
-  version "1.5.1"
-  resolved "https://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
-  integrity sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0=
-
-opn@^5.5.0:
-  version "5.5.0"
-  resolved "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
-  integrity sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=
-  dependencies:
-    is-wsl "^1.1.0"
-
-optionator@^0.8.3:
-  version "0.8.3"
-  resolved "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz?cache=0&sync_timestamp=1585966209412&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Foptionator%2Fdownload%2Foptionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
-  integrity sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=
-  dependencies:
-    deep-is "~0.1.3"
-    fast-levenshtein "~2.0.6"
-    levn "~0.3.0"
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-    word-wrap "~1.2.3"
-
-ora@^3.4.0:
-  version "3.4.0"
-  resolved "https://registry.npm.taobao.org/ora/download/ora-3.4.0.tgz?cache=0&sync_timestamp=1587481412542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fora%2Fdownload%2Fora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318"
-  integrity sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=
-  dependencies:
-    chalk "^2.4.2"
-    cli-cursor "^2.1.0"
-    cli-spinners "^2.0.0"
-    log-symbols "^2.2.0"
-    strip-ansi "^5.2.0"
-    wcwidth "^1.0.1"
-
-original@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
-  integrity sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=
-  dependencies:
-    url-parse "^1.4.3"
-
-os-browserify@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
-  integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
-
-os-locale@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
-  integrity sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=
-  dependencies:
-    execa "^1.0.0"
-    lcid "^2.0.0"
-    mem "^4.0.0"
-
-os-tmpdir@~1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-  integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-
-p-defer@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
-  integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
-
-p-finally@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
-  integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-
-p-finally@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561"
-  integrity sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE=
-
-p-is-promise@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
-  integrity sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4=
-
-p-limit@^1.1.0:
-  version "1.3.0"
-  resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
-  integrity sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=
-  dependencies:
-    p-try "^1.0.0"
-
-p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.2.2:
-  version "2.3.0"
-  resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
-  integrity sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=
-  dependencies:
-    p-try "^2.0.0"
-
-p-locate@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
-  integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
-  dependencies:
-    p-limit "^1.1.0"
-
-p-locate@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
-  integrity sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=
-  dependencies:
-    p-limit "^2.0.0"
-
-p-locate@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
-  integrity sha1-o0KLtwiLOmApL2aRkni3wpetTwc=
-  dependencies:
-    p-limit "^2.2.0"
-
-p-map@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
-  integrity sha1-MQko/u+cnsxltosXaTAYpmXOoXU=
-
-p-map@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/p-map/download/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d"
-  integrity sha1-1wTZr4orpoTiYA2aIVmD1BQal50=
-  dependencies:
-    aggregate-error "^3.0.0"
-
-p-retry@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328"
-  integrity sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=
-  dependencies:
-    retry "^0.12.0"
-
-p-try@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
-  integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
-
-p-try@^2.0.0:
-  version "2.2.0"
-  resolved "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
-  integrity sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=
-
-pako@~1.0.5:
-  version "1.0.11"
-  resolved "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
-  integrity sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=
-
-parallel-transform@^1.1.0:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
-  integrity sha1-kEnKN9bLIYLDsdLHIL6U0UpYFPw=
-  dependencies:
-    cyclist "^1.0.1"
-    inherits "^2.0.3"
-    readable-stream "^2.1.5"
-
-param-case@2.1.x:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz?cache=0&sync_timestamp=1576721608924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparam-case%2Fdownload%2Fparam-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
-  integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
-  dependencies:
-    no-case "^2.2.0"
-
-parent-module@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
-  integrity sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=
-  dependencies:
-    callsites "^3.0.0"
-
-parse-asn1@^5.0.0:
-  version "5.1.5"
-  resolved "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e"
-  integrity sha1-ADJxND2ljclMrOSU+u89IUfs6g4=
-  dependencies:
-    asn1.js "^4.0.0"
-    browserify-aes "^1.0.0"
-    create-hash "^1.1.0"
-    evp_bytestokey "^1.0.0"
-    pbkdf2 "^3.0.3"
-    safe-buffer "^5.1.1"
-
-parse-json@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
-  integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
-  dependencies:
-    error-ex "^1.3.1"
-    json-parse-better-errors "^1.0.1"
-
-parse-json@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f"
-  integrity sha1-c+URTJhtFD76NxLU6iTbmkJm9g8=
-  dependencies:
-    "@babel/code-frame" "^7.0.0"
-    error-ex "^1.3.1"
-    json-parse-better-errors "^1.0.1"
-    lines-and-columns "^1.1.6"
-
-parse5-htmlparser2-tree-adapter@^5.1.1:
-  version "5.1.1"
-  resolved "https://registry.npm.taobao.org/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-5.1.1.tgz?cache=0&sync_timestamp=1586991429801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5-htmlparser2-tree-adapter%2Fdownload%2Fparse5-htmlparser2-tree-adapter-5.1.1.tgz#e8c743d4e92194d5293ecde2b08be31e67461cbc"
-  integrity sha1-6MdD1OkhlNUpPs3isIvjHmdGHLw=
-  dependencies:
-    parse5 "^5.1.1"
-
-parse5@^5.1.1:
-  version "5.1.1"
-  resolved "https://registry.npm.taobao.org/parse5/download/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
-  integrity sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=
-
-parseurl@~1.3.2, parseurl@~1.3.3:
-  version "1.3.3"
-  resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
-  integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=
-
-pascalcase@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
-  integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-
-path-browserify@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
-  integrity sha1-5sTd1+06onxoogzE5Q4aTug7vEo=
-
-path-dirname@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
-  integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-
-path-exists@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
-  integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
-  dependencies:
-    pinkie-promise "^2.0.0"
-
-path-exists@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
-  integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
-
-path-exists@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
-  integrity sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=
-
-path-is-absolute@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-path-is-inside@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-  integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
-
-path-key@^2.0.0, path-key@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz?cache=0&sync_timestamp=1574441376633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
-  integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-
-path-key@^3.0.0, path-key@^3.1.0:
-  version "3.1.1"
-  resolved "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz?cache=0&sync_timestamp=1574441376633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
-  integrity sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=
-
-path-parse@^1.0.6:
-  version "1.0.6"
-  resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
-  integrity sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=
-
-path-to-regexp@0.1.7:
-  version "0.1.7"
-  resolved "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz?cache=0&sync_timestamp=1574278262588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
-  integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-
-path-type@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
-  integrity sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=
-  dependencies:
-    pify "^3.0.0"
-
-pbkdf2@^3.0.3:
-  version "3.0.17"
-  resolved "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
-  integrity sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=
-  dependencies:
-    create-hash "^1.1.2"
-    create-hmac "^1.1.4"
-    ripemd160 "^2.0.1"
-    safe-buffer "^5.0.1"
-    sha.js "^2.4.8"
-
-performance-now@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
-  integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
-
-pify@^2.0.0:
-  version "2.3.0"
-  resolved "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-  integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
-pify@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
-  integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-
-pify@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
-  integrity sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=
-
-pinkie-promise@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
-  integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
-  dependencies:
-    pinkie "^2.0.0"
-
-pinkie@^2.0.0:
-  version "2.0.4"
-  resolved "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
-  integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
-
-pkg-dir@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
-  integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q=
-  dependencies:
-    find-up "^1.0.0"
-
-pkg-dir@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
-  integrity sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=
-  dependencies:
-    find-up "^3.0.0"
-
-pkg-dir@^4.1.0:
-  version "4.2.0"
-  resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
-  integrity sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=
-  dependencies:
-    find-up "^4.0.0"
-
-pkg-up@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f"
-  integrity sha1-yBmscoBZpGHKscOImivjxJoATX8=
-  dependencies:
-    find-up "^2.1.0"
-
-pnp-webpack-plugin@^1.6.4:
-  version "1.6.4"
-  resolved "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz?cache=0&sync_timestamp=1582068446562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpnp-webpack-plugin%2Fdownload%2Fpnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149"
-  integrity sha1-yXEaxNxIpoXauvyG+Lbdn434QUk=
-  dependencies:
-    ts-pnp "^1.1.6"
-
-portfinder@^1.0.25:
-  version "1.0.25"
-  resolved "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca"
-  integrity sha1-JU/TN/+6hp9LnTftwpgFnLTTXso=
-  dependencies:
-    async "^2.6.2"
-    debug "^3.1.1"
-    mkdirp "^0.5.1"
-
-posix-character-classes@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
-  integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-
-postcss-calc@^7.0.1:
-  version "7.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.2.tgz?cache=0&sync_timestamp=1582015512279&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-calc%2Fdownload%2Fpostcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1"
-  integrity sha1-UE780AjKAnMSBWiweSsWzc3oqsE=
-  dependencies:
-    postcss "^7.0.27"
-    postcss-selector-parser "^6.0.2"
-    postcss-value-parser "^4.0.2"
-
-postcss-colormin@^4.0.3:
-  version "4.0.3"
-  resolved "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
-  integrity sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=
-  dependencies:
-    browserslist "^4.0.0"
-    color "^3.0.0"
-    has "^1.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-convert-values@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
-  integrity sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=
-  dependencies:
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-discard-comments@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
-  integrity sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=
-  dependencies:
-    postcss "^7.0.0"
-
-postcss-discard-duplicates@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
-  integrity sha1-P+EzzTyCKC5VD8myORdqkge3hOs=
-  dependencies:
-    postcss "^7.0.0"
-
-postcss-discard-empty@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
-  integrity sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=
-  dependencies:
-    postcss "^7.0.0"
-
-postcss-discard-overridden@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
-  integrity sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=
-  dependencies:
-    postcss "^7.0.0"
-
-postcss-load-config@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003"
-  integrity sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM=
-  dependencies:
-    cosmiconfig "^5.0.0"
-    import-cwd "^2.0.0"
-
-postcss-loader@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d"
-  integrity sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=
-  dependencies:
-    loader-utils "^1.1.0"
-    postcss "^7.0.0"
-    postcss-load-config "^2.0.0"
-    schema-utils "^1.0.0"
-
-postcss-merge-longhand@^4.0.11:
-  version "4.0.11"
-  resolved "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
-  integrity sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=
-  dependencies:
-    css-color-names "0.0.4"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-    stylehacks "^4.0.0"
-
-postcss-merge-rules@^4.0.3:
-  version "4.0.3"
-  resolved "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
-  integrity sha1-NivqT/Wh+Y5AdacTxsslrv75plA=
-  dependencies:
-    browserslist "^4.0.0"
-    caniuse-api "^3.0.0"
-    cssnano-util-same-parent "^4.0.0"
-    postcss "^7.0.0"
-    postcss-selector-parser "^3.0.0"
-    vendors "^1.0.0"
-
-postcss-minify-font-values@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
-  integrity sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=
-  dependencies:
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-minify-gradients@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
-  integrity sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=
-  dependencies:
-    cssnano-util-get-arguments "^4.0.0"
-    is-color-stop "^1.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-minify-params@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
-  integrity sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=
-  dependencies:
-    alphanum-sort "^1.0.0"
-    browserslist "^4.0.0"
-    cssnano-util-get-arguments "^4.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-    uniqs "^2.0.0"
-
-postcss-minify-selectors@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
-  integrity sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=
-  dependencies:
-    alphanum-sort "^1.0.0"
-    has "^1.0.0"
-    postcss "^7.0.0"
-    postcss-selector-parser "^3.0.0"
-
-postcss-modules-extract-imports@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
-  integrity sha1-gYcZoa4doyX5gyRGsBE27rSTzX4=
-  dependencies:
-    postcss "^7.0.5"
-
-postcss-modules-local-by-default@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915"
-  integrity sha1-6KZWG+kUqvPAUodjd1JMqQ27eRU=
-  dependencies:
-    icss-utils "^4.1.1"
-    postcss "^7.0.16"
-    postcss-selector-parser "^6.0.2"
-    postcss-value-parser "^4.0.0"
-
-postcss-modules-scope@^2.2.0:
-  version "2.2.0"
-  resolved "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee"
-  integrity sha1-OFyuATzHdD9afXYC0Qc6iequYu4=
-  dependencies:
-    postcss "^7.0.6"
-    postcss-selector-parser "^6.0.0"
-
-postcss-modules-values@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10"
-  integrity sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=
-  dependencies:
-    icss-utils "^4.0.0"
-    postcss "^7.0.6"
-
-postcss-normalize-charset@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
-  integrity sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=
-  dependencies:
-    postcss "^7.0.0"
-
-postcss-normalize-display-values@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
-  integrity sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=
-  dependencies:
-    cssnano-util-get-match "^4.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-normalize-positions@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
-  integrity sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=
-  dependencies:
-    cssnano-util-get-arguments "^4.0.0"
-    has "^1.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-normalize-repeat-style@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
-  integrity sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=
-  dependencies:
-    cssnano-util-get-arguments "^4.0.0"
-    cssnano-util-get-match "^4.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-normalize-string@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
-  integrity sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=
-  dependencies:
-    has "^1.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-normalize-timing-functions@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
-  integrity sha1-jgCcoqOUnNr4rSPmtquZy159KNk=
-  dependencies:
-    cssnano-util-get-match "^4.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-normalize-unicode@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
-  integrity sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=
-  dependencies:
-    browserslist "^4.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-normalize-url@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
-  integrity sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=
-  dependencies:
-    is-absolute-url "^2.0.0"
-    normalize-url "^3.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-normalize-whitespace@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
-  integrity sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=
-  dependencies:
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-ordered-values@^4.1.2:
-  version "4.1.2"
-  resolved "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
-  integrity sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=
-  dependencies:
-    cssnano-util-get-arguments "^4.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-reduce-initial@^4.0.3:
-  version "4.0.3"
-  resolved "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
-  integrity sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=
-  dependencies:
-    browserslist "^4.0.0"
-    caniuse-api "^3.0.0"
-    has "^1.0.0"
-    postcss "^7.0.0"
-
-postcss-reduce-transforms@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
-  integrity sha1-F++kBerMbge+NBSlyi0QdGgdTik=
-  dependencies:
-    cssnano-util-get-match "^4.0.0"
-    has "^1.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-
-postcss-selector-parser@^3.0.0:
-  version "3.1.2"
-  resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270"
-  integrity sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=
-  dependencies:
-    dot-prop "^5.2.0"
-    indexes-of "^1.0.1"
-    uniq "^1.0.1"
-
-postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
-  version "6.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
-  integrity sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=
-  dependencies:
-    cssesc "^3.0.0"
-    indexes-of "^1.0.1"
-    uniq "^1.0.1"
-
-postcss-svgo@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
-  integrity sha1-F7mXvHEbMzurFDqu07jT1uPTglg=
-  dependencies:
-    is-svg "^3.0.0"
-    postcss "^7.0.0"
-    postcss-value-parser "^3.0.0"
-    svgo "^1.0.0"
-
-postcss-unique-selectors@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
-  integrity sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=
-  dependencies:
-    alphanum-sort "^1.0.0"
-    postcss "^7.0.0"
-    uniqs "^2.0.0"
-
-postcss-value-parser@^3.0.0:
-  version "3.3.1"
-  resolved "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038401527&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
-  integrity sha1-n/giVH4okyE88cMO+lGsX9G6goE=
-
-postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.0.3:
-  version "4.0.3"
-  resolved "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz?cache=0&sync_timestamp=1582038401527&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d"
-  integrity sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=
-
-postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6:
-  version "7.0.27"
-  resolved "https://registry.npm.taobao.org/postcss/download/postcss-7.0.27.tgz?cache=0&sync_timestamp=1581994906320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9"
-  integrity sha1-zGfNxrDao3UQW3xCSoVWc0X8VNk=
-  dependencies:
-    chalk "^2.4.2"
-    source-map "^0.6.1"
-    supports-color "^6.1.0"
-
-prelude-ls@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-  integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
-
-prepend-http@^1.0.0:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
-  integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
-
-prettier@^1.18.2:
-  version "1.19.1"
-  resolved "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz?cache=0&sync_timestamp=1587488828880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprettier%2Fdownload%2Fprettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
-  integrity sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=
-
-pretty-error@^2.0.2:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
-  integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=
-  dependencies:
-    renderkid "^2.0.1"
-    utila "~0.4"
-
-private@^0.1.8:
-  version "0.1.8"
-  resolved "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
-  integrity sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=
-
-process-nextick-args@~2.0.0:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
-  integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I=
-
-process@^0.11.10:
-  version "0.11.10"
-  resolved "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
-  integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-
-progress@^2.0.0:
-  version "2.0.3"
-  resolved "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
-  integrity sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=
-
-promise-inflight@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
-  integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
-
-proxy-addr@~2.0.5:
-  version "2.0.6"
-  resolved "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
-  integrity sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=
-  dependencies:
-    forwarded "~0.1.2"
-    ipaddr.js "1.9.1"
-
-prr@~1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
-  integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
-
-pseudomap@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
-  integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-
-psl@^1.1.28:
-  version "1.8.0"
-  resolved "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
-  integrity sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=
-
-public-encrypt@^4.0.0:
-  version "4.0.3"
-  resolved "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
-  integrity sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=
-  dependencies:
-    bn.js "^4.1.0"
-    browserify-rsa "^4.0.0"
-    create-hash "^1.1.0"
-    parse-asn1 "^5.0.0"
-    randombytes "^2.0.1"
-    safe-buffer "^5.1.2"
-
-pump@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
-  integrity sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=
-  dependencies:
-    end-of-stream "^1.1.0"
-    once "^1.3.1"
-
-pump@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
-  integrity sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=
-  dependencies:
-    end-of-stream "^1.1.0"
-    once "^1.3.1"
-
-pumpify@^1.3.3:
-  version "1.5.1"
-  resolved "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz?cache=0&sync_timestamp=1569938200736&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpumpify%2Fdownload%2Fpumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
-  integrity sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=
-  dependencies:
-    duplexify "^3.6.0"
-    inherits "^2.0.3"
-    pump "^2.0.0"
-
-punycode@1.3.2:
-  version "1.3.2"
-  resolved "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
-  integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-
-punycode@^1.2.4:
-  version "1.4.1"
-  resolved "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
-  integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
-
-punycode@^2.1.0, punycode@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
-  integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew=
-
-q@^1.1.2:
-  version "1.5.1"
-  resolved "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
-  integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
-
-qs@6.7.0:
-  version "6.7.0"
-  resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1585168773645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
-  integrity sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=
-
-qs@~6.5.2:
-  version "6.5.2"
-  resolved "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1585168773645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
-  integrity sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=
-
-query-string@^4.1.0:
-  version "4.3.4"
-  resolved "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
-  integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s=
-  dependencies:
-    object-assign "^4.1.0"
-    strict-uri-encode "^1.0.0"
-
-querystring-es3@^0.2.0:
-  version "0.2.1"
-  resolved "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
-  integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
-
-querystring@0.2.0:
-  version "0.2.0"
-  resolved "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
-  integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
-
-querystringify@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
-  integrity sha1-YOWl/WSn+L+k0qsu1v30yFutFU4=
-
-randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
-  integrity sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=
-  dependencies:
-    safe-buffer "^5.1.0"
-
-randomfill@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
-  integrity sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=
-  dependencies:
-    randombytes "^2.0.5"
-    safe-buffer "^5.1.0"
-
-range-parser@^1.2.1, range-parser@~1.2.1:
-  version "1.2.1"
-  resolved "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
-  integrity sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=
-
-raw-body@2.4.0:
-  version "2.4.0"
-  resolved "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
-  integrity sha1-oc5vucm8NWylLoklarWQWeE9AzI=
-  dependencies:
-    bytes "3.1.0"
-    http-errors "1.7.2"
-    iconv-lite "0.4.24"
-    unpipe "1.0.0"
-
-read-pkg@^5.1.1:
-  version "5.2.0"
-  resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
-  integrity sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=
-  dependencies:
-    "@types/normalize-package-data" "^2.4.0"
-    normalize-package-data "^2.5.0"
-    parse-json "^5.0.0"
-    type-fest "^0.6.0"
-
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
-  version "2.3.7"
-  resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
-  integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~2.0.0"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.1.1"
-    util-deprecate "~1.0.1"
-
-readable-stream@^3.0.6, readable-stream@^3.1.1:
-  version "3.6.0"
-  resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
-  integrity sha1-M3u9o63AcGvT4CRCaihtS0sskZg=
-  dependencies:
-    inherits "^2.0.3"
-    string_decoder "^1.1.1"
-    util-deprecate "^1.0.1"
-
-readdirp@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
-  integrity sha1-DodiKjMlqjPokihcr4tOhGUppSU=
-  dependencies:
-    graceful-fs "^4.1.11"
-    micromatch "^3.1.10"
-    readable-stream "^2.0.2"
-
-regenerate-unicode-properties@^8.2.0:
-  version "8.2.0"
-  resolved "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
-  integrity sha1-5d5xEdZV57pgwFfb6f83yH5lzew=
-  dependencies:
-    regenerate "^1.4.0"
-
-regenerate@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
-  integrity sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=
-
-regenerator-runtime@^0.11.0:
-  version "0.11.1"
-  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
-  integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
-
-regenerator-runtime@^0.13.4:
-  version "0.13.5"
-  resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz?cache=0&sync_timestamp=1584052597708&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
-  integrity sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=
-
-regenerator-transform@^0.14.2:
-  version "0.14.4"
-  resolved "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7"
-  integrity sha1-UmaFeJZRjRYWp4oEeTN6MOqXTMc=
-  dependencies:
-    "@babel/runtime" "^7.8.4"
-    private "^0.1.8"
-
-regex-not@^1.0.0, regex-not@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
-  integrity sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=
-  dependencies:
-    extend-shallow "^3.0.2"
-    safe-regex "^1.1.0"
-
-regexp.prototype.flags@^1.2.0:
-  version "1.3.0"
-  resolved "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz?cache=0&sync_timestamp=1576388236739&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75"
-  integrity sha1-erqJs8E6ZFCdq888qNn7ub31y3U=
-  dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.0-next.1"
-
-regexpp@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
-  integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=
-
-regexpu-core@^4.7.0:
-  version "4.7.0"
-  resolved "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938"
-  integrity sha1-/L9FjFBDGwu3tF1pZ7gZLZHz2Tg=
-  dependencies:
-    regenerate "^1.4.0"
-    regenerate-unicode-properties "^8.2.0"
-    regjsgen "^0.5.1"
-    regjsparser "^0.6.4"
-    unicode-match-property-ecmascript "^1.0.4"
-    unicode-match-property-value-ecmascript "^1.2.0"
-
-regjsgen@^0.5.1:
-  version "0.5.1"
-  resolved "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c"
-  integrity sha1-SPC/Gl6iBRlpKcDZeYtC0e2YRDw=
-
-regjsparser@^0.6.4:
-  version "0.6.4"
-  resolved "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272"
-  integrity sha1-p2n4aEMIQBpm6bUp0kNv9NBmYnI=
-  dependencies:
-    jsesc "~0.5.0"
-
-relateurl@0.2.x:
-  version "0.2.7"
-  resolved "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
-  integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
-
-remove-trailing-separator@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
-renderkid@^2.0.1:
-  version "2.0.3"
-  resolved "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149"
-  integrity sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk=
-  dependencies:
-    css-select "^1.1.0"
-    dom-converter "^0.2"
-    htmlparser2 "^3.3.0"
-    strip-ansi "^3.0.0"
-    utila "^0.4.0"
-
-repeat-element@^1.1.2:
-  version "1.1.3"
-  resolved "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
-  integrity sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=
-
-repeat-string@^1.6.1:
-  version "1.6.1"
-  resolved "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-  integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-
-request-promise-core@1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9"
-  integrity sha1-6aPAgbUTgN/qZ3M2Bh/qh5qCnuk=
-  dependencies:
-    lodash "^4.17.15"
-
-request-promise-native@^1.0.8:
-  version "1.0.8"
-  resolved "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.8.tgz?cache=0&sync_timestamp=1572829683581&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frequest-promise-native%2Fdownload%2Frequest-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36"
-  integrity sha1-pFW5YLgm5E4r+Jma9k3/K/5YyzY=
-  dependencies:
-    request-promise-core "1.1.3"
-    stealthy-require "^1.1.1"
-    tough-cookie "^2.3.3"
-
-request@^2.88.2:
-  version "2.88.2"
-  resolved "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
-  integrity sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=
-  dependencies:
-    aws-sign2 "~0.7.0"
-    aws4 "^1.8.0"
-    caseless "~0.12.0"
-    combined-stream "~1.0.6"
-    extend "~3.0.2"
-    forever-agent "~0.6.1"
-    form-data "~2.3.2"
-    har-validator "~5.1.3"
-    http-signature "~1.2.0"
-    is-typedarray "~1.0.0"
-    isstream "~0.1.2"
-    json-stringify-safe "~5.0.1"
-    mime-types "~2.1.19"
-    oauth-sign "~0.9.0"
-    performance-now "^2.1.0"
-    qs "~6.5.2"
-    safe-buffer "^5.1.2"
-    tough-cookie "~2.5.0"
-    tunnel-agent "^0.6.0"
-    uuid "^3.3.2"
-
-require-directory@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-  integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
-
-require-main-filename@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
-  integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
-
-require-main-filename@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
-  integrity sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=
-
-requires-port@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
-  integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
-
-resize-observer-polyfill@^1.5.0:
-  version "1.5.1"
-  resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
-  integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
-
-resolve-cwd@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
-  integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
-  dependencies:
-    resolve-from "^3.0.0"
-
-resolve-from@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
-  integrity sha1-six699nWiBvItuZTM17rywoYh0g=
-
-resolve-from@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
-  integrity sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=
-
-resolve-url@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
-  integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-
-resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.8.1:
-  version "1.17.0"
-  resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.17.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
-  integrity sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=
-  dependencies:
-    path-parse "^1.0.6"
-
-restore-cursor@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
-  integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
-  dependencies:
-    onetime "^2.0.0"
-    signal-exit "^3.0.2"
-
-restore-cursor@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
-  integrity sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=
-  dependencies:
-    onetime "^5.1.0"
-    signal-exit "^3.0.2"
-
-ret@~0.1.10:
-  version "0.1.15"
-  resolved "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
-  integrity sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=
-
-retry@^0.12.0:
-  version "0.12.0"
-  resolved "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
-  integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
-
-rgb-regex@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
-  integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
-
-rgba-regex@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
-  integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
-
-rimraf@2.6.3:
-  version "2.6.3"
-  resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
-  integrity sha1-stEE/g2Psnz54KHNqCYt04M8bKs=
-  dependencies:
-    glob "^7.1.3"
-
-rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1:
-  version "2.7.1"
-  resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
-  integrity sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=
-  dependencies:
-    glob "^7.1.3"
-
-ripemd160@^2.0.0, ripemd160@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
-  integrity sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=
-  dependencies:
-    hash-base "^3.0.0"
-    inherits "^2.0.1"
-
-run-async@^2.4.0:
-  version "2.4.0"
-  resolved "https://registry.npm.taobao.org/run-async/download/run-async-2.4.0.tgz?cache=0&sync_timestamp=1582711719088&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frun-async%2Fdownload%2Frun-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8"
-  integrity sha1-5ZBUpbhods+uB/Qx0Yy63cWU8eg=
-  dependencies:
-    is-promise "^2.1.0"
-
-run-queue@^1.0.0, run-queue@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
-  integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
-  dependencies:
-    aproba "^1.1.1"
-
-rxjs@^6.5.3:
-  version "6.5.5"
-  resolved "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec"
-  integrity sha1-xciE4wlMjP7jG/J+uH5UzPyH+ew=
-  dependencies:
-    tslib "^1.9.0"
-
-safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
-  version "5.1.2"
-  resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
-  integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0=
-
-safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
-  version "5.2.0"
-  resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
-  integrity sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=
-
-safe-regex@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz?cache=0&sync_timestamp=1571687713993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-regex%2Fdownload%2Fsafe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
-  integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
-  dependencies:
-    ret "~0.1.10"
-
-"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
-  version "2.1.2"
-  resolved "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
-  integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=
-
-sax@~1.2.4:
-  version "1.2.4"
-  resolved "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-  integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk=
-
-schema-utils@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
-  integrity sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=
-  dependencies:
-    ajv "^6.1.0"
-    ajv-errors "^1.0.0"
-    ajv-keywords "^3.1.0"
-
-schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.4, schema-utils@^2.6.5, schema-utils@^2.6.6:
-  version "2.6.6"
-  resolved "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c"
-  integrity sha1-KZ/mvUozZdwj2Z/URsr/jx1sMww=
-  dependencies:
-    ajv "^6.12.0"
-    ajv-keywords "^3.4.1"
-
-select-hose@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
-  integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
-
-selfsigned@^1.10.7:
-  version "1.10.7"
-  resolved "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b"
-  integrity sha1-2lgZ/QSdVXTyjoipvMbbxubzkGs=
-  dependencies:
-    node-forge "0.9.0"
-
-"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
-  version "5.7.1"
-  resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
-  integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
-
-semver@7.0.0:
-  version "7.0.0"
-  resolved "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
-  integrity sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=
-
-semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0:
-  version "6.3.0"
-  resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
-  integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=
-
-send@0.17.1:
-  version "0.17.1"
-  resolved "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
-  integrity sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=
-  dependencies:
-    debug "2.6.9"
-    depd "~1.1.2"
-    destroy "~1.0.4"
-    encodeurl "~1.0.2"
-    escape-html "~1.0.3"
-    etag "~1.8.1"
-    fresh "0.5.2"
-    http-errors "~1.7.2"
-    mime "1.6.0"
-    ms "2.1.1"
-    on-finished "~2.3.0"
-    range-parser "~1.2.1"
-    statuses "~1.5.0"
-
-serialize-javascript@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
-  integrity sha1-7OxTsOAxe9yV73arcHS3OEeF+mE=
-
-serve-index@^1.9.1:
-  version "1.9.1"
-  resolved "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
-  integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
-  dependencies:
-    accepts "~1.3.4"
-    batch "0.6.1"
-    debug "2.6.9"
-    escape-html "~1.0.3"
-    http-errors "~1.6.2"
-    mime-types "~2.1.17"
-    parseurl "~1.3.2"
-
-serve-static@1.14.1:
-  version "1.14.1"
-  resolved "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
-  integrity sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=
-  dependencies:
-    encodeurl "~1.0.2"
-    escape-html "~1.0.3"
-    parseurl "~1.3.3"
-    send "0.17.1"
-
-set-blocking@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-  integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-
-set-value@^2.0.0, set-value@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz?cache=0&sync_timestamp=1585775409029&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fset-value%2Fdownload%2Fset-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
-  integrity sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=
-  dependencies:
-    extend-shallow "^2.0.1"
-    is-extendable "^0.1.1"
-    is-plain-object "^2.0.3"
-    split-string "^3.0.1"
-
-setimmediate@^1.0.4:
-  version "1.0.5"
-  resolved "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
-  integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
-
-setprototypeof@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
-  integrity sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=
-
-setprototypeof@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
-  integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=
-
-sha.js@^2.4.0, sha.js@^2.4.8:
-  version "2.4.11"
-  resolved "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
-  integrity sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=
-  dependencies:
-    inherits "^2.0.1"
-    safe-buffer "^5.0.1"
-
-shebang-command@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
-  integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
-  dependencies:
-    shebang-regex "^1.0.0"
-
-shebang-command@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
-  integrity sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=
-  dependencies:
-    shebang-regex "^3.0.0"
-
-shebang-regex@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
-  integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
-shebang-regex@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
-  integrity sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=
-
-shell-quote@^1.6.1:
-  version "1.7.2"
-  resolved "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
-  integrity sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=
-
-signal-exit@^3.0.0, signal-exit@^3.0.2:
-  version "3.0.3"
-  resolved "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz?cache=0&sync_timestamp=1585253373618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
-  integrity sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=
-
-simple-swizzle@^0.2.2:
-  version "0.2.2"
-  resolved "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
-  integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
-  dependencies:
-    is-arrayish "^0.3.1"
-
-slash@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
-  integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
-
-slash@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
-  integrity sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=
-
-slice-ansi@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
-  integrity sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=
-  dependencies:
-    ansi-styles "^3.2.0"
-    astral-regex "^1.0.0"
-    is-fullwidth-code-point "^2.0.0"
-
-snapdragon-node@^2.0.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
-  integrity sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=
-  dependencies:
-    define-property "^1.0.0"
-    isobject "^3.0.0"
-    snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
-  integrity sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=
-  dependencies:
-    kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
-  version "0.8.2"
-  resolved "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
-  integrity sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=
-  dependencies:
-    base "^0.11.1"
-    debug "^2.2.0"
-    define-property "^0.2.5"
-    extend-shallow "^2.0.1"
-    map-cache "^0.2.2"
-    source-map "^0.5.6"
-    source-map-resolve "^0.5.0"
-    use "^3.1.0"
-
-sockjs-client@1.4.0:
-  version "1.4.0"
-  resolved "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5"
-  integrity sha1-yfJWjhnI/YFztJl+o0IOC7MGx9U=
-  dependencies:
-    debug "^3.2.5"
-    eventsource "^1.0.7"
-    faye-websocket "~0.11.1"
-    inherits "^2.0.3"
-    json3 "^3.3.2"
-    url-parse "^1.4.3"
-
-sockjs@0.3.19:
-  version "0.3.19"
-  resolved "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
-  integrity sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0=
-  dependencies:
-    faye-websocket "^0.10.0"
-    uuid "^3.0.1"
-
-sort-keys@^1.0.0:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
-  integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
-  dependencies:
-    is-plain-obj "^1.0.0"
-
-source-list-map@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
-  integrity sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=
-
-source-map-resolve@^0.5.0:
-  version "0.5.3"
-  resolved "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz?cache=0&sync_timestamp=1584831908370&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-resolve%2Fdownload%2Fsource-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
-  integrity sha1-GQhmvs51U+H48mei7oLGBrVQmho=
-  dependencies:
-    atob "^2.1.2"
-    decode-uri-component "^0.2.0"
-    resolve-url "^0.2.1"
-    source-map-url "^0.4.0"
-    urix "^0.1.0"
-
-source-map-support@~0.5.12:
-  version "0.5.19"
-  resolved "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.19.tgz?cache=0&sync_timestamp=1587719493563&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
-  integrity sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=
-  dependencies:
-    buffer-from "^1.0.0"
-    source-map "^0.6.0"
-
-source-map-url@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
-  integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-
-source-map@^0.5.0, source-map@^0.5.6:
-  version "0.5.7"
-  resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
-  version "0.6.1"
-  resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-  integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM=
-
-spdx-correct@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
-  integrity sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=
-  dependencies:
-    spdx-expression-parse "^3.0.0"
-    spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
-  version "2.3.0"
-  resolved "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
-  integrity sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=
-
-spdx-expression-parse@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
-  integrity sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=
-  dependencies:
-    spdx-exceptions "^2.1.0"
-    spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
-  version "3.0.5"
-  resolved "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
-  integrity sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=
-
-spdy-transport@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
-  integrity sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=
-  dependencies:
-    debug "^4.1.0"
-    detect-node "^2.0.4"
-    hpack.js "^2.1.6"
-    obuf "^1.1.2"
-    readable-stream "^3.0.6"
-    wbuf "^1.7.3"
-
-spdy@^4.0.1:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/spdy/download/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
-  integrity sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=
-  dependencies:
-    debug "^4.1.0"
-    handle-thing "^2.0.0"
-    http-deceiver "^1.2.7"
-    select-hose "^2.0.0"
-    spdy-transport "^3.0.0"
-
-split-string@^3.0.1, split-string@^3.0.2:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
-  integrity sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=
-  dependencies:
-    extend-shallow "^3.0.0"
-
-sprintf-js@~1.0.2:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
-  integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
-sshpk@^1.7.0:
-  version "1.16.1"
-  resolved "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
-  integrity sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=
-  dependencies:
-    asn1 "~0.2.3"
-    assert-plus "^1.0.0"
-    bcrypt-pbkdf "^1.0.0"
-    dashdash "^1.12.0"
-    ecc-jsbn "~0.1.1"
-    getpass "^0.1.1"
-    jsbn "~0.1.0"
-    safer-buffer "^2.0.2"
-    tweetnacl "~0.14.0"
-
-ssri@^6.0.1:
-  version "6.0.1"
-  resolved "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
-  integrity sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=
-  dependencies:
-    figgy-pudding "^3.5.1"
-
-ssri@^7.0.0, ssri@^7.1.0:
-  version "7.1.0"
-  resolved "https://registry.npm.taobao.org/ssri/download/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d"
-  integrity sha1-ksJBv23oI2W1x/tL126XVSLhKU0=
-  dependencies:
-    figgy-pudding "^3.5.1"
-    minipass "^3.1.1"
-
-stable@^0.1.8:
-  version "0.1.8"
-  resolved "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
-  integrity sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=
-
-stackframe@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/stackframe/download/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71"
-  integrity sha1-/+8KMxixtgw7WFZJiaylZgcp7HE=
-
-static-extend@^0.1.1:
-  version "0.1.2"
-  resolved "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
-  integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
-  dependencies:
-    define-property "^0.2.5"
-    object-copy "^0.1.0"
-
-"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
-  version "1.5.0"
-  resolved "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
-  integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-
-stealthy-require@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
-  integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
-
-stream-browserify@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
-  integrity sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=
-  dependencies:
-    inherits "~2.0.1"
-    readable-stream "^2.0.2"
-
-stream-each@^1.1.0:
-  version "1.2.3"
-  resolved "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
-  integrity sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=
-  dependencies:
-    end-of-stream "^1.1.0"
-    stream-shift "^1.0.0"
-
-stream-http@^2.7.2:
-  version "2.8.3"
-  resolved "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
-  integrity sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=
-  dependencies:
-    builtin-status-codes "^3.0.0"
-    inherits "^2.0.1"
-    readable-stream "^2.3.6"
-    to-arraybuffer "^1.0.0"
-    xtend "^4.0.0"
-
-stream-shift@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
-  integrity sha1-1wiCgVWasneEJCebCHfaPDktWj0=
-
-strict-uri-encode@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
-  integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
-
-string-width@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
-  integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
-  dependencies:
-    code-point-at "^1.0.0"
-    is-fullwidth-code-point "^1.0.0"
-    strip-ansi "^3.0.0"
-
-string-width@^2.0.0, string-width@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
-  integrity sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=
-  dependencies:
-    is-fullwidth-code-point "^2.0.0"
-    strip-ansi "^4.0.0"
-
-string-width@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
-  integrity sha1-InZ74htirxCBV0MG9prFG2IgOWE=
-  dependencies:
-    emoji-regex "^7.0.1"
-    is-fullwidth-code-point "^2.0.0"
-    strip-ansi "^5.1.0"
-
-string-width@^4.1.0, string-width@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
-  integrity sha1-lSGCxGzHssMT0VluYjmSvRY7crU=
-  dependencies:
-    emoji-regex "^8.0.0"
-    is-fullwidth-code-point "^3.0.0"
-    strip-ansi "^6.0.0"
-
-string.prototype.trimend@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
-  integrity sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=
-  dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.5"
-
-string.prototype.trimleft@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.2.tgz?cache=0&sync_timestamp=1585557033464&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimleft%2Fdownload%2Fstring.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc"
-  integrity sha1-RAiqLl1t3QyagHObCH+8BnwDs8w=
-  dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.5"
-    string.prototype.trimstart "^1.0.0"
-
-string.prototype.trimright@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.2.tgz?cache=0&sync_timestamp=1585557209944&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimright%2Fdownload%2Fstring.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3"
-  integrity sha1-x28c7zDyG7rYr+uNsVEUls+w8qM=
-  dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.5"
-    string.prototype.trimend "^1.0.0"
-
-string.prototype.trimstart@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
-  integrity sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=
-  dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.5"
-
-string_decoder@^1.0.0, string_decoder@^1.1.1:
-  version "1.3.0"
-  resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
-  integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=
-  dependencies:
-    safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
-  integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
-  dependencies:
-    safe-buffer "~5.1.0"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
-  integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
-  dependencies:
-    ansi-regex "^2.0.0"
-
-strip-ansi@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
-  integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
-  dependencies:
-    ansi-regex "^3.0.0"
-
-strip-ansi@^5.1.0, strip-ansi@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
-  integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=
-  dependencies:
-    ansi-regex "^4.1.0"
-
-strip-ansi@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
-  integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=
-  dependencies:
-    ansi-regex "^5.0.0"
-
-strip-eof@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
-  integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-
-strip-final-newline@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
-  integrity sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=
-
-strip-indent@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
-  integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
-
-strip-json-comments@^3.0.1:
-  version "3.1.0"
-  resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
-  integrity sha1-djjTFCISns9EV0QACfugP5+awYA=
-
-stylehacks@^4.0.0:
-  version "4.0.3"
-  resolved "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
-  integrity sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=
-  dependencies:
-    browserslist "^4.0.0"
-    postcss "^7.0.0"
-    postcss-selector-parser "^3.0.0"
-
-supports-color@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-  integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
-supports-color@^5.3.0:
-  version "5.5.0"
-  resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
-  integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=
-  dependencies:
-    has-flag "^3.0.0"
-
-supports-color@^6.1.0:
-  version "6.1.0"
-  resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
-  integrity sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=
-  dependencies:
-    has-flag "^3.0.0"
-
-supports-color@^7.0.0, supports-color@^7.1.0:
-  version "7.1.0"
-  resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1"
-  integrity sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=
-  dependencies:
-    has-flag "^4.0.0"
-
-svg-tags@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
-  integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
-
-svgo@^1.0.0:
-  version "1.3.2"
-  resolved "https://registry.npm.taobao.org/svgo/download/svgo-1.3.2.tgz?cache=0&sync_timestamp=1572433264480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvgo%2Fdownload%2Fsvgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
-  integrity sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc=
-  dependencies:
-    chalk "^2.4.1"
-    coa "^2.0.2"
-    css-select "^2.0.0"
-    css-select-base-adapter "^0.1.1"
-    css-tree "1.0.0-alpha.37"
-    csso "^4.0.2"
-    js-yaml "^3.13.1"
-    mkdirp "~0.5.1"
-    object.values "^1.1.0"
-    sax "~1.2.4"
-    stable "^0.1.8"
-    unquote "~1.1.1"
-    util.promisify "~1.0.0"
-
-table@^5.2.3:
-  version "5.4.6"
-  resolved "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
-  integrity sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=
-  dependencies:
-    ajv "^6.10.2"
-    lodash "^4.17.14"
-    slice-ansi "^2.1.0"
-    string-width "^3.0.0"
-
-tapable@^1.0.0, tapable@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
-  integrity sha1-ofzMBrWNth/XpF2i2kT186Pme6I=
-
-terser-webpack-plugin@^1.4.3:
-  version "1.4.3"
-  resolved "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c"
-  integrity sha1-Xsry29xfuZdF/QZ5H0b8ndscmnw=
-  dependencies:
-    cacache "^12.0.2"
-    find-cache-dir "^2.1.0"
-    is-wsl "^1.1.0"
-    schema-utils "^1.0.0"
-    serialize-javascript "^2.1.2"
-    source-map "^0.6.1"
-    terser "^4.1.2"
-    webpack-sources "^1.4.0"
-    worker-farm "^1.7.0"
-
-terser-webpack-plugin@^2.3.5:
-  version "2.3.5"
-  resolved "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81"
-  integrity sha1-WtlxrM5cUXRAuoc+pPCWh94vSoE=
-  dependencies:
-    cacache "^13.0.1"
-    find-cache-dir "^3.2.0"
-    jest-worker "^25.1.0"
-    p-limit "^2.2.2"
-    schema-utils "^2.6.4"
-    serialize-javascript "^2.1.2"
-    source-map "^0.6.1"
-    terser "^4.4.3"
-    webpack-sources "^1.4.3"
-
-terser@^4.1.2, terser@^4.4.3:
-  version "4.6.12"
-  resolved "https://registry.npm.taobao.org/terser/download/terser-4.6.12.tgz#44b98aef8703fdb09a3491bf79b43faffc5b4fee"
-  integrity sha1-RLmK74cD/bCaNJG/ebQ/r/xbT+4=
-  dependencies:
-    commander "^2.20.0"
-    source-map "~0.6.1"
-    source-map-support "~0.5.12"
-
-text-table@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-  integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
-
-thenify-all@^1.0.0:
-  version "1.6.0"
-  resolved "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
-  integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=
-  dependencies:
-    thenify ">= 3.1.0 < 4"
-
-"thenify@>= 3.1.0 < 4":
-  version "3.3.0"
-  resolved "https://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839"
-  integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=
-  dependencies:
-    any-promise "^1.0.0"
-
-thread-loader@^2.1.3:
-  version "2.1.3"
-  resolved "https://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda"
-  integrity sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo=
-  dependencies:
-    loader-runner "^2.3.1"
-    loader-utils "^1.1.0"
-    neo-async "^2.6.0"
-
-throttle-debounce@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz#51853da37be68a155cb6e827b3514a3c422e89cd"
-  integrity sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==
-
-through2@^2.0.0:
-  version "2.0.5"
-  resolved "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
-  integrity sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=
-  dependencies:
-    readable-stream "~2.3.6"
-    xtend "~4.0.1"
-
-through@^2.3.6:
-  version "2.3.8"
-  resolved "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-  integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
-
-thunky@^1.0.2:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/thunky/download/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
-  integrity sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=
-
-timers-browserify@^2.0.4:
-  version "2.0.11"
-  resolved "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
-  integrity sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=
-  dependencies:
-    setimmediate "^1.0.4"
-
-timsort@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
-  integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
-
-tmp@^0.0.33:
-  version "0.0.33"
-  resolved "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
-  integrity sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=
-  dependencies:
-    os-tmpdir "~1.0.2"
-
-to-arraybuffer@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
-  integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
-
-to-fast-properties@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
-  integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-
-to-object-path@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
-  integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
-  dependencies:
-    kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
-  version "2.1.1"
-  resolved "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
-  integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
-  dependencies:
-    is-number "^3.0.0"
-    repeat-string "^1.6.1"
-
-to-regex@^3.0.1, to-regex@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
-  integrity sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=
-  dependencies:
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    regex-not "^1.0.2"
-    safe-regex "^1.1.0"
-
-toidentifier@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
-  integrity sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=
-
-toposort@^1.0.0:
-  version "1.0.7"
-  resolved "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
-  integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk=
-
-tough-cookie@^2.3.3, tough-cookie@~2.5.0:
-  version "2.5.0"
-  resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz?cache=0&sync_timestamp=1584647110516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
-  integrity sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=
-  dependencies:
-    psl "^1.1.28"
-    punycode "^2.1.1"
-
-tryer@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
-  integrity sha1-8shUBoALmw90yfdGW4HqrSQSUvg=
-
-ts-pnp@^1.1.6:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/ts-pnp/download/ts-pnp-1.2.0.tgz?cache=0&sync_timestamp=1585246552420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fts-pnp%2Fdownload%2Fts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
-  integrity sha1-pQCtCEsHmPHDBxrzkeZZEshrypI=
-
-tslib@^1.9.0:
-  version "1.11.1"
-  resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35"
-  integrity sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU=
-
-tty-browserify@0.0.0:
-  version "0.0.0"
-  resolved "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
-  integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
-
-tunnel-agent@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
-  integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
-  dependencies:
-    safe-buffer "^5.0.1"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
-  version "0.14.5"
-  resolved "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz?cache=0&sync_timestamp=1581365004105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftweetnacl%2Fdownload%2Ftweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
-  integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
-
-type-check@~0.3.2:
-  version "0.3.2"
-  resolved "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
-  integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
-  dependencies:
-    prelude-ls "~1.1.2"
-
-type-fest@^0.11.0:
-  version "0.11.0"
-  resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
-  integrity sha1-l6vwhyMQ/tiKXEZrJWgVdhReM/E=
-
-type-fest@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
-  integrity sha1-jSojcNPfiG61yQraHFv2GIrPg4s=
-
-type-fest@^0.8.1:
-  version "0.8.1"
-  resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
-  integrity sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=
-
-type-is@~1.6.17, type-is@~1.6.18:
-  version "1.6.18"
-  resolved "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
-  integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=
-  dependencies:
-    media-typer "0.3.0"
-    mime-types "~2.1.24"
-
-typedarray@^0.0.6:
-  version "0.0.6"
-  resolved "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-  integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-
-uglify-js@3.4.x:
-  version "3.4.10"
-  resolved "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"
-  integrity sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=
-  dependencies:
-    commander "~2.19.0"
-    source-map "~0.6.1"
-
-unicode-canonical-property-names-ecmascript@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
-  integrity sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=
-
-unicode-match-property-ecmascript@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
-  integrity sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=
-  dependencies:
-    unicode-canonical-property-names-ecmascript "^1.0.4"
-    unicode-property-aliases-ecmascript "^1.0.4"
-
-unicode-match-property-value-ecmascript@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.2.0.tgz?cache=0&sync_timestamp=1583948593703&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funicode-match-property-value-ecmascript%2Fdownload%2Funicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
-  integrity sha1-DZH2AO7rMJaqlisdb8iIduZOpTE=
-
-unicode-property-aliases-ecmascript@^1.0.4:
-  version "1.1.0"
-  resolved "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.1.0.tgz?cache=0&sync_timestamp=1583945817604&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funicode-property-aliases-ecmascript%2Fdownload%2Funicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
-  integrity sha1-3Vepn2IHvt/0Yoq++5TFDblByPQ=
-
-union-value@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
-  integrity sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=
-  dependencies:
-    arr-union "^3.1.0"
-    get-value "^2.0.6"
-    is-extendable "^0.1.1"
-    set-value "^2.0.1"
-
-uniq@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
-  integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
-
-uniqs@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
-  integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
-
-unique-filename@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
-  integrity sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=
-  dependencies:
-    unique-slug "^2.0.0"
-
-unique-slug@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
-  integrity sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=
-  dependencies:
-    imurmurhash "^0.1.4"
-
-universalify@^0.1.0:
-  version "0.1.2"
-  resolved "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz?cache=0&sync_timestamp=1583531068954&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
-  integrity sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=
-
-unpipe@1.0.0, unpipe@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
-  integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
-
-unquote@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
-  integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
-
-unset-value@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
-  integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
-  dependencies:
-    has-value "^0.3.1"
-    isobject "^3.0.0"
-
-upath@^1.1.1:
-  version "1.2.0"
-  resolved "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
-  integrity sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=
-
-upper-case@^1.1.1:
-  version "1.1.3"
-  resolved "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
-  integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
-
-uri-js@^4.2.2:
-  version "4.2.2"
-  resolved "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
-  integrity sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=
-  dependencies:
-    punycode "^2.1.0"
-
-urix@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-  integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-
-url-loader@^2.2.0:
-  version "2.3.0"
-  resolved "https://registry.npm.taobao.org/url-loader/download/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b"
-  integrity sha1-4OLvZY8APvuMpBsPP/v3a6uIZYs=
-  dependencies:
-    loader-utils "^1.2.3"
-    mime "^2.4.4"
-    schema-utils "^2.5.0"
-
-url-parse@^1.4.3:
-  version "1.4.7"
-  resolved "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
-  integrity sha1-qKg1NejACjFuQDpdtKwbm4U64ng=
-  dependencies:
-    querystringify "^2.1.1"
-    requires-port "^1.0.0"
-
-url@^0.11.0:
-  version "0.11.0"
-  resolved "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
-  integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
-  dependencies:
-    punycode "1.3.2"
-    querystring "0.2.0"
-
-use@^3.1.0:
-  version "3.1.1"
-  resolved "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
-  integrity sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=
-
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-util.promisify@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
-  integrity sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=
-  dependencies:
-    define-properties "^1.1.2"
-    object.getownpropertydescriptors "^2.0.3"
-
-util.promisify@~1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
-  integrity sha1-a693dLgO6w91INi4HQeYKlmruu4=
-  dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.2"
-    has-symbols "^1.0.1"
-    object.getownpropertydescriptors "^2.1.0"
-
-util@0.10.3:
-  version "0.10.3"
-  resolved "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
-  integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
-  dependencies:
-    inherits "2.0.1"
-
-util@^0.11.0:
-  version "0.11.1"
-  resolved "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
-  integrity sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=
-  dependencies:
-    inherits "2.0.3"
-
-utila@^0.4.0, utila@~0.4:
-  version "0.4.0"
-  resolved "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
-  integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
-
-utils-merge@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
-  integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-
-uuid@^3.0.1, uuid@^3.3.2:
-  version "3.4.0"
-  resolved "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
-  integrity sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=
-
-v8-compile-cache@^2.0.3:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
-  integrity sha1-4U3jezGm0ZT1aQ1n78Tn9vxqsw4=
-
-validate-npm-package-license@^3.0.1:
-  version "3.0.4"
-  resolved "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
-  integrity sha1-/JH2uce6FchX9MssXe/uw51PQQo=
-  dependencies:
-    spdx-correct "^3.0.0"
-    spdx-expression-parse "^3.0.0"
-
-vary@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
-  integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
-
-vendors@^1.0.0:
-  version "1.0.4"
-  resolved "https://registry.npm.taobao.org/vendors/download/vendors-1.0.4.tgz?cache=0&sync_timestamp=1579857106626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvendors%2Fdownload%2Fvendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
-  integrity sha1-4rgApT56Kbk1BsPPQRANFsTErY4=
-
-verror@1.10.0:
-  version "1.10.0"
-  resolved "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
-  integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
-  dependencies:
-    assert-plus "^1.0.0"
-    core-util-is "1.0.2"
-    extsprintf "^1.2.0"
-
-vm-browserify@^1.0.1:
-  version "1.1.2"
-  resolved "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz?cache=0&sync_timestamp=1572870772154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvm-browserify%2Fdownload%2Fvm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
-  integrity sha1-eGQcSIuObKkadfUR56OzKobl3aA=
-
-vue-eslint-parser@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.0.0.tgz#a4ed2669f87179dedd06afdd8736acbb3a3864d6"
-  integrity sha1-pO0mafhxed7dBq/dhzasuzo4ZNY=
-  dependencies:
-    debug "^4.1.1"
-    eslint-scope "^5.0.0"
-    eslint-visitor-keys "^1.1.0"
-    espree "^6.1.2"
-    esquery "^1.0.1"
-    lodash "^4.17.15"
-
-vue-hot-reload-api@^2.3.0:
-  version "2.3.4"
-  resolved "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
-  integrity sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=
-
-vue-loader@^15.9.1:
-  version "15.9.1"
-  resolved "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.9.1.tgz#bd2ab8f3d281e51d7b81d15390a58424d142243e"
-  integrity sha1-vSq489KB5R17gdFTkKWEJNFCJD4=
-  dependencies:
-    "@vue/component-compiler-utils" "^3.1.0"
-    hash-sum "^1.0.2"
-    loader-utils "^1.1.0"
-    vue-hot-reload-api "^2.3.0"
-    vue-style-loader "^4.1.0"
-
-vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
-  version "4.1.2"
-  resolved "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8"
-  integrity sha1-3t80mAbyXOtOZPOtfApE+6c1/Pg=
-  dependencies:
-    hash-sum "^1.0.2"
-    loader-utils "^1.0.2"
-
-vue-template-compiler@^2.6.11:
-  version "2.6.11"
-  resolved "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080"
-  integrity sha1-wEcE749JixUxMAGJk+VjCdRpgIA=
-  dependencies:
-    de-indent "^1.0.2"
-    he "^1.1.0"
-
-vue-template-es2015-compiler@^1.9.0:
-  version "1.9.1"
-  resolved "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
-  integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=
-
-vue@^2.6.11:
-  version "2.6.11"
-  resolved "https://registry.npm.taobao.org/vue/download/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5"
-  integrity sha1-dllNh31LEiNEBuhONSdcbVFBJcU=
-
-watchpack@^1.6.1:
-  version "1.6.1"
-  resolved "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2"
-  integrity sha1-KA2gqHGFkhdAEMB4x1hadM2M0OI=
-  dependencies:
-    chokidar "^2.1.8"
-    graceful-fs "^4.1.2"
-    neo-async "^2.5.0"
-
-wbuf@^1.1.0, wbuf@^1.7.3:
-  version "1.7.3"
-  resolved "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
-  integrity sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=
-  dependencies:
-    minimalistic-assert "^1.0.0"
-
-wcwidth@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
-  integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
-  dependencies:
-    defaults "^1.0.3"
-
-webpack-bundle-analyzer@^3.6.1:
-  version "3.7.0"
-  resolved "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.7.0.tgz?cache=0&sync_timestamp=1586846550449&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-bundle-analyzer%2Fdownload%2Fwebpack-bundle-analyzer-3.7.0.tgz#84da434e89442899b884d9ad38e466d0db02a56f"
-  integrity sha1-hNpDTolEKJm4hNmtOORm0NsCpW8=
-  dependencies:
-    acorn "^7.1.1"
-    acorn-walk "^7.1.1"
-    bfj "^6.1.1"
-    chalk "^2.4.1"
-    commander "^2.18.0"
-    ejs "^2.6.1"
-    express "^4.16.3"
-    filesize "^3.6.1"
-    gzip-size "^5.0.0"
-    lodash "^4.17.15"
-    mkdirp "^0.5.1"
-    opener "^1.5.1"
-    ws "^6.0.0"
-
-webpack-chain@^6.4.0:
-  version "6.4.0"
-  resolved "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-6.4.0.tgz#22f0b27b6a9bc9ee3cba4f9e6513cf66394034e2"
-  integrity sha1-IvCye2qbye48uk+eZRPPZjlANOI=
-  dependencies:
-    deepmerge "^1.5.2"
-    javascript-stringify "^2.0.1"
-
-webpack-dev-middleware@^3.7.2:
-  version "3.7.2"
-  resolved "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.2.tgz?cache=0&sync_timestamp=1582191703125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3"
-  integrity sha1-ABnD23FuP6XOy/ZPKriKdLqzMfM=
-  dependencies:
-    memory-fs "^0.4.1"
-    mime "^2.4.4"
-    mkdirp "^0.5.1"
-    range-parser "^1.2.1"
-    webpack-log "^2.0.0"
-
-webpack-dev-server@^3.10.3:
-  version "3.10.3"
-  resolved "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0"
-  integrity sha1-81lFA2gT5X71gsJCDve0cOFNOvA=
-  dependencies:
-    ansi-html "0.0.7"
-    bonjour "^3.5.0"
-    chokidar "^2.1.8"
-    compression "^1.7.4"
-    connect-history-api-fallback "^1.6.0"
-    debug "^4.1.1"
-    del "^4.1.1"
-    express "^4.17.1"
-    html-entities "^1.2.1"
-    http-proxy-middleware "0.19.1"
-    import-local "^2.0.0"
-    internal-ip "^4.3.0"
-    ip "^1.1.5"
-    is-absolute-url "^3.0.3"
-    killable "^1.0.1"
-    loglevel "^1.6.6"
-    opn "^5.5.0"
-    p-retry "^3.0.1"
-    portfinder "^1.0.25"
-    schema-utils "^1.0.0"
-    selfsigned "^1.10.7"
-    semver "^6.3.0"
-    serve-index "^1.9.1"
-    sockjs "0.3.19"
-    sockjs-client "1.4.0"
-    spdy "^4.0.1"
-    strip-ansi "^3.0.1"
-    supports-color "^6.1.0"
-    url "^0.11.0"
-    webpack-dev-middleware "^3.7.2"
-    webpack-log "^2.0.0"
-    ws "^6.2.1"
-    yargs "12.0.5"
-
-webpack-log@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
-  integrity sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=
-  dependencies:
-    ansi-colors "^3.0.0"
-    uuid "^3.3.2"
-
-webpack-merge@^4.2.2:
-  version "4.2.2"
-  resolved "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d"
-  integrity sha1-onxS6ng9E5iv0gh/VH17nS9DY00=
-  dependencies:
-    lodash "^4.17.15"
-
-webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3:
-  version "1.4.3"
-  resolved "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
-  integrity sha1-7t2OwLko+/HL/plOItLYkPMwqTM=
-  dependencies:
-    source-list-map "^2.0.0"
-    source-map "~0.6.1"
-
-webpack@^4.0.0:
-  version "4.43.0"
-  resolved "https://registry.npm.taobao.org/webpack/download/webpack-4.43.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack%2Fdownload%2Fwebpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6"
-  integrity sha1-xIVHsR1WMiTFYdrRFyyKoLimeOY=
-  dependencies:
-    "@webassemblyjs/ast" "1.9.0"
-    "@webassemblyjs/helper-module-context" "1.9.0"
-    "@webassemblyjs/wasm-edit" "1.9.0"
-    "@webassemblyjs/wasm-parser" "1.9.0"
-    acorn "^6.4.1"
-    ajv "^6.10.2"
-    ajv-keywords "^3.4.1"
-    chrome-trace-event "^1.0.2"
-    enhanced-resolve "^4.1.0"
-    eslint-scope "^4.0.3"
-    json-parse-better-errors "^1.0.2"
-    loader-runner "^2.4.0"
-    loader-utils "^1.2.3"
-    memory-fs "^0.4.1"
-    micromatch "^3.1.10"
-    mkdirp "^0.5.3"
-    neo-async "^2.6.1"
-    node-libs-browser "^2.2.1"
-    schema-utils "^1.0.0"
-    tapable "^1.1.3"
-    terser-webpack-plugin "^1.4.3"
-    watchpack "^1.6.1"
-    webpack-sources "^1.4.1"
-
-websocket-driver@>=0.5.1:
-  version "0.7.3"
-  resolved "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"
-  integrity sha1-otTg1PTxFvHmKX66WLBdQwEA6fk=
-  dependencies:
-    http-parser-js ">=0.4.0 <0.4.11"
-    safe-buffer ">=5.1.0"
-    websocket-extensions ">=0.1.1"
-
-websocket-extensions@>=0.1.1:
-  version "0.1.3"
-  resolved "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
-  integrity sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=
-
-wechat-emoji-parser@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/wechat-emoji-parser/-/wechat-emoji-parser-1.0.4.tgz#9b66e179da7048a9b99b52f301a17939f5ad9636"
-  integrity sha512-MwXcWVVcADvPNgSOrxV7rz8rVzkOeqh+OKLF4BfXCyWV1lYRqehIKC7+8da9bGJvG45qmxU921+6FaluzsaYAQ==
-
-which-module@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
-  integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-
-which@^1.2.9:
-  version "1.3.1"
-  resolved "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
-  integrity sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=
-  dependencies:
-    isexe "^2.0.0"
-
-which@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
-  integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=
-  dependencies:
-    isexe "^2.0.0"
-
-word-wrap@~1.2.3:
-  version "1.2.3"
-  resolved "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
-  integrity sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=
-
-worker-farm@^1.7.0:
-  version "1.7.0"
-  resolved "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
-  integrity sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=
-  dependencies:
-    errno "~0.1.7"
-
-wrap-ansi@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
-  integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
-  dependencies:
-    string-width "^1.0.1"
-    strip-ansi "^3.0.1"
-
-wrap-ansi@^6.2.0:
-  version "6.2.0"
-  resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
-  integrity sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=
-  dependencies:
-    ansi-styles "^4.0.0"
-    string-width "^4.1.0"
-    strip-ansi "^6.0.0"
-
-wrappy@1:
-  version "1.0.2"
-  resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
-write@1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
-  integrity sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=
-  dependencies:
-    mkdirp "^0.5.1"
-
-ws@^6.0.0, ws@^6.2.1:
-  version "6.2.1"
-  resolved "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
-  integrity sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=
-  dependencies:
-    async-limiter "~1.0.0"
-
-xtend@^4.0.0, xtend@~4.0.1:
-  version "4.0.2"
-  resolved "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
-  integrity sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=
-
-"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
-  integrity sha1-le+U+F7MgdAHwmThkKEg8KPIVms=
-
-yallist@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-  integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-
-yallist@^3.0.2:
-  version "3.1.1"
-  resolved "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
-  integrity sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=
-
-yallist@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
-  integrity sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=
-
-yargs-parser@^11.1.1:
-  version "11.1.1"
-  resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz?cache=0&sync_timestamp=1587068375851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
-  integrity sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=
-  dependencies:
-    camelcase "^5.0.0"
-    decamelize "^1.2.0"
-
-yargs-parser@^18.1.1:
-  version "18.1.3"
-  resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-18.1.3.tgz?cache=0&sync_timestamp=1587068375851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
-  integrity sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A=
-  dependencies:
-    camelcase "^5.0.0"
-    decamelize "^1.2.0"
-
-yargs@12.0.5:
-  version "12.0.5"
-  resolved "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz?cache=0&sync_timestamp=1587149459815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
-  integrity sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=
-  dependencies:
-    cliui "^4.0.0"
-    decamelize "^1.2.0"
-    find-up "^3.0.0"
-    get-caller-file "^1.0.1"
-    os-locale "^3.0.0"
-    require-directory "^2.1.1"
-    require-main-filename "^1.0.1"
-    set-blocking "^2.0.0"
-    string-width "^2.0.0"
-    which-module "^2.0.0"
-    y18n "^3.2.1 || ^4.0.0"
-    yargs-parser "^11.1.1"
-
-yargs@^15.0.0:
-  version "15.3.1"
-  resolved "https://registry.npm.taobao.org/yargs/download/yargs-15.3.1.tgz?cache=0&sync_timestamp=1587149459815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b"
-  integrity sha1-lQW0cnY5Y+VK/mAUitJ6MwgY6Ys=
-  dependencies:
-    cliui "^6.0.0"
-    decamelize "^1.2.0"
-    find-up "^4.1.0"
-    get-caller-file "^2.0.1"
-    require-directory "^2.1.1"
-    require-main-filename "^2.0.0"
-    set-blocking "^2.0.0"
-    string-width "^4.2.0"
-    which-module "^2.0.0"
-    y18n "^4.0.0"
-    yargs-parser "^18.1.1"
-
-yorkie@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9"
-  integrity sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k=
-  dependencies:
-    execa "^0.8.0"
-    is-ci "^1.0.10"
-    normalize-path "^1.0.0"
-    strip-indent "^2.0.0"
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@achrinza/node-ipc@9.2.2":
+  version "9.2.2"
+  resolved "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz"
+  integrity sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==
+  dependencies:
+    "@node-ipc/js-queue" "2.0.3"
+    event-pubsub "4.3.0"
+    js-message "1.0.7"
+
+"@ampproject/remapping@^2.2.0":
+  version "2.2.1"
+  resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz"
+  integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
+  dependencies:
+    "@jridgewell/gen-mapping" "^0.3.0"
+    "@jridgewell/trace-mapping" "^0.3.9"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5":
+  version "7.23.5"
+  resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.23.5.tgz"
+  integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==
+  dependencies:
+    "@babel/highlight" "^7.23.4"
+    chalk "^2.4.2"
+
+"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5":
+  version "7.23.5"
+  resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.23.5.tgz"
+  integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==
+
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/core/-/core-7.23.9.tgz"
+  integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==
+  dependencies:
+    "@ampproject/remapping" "^2.2.0"
+    "@babel/code-frame" "^7.23.5"
+    "@babel/generator" "^7.23.6"
+    "@babel/helper-compilation-targets" "^7.23.6"
+    "@babel/helper-module-transforms" "^7.23.3"
+    "@babel/helpers" "^7.23.9"
+    "@babel/parser" "^7.23.9"
+    "@babel/template" "^7.23.9"
+    "@babel/traverse" "^7.23.9"
+    "@babel/types" "^7.23.9"
+    convert-source-map "^2.0.0"
+    debug "^4.1.0"
+    gensync "^1.0.0-beta.2"
+    json5 "^2.2.3"
+    semver "^6.3.1"
+
+"@babel/generator@^7.23.6":
+  version "7.23.6"
+  resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.23.6.tgz"
+  integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==
+  dependencies:
+    "@babel/types" "^7.23.6"
+    "@jridgewell/gen-mapping" "^0.3.2"
+    "@jridgewell/trace-mapping" "^0.3.17"
+    jsesc "^2.5.1"
+
+"@babel/helper-annotate-as-pure@^7.22.5":
+  version "7.22.5"
+  resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz"
+  integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==
+  dependencies:
+    "@babel/types" "^7.22.5"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15":
+  version "7.22.15"
+  resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz"
+  integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==
+  dependencies:
+    "@babel/types" "^7.22.15"
+
+"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6", "@babel/helper-compilation-targets@^7.9.6":
+  version "7.23.6"
+  resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz"
+  integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==
+  dependencies:
+    "@babel/compat-data" "^7.23.5"
+    "@babel/helper-validator-option" "^7.23.5"
+    browserslist "^4.22.2"
+    lru-cache "^5.1.1"
+    semver "^6.3.1"
+
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.9":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz"
+  integrity sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.22.5"
+    "@babel/helper-environment-visitor" "^7.22.20"
+    "@babel/helper-function-name" "^7.23.0"
+    "@babel/helper-member-expression-to-functions" "^7.23.0"
+    "@babel/helper-optimise-call-expression" "^7.22.5"
+    "@babel/helper-replace-supers" "^7.22.20"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+    "@babel/helper-split-export-declaration" "^7.22.6"
+    semver "^6.3.1"
+
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5":
+  version "7.22.15"
+  resolved "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz"
+  integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.22.5"
+    regexpu-core "^5.3.1"
+    semver "^6.3.1"
+
+"@babel/helper-define-polyfill-provider@^0.5.0":
+  version "0.5.0"
+  resolved "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz"
+  integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==
+  dependencies:
+    "@babel/helper-compilation-targets" "^7.22.6"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    debug "^4.1.1"
+    lodash.debounce "^4.0.8"
+    resolve "^1.14.2"
+
+"@babel/helper-environment-visitor@^7.22.20":
+  version "7.22.20"
+  resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz"
+  integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
+
+"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0":
+  version "7.23.0"
+  resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz"
+  integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
+  dependencies:
+    "@babel/template" "^7.22.15"
+    "@babel/types" "^7.23.0"
+
+"@babel/helper-hoist-variables@^7.22.5":
+  version "7.22.5"
+  resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz"
+  integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
+  dependencies:
+    "@babel/types" "^7.22.5"
+
+"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0":
+  version "7.23.0"
+  resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz"
+  integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==
+  dependencies:
+    "@babel/types" "^7.23.0"
+
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.8.3":
+  version "7.22.15"
+  resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz"
+  integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
+  dependencies:
+    "@babel/types" "^7.22.15"
+
+"@babel/helper-module-transforms@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz"
+  integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==
+  dependencies:
+    "@babel/helper-environment-visitor" "^7.22.20"
+    "@babel/helper-module-imports" "^7.22.15"
+    "@babel/helper-simple-access" "^7.22.5"
+    "@babel/helper-split-export-declaration" "^7.22.6"
+    "@babel/helper-validator-identifier" "^7.22.20"
+
+"@babel/helper-optimise-call-expression@^7.22.5":
+  version "7.22.5"
+  resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz"
+  integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==
+  dependencies:
+    "@babel/types" "^7.22.5"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+  version "7.22.5"
+  resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz"
+  integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
+
+"@babel/helper-remap-async-to-generator@^7.22.20":
+  version "7.22.20"
+  resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz"
+  integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.22.5"
+    "@babel/helper-environment-visitor" "^7.22.20"
+    "@babel/helper-wrap-function" "^7.22.20"
+
+"@babel/helper-replace-supers@^7.22.20":
+  version "7.22.20"
+  resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz"
+  integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==
+  dependencies:
+    "@babel/helper-environment-visitor" "^7.22.20"
+    "@babel/helper-member-expression-to-functions" "^7.22.15"
+    "@babel/helper-optimise-call-expression" "^7.22.5"
+
+"@babel/helper-simple-access@^7.22.5":
+  version "7.22.5"
+  resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz"
+  integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
+  dependencies:
+    "@babel/types" "^7.22.5"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.22.5":
+  version "7.22.5"
+  resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz"
+  integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==
+  dependencies:
+    "@babel/types" "^7.22.5"
+
+"@babel/helper-split-export-declaration@^7.22.6":
+  version "7.22.6"
+  resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz"
+  integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
+  dependencies:
+    "@babel/types" "^7.22.5"
+
+"@babel/helper-string-parser@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz"
+  integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==
+
+"@babel/helper-validator-identifier@^7.22.20":
+  version "7.22.20"
+  resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz"
+  integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
+
+"@babel/helper-validator-option@^7.23.5":
+  version "7.23.5"
+  resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz"
+  integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
+
+"@babel/helper-wrap-function@^7.22.20":
+  version "7.22.20"
+  resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz"
+  integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==
+  dependencies:
+    "@babel/helper-function-name" "^7.22.5"
+    "@babel/template" "^7.22.15"
+    "@babel/types" "^7.22.19"
+
+"@babel/helpers@^7.23.9":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.23.9.tgz"
+  integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==
+  dependencies:
+    "@babel/template" "^7.23.9"
+    "@babel/traverse" "^7.23.9"
+    "@babel/types" "^7.23.9"
+
+"@babel/highlight@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.23.4.tgz"
+  integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==
+  dependencies:
+    "@babel/helper-validator-identifier" "^7.22.20"
+    chalk "^2.4.2"
+    js-tokens "^4.0.0"
+
+"@babel/parser@^7.23.5", "@babel/parser@^7.23.6", "@babel/parser@^7.23.9", "@babel/parser@^7.7.0":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.9.tgz"
+  integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz"
+  integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz"
+  integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+    "@babel/plugin-transform-optional-chaining" "^7.23.3"
+
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7":
+  version "7.23.7"
+  resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz"
+  integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==
+  dependencies:
+    "@babel/helper-environment-visitor" "^7.22.20"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-proposal-class-properties@^7.8.3":
+  version "7.18.6"
+  resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz"
+  integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==
+  dependencies:
+    "@babel/helper-create-class-features-plugin" "^7.18.6"
+    "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-proposal-decorators@^7.8.3":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.9.tgz"
+  integrity sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA==
+  dependencies:
+    "@babel/helper-create-class-features-plugin" "^7.23.9"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-decorators" "^7.23.3"
+
+"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
+  version "7.21.0-placeholder-for-preset-env.2"
+  resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz"
+  integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==
+
+"@babel/plugin-syntax-async-generators@^7.8.4":
+  version "7.8.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz"
+  integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-class-properties@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz"
+  integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-class-static-block@^7.14.5":
+  version "7.14.5"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz"
+  integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-decorators@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz"
+  integrity sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-dynamic-import@^7.8.3":
+  version "7.8.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz"
+  integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.8.3":
+  version "7.8.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz"
+  integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.8.3"
+
+"@babel/plugin-syntax-import-assertions@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz"
+  integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-import-attributes@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz"
+  integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-import-meta@^7.10.4":
+  version "7.10.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz"
+  integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-json-strings@^7.8.3":
+  version "7.8.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz"
+  integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.8.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz"
+  integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
+  version "7.10.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz"
+  integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
+  version "7.8.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz"
+  integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
+  version "7.10.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz"
+  integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-object-rest-spread@^7.8.3":
+  version "7.8.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz"
+  integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
+  version "7.8.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz"
+  integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.8.3":
+  version "7.8.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz"
+  integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-private-property-in-object@^7.14.5":
+  version "7.14.5"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz"
+  integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-top-level-await@^7.14.5":
+  version "7.14.5"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz"
+  integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
+  version "7.18.6"
+  resolved "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz"
+  integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==
+  dependencies:
+    "@babel/helper-create-regexp-features-plugin" "^7.18.6"
+    "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-arrow-functions@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz"
+  integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-async-generator-functions@^7.23.9":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz"
+  integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==
+  dependencies:
+    "@babel/helper-environment-visitor" "^7.22.20"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-remap-async-to-generator" "^7.22.20"
+    "@babel/plugin-syntax-async-generators" "^7.8.4"
+
+"@babel/plugin-transform-async-to-generator@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz"
+  integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==
+  dependencies:
+    "@babel/helper-module-imports" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-remap-async-to-generator" "^7.22.20"
+
+"@babel/plugin-transform-block-scoped-functions@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz"
+  integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-block-scoping@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz"
+  integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-class-properties@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz"
+  integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==
+  dependencies:
+    "@babel/helper-create-class-features-plugin" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-class-static-block@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz"
+  integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==
+  dependencies:
+    "@babel/helper-create-class-features-plugin" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-class-static-block" "^7.14.5"
+
+"@babel/plugin-transform-classes@^7.23.8":
+  version "7.23.8"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz"
+  integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.22.5"
+    "@babel/helper-compilation-targets" "^7.23.6"
+    "@babel/helper-environment-visitor" "^7.22.20"
+    "@babel/helper-function-name" "^7.23.0"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-replace-supers" "^7.22.20"
+    "@babel/helper-split-export-declaration" "^7.22.6"
+    globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz"
+  integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/template" "^7.22.15"
+
+"@babel/plugin-transform-destructuring@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz"
+  integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-dotall-regex@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz"
+  integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==
+  dependencies:
+    "@babel/helper-create-regexp-features-plugin" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-duplicate-keys@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz"
+  integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-dynamic-import@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz"
+  integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
+"@babel/plugin-transform-exponentiation-operator@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz"
+  integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==
+  dependencies:
+    "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-export-namespace-from@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz"
+  integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-transform-for-of@^7.23.6":
+  version "7.23.6"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz"
+  integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+
+"@babel/plugin-transform-function-name@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz"
+  integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==
+  dependencies:
+    "@babel/helper-compilation-targets" "^7.22.15"
+    "@babel/helper-function-name" "^7.23.0"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-json-strings@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz"
+  integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-json-strings" "^7.8.3"
+
+"@babel/plugin-transform-literals@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz"
+  integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-logical-assignment-operators@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz"
+  integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-transform-member-expression-literals@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz"
+  integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-modules-amd@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz"
+  integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==
+  dependencies:
+    "@babel/helper-module-transforms" "^7.23.3"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-modules-commonjs@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz"
+  integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==
+  dependencies:
+    "@babel/helper-module-transforms" "^7.23.3"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-simple-access" "^7.22.5"
+
+"@babel/plugin-transform-modules-systemjs@^7.23.9":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz"
+  integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==
+  dependencies:
+    "@babel/helper-hoist-variables" "^7.22.5"
+    "@babel/helper-module-transforms" "^7.23.3"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-validator-identifier" "^7.22.20"
+
+"@babel/plugin-transform-modules-umd@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz"
+  integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==
+  dependencies:
+    "@babel/helper-module-transforms" "^7.23.3"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5":
+  version "7.22.5"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz"
+  integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==
+  dependencies:
+    "@babel/helper-create-regexp-features-plugin" "^7.22.5"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-new-target@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz"
+  integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz"
+  integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-transform-numeric-separator@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz"
+  integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-transform-object-rest-spread@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz"
+  integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==
+  dependencies:
+    "@babel/compat-data" "^7.23.3"
+    "@babel/helper-compilation-targets" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+    "@babel/plugin-transform-parameters" "^7.23.3"
+
+"@babel/plugin-transform-object-super@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz"
+  integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-replace-supers" "^7.22.20"
+
+"@babel/plugin-transform-optional-catch-binding@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz"
+  integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz"
+  integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+    "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-transform-parameters@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz"
+  integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-private-methods@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz"
+  integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==
+  dependencies:
+    "@babel/helper-create-class-features-plugin" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-private-property-in-object@^7.23.4":
+  version "7.23.4"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz"
+  integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.22.5"
+    "@babel/helper-create-class-features-plugin" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+
+"@babel/plugin-transform-property-literals@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz"
+  integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-regenerator@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz"
+  integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    regenerator-transform "^0.15.2"
+
+"@babel/plugin-transform-reserved-words@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz"
+  integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-runtime@^7.11.0":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz"
+  integrity sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==
+  dependencies:
+    "@babel/helper-module-imports" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    babel-plugin-polyfill-corejs2 "^0.4.8"
+    babel-plugin-polyfill-corejs3 "^0.9.0"
+    babel-plugin-polyfill-regenerator "^0.5.5"
+    semver "^6.3.1"
+
+"@babel/plugin-transform-shorthand-properties@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz"
+  integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-spread@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz"
+  integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+
+"@babel/plugin-transform-sticky-regex@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz"
+  integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-template-literals@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz"
+  integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-typeof-symbol@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz"
+  integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-unicode-escapes@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz"
+  integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-unicode-property-regex@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz"
+  integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==
+  dependencies:
+    "@babel/helper-create-regexp-features-plugin" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-unicode-regex@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz"
+  integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==
+  dependencies:
+    "@babel/helper-create-regexp-features-plugin" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-unicode-sets-regex@^7.23.3":
+  version "7.23.3"
+  resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz"
+  integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==
+  dependencies:
+    "@babel/helper-create-regexp-features-plugin" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/preset-env@^7.11.0":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.23.9.tgz"
+  integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==
+  dependencies:
+    "@babel/compat-data" "^7.23.5"
+    "@babel/helper-compilation-targets" "^7.23.6"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/helper-validator-option" "^7.23.5"
+    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3"
+    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3"
+    "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7"
+    "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
+    "@babel/plugin-syntax-async-generators" "^7.8.4"
+    "@babel/plugin-syntax-class-properties" "^7.12.13"
+    "@babel/plugin-syntax-class-static-block" "^7.14.5"
+    "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+    "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+    "@babel/plugin-syntax-import-assertions" "^7.23.3"
+    "@babel/plugin-syntax-import-attributes" "^7.23.3"
+    "@babel/plugin-syntax-import-meta" "^7.10.4"
+    "@babel/plugin-syntax-json-strings" "^7.8.3"
+    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+    "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+    "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+    "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+    "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+    "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+    "@babel/plugin-syntax-top-level-await" "^7.14.5"
+    "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
+    "@babel/plugin-transform-arrow-functions" "^7.23.3"
+    "@babel/plugin-transform-async-generator-functions" "^7.23.9"
+    "@babel/plugin-transform-async-to-generator" "^7.23.3"
+    "@babel/plugin-transform-block-scoped-functions" "^7.23.3"
+    "@babel/plugin-transform-block-scoping" "^7.23.4"
+    "@babel/plugin-transform-class-properties" "^7.23.3"
+    "@babel/plugin-transform-class-static-block" "^7.23.4"
+    "@babel/plugin-transform-classes" "^7.23.8"
+    "@babel/plugin-transform-computed-properties" "^7.23.3"
+    "@babel/plugin-transform-destructuring" "^7.23.3"
+    "@babel/plugin-transform-dotall-regex" "^7.23.3"
+    "@babel/plugin-transform-duplicate-keys" "^7.23.3"
+    "@babel/plugin-transform-dynamic-import" "^7.23.4"
+    "@babel/plugin-transform-exponentiation-operator" "^7.23.3"
+    "@babel/plugin-transform-export-namespace-from" "^7.23.4"
+    "@babel/plugin-transform-for-of" "^7.23.6"
+    "@babel/plugin-transform-function-name" "^7.23.3"
+    "@babel/plugin-transform-json-strings" "^7.23.4"
+    "@babel/plugin-transform-literals" "^7.23.3"
+    "@babel/plugin-transform-logical-assignment-operators" "^7.23.4"
+    "@babel/plugin-transform-member-expression-literals" "^7.23.3"
+    "@babel/plugin-transform-modules-amd" "^7.23.3"
+    "@babel/plugin-transform-modules-commonjs" "^7.23.3"
+    "@babel/plugin-transform-modules-systemjs" "^7.23.9"
+    "@babel/plugin-transform-modules-umd" "^7.23.3"
+    "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5"
+    "@babel/plugin-transform-new-target" "^7.23.3"
+    "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4"
+    "@babel/plugin-transform-numeric-separator" "^7.23.4"
+    "@babel/plugin-transform-object-rest-spread" "^7.23.4"
+    "@babel/plugin-transform-object-super" "^7.23.3"
+    "@babel/plugin-transform-optional-catch-binding" "^7.23.4"
+    "@babel/plugin-transform-optional-chaining" "^7.23.4"
+    "@babel/plugin-transform-parameters" "^7.23.3"
+    "@babel/plugin-transform-private-methods" "^7.23.3"
+    "@babel/plugin-transform-private-property-in-object" "^7.23.4"
+    "@babel/plugin-transform-property-literals" "^7.23.3"
+    "@babel/plugin-transform-regenerator" "^7.23.3"
+    "@babel/plugin-transform-reserved-words" "^7.23.3"
+    "@babel/plugin-transform-shorthand-properties" "^7.23.3"
+    "@babel/plugin-transform-spread" "^7.23.3"
+    "@babel/plugin-transform-sticky-regex" "^7.23.3"
+    "@babel/plugin-transform-template-literals" "^7.23.3"
+    "@babel/plugin-transform-typeof-symbol" "^7.23.3"
+    "@babel/plugin-transform-unicode-escapes" "^7.23.3"
+    "@babel/plugin-transform-unicode-property-regex" "^7.23.3"
+    "@babel/plugin-transform-unicode-regex" "^7.23.3"
+    "@babel/plugin-transform-unicode-sets-regex" "^7.23.3"
+    "@babel/preset-modules" "0.1.6-no-external-plugins"
+    babel-plugin-polyfill-corejs2 "^0.4.8"
+    babel-plugin-polyfill-corejs3 "^0.9.0"
+    babel-plugin-polyfill-regenerator "^0.5.5"
+    core-js-compat "^3.31.0"
+    semver "^6.3.1"
+
+"@babel/preset-modules@0.1.6-no-external-plugins":
+  version "0.1.6-no-external-plugins"
+  resolved "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz"
+  integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.0.0"
+    "@babel/types" "^7.4.4"
+    esutils "^2.0.2"
+
+"@babel/regjsgen@^0.8.0":
+  version "0.8.0"
+  resolved "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz"
+  integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
+
+"@babel/runtime@^7.11.0", "@babel/runtime@^7.8.4":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.9.tgz"
+  integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==
+  dependencies:
+    regenerator-runtime "^0.14.0"
+
+"@babel/template@^7.22.15", "@babel/template@^7.23.9":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/template/-/template-7.23.9.tgz"
+  integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==
+  dependencies:
+    "@babel/code-frame" "^7.23.5"
+    "@babel/parser" "^7.23.9"
+    "@babel/types" "^7.23.9"
+
+"@babel/traverse@^7.23.7", "@babel/traverse@^7.23.9", "@babel/traverse@^7.7.0":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.23.9.tgz"
+  integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==
+  dependencies:
+    "@babel/code-frame" "^7.23.5"
+    "@babel/generator" "^7.23.6"
+    "@babel/helper-environment-visitor" "^7.22.20"
+    "@babel/helper-function-name" "^7.23.0"
+    "@babel/helper-hoist-variables" "^7.22.5"
+    "@babel/helper-split-export-declaration" "^7.22.6"
+    "@babel/parser" "^7.23.9"
+    "@babel/types" "^7.23.9"
+    debug "^4.3.1"
+    globals "^11.1.0"
+
+"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
+  version "7.23.9"
+  resolved "https://registry.npmmirror.com/@babel/types/-/types-7.23.9.tgz"
+  integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==
+  dependencies:
+    "@babel/helper-string-parser" "^7.23.4"
+    "@babel/helper-validator-identifier" "^7.22.20"
+    to-fast-properties "^2.0.0"
+
+"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3":
+  version "1.1.3"
+  resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz"
+  integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
+
+"@hapi/address@2.x.x":
+  version "2.1.4"
+  resolved "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz"
+  integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==
+
+"@hapi/bourne@1.x.x":
+  version "1.3.2"
+  resolved "https://registry.npmmirror.com/@hapi/bourne/-/bourne-1.3.2.tgz"
+  integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==
+
+"@hapi/hoek@^8.3.0", "@hapi/hoek@8.x.x":
+  version "8.5.1"
+  resolved "https://registry.npmmirror.com/@hapi/hoek/-/hoek-8.5.1.tgz"
+  integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==
+
+"@hapi/joi@^15.0.1":
+  version "15.1.1"
+  resolved "https://registry.npmmirror.com/@hapi/joi/-/joi-15.1.1.tgz"
+  integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==
+  dependencies:
+    "@hapi/address" "2.x.x"
+    "@hapi/bourne" "1.x.x"
+    "@hapi/hoek" "8.x.x"
+    "@hapi/topo" "3.x.x"
+
+"@hapi/topo@3.x.x":
+  version "3.1.6"
+  resolved "https://registry.npmmirror.com/@hapi/topo/-/topo-3.1.6.tgz"
+  integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==
+  dependencies:
+    "@hapi/hoek" "^8.3.0"
+
+"@intervolga/optimize-cssnano-plugin@^1.0.5":
+  version "1.0.6"
+  resolved "https://registry.npmmirror.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz"
+  integrity sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==
+  dependencies:
+    cssnano "^4.0.0"
+    cssnano-preset-default "^4.0.0"
+    postcss "^7.0.0"
+
+"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
+  version "0.3.3"
+  resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz"
+  integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+  dependencies:
+    "@jridgewell/set-array" "^1.0.1"
+    "@jridgewell/sourcemap-codec" "^1.4.10"
+    "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/resolve-uri@^3.1.0":
+  version "3.1.1"
+  resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz"
+  integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
+
+"@jridgewell/set-array@^1.0.1":
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz"
+  integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15":
+  version "1.4.15"
+  resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz"
+  integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
+  version "0.3.22"
+  resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz"
+  integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==
+  dependencies:
+    "@jridgewell/resolve-uri" "^3.1.0"
+    "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+  version "2.2.1"
+  resolved "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz"
+  integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
+  dependencies:
+    call-me-maybe "^1.0.1"
+    glob-to-regexp "^0.3.0"
+
+"@node-ipc/js-queue@2.0.3":
+  version "2.0.3"
+  resolved "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz"
+  integrity sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==
+  dependencies:
+    easy-stack "1.0.1"
+
+"@nodelib/fs.stat@^1.1.2":
+  version "1.1.3"
+  resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz"
+  integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+
+"@npmcli/fs@^1.0.0":
+  version "1.1.1"
+  resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz"
+  integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==
+  dependencies:
+    "@gar/promisify" "^1.0.1"
+    semver "^7.3.5"
+
+"@npmcli/fs@^2.1.0":
+  version "2.1.2"
+  resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz"
+  integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==
+  dependencies:
+    "@gar/promisify" "^1.1.3"
+    semver "^7.3.5"
+
+"@npmcli/move-file@^1.0.1":
+  version "1.1.2"
+  resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz"
+  integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
+  dependencies:
+    mkdirp "^1.0.4"
+    rimraf "^3.0.2"
+
+"@npmcli/move-file@^2.0.0":
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz"
+  integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==
+  dependencies:
+    mkdirp "^1.0.4"
+    rimraf "^3.0.2"
+
+"@sindresorhus/is@^4.0.0":
+  version "4.6.0"
+  resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz"
+  integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
+
+"@soda/friendly-errors-webpack-plugin@^1.7.1":
+  version "1.8.1"
+  resolved "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz"
+  integrity sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==
+  dependencies:
+    chalk "^3.0.0"
+    error-stack-parser "^2.0.6"
+    string-width "^4.2.3"
+    strip-ansi "^6.0.1"
+
+"@soda/get-current-script@^1.0.0":
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz"
+  integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==
+
+"@szmarczak/http-timer@^4.0.5":
+  version "4.0.6"
+  resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz"
+  integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==
+  dependencies:
+    defer-to-connect "^2.0.0"
+
+"@tootallnate/once@1":
+  version "1.1.2"
+  resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz"
+  integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+
+"@tootallnate/once@2":
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz"
+  integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
+
+"@types/body-parser@*":
+  version "1.19.5"
+  resolved "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz"
+  integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==
+  dependencies:
+    "@types/connect" "*"
+    "@types/node" "*"
+
+"@types/cacheable-request@^6.0.1":
+  version "6.0.3"
+  resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz"
+  integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==
+  dependencies:
+    "@types/http-cache-semantics" "*"
+    "@types/keyv" "^3.1.4"
+    "@types/node" "*"
+    "@types/responselike" "^1.0.0"
+
+"@types/connect-history-api-fallback@*":
+  version "1.5.4"
+  resolved "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz"
+  integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==
+  dependencies:
+    "@types/express-serve-static-core" "*"
+    "@types/node" "*"
+
+"@types/connect@*":
+  version "3.4.38"
+  resolved "https://registry.npmmirror.com/@types/connect/-/connect-3.4.38.tgz"
+  integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==
+  dependencies:
+    "@types/node" "*"
+
+"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33":
+  version "4.17.42"
+  resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz"
+  integrity sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==
+  dependencies:
+    "@types/node" "*"
+    "@types/qs" "*"
+    "@types/range-parser" "*"
+    "@types/send" "*"
+
+"@types/express@*":
+  version "4.17.21"
+  resolved "https://registry.npmmirror.com/@types/express/-/express-4.17.21.tgz"
+  integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==
+  dependencies:
+    "@types/body-parser" "*"
+    "@types/express-serve-static-core" "^4.17.33"
+    "@types/qs" "*"
+    "@types/serve-static" "*"
+
+"@types/glob@^7.1.1":
+  version "7.2.0"
+  resolved "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz"
+  integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
+  dependencies:
+    "@types/minimatch" "*"
+    "@types/node" "*"
+
+"@types/http-cache-semantics@*":
+  version "4.0.4"
+  resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz"
+  integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
+
+"@types/http-errors@*":
+  version "2.0.4"
+  resolved "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.4.tgz"
+  integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==
+
+"@types/http-proxy@^1.17.5":
+  version "1.17.14"
+  resolved "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.14.tgz"
+  integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==
+  dependencies:
+    "@types/node" "*"
+
+"@types/json-schema@^7.0.5":
+  version "7.0.15"
+  resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz"
+  integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
+
+"@types/keyv@^3.1.4":
+  version "3.1.4"
+  resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz"
+  integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==
+  dependencies:
+    "@types/node" "*"
+
+"@types/mime@*", "@types/mime@^1":
+  version "1.3.5"
+  resolved "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz"
+  integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==
+
+"@types/minimatch@*":
+  version "5.1.2"
+  resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz"
+  integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
+
+"@types/minimist@^1.2.0":
+  version "1.2.5"
+  resolved "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.5.tgz"
+  integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==
+
+"@types/node@*":
+  version "20.11.13"
+  resolved "https://registry.npmmirror.com/@types/node/-/node-20.11.13.tgz"
+  integrity sha512-5G4zQwdiQBSWYTDAH1ctw2eidqdhMJaNsiIDKHFr55ihz5Trl2qqR8fdrT732yPBho5gkNxXm67OxWFBqX9aPg==
+  dependencies:
+    undici-types "~5.26.4"
+
+"@types/normalize-package-data@^2.4.0":
+  version "2.4.4"
+  resolved "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz"
+  integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==
+
+"@types/q@^1.5.1":
+  version "1.5.8"
+  resolved "https://registry.npmmirror.com/@types/q/-/q-1.5.8.tgz"
+  integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==
+
+"@types/qs@*":
+  version "6.9.11"
+  resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.11.tgz"
+  integrity sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==
+
+"@types/range-parser@*":
+  version "1.2.7"
+  resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz"
+  integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==
+
+"@types/responselike@^1.0.0":
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz"
+  integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==
+  dependencies:
+    "@types/node" "*"
+
+"@types/send@*":
+  version "0.17.4"
+  resolved "https://registry.npmmirror.com/@types/send/-/send-0.17.4.tgz"
+  integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==
+  dependencies:
+    "@types/mime" "^1"
+    "@types/node" "*"
+
+"@types/serve-static@*":
+  version "1.15.5"
+  resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.5.tgz"
+  integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==
+  dependencies:
+    "@types/http-errors" "*"
+    "@types/mime" "*"
+    "@types/node" "*"
+
+"@types/source-list-map@*":
+  version "0.1.6"
+  resolved "https://registry.npmmirror.com/@types/source-list-map/-/source-list-map-0.1.6.tgz"
+  integrity sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==
+
+"@types/tapable@^1":
+  version "1.0.12"
+  resolved "https://registry.npmmirror.com/@types/tapable/-/tapable-1.0.12.tgz"
+  integrity sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==
+
+"@types/uglify-js@*":
+  version "3.17.4"
+  resolved "https://registry.npmmirror.com/@types/uglify-js/-/uglify-js-3.17.4.tgz"
+  integrity sha512-Hm/T0kV3ywpJyMGNbsItdivRhYNCQQf1IIsYsXnoVPES4t+FMLyDe0/K+Ea7ahWtMtSNb22ZdY7MIyoD9rqARg==
+  dependencies:
+    source-map "^0.6.1"
+
+"@types/webpack-dev-server@^3.11.0":
+  version "3.11.6"
+  resolved "https://registry.npmmirror.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz"
+  integrity sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==
+  dependencies:
+    "@types/connect-history-api-fallback" "*"
+    "@types/express" "*"
+    "@types/serve-static" "*"
+    "@types/webpack" "^4"
+    http-proxy-middleware "^1.0.0"
+
+"@types/webpack-sources@*":
+  version "3.2.3"
+  resolved "https://registry.npmmirror.com/@types/webpack-sources/-/webpack-sources-3.2.3.tgz"
+  integrity sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==
+  dependencies:
+    "@types/node" "*"
+    "@types/source-list-map" "*"
+    source-map "^0.7.3"
+
+"@types/webpack@^4", "@types/webpack@^4.0.0":
+  version "4.41.38"
+  resolved "https://registry.npmmirror.com/@types/webpack/-/webpack-4.41.38.tgz"
+  integrity sha512-oOW7E931XJU1mVfCnxCVgv8GLFL768pDO5u2Gzk82i8yTIgX6i7cntyZOkZYb/JtYM8252SN9bQp9tgkVDSsRw==
+  dependencies:
+    "@types/node" "*"
+    "@types/tapable" "^1"
+    "@types/uglify-js" "*"
+    "@types/webpack-sources" "*"
+    anymatch "^3.0.0"
+    source-map "^0.6.0"
+
+"@vue/babel-helper-vue-jsx-merge-props@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz"
+  integrity sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==
+
+"@vue/babel-helper-vue-transform-on@1.2.1":
+  version "1.2.1"
+  resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.1.tgz"
+  integrity sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==
+
+"@vue/babel-plugin-jsx@^1.0.3":
+  version "1.2.1"
+  resolved "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.1.tgz"
+  integrity sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==
+  dependencies:
+    "@babel/helper-module-imports" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/plugin-syntax-jsx" "^7.23.3"
+    "@babel/template" "^7.22.15"
+    "@babel/traverse" "^7.23.7"
+    "@babel/types" "^7.23.6"
+    "@vue/babel-helper-vue-transform-on" "1.2.1"
+    "@vue/babel-plugin-resolve-type" "1.2.1"
+    camelcase "^6.3.0"
+    html-tags "^3.3.1"
+    svg-tags "^1.0.0"
+
+"@vue/babel-plugin-resolve-type@1.2.1":
+  version "1.2.1"
+  resolved "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.1.tgz"
+  integrity sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==
+  dependencies:
+    "@babel/code-frame" "^7.23.5"
+    "@babel/helper-module-imports" "^7.22.15"
+    "@babel/helper-plugin-utils" "^7.22.5"
+    "@babel/parser" "^7.23.6"
+    "@vue/compiler-sfc" "^3.4.15"
+
+"@vue/babel-plugin-transform-vue-jsx@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz"
+  integrity sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==
+  dependencies:
+    "@babel/helper-module-imports" "^7.0.0"
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+    "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0"
+    html-tags "^2.0.0"
+    lodash.kebabcase "^4.1.1"
+    svg-tags "^1.0.0"
+
+"@vue/babel-preset-app@^4.5.19":
+  version "4.5.19"
+  resolved "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz"
+  integrity sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==
+  dependencies:
+    "@babel/core" "^7.11.0"
+    "@babel/helper-compilation-targets" "^7.9.6"
+    "@babel/helper-module-imports" "^7.8.3"
+    "@babel/plugin-proposal-class-properties" "^7.8.3"
+    "@babel/plugin-proposal-decorators" "^7.8.3"
+    "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+    "@babel/plugin-syntax-jsx" "^7.8.3"
+    "@babel/plugin-transform-runtime" "^7.11.0"
+    "@babel/preset-env" "^7.11.0"
+    "@babel/runtime" "^7.11.0"
+    "@vue/babel-plugin-jsx" "^1.0.3"
+    "@vue/babel-preset-jsx" "^1.2.4"
+    babel-plugin-dynamic-import-node "^2.3.3"
+    core-js "^3.6.5"
+    core-js-compat "^3.6.5"
+    semver "^6.1.0"
+
+"@vue/babel-preset-jsx@^1.2.4":
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz"
+  integrity sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==
+  dependencies:
+    "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0"
+    "@vue/babel-plugin-transform-vue-jsx" "^1.4.0"
+    "@vue/babel-sugar-composition-api-inject-h" "^1.4.0"
+    "@vue/babel-sugar-composition-api-render-instance" "^1.4.0"
+    "@vue/babel-sugar-functional-vue" "^1.4.0"
+    "@vue/babel-sugar-inject-h" "^1.4.0"
+    "@vue/babel-sugar-v-model" "^1.4.0"
+    "@vue/babel-sugar-v-on" "^1.4.0"
+
+"@vue/babel-sugar-composition-api-inject-h@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz"
+  integrity sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-composition-api-render-instance@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz"
+  integrity sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-functional-vue@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz"
+  integrity sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-inject-h@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz"
+  integrity sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-v-model@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz"
+  integrity sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+    "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0"
+    "@vue/babel-plugin-transform-vue-jsx" "^1.4.0"
+    camelcase "^5.0.0"
+    html-tags "^2.0.0"
+    svg-tags "^1.0.0"
+
+"@vue/babel-sugar-v-on@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz"
+  integrity sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+    "@vue/babel-plugin-transform-vue-jsx" "^1.4.0"
+    camelcase "^5.0.0"
+
+"@vue/cli-overlay@^4.5.19":
+  version "4.5.19"
+  resolved "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-4.5.19.tgz"
+  integrity sha512-GdxvNSmOw7NHIazCO8gTK+xZbaOmScTtxj6eHVeMbYpDYVPJ+th3VMLWNpw/b6uOjwzzcyKlA5dRQ1DAb+gF/g==
+
+"@vue/cli-plugin-babel@^4.3.0":
+  version "4.5.19"
+  resolved "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.19.tgz"
+  integrity sha512-8ebXzaMW9KNTMAN6+DzkhFsjty1ieqT7hIW5Lbk4v30Qhfjkms7lBWyXPGkoq+wAikXFa1Gnam2xmWOBqDDvWg==
+  dependencies:
+    "@babel/core" "^7.11.0"
+    "@vue/babel-preset-app" "^4.5.19"
+    "@vue/cli-shared-utils" "^4.5.19"
+    babel-loader "^8.1.0"
+    cache-loader "^4.1.0"
+    thread-loader "^2.1.3"
+    webpack "^4.0.0"
+
+"@vue/cli-plugin-eslint@^4.3.0":
+  version "4.5.19"
+  resolved "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.19.tgz"
+  integrity sha512-53sa4Pu9j5KajesFlj494CcO8vVo3e3nnZ1CCKjGGnrF90id1rUeepcFfz5XjwfEtbJZp2x/NoX/EZE6zCzSFQ==
+  dependencies:
+    "@vue/cli-shared-utils" "^4.5.19"
+    eslint-loader "^2.2.1"
+    globby "^9.2.0"
+    inquirer "^7.1.0"
+    webpack "^4.0.0"
+    yorkie "^2.0.0"
+
+"@vue/cli-plugin-router@^4.5.19":
+  version "4.5.19"
+  resolved "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.19.tgz"
+  integrity sha512-3icGzH1IbVYmMMsOwYa0lal/gtvZLebFXdE5hcQJo2mnTwngXGMTyYAzL56EgHBPjbMmRpyj6Iw9k4aVInVX6A==
+  dependencies:
+    "@vue/cli-shared-utils" "^4.5.19"
+
+"@vue/cli-plugin-vuex@^4.5.19":
+  version "4.5.19"
+  resolved "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz"
+  integrity sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==
+
+"@vue/cli-service@^3.0.0 || ^4.0.0-0", "@vue/cli-service@^4.3.0":
+  version "4.5.19"
+  resolved "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-4.5.19.tgz"
+  integrity sha512-+Wpvj8fMTCt9ZPOLu5YaLkFCQmB4MrZ26aRmhhKiCQ/4PMoL6mLezfqdt6c+m2htM+1WV5RunRo+0WHl2DfwZA==
+  dependencies:
+    "@intervolga/optimize-cssnano-plugin" "^1.0.5"
+    "@soda/friendly-errors-webpack-plugin" "^1.7.1"
+    "@soda/get-current-script" "^1.0.0"
+    "@types/minimist" "^1.2.0"
+    "@types/webpack" "^4.0.0"
+    "@types/webpack-dev-server" "^3.11.0"
+    "@vue/cli-overlay" "^4.5.19"
+    "@vue/cli-plugin-router" "^4.5.19"
+    "@vue/cli-plugin-vuex" "^4.5.19"
+    "@vue/cli-shared-utils" "^4.5.19"
+    "@vue/component-compiler-utils" "^3.1.2"
+    "@vue/preload-webpack-plugin" "^1.1.0"
+    "@vue/web-component-wrapper" "^1.2.0"
+    acorn "^7.4.0"
+    acorn-walk "^7.1.1"
+    address "^1.1.2"
+    autoprefixer "^9.8.6"
+    browserslist "^4.12.0"
+    cache-loader "^4.1.0"
+    case-sensitive-paths-webpack-plugin "^2.3.0"
+    cli-highlight "^2.1.4"
+    clipboardy "^2.3.0"
+    cliui "^6.0.0"
+    copy-webpack-plugin "^5.1.1"
+    css-loader "^3.5.3"
+    cssnano "^4.1.10"
+    debug "^4.1.1"
+    default-gateway "^5.0.5"
+    dotenv "^8.2.0"
+    dotenv-expand "^5.1.0"
+    file-loader "^4.2.0"
+    fs-extra "^7.0.1"
+    globby "^9.2.0"
+    hash-sum "^2.0.0"
+    html-webpack-plugin "^3.2.0"
+    launch-editor-middleware "^2.2.1"
+    lodash.defaultsdeep "^4.6.1"
+    lodash.mapvalues "^4.6.0"
+    lodash.transform "^4.6.0"
+    mini-css-extract-plugin "^0.9.0"
+    minimist "^1.2.5"
+    pnp-webpack-plugin "^1.6.4"
+    portfinder "^1.0.26"
+    postcss-loader "^3.0.0"
+    ssri "^8.0.1"
+    terser-webpack-plugin "^1.4.4"
+    thread-loader "^2.1.3"
+    url-loader "^2.2.0"
+    vue-loader "^15.9.2"
+    vue-style-loader "^4.1.2"
+    webpack "^4.0.0"
+    webpack-bundle-analyzer "^3.8.0"
+    webpack-chain "^6.4.0"
+    webpack-dev-server "^3.11.0"
+    webpack-merge "^4.2.2"
+  optionalDependencies:
+    vue-loader-v16 "npm:vue-loader@^16.1.0"
+
+"@vue/cli-shared-utils@^4.5.19":
+  version "4.5.19"
+  resolved "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.19.tgz"
+  integrity sha512-JYpdsrC/d9elerKxbEUtmSSU6QRM60rirVubOewECHkBHj+tLNznWq/EhCjswywtePyLaMUK25eTqnTSZlEE+g==
+  dependencies:
+    "@achrinza/node-ipc" "9.2.2"
+    "@hapi/joi" "^15.0.1"
+    chalk "^2.4.2"
+    execa "^1.0.0"
+    launch-editor "^2.2.1"
+    lru-cache "^5.1.1"
+    open "^6.3.0"
+    ora "^3.4.0"
+    read-pkg "^5.1.1"
+    request "^2.88.2"
+    semver "^6.1.0"
+    strip-ansi "^6.0.0"
+
+"@vue/compiler-core@3.4.15":
+  version "3.4.15"
+  resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.15.tgz"
+  integrity sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==
+  dependencies:
+    "@babel/parser" "^7.23.6"
+    "@vue/shared" "3.4.15"
+    entities "^4.5.0"
+    estree-walker "^2.0.2"
+    source-map-js "^1.0.2"
+
+"@vue/compiler-dom@3.4.15":
+  version "3.4.15"
+  resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz"
+  integrity sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==
+  dependencies:
+    "@vue/compiler-core" "3.4.15"
+    "@vue/shared" "3.4.15"
+
+"@vue/compiler-sfc@^3.0.0-beta.14", "@vue/compiler-sfc@2.7.16":
+  version "2.7.16"
+  resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz"
+  integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==
+  dependencies:
+    "@babel/parser" "^7.23.5"
+    postcss "^8.4.14"
+    source-map "^0.6.1"
+  optionalDependencies:
+    prettier "^1.18.2 || ^2.0.0"
+
+"@vue/compiler-sfc@^3.4.15":
+  version "3.4.15"
+  resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz"
+  integrity sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==
+  dependencies:
+    "@babel/parser" "^7.23.6"
+    "@vue/compiler-core" "3.4.15"
+    "@vue/compiler-dom" "3.4.15"
+    "@vue/compiler-ssr" "3.4.15"
+    "@vue/shared" "3.4.15"
+    estree-walker "^2.0.2"
+    magic-string "^0.30.5"
+    postcss "^8.4.33"
+    source-map-js "^1.0.2"
+
+"@vue/compiler-ssr@3.4.15":
+  version "3.4.15"
+  resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz"
+  integrity sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==
+  dependencies:
+    "@vue/compiler-dom" "3.4.15"
+    "@vue/shared" "3.4.15"
+
+"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2":
+  version "3.3.0"
+  resolved "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz"
+  integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==
+  dependencies:
+    consolidate "^0.15.1"
+    hash-sum "^1.0.2"
+    lru-cache "^4.1.2"
+    merge-source-map "^1.1.0"
+    postcss "^7.0.36"
+    postcss-selector-parser "^6.0.2"
+    source-map "~0.6.1"
+    vue-template-es2015-compiler "^1.9.0"
+  optionalDependencies:
+    prettier "^1.18.2 || ^2.0.0"
+
+"@vue/preload-webpack-plugin@^1.1.0":
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz"
+  integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==
+
+"@vue/shared@3.4.15":
+  version "3.4.15"
+  resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.15.tgz"
+  integrity sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==
+
+"@vue/web-component-wrapper@^1.2.0":
+  version "1.3.0"
+  resolved "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz"
+  integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==
+
+"@webassemblyjs/ast@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz"
+  integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
+  dependencies:
+    "@webassemblyjs/helper-module-context" "1.9.0"
+    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+    "@webassemblyjs/wast-parser" "1.9.0"
+
+"@webassemblyjs/floating-point-hex-parser@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz"
+  integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
+
+"@webassemblyjs/helper-api-error@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz"
+  integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
+
+"@webassemblyjs/helper-buffer@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz"
+  integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
+
+"@webassemblyjs/helper-code-frame@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz"
+  integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
+  dependencies:
+    "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/helper-fsm@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz"
+  integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
+
+"@webassemblyjs/helper-module-context@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz"
+  integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
+  dependencies:
+    "@webassemblyjs/ast" "1.9.0"
+
+"@webassemblyjs/helper-wasm-bytecode@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz"
+  integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
+
+"@webassemblyjs/helper-wasm-section@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz"
+  integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
+  dependencies:
+    "@webassemblyjs/ast" "1.9.0"
+    "@webassemblyjs/helper-buffer" "1.9.0"
+    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+    "@webassemblyjs/wasm-gen" "1.9.0"
+
+"@webassemblyjs/ieee754@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz"
+  integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
+  dependencies:
+    "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz"
+  integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
+  dependencies:
+    "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz"
+  integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
+
+"@webassemblyjs/wasm-edit@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz"
+  integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
+  dependencies:
+    "@webassemblyjs/ast" "1.9.0"
+    "@webassemblyjs/helper-buffer" "1.9.0"
+    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+    "@webassemblyjs/helper-wasm-section" "1.9.0"
+    "@webassemblyjs/wasm-gen" "1.9.0"
+    "@webassemblyjs/wasm-opt" "1.9.0"
+    "@webassemblyjs/wasm-parser" "1.9.0"
+    "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/wasm-gen@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz"
+  integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
+  dependencies:
+    "@webassemblyjs/ast" "1.9.0"
+    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+    "@webassemblyjs/ieee754" "1.9.0"
+    "@webassemblyjs/leb128" "1.9.0"
+    "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wasm-opt@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz"
+  integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
+  dependencies:
+    "@webassemblyjs/ast" "1.9.0"
+    "@webassemblyjs/helper-buffer" "1.9.0"
+    "@webassemblyjs/wasm-gen" "1.9.0"
+    "@webassemblyjs/wasm-parser" "1.9.0"
+
+"@webassemblyjs/wasm-parser@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz"
+  integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
+  dependencies:
+    "@webassemblyjs/ast" "1.9.0"
+    "@webassemblyjs/helper-api-error" "1.9.0"
+    "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+    "@webassemblyjs/ieee754" "1.9.0"
+    "@webassemblyjs/leb128" "1.9.0"
+    "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wast-parser@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz"
+  integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
+  dependencies:
+    "@webassemblyjs/ast" "1.9.0"
+    "@webassemblyjs/floating-point-hex-parser" "1.9.0"
+    "@webassemblyjs/helper-api-error" "1.9.0"
+    "@webassemblyjs/helper-code-frame" "1.9.0"
+    "@webassemblyjs/helper-fsm" "1.9.0"
+    "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.9.0":
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz"
+  integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
+  dependencies:
+    "@webassemblyjs/ast" "1.9.0"
+    "@webassemblyjs/wast-parser" "1.9.0"
+    "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz"
+  integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+  version "4.2.2"
+  resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz"
+  integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abbrev@1:
+  version "1.1.1"
+  resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"
+  integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
+  version "1.3.8"
+  resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz"
+  integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
+  dependencies:
+    mime-types "~2.1.34"
+    negotiator "0.6.3"
+
+acorn-jsx@^5.2.0:
+  version "5.3.2"
+  resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
+  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn-walk@^7.1.1:
+  version "7.2.0"
+  resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz"
+  integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^6.4.1:
+  version "6.4.2"
+  resolved "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz"
+  integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
+
+acorn@^7.1.1:
+  version "7.4.1"
+  resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
+  integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+acorn@^7.4.0:
+  version "7.4.1"
+  resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
+  integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+address@^1.1.2:
+  version "1.2.2"
+  resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz"
+  integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==
+
+agent-base@^6.0.2, agent-base@6:
+  version "6.0.2"
+  resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz"
+  integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+  dependencies:
+    debug "4"
+
+agentkeepalive@^4.1.3, agentkeepalive@^4.2.1:
+  version "4.5.0"
+  resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz"
+  integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==
+  dependencies:
+    humanize-ms "^1.2.1"
+
+aggregate-error@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz"
+  integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+  dependencies:
+    clean-stack "^2.0.0"
+    indent-string "^4.0.0"
+
+ajv-errors@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz"
+  integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+
+ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
+  version "3.5.2"
+  resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
+  integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+
+ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.9.1, ajv@>=5.0.0:
+  version "6.12.6"
+  resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz"
+  integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+  dependencies:
+    fast-deep-equal "^3.1.1"
+    fast-json-stable-stringify "^2.0.0"
+    json-schema-traverse "^0.4.1"
+    uri-js "^4.2.2"
+
+alphanum-sort@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz"
+  integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==
+
+ansi-colors@^3.0.0:
+  version "3.2.4"
+  resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz"
+  integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
+
+ansi-escapes@^4.2.1:
+  version "4.3.2"
+  resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz"
+  integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+  dependencies:
+    type-fest "^0.21.3"
+
+ansi-html-community@0.0.8:
+  version "0.0.8"
+  resolved "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz"
+  integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
+
+ansi-regex@^2.0.0:
+  version "2.1.1"
+  resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz"
+  integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==
+
+ansi-regex@^4.1.0:
+  version "4.1.1"
+  resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz"
+  integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
+
+ansi-regex@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz"
+  integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+  version "3.2.1"
+  resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
+  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+  dependencies:
+    color-convert "^1.9.0"
+
+ansi-styles@^4.0.0:
+  version "4.3.0"
+  resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
+  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+  dependencies:
+    color-convert "^2.0.1"
+
+ansi-styles@^4.1.0:
+  version "4.3.0"
+  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
+  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+  dependencies:
+    color-convert "^2.0.1"
+
+any-promise@^1.0.0:
+  version "1.3.0"
+  resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz"
+  integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
+
+anymatch@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz"
+  integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+  dependencies:
+    micromatch "^3.1.4"
+    normalize-path "^2.1.1"
+
+anymatch@^3.0.0, anymatch@~3.1.2:
+  version "3.1.3"
+  resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz"
+  integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+  dependencies:
+    normalize-path "^3.0.0"
+    picomatch "^2.0.4"
+
+"aproba@^1.0.3 || ^2.0.0", aproba@^1.1.1:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz"
+  integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+arch@^2.1.1:
+  version "2.2.0"
+  resolved "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz"
+  integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
+
+are-we-there-yet@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz"
+  integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==
+  dependencies:
+    delegates "^1.0.0"
+    readable-stream "^3.6.0"
+
+argparse@^1.0.7:
+  version "1.0.10"
+  resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz"
+  integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+  dependencies:
+    sprintf-js "~1.0.2"
+
+arr-diff@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz"
+  integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==
+
+arr-flatten@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz"
+  integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz"
+  integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==
+
+array-buffer-byte-length@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz"
+  integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==
+  dependencies:
+    call-bind "^1.0.2"
+    is-array-buffer "^3.0.1"
+
+array-flatten@^2.1.0:
+  version "2.1.2"
+  resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz"
+  integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
+
+array-flatten@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz"
+  integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
+
+array-union@^1.0.1, array-union@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz"
+  integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==
+  dependencies:
+    array-uniq "^1.0.1"
+
+array-uniq@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz"
+  integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==
+
+array-unique@^0.3.2:
+  version "0.3.2"
+  resolved "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz"
+  integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==
+
+array.prototype.reduce@^1.0.6:
+  version "1.0.6"
+  resolved "https://registry.npmmirror.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz"
+  integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+    es-array-method-boxes-properly "^1.0.0"
+    is-string "^1.0.7"
+
+arraybuffer.prototype.slice@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz"
+  integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==
+  dependencies:
+    array-buffer-byte-length "^1.0.0"
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+    get-intrinsic "^1.2.1"
+    is-array-buffer "^3.0.2"
+    is-shared-array-buffer "^1.0.2"
+
+arrify@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz"
+  integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==
+
+asn1.js@^5.2.0:
+  version "5.4.1"
+  resolved "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz"
+  integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
+  dependencies:
+    bn.js "^4.0.0"
+    inherits "^2.0.1"
+    minimalistic-assert "^1.0.0"
+    safer-buffer "^2.1.0"
+
+asn1@~0.2.3:
+  version "0.2.6"
+  resolved "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz"
+  integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
+  dependencies:
+    safer-buffer "~2.1.0"
+
+assert-plus@^1.0.0, assert-plus@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz"
+  integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
+
+assert@^1.1.1:
+  version "1.5.1"
+  resolved "https://registry.npmmirror.com/assert/-/assert-1.5.1.tgz"
+  integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==
+  dependencies:
+    object.assign "^4.1.4"
+    util "^0.10.4"
+
+assign-symbols@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz"
+  integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==
+
+astral-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz"
+  integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
+
+async-each@^1.0.1:
+  version "1.0.6"
+  resolved "https://registry.npmmirror.com/async-each/-/async-each-1.0.6.tgz"
+  integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==
+
+async-foreach@^0.1.3:
+  version "0.1.3"
+  resolved "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz"
+  integrity sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==
+
+async-limiter@~1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz"
+  integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+
+async-validator@~1.8.1:
+  version "1.8.5"
+  resolved "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz"
+  integrity sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==
+  dependencies:
+    babel-runtime "6.x"
+
+async@^2.6.4:
+  version "2.6.4"
+  resolved "https://registry.npmmirror.com/async/-/async-2.6.4.tgz"
+  integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
+  dependencies:
+    lodash "^4.17.14"
+
+asynckit@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz"
+  integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+atob@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz"
+  integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+autoprefixer@^9.8.6:
+  version "9.8.8"
+  resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz"
+  integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==
+  dependencies:
+    browserslist "^4.12.0"
+    caniuse-lite "^1.0.30001109"
+    normalize-range "^0.1.2"
+    num2fraction "^1.2.2"
+    picocolors "^0.2.1"
+    postcss "^7.0.32"
+    postcss-value-parser "^4.1.0"
+
+available-typed-arrays@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz"
+  integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+
+aws-sign2@~0.7.0:
+  version "0.7.0"
+  resolved "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz"
+  integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
+
+aws4@^1.8.0:
+  version "1.12.0"
+  resolved "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz"
+  integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==
+
+axios@^1.7.2:
+  version "1.7.2"
+  resolved "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz"
+  integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==
+  dependencies:
+    follow-redirects "^1.15.6"
+    form-data "^4.0.0"
+    proxy-from-env "^1.1.0"
+
+babel-eslint@^10.1.0:
+  version "10.1.0"
+  resolved "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz"
+  integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
+  dependencies:
+    "@babel/code-frame" "^7.0.0"
+    "@babel/parser" "^7.7.0"
+    "@babel/traverse" "^7.7.0"
+    "@babel/types" "^7.7.0"
+    eslint-visitor-keys "^1.0.0"
+    resolve "^1.12.0"
+
+babel-helper-vue-jsx-merge-props@^2.0.0:
+  version "2.0.3"
+  resolved "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz"
+  integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==
+
+babel-loader@^8.1.0:
+  version "8.3.0"
+  resolved "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz"
+  integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==
+  dependencies:
+    find-cache-dir "^3.3.1"
+    loader-utils "^2.0.0"
+    make-dir "^3.1.0"
+    schema-utils "^2.6.5"
+
+babel-plugin-dynamic-import-node@^2.3.3:
+  version "2.3.3"
+  resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz"
+  integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
+  dependencies:
+    object.assign "^4.1.0"
+
+babel-plugin-polyfill-corejs2@^0.4.8:
+  version "0.4.8"
+  resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz"
+  integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==
+  dependencies:
+    "@babel/compat-data" "^7.22.6"
+    "@babel/helper-define-polyfill-provider" "^0.5.0"
+    semver "^6.3.1"
+
+babel-plugin-polyfill-corejs3@^0.9.0:
+  version "0.9.0"
+  resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz"
+  integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==
+  dependencies:
+    "@babel/helper-define-polyfill-provider" "^0.5.0"
+    core-js-compat "^3.34.0"
+
+babel-plugin-polyfill-regenerator@^0.5.5:
+  version "0.5.5"
+  resolved "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz"
+  integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==
+  dependencies:
+    "@babel/helper-define-polyfill-provider" "^0.5.0"
+
+babel-runtime@6.x:
+  version "6.26.0"
+  resolved "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz"
+  integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==
+  dependencies:
+    core-js "^2.4.0"
+    regenerator-runtime "^0.11.0"
+
+balanced-match@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz"
+  integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base@^0.11.1:
+  version "0.11.2"
+  resolved "https://registry.npmmirror.com/base/-/base-0.11.2.tgz"
+  integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+  dependencies:
+    cache-base "^1.0.1"
+    class-utils "^0.3.5"
+    component-emitter "^1.2.1"
+    define-property "^1.0.0"
+    isobject "^3.0.1"
+    mixin-deep "^1.2.0"
+    pascalcase "^0.1.1"
+
+base64-js@^1.0.2:
+  version "1.5.1"
+  resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz"
+  integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+batch@0.6.1:
+  version "0.6.1"
+  resolved "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz"
+  integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==
+
+bcrypt-pbkdf@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"
+  integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==
+  dependencies:
+    tweetnacl "^0.14.3"
+
+bfj@^6.1.1:
+  version "6.1.2"
+  resolved "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz"
+  integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==
+  dependencies:
+    bluebird "^3.5.5"
+    check-types "^8.0.3"
+    hoopy "^0.1.4"
+    tryer "^1.0.1"
+
+big.js@^3.1.3:
+  version "3.2.0"
+  resolved "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz"
+  integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
+
+big.js@^5.2.2:
+  version "5.2.2"
+  resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz"
+  integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^1.0.0:
+  version "1.13.1"
+  resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz"
+  integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+
+binary-extensions@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz"
+  integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bluebird@^3.1.1, bluebird@^3.5.5:
+  version "3.7.2"
+  resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz"
+  integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bn.js@^4.0.0:
+  version "4.12.0"
+  resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz"
+  integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+bn.js@^4.1.0:
+  version "4.12.0"
+  resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz"
+  integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+bn.js@^4.11.9:
+  version "4.12.0"
+  resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz"
+  integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+bn.js@^5.0.0, bn.js@^5.2.1:
+  version "5.2.1"
+  resolved "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz"
+  integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
+
+body-parser@1.20.1:
+  version "1.20.1"
+  resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz"
+  integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
+  dependencies:
+    bytes "3.1.2"
+    content-type "~1.0.4"
+    debug "2.6.9"
+    depd "2.0.0"
+    destroy "1.2.0"
+    http-errors "2.0.0"
+    iconv-lite "0.4.24"
+    on-finished "2.4.1"
+    qs "6.11.0"
+    raw-body "2.5.1"
+    type-is "~1.6.18"
+    unpipe "1.0.0"
+
+bonjour@^3.5.0:
+  version "3.5.0"
+  resolved "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz"
+  integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==
+  dependencies:
+    array-flatten "^2.1.0"
+    deep-equal "^1.0.1"
+    dns-equal "^1.0.0"
+    dns-txt "^2.0.2"
+    multicast-dns "^6.0.1"
+    multicast-dns-service-types "^1.1.0"
+
+boolbase@^1.0.0, boolbase@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz"
+  integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+
+brace-expansion@^1.1.7:
+  version "1.1.11"
+  resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+  dependencies:
+    balanced-match "^1.0.0"
+    concat-map "0.0.1"
+
+brace-expansion@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
+  integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+  dependencies:
+    balanced-match "^1.0.0"
+
+braces@^2.3.1, braces@^2.3.2:
+  version "2.3.2"
+  resolved "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz"
+  integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+  dependencies:
+    arr-flatten "^1.1.0"
+    array-unique "^0.3.2"
+    extend-shallow "^2.0.1"
+    fill-range "^4.0.0"
+    isobject "^3.0.1"
+    repeat-element "^1.1.2"
+    snapdragon "^0.8.1"
+    snapdragon-node "^2.0.1"
+    split-string "^3.0.2"
+    to-regex "^3.0.1"
+
+braces@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz"
+  integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+  dependencies:
+    fill-range "^7.0.1"
+
+braces@~3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz"
+  integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+  dependencies:
+    fill-range "^7.0.1"
+
+brorand@^1.0.1, brorand@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz"
+  integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz"
+  integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+  dependencies:
+    buffer-xor "^1.0.3"
+    cipher-base "^1.0.0"
+    create-hash "^1.1.0"
+    evp_bytestokey "^1.0.3"
+    inherits "^2.0.1"
+    safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz"
+  integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+  dependencies:
+    browserify-aes "^1.0.4"
+    browserify-des "^1.0.0"
+    evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz"
+  integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+  dependencies:
+    cipher-base "^1.0.1"
+    des.js "^1.0.0"
+    inherits "^2.0.1"
+    safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0, browserify-rsa@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz"
+  integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
+  dependencies:
+    bn.js "^5.0.0"
+    randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+  version "4.2.2"
+  resolved "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.2.tgz"
+  integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==
+  dependencies:
+    bn.js "^5.2.1"
+    browserify-rsa "^4.1.0"
+    create-hash "^1.2.0"
+    create-hmac "^1.1.7"
+    elliptic "^6.5.4"
+    inherits "^2.0.4"
+    parse-asn1 "^5.1.6"
+    readable-stream "^3.6.2"
+    safe-buffer "^5.2.1"
+
+browserify-zlib@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz"
+  integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+  dependencies:
+    pako "~1.0.5"
+
+browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.22.2, "browserslist@>= 4.21.0":
+  version "4.22.3"
+  resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.22.3.tgz"
+  integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==
+  dependencies:
+    caniuse-lite "^1.0.30001580"
+    electron-to-chromium "^1.4.648"
+    node-releases "^2.0.14"
+    update-browserslist-db "^1.0.13"
+
+buffer-from@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz"
+  integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+buffer-indexof@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz"
+  integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
+
+buffer-json@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/buffer-json/-/buffer-json-2.0.0.tgz"
+  integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==
+
+buffer-xor@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz"
+  integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==
+
+buffer@^4.3.0:
+  version "4.9.2"
+  resolved "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz"
+  integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
+  dependencies:
+    base64-js "^1.0.2"
+    ieee754 "^1.1.4"
+    isarray "^1.0.0"
+
+builtin-status-codes@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz"
+  integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
+
+bytes@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz"
+  integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==
+
+bytes@3.1.2:
+  version "3.1.2"
+  resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz"
+  integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+
+cacache@^12.0.2, cacache@^12.0.3:
+  version "12.0.4"
+  resolved "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz"
+  integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
+  dependencies:
+    bluebird "^3.5.5"
+    chownr "^1.1.1"
+    figgy-pudding "^3.5.1"
+    glob "^7.1.4"
+    graceful-fs "^4.1.15"
+    infer-owner "^1.0.3"
+    lru-cache "^5.1.1"
+    mississippi "^3.0.0"
+    mkdirp "^0.5.1"
+    move-concurrently "^1.0.1"
+    promise-inflight "^1.0.1"
+    rimraf "^2.6.3"
+    ssri "^6.0.1"
+    unique-filename "^1.1.1"
+    y18n "^4.0.0"
+
+cacache@^15.2.0:
+  version "15.3.0"
+  resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz"
+  integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==
+  dependencies:
+    "@npmcli/fs" "^1.0.0"
+    "@npmcli/move-file" "^1.0.1"
+    chownr "^2.0.0"
+    fs-minipass "^2.0.0"
+    glob "^7.1.4"
+    infer-owner "^1.0.4"
+    lru-cache "^6.0.0"
+    minipass "^3.1.1"
+    minipass-collect "^1.0.2"
+    minipass-flush "^1.0.5"
+    minipass-pipeline "^1.2.2"
+    mkdirp "^1.0.3"
+    p-map "^4.0.0"
+    promise-inflight "^1.0.1"
+    rimraf "^3.0.2"
+    ssri "^8.0.1"
+    tar "^6.0.2"
+    unique-filename "^1.1.1"
+
+cacache@^16.1.0:
+  version "16.1.3"
+  resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz"
+  integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==
+  dependencies:
+    "@npmcli/fs" "^2.1.0"
+    "@npmcli/move-file" "^2.0.0"
+    chownr "^2.0.0"
+    fs-minipass "^2.1.0"
+    glob "^8.0.1"
+    infer-owner "^1.0.4"
+    lru-cache "^7.7.1"
+    minipass "^3.1.6"
+    minipass-collect "^1.0.2"
+    minipass-flush "^1.0.5"
+    minipass-pipeline "^1.2.4"
+    mkdirp "^1.0.4"
+    p-map "^4.0.0"
+    promise-inflight "^1.0.1"
+    rimraf "^3.0.2"
+    ssri "^9.0.0"
+    tar "^6.1.11"
+    unique-filename "^2.0.0"
+
+cache-base@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz"
+  integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+  dependencies:
+    collection-visit "^1.0.0"
+    component-emitter "^1.2.1"
+    get-value "^2.0.6"
+    has-value "^1.0.0"
+    isobject "^3.0.1"
+    set-value "^2.0.0"
+    to-object-path "^0.3.0"
+    union-value "^1.0.0"
+    unset-value "^1.0.0"
+
+cache-loader@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmmirror.com/cache-loader/-/cache-loader-4.1.0.tgz"
+  integrity sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==
+  dependencies:
+    buffer-json "^2.0.0"
+    find-cache-dir "^3.0.0"
+    loader-utils "^1.2.3"
+    mkdirp "^0.5.1"
+    neo-async "^2.6.1"
+    schema-utils "^2.0.0"
+
+cacheable-lookup@^5.0.3:
+  version "5.0.4"
+  resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz"
+  integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
+
+cacheable-request@^7.0.2:
+  version "7.0.4"
+  resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz"
+  integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==
+  dependencies:
+    clone-response "^1.0.2"
+    get-stream "^5.1.0"
+    http-cache-semantics "^4.0.0"
+    keyv "^4.0.0"
+    lowercase-keys "^2.0.0"
+    normalize-url "^6.0.1"
+    responselike "^2.0.0"
+
+call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz"
+  integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
+  dependencies:
+    function-bind "^1.1.2"
+    get-intrinsic "^1.2.1"
+    set-function-length "^1.1.1"
+
+call-me-maybe@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz"
+  integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==
+
+caller-callsite@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz"
+  integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==
+  dependencies:
+    callsites "^2.0.0"
+
+caller-path@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz"
+  integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==
+  dependencies:
+    caller-callsite "^2.0.0"
+
+callsites@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz"
+  integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==
+
+callsites@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz"
+  integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camel-case@3.0.x:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz"
+  integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==
+  dependencies:
+    no-case "^2.2.0"
+    upper-case "^1.1.1"
+
+camelcase-keys@^6.2.2:
+  version "6.2.2"
+  resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz"
+  integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
+  dependencies:
+    camelcase "^5.3.1"
+    map-obj "^4.0.0"
+    quick-lru "^4.0.1"
+
+camelcase@^5.0.0:
+  version "5.3.1"
+  resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz"
+  integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^5.3.1:
+  version "5.3.1"
+  resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz"
+  integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^6.3.0:
+  version "6.3.0"
+  resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz"
+  integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-api@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz"
+  integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
+  dependencies:
+    browserslist "^4.0.0"
+    caniuse-lite "^1.0.0"
+    lodash.memoize "^4.1.2"
+    lodash.uniq "^4.5.0"
+
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001580:
+  version "1.0.30001581"
+  resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz"
+  integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==
+
+case-sensitive-paths-webpack-plugin@^2.3.0:
+  version "2.4.0"
+  resolved "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz"
+  integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==
+
+caseless@~0.12.0:
+  version "0.12.0"
+  resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz"
+  integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
+
+chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
+  version "2.4.2"
+  resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz"
+  integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+  dependencies:
+    ansi-styles "^3.2.1"
+    escape-string-regexp "^1.0.5"
+    supports-color "^5.3.0"
+
+chalk@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz"
+  integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+  dependencies:
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
+
+chalk@^4.0.0:
+  version "4.1.2"
+  resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
+  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+  dependencies:
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
+
+chalk@^4.1.0:
+  version "4.1.2"
+  resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
+  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+  dependencies:
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
+
+chalk@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+  dependencies:
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
+
+chardet@^0.7.0:
+  version "0.7.0"
+  resolved "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz"
+  integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+check-types@^8.0.3:
+  version "8.0.3"
+  resolved "https://registry.npmmirror.com/check-types/-/check-types-8.0.3.tgz"
+  integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==
+
+chokidar@^2.1.8:
+  version "2.1.8"
+  resolved "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz"
+  integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
+  dependencies:
+    anymatch "^2.0.0"
+    async-each "^1.0.1"
+    braces "^2.3.2"
+    glob-parent "^3.1.0"
+    inherits "^2.0.3"
+    is-binary-path "^1.0.0"
+    is-glob "^4.0.0"
+    normalize-path "^3.0.0"
+    path-is-absolute "^1.0.0"
+    readdirp "^2.2.1"
+    upath "^1.1.1"
+  optionalDependencies:
+    fsevents "^1.2.7"
+
+chokidar@^3.4.1:
+  version "3.5.3"
+  resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz"
+  integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+  dependencies:
+    anymatch "~3.1.2"
+    braces "~3.0.2"
+    glob-parent "~5.1.2"
+    is-binary-path "~2.1.0"
+    is-glob "~4.0.1"
+    normalize-path "~3.0.0"
+    readdirp "~3.6.0"
+  optionalDependencies:
+    fsevents "~2.3.2"
+
+chownr@^1.1.1:
+  version "1.1.4"
+  resolved "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz"
+  integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+chownr@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz"
+  integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
+
+chrome-trace-event@^1.0.2:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz"
+  integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
+
+ci-info@^1.5.0:
+  version "1.6.0"
+  resolved "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz"
+  integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz"
+  integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+  dependencies:
+    inherits "^2.0.1"
+    safe-buffer "^5.0.1"
+
+class-utils@^0.3.5:
+  version "0.3.6"
+  resolved "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz"
+  integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+  dependencies:
+    arr-union "^3.1.0"
+    define-property "^0.2.5"
+    isobject "^3.0.0"
+    static-extend "^0.1.1"
+
+clean-css@4.2.x:
+  version "4.2.4"
+  resolved "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz"
+  integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==
+  dependencies:
+    source-map "~0.6.0"
+
+clean-stack@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz"
+  integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+cli-cursor@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz"
+  integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==
+  dependencies:
+    restore-cursor "^2.0.0"
+
+cli-cursor@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz"
+  integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+  dependencies:
+    restore-cursor "^3.1.0"
+
+cli-highlight@^2.1.4:
+  version "2.1.11"
+  resolved "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz"
+  integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==
+  dependencies:
+    chalk "^4.0.0"
+    highlight.js "^10.7.1"
+    mz "^2.4.0"
+    parse5 "^5.1.1"
+    parse5-htmlparser2-tree-adapter "^6.0.0"
+    yargs "^16.0.0"
+
+cli-spinners@^2.0.0:
+  version "2.9.2"
+  resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz"
+  integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
+
+cli-width@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz"
+  integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+
+clipboardy@^2.3.0:
+  version "2.3.0"
+  resolved "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz"
+  integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==
+  dependencies:
+    arch "^2.1.1"
+    execa "^1.0.0"
+    is-wsl "^2.1.1"
+
+cliui@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz"
+  integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+  dependencies:
+    string-width "^3.1.0"
+    strip-ansi "^5.2.0"
+    wrap-ansi "^5.1.0"
+
+cliui@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz"
+  integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+  dependencies:
+    string-width "^4.2.0"
+    strip-ansi "^6.0.0"
+    wrap-ansi "^6.2.0"
+
+cliui@^7.0.2:
+  version "7.0.4"
+  resolved "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz"
+  integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
+  dependencies:
+    string-width "^4.2.0"
+    strip-ansi "^6.0.0"
+    wrap-ansi "^7.0.0"
+
+cliui@^8.0.1:
+  version "8.0.1"
+  resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz"
+  integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+  dependencies:
+    string-width "^4.2.0"
+    strip-ansi "^6.0.1"
+    wrap-ansi "^7.0.0"
+
+clone-response@^1.0.2:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz"
+  integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==
+  dependencies:
+    mimic-response "^1.0.0"
+
+clone@^1.0.2:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz"
+  integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
+
+clone@^2.1.0:
+  version "2.1.2"
+  resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz"
+  integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
+
+coa@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz"
+  integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
+  dependencies:
+    "@types/q" "^1.5.1"
+    chalk "^2.4.1"
+    q "^1.1.2"
+
+collection-visit@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz"
+  integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==
+  dependencies:
+    map-visit "^1.0.0"
+    object-visit "^1.0.0"
+
+color-convert@^1.9.0, color-convert@^1.9.3:
+  version "1.9.3"
+  resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz"
+  integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+  dependencies:
+    color-name "1.1.3"
+
+color-convert@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz"
+  integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+  dependencies:
+    color-name "~1.1.4"
+
+color-name@^1.0.0, color-name@1.1.3:
+  version "1.1.3"
+  resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
+  integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+color-name@~1.1.4:
+  version "1.1.4"
+  resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
+  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^1.6.0:
+  version "1.9.1"
+  resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz"
+  integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
+  dependencies:
+    color-name "^1.0.0"
+    simple-swizzle "^0.2.2"
+
+color-support@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz"
+  integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
+
+color@^3.0.0:
+  version "3.2.1"
+  resolved "https://registry.npmmirror.com/color/-/color-3.2.1.tgz"
+  integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
+  dependencies:
+    color-convert "^1.9.3"
+    color-string "^1.6.0"
+
+combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
+  version "1.0.8"
+  resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz"
+  integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+  dependencies:
+    delayed-stream "~1.0.0"
+
+commander@^2.18.0, commander@^2.20.0:
+  version "2.20.3"
+  resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
+  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@~2.19.0:
+  version "2.19.0"
+  resolved "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz"
+  integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
+
+commander@2.17.x:
+  version "2.17.1"
+  resolved "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz"
+  integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
+
+commondir@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz"
+  integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
+
+component-emitter@^1.2.1:
+  version "1.3.1"
+  resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.1.tgz"
+  integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==
+
+compressible@~2.0.16:
+  version "2.0.18"
+  resolved "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz"
+  integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
+  dependencies:
+    mime-db ">= 1.43.0 < 2"
+
+compression@^1.7.4:
+  version "1.7.4"
+  resolved "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz"
+  integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
+  dependencies:
+    accepts "~1.3.5"
+    bytes "3.0.0"
+    compressible "~2.0.16"
+    debug "2.6.9"
+    on-headers "~1.0.2"
+    safe-buffer "5.1.2"
+    vary "~1.1.2"
+
+concat-map@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz"
+  integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+concat-stream@^1.5.0:
+  version "1.6.2"
+  resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz"
+  integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+  dependencies:
+    buffer-from "^1.0.0"
+    inherits "^2.0.3"
+    readable-stream "^2.2.2"
+    typedarray "^0.0.6"
+
+connect-history-api-fallback@^1.6.0:
+  version "1.6.0"
+  resolved "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz"
+  integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
+
+console-browserify@^1.1.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz"
+  integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
+
+console-control-strings@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
+  integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
+
+consolidate@^0.15.1:
+  version "0.15.1"
+  resolved "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz"
+  integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==
+  dependencies:
+    bluebird "^3.1.1"
+
+constants-browserify@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz"
+  integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==
+
+content-disposition@0.5.4:
+  version "0.5.4"
+  resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz"
+  integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
+  dependencies:
+    safe-buffer "5.2.1"
+
+content-type@~1.0.4:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz"
+  integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
+
+convert-source-map@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz"
+  integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
+cookie-signature@1.0.6:
+  version "1.0.6"
+  resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz"
+  integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
+
+cookie@0.5.0:
+  version "0.5.0"
+  resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz"
+  integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
+
+copy-anything@^2.0.1:
+  version "2.0.6"
+  resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz"
+  integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
+  dependencies:
+    is-what "^3.14.1"
+
+copy-concurrently@^1.0.0:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz"
+  integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+  dependencies:
+    aproba "^1.1.1"
+    fs-write-stream-atomic "^1.0.8"
+    iferr "^0.1.5"
+    mkdirp "^0.5.1"
+    rimraf "^2.5.4"
+    run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz"
+  integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==
+
+copy-webpack-plugin@^5.1.1:
+  version "5.1.2"
+  resolved "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz"
+  integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==
+  dependencies:
+    cacache "^12.0.3"
+    find-cache-dir "^2.1.0"
+    glob-parent "^3.1.0"
+    globby "^7.1.1"
+    is-glob "^4.0.1"
+    loader-utils "^1.2.3"
+    minimatch "^3.0.4"
+    normalize-path "^3.0.0"
+    p-limit "^2.2.1"
+    schema-utils "^1.0.0"
+    serialize-javascript "^4.0.0"
+    webpack-log "^2.0.0"
+
+core-js-compat@^3.31.0, core-js-compat@^3.34.0, core-js-compat@^3.6.5:
+  version "3.35.1"
+  resolved "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.35.1.tgz"
+  integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==
+  dependencies:
+    browserslist "^4.22.2"
+
+core-js@^2.4.0:
+  version "2.6.12"
+  resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz"
+  integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
+
+core-js@^3.6.4, core-js@^3.6.5:
+  version "3.35.1"
+  resolved "https://registry.npmmirror.com/core-js/-/core-js-3.35.1.tgz"
+  integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==
+
+core-util-is@~1.0.0, core-util-is@1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz"
+  integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
+
+cosmiconfig@^5.0.0:
+  version "5.2.1"
+  resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz"
+  integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
+  dependencies:
+    import-fresh "^2.0.0"
+    is-directory "^0.3.1"
+    js-yaml "^3.13.1"
+    parse-json "^4.0.0"
+
+create-ecdh@^4.0.0:
+  version "4.0.4"
+  resolved "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz"
+  integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
+  dependencies:
+    bn.js "^4.1.0"
+    elliptic "^6.5.3"
+
+create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz"
+  integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+  dependencies:
+    cipher-base "^1.0.1"
+    inherits "^2.0.1"
+    md5.js "^1.3.4"
+    ripemd160 "^2.0.1"
+    sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
+  version "1.1.7"
+  resolved "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz"
+  integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+  dependencies:
+    cipher-base "^1.0.3"
+    create-hash "^1.1.0"
+    inherits "^2.0.1"
+    ripemd160 "^2.0.0"
+    safe-buffer "^5.0.1"
+    sha.js "^2.4.8"
+
+cross-spawn@^5.0.1:
+  version "5.1.0"
+  resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz"
+  integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==
+  dependencies:
+    lru-cache "^4.0.1"
+    shebang-command "^1.2.0"
+    which "^1.2.9"
+
+cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+  version "6.0.5"
+  resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz"
+  integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+  dependencies:
+    nice-try "^1.0.4"
+    path-key "^2.0.1"
+    semver "^5.5.0"
+    shebang-command "^1.2.0"
+    which "^1.2.9"
+
+cross-spawn@^7.0.0:
+  version "7.0.3"
+  resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz"
+  integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+  dependencies:
+    path-key "^3.1.0"
+    shebang-command "^2.0.0"
+    which "^2.0.1"
+
+cross-spawn@^7.0.3:
+  version "7.0.3"
+  resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
+  integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+  dependencies:
+    path-key "^3.1.0"
+    shebang-command "^2.0.0"
+    which "^2.0.1"
+
+crypto-browserify@^3.11.0:
+  version "3.12.0"
+  resolved "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz"
+  integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+  dependencies:
+    browserify-cipher "^1.0.0"
+    browserify-sign "^4.0.0"
+    create-ecdh "^4.0.0"
+    create-hash "^1.1.0"
+    create-hmac "^1.1.0"
+    diffie-hellman "^5.0.0"
+    inherits "^2.0.1"
+    pbkdf2 "^3.0.3"
+    public-encrypt "^4.0.0"
+    randombytes "^2.0.0"
+    randomfill "^1.0.3"
+
+css-color-names@^0.0.4, css-color-names@0.0.4:
+  version "0.0.4"
+  resolved "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz"
+  integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==
+
+css-declaration-sorter@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz"
+  integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
+  dependencies:
+    postcss "^7.0.1"
+    timsort "^0.3.0"
+
+css-loader@*, css-loader@^3.5.3:
+  version "3.6.0"
+  resolved "https://registry.npmmirror.com/css-loader/-/css-loader-3.6.0.tgz"
+  integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==
+  dependencies:
+    camelcase "^5.3.1"
+    cssesc "^3.0.0"
+    icss-utils "^4.1.1"
+    loader-utils "^1.2.3"
+    normalize-path "^3.0.0"
+    postcss "^7.0.32"
+    postcss-modules-extract-imports "^2.0.0"
+    postcss-modules-local-by-default "^3.0.2"
+    postcss-modules-scope "^2.2.0"
+    postcss-modules-values "^3.0.0"
+    postcss-value-parser "^4.1.0"
+    schema-utils "^2.7.0"
+    semver "^6.3.0"
+
+css-select-base-adapter@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz"
+  integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
+
+css-select@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz"
+  integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
+  dependencies:
+    boolbase "^1.0.0"
+    css-what "^3.2.1"
+    domutils "^1.7.0"
+    nth-check "^1.0.2"
+
+css-select@^4.1.3:
+  version "4.3.0"
+  resolved "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz"
+  integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
+  dependencies:
+    boolbase "^1.0.0"
+    css-what "^6.0.1"
+    domhandler "^4.3.1"
+    domutils "^2.8.0"
+    nth-check "^2.0.1"
+
+css-tree@^1.1.2:
+  version "1.1.3"
+  resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz"
+  integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+  dependencies:
+    mdn-data "2.0.14"
+    source-map "^0.6.1"
+
+css-tree@1.0.0-alpha.37:
+  version "1.0.0-alpha.37"
+  resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz"
+  integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
+  dependencies:
+    mdn-data "2.0.4"
+    source-map "^0.6.1"
+
+css-what@^3.2.1:
+  version "3.4.2"
+  resolved "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz"
+  integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
+
+css-what@^6.0.1:
+  version "6.1.0"
+  resolved "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz"
+  integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
+
+cssesc@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz"
+  integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.8:
+  version "4.0.8"
+  resolved "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz"
+  integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==
+  dependencies:
+    css-declaration-sorter "^4.0.1"
+    cssnano-util-raw-cache "^4.0.1"
+    postcss "^7.0.0"
+    postcss-calc "^7.0.1"
+    postcss-colormin "^4.0.3"
+    postcss-convert-values "^4.0.1"
+    postcss-discard-comments "^4.0.2"
+    postcss-discard-duplicates "^4.0.2"
+    postcss-discard-empty "^4.0.1"
+    postcss-discard-overridden "^4.0.1"
+    postcss-merge-longhand "^4.0.11"
+    postcss-merge-rules "^4.0.3"
+    postcss-minify-font-values "^4.0.2"
+    postcss-minify-gradients "^4.0.2"
+    postcss-minify-params "^4.0.2"
+    postcss-minify-selectors "^4.0.2"
+    postcss-normalize-charset "^4.0.1"
+    postcss-normalize-display-values "^4.0.2"
+    postcss-normalize-positions "^4.0.2"
+    postcss-normalize-repeat-style "^4.0.2"
+    postcss-normalize-string "^4.0.2"
+    postcss-normalize-timing-functions "^4.0.2"
+    postcss-normalize-unicode "^4.0.1"
+    postcss-normalize-url "^4.0.1"
+    postcss-normalize-whitespace "^4.0.2"
+    postcss-ordered-values "^4.1.2"
+    postcss-reduce-initial "^4.0.3"
+    postcss-reduce-transforms "^4.0.2"
+    postcss-svgo "^4.0.3"
+    postcss-unique-selectors "^4.0.1"
+
+cssnano-util-get-arguments@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz"
+  integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==
+
+cssnano-util-get-match@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz"
+  integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==
+
+cssnano-util-raw-cache@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz"
+  integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
+  dependencies:
+    postcss "^7.0.0"
+
+cssnano-util-same-parent@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz"
+  integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
+
+cssnano@^4.0.0, cssnano@^4.1.10:
+  version "4.1.11"
+  resolved "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz"
+  integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==
+  dependencies:
+    cosmiconfig "^5.0.0"
+    cssnano-preset-default "^4.0.8"
+    is-resolvable "^1.0.0"
+    postcss "^7.0.0"
+
+csso@^4.0.2:
+  version "4.2.0"
+  resolved "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz"
+  integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+  dependencies:
+    css-tree "^1.1.2"
+
+csstype@^3.1.0:
+  version "3.1.3"
+  resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz"
+  integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+
+cyclist@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.2.tgz"
+  integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==
+
+dashdash@^1.12.0:
+  version "1.14.1"
+  resolved "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz"
+  integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==
+  dependencies:
+    assert-plus "^1.0.0"
+
+de-indent@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz"
+  integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
+
+debug@^2.2.0:
+  version "2.6.9"
+  resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+  dependencies:
+    ms "2.0.0"
+
+debug@^2.3.3:
+  version "2.6.9"
+  resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+  dependencies:
+    ms "2.0.0"
+
+debug@^3.2.7:
+  version "3.2.7"
+  resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz"
+  integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+  dependencies:
+    ms "^2.1.1"
+
+debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@4:
+  version "4.3.4"
+  resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz"
+  integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+  dependencies:
+    ms "2.1.2"
+
+debug@2.6.9:
+  version "2.6.9"
+  resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+  dependencies:
+    ms "2.0.0"
+
+decamelize-keys@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz"
+  integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==
+  dependencies:
+    decamelize "^1.1.0"
+    map-obj "^1.0.0"
+
+decamelize@^1.1.0, decamelize@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz"
+  integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
+
+decode-uri-component@^0.2.0:
+  version "0.2.2"
+  resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz"
+  integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
+
+decompress-response@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz"
+  integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
+  dependencies:
+    mimic-response "^3.1.0"
+
+deep-equal@^1.0.1:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz"
+  integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==
+  dependencies:
+    is-arguments "^1.1.1"
+    is-date-object "^1.0.5"
+    is-regex "^1.1.4"
+    object-is "^1.1.5"
+    object-keys "^1.1.1"
+    regexp.prototype.flags "^1.5.1"
+
+deep-is@~0.1.3:
+  version "0.1.4"
+  resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz"
+  integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+deepmerge@^1.2.0, deepmerge@^1.5.2:
+  version "1.5.2"
+  resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz"
+  integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
+
+default-gateway@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz"
+  integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
+  dependencies:
+    execa "^1.0.0"
+    ip-regex "^2.1.0"
+
+default-gateway@^5.0.5:
+  version "5.0.5"
+  resolved "https://registry.npmmirror.com/default-gateway/-/default-gateway-5.0.5.tgz"
+  integrity sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==
+  dependencies:
+    execa "^3.3.0"
+
+defaults@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz"
+  integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==
+  dependencies:
+    clone "^1.0.2"
+
+defer-to-connect@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz"
+  integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
+
+define-data-property@^1.0.1, define-data-property@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz"
+  integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
+  dependencies:
+    get-intrinsic "^1.2.1"
+    gopd "^1.0.1"
+    has-property-descriptors "^1.0.0"
+
+define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz"
+  integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
+  dependencies:
+    define-data-property "^1.0.1"
+    has-property-descriptors "^1.0.0"
+    object-keys "^1.1.1"
+
+define-property@^0.2.5:
+  version "0.2.5"
+  resolved "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz"
+  integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==
+  dependencies:
+    is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz"
+  integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==
+  dependencies:
+    is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz"
+  integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+  dependencies:
+    is-descriptor "^1.0.2"
+    isobject "^3.0.1"
+
+del@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.npmmirror.com/del/-/del-4.1.1.tgz"
+  integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
+  dependencies:
+    "@types/glob" "^7.1.1"
+    globby "^6.1.0"
+    is-path-cwd "^2.0.0"
+    is-path-in-cwd "^2.0.0"
+    p-map "^2.0.0"
+    pify "^4.0.1"
+    rimraf "^2.6.3"
+
+delayed-stream@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz"
+  integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+delegates@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"
+  integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
+
+depd@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz"
+  integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
+
+depd@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz"
+  integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
+des.js@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz"
+  integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==
+  dependencies:
+    inherits "^2.0.1"
+    minimalistic-assert "^1.0.0"
+
+destroy@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz"
+  integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+
+detect-node@^2.0.4:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz"
+  integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
+
+diffie-hellman@^5.0.0:
+  version "5.0.3"
+  resolved "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz"
+  integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+  dependencies:
+    bn.js "^4.1.0"
+    miller-rabin "^4.0.0"
+    randombytes "^2.0.0"
+
+dir-glob@^2.0.0, dir-glob@^2.2.2:
+  version "2.2.2"
+  resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz"
+  integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==
+  dependencies:
+    path-type "^3.0.0"
+
+dns-equal@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz"
+  integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==
+
+dns-packet@^1.3.1:
+  version "1.3.4"
+  resolved "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz"
+  integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
+  dependencies:
+    ip "^1.1.0"
+    safe-buffer "^5.0.1"
+
+dns-txt@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz"
+  integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==
+  dependencies:
+    buffer-indexof "^1.0.0"
+
+doctrine@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz"
+  integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+  dependencies:
+    esutils "^2.0.2"
+
+dom-converter@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz"
+  integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
+  dependencies:
+    utila "~0.4"
+
+dom-serializer@^1.0.1:
+  version "1.4.1"
+  resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz"
+  integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
+  dependencies:
+    domelementtype "^2.0.1"
+    domhandler "^4.2.0"
+    entities "^2.0.0"
+
+dom-serializer@0:
+  version "0.2.2"
+  resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz"
+  integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+  dependencies:
+    domelementtype "^2.0.1"
+    entities "^2.0.0"
+
+domain-browser@^1.1.1:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz"
+  integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+domelementtype@^2.0.1, domelementtype@^2.2.0:
+  version "2.3.0"
+  resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz"
+  integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+
+domelementtype@1:
+  version "1.3.1"
+  resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz"
+  integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1:
+  version "4.3.1"
+  resolved "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz"
+  integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
+  dependencies:
+    domelementtype "^2.2.0"
+
+domutils@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz"
+  integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+  dependencies:
+    dom-serializer "0"
+    domelementtype "1"
+
+domutils@^2.5.2:
+  version "2.8.0"
+  resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
+  integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+  dependencies:
+    dom-serializer "^1.0.1"
+    domelementtype "^2.2.0"
+    domhandler "^4.2.0"
+
+domutils@^2.8.0:
+  version "2.8.0"
+  resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
+  integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+  dependencies:
+    dom-serializer "^1.0.1"
+    domelementtype "^2.2.0"
+    domhandler "^4.2.0"
+
+dot-prop@^5.2.0:
+  version "5.3.0"
+  resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz"
+  integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+  dependencies:
+    is-obj "^2.0.0"
+
+dotenv-expand@^5.1.0:
+  version "5.1.0"
+  resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz"
+  integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
+
+dotenv@^8.2.0:
+  version "8.6.0"
+  resolved "https://registry.npmmirror.com/dotenv/-/dotenv-8.6.0.tgz"
+  integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
+
+duplexer@^0.1.1:
+  version "0.1.2"
+  resolved "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz"
+  integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+  version "3.7.1"
+  resolved "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz"
+  integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+  dependencies:
+    end-of-stream "^1.0.0"
+    inherits "^2.0.1"
+    readable-stream "^2.0.0"
+    stream-shift "^1.0.0"
+
+easy-stack@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz"
+  integrity sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==
+
+ecc-jsbn@~0.1.1:
+  version "0.1.2"
+  resolved "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"
+  integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
+  dependencies:
+    jsbn "~0.1.0"
+    safer-buffer "^2.1.0"
+
+ee-first@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz"
+  integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
+
+ejs@^2.6.1:
+  version "2.7.4"
+  resolved "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz"
+  integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
+
+electron-to-chromium@^1.4.648:
+  version "1.4.651"
+  resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.651.tgz"
+  integrity sha512-jjks7Xx+4I7dslwsbaFocSwqBbGHQmuXBJUK9QBZTIrzPq3pzn6Uf2szFSP728FtLYE3ldiccmlkOM/zhGKCpA==
+
+element-ui@^2.13.1:
+  version "2.15.14"
+  resolved "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz"
+  integrity sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==
+  dependencies:
+    async-validator "~1.8.1"
+    babel-helper-vue-jsx-merge-props "^2.0.0"
+    deepmerge "^1.2.0"
+    normalize-wheel "^1.0.1"
+    resize-observer-polyfill "^1.5.0"
+    throttle-debounce "^1.0.1"
+
+elliptic@^6.5.3, elliptic@^6.5.4:
+  version "6.5.4"
+  resolved "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz"
+  integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
+  dependencies:
+    bn.js "^4.11.9"
+    brorand "^1.1.0"
+    hash.js "^1.0.0"
+    hmac-drbg "^1.0.1"
+    inherits "^2.0.4"
+    minimalistic-assert "^1.0.1"
+    minimalistic-crypto-utils "^1.0.1"
+
+emoji-regex@^7.0.1:
+  version "7.0.3"
+  resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz"
+  integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+  version "8.0.0"
+  resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz"
+  integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emojis-list@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz"
+  integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==
+
+emojis-list@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz"
+  integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+encodeurl@~1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz"
+  integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
+
+encoding@^0.1.12, encoding@^0.1.13:
+  version "0.1.13"
+  resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz"
+  integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
+  dependencies:
+    iconv-lite "^0.6.2"
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+  version "1.4.4"
+  resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz"
+  integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+  dependencies:
+    once "^1.4.0"
+
+enhanced-resolve@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz"
+  integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
+  dependencies:
+    graceful-fs "^4.1.2"
+    memory-fs "^0.5.0"
+    tapable "^1.0.0"
+
+entities@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz"
+  integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+entities@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz"
+  integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
+entities@~1.1.1:
+  version "1.1.2"
+  resolved "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz"
+  integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
+env-paths@^2.2.0:
+  version "2.2.1"
+  resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz"
+  integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+
+err-code@^2.0.2:
+  version "2.0.3"
+  resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz"
+  integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
+
+errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
+  version "0.1.8"
+  resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz"
+  integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+  dependencies:
+    prr "~1.0.1"
+
+error-ex@^1.3.1:
+  version "1.3.2"
+  resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz"
+  integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+  dependencies:
+    is-arrayish "^0.2.1"
+
+error-stack-parser@^2.0.6:
+  version "2.1.4"
+  resolved "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz"
+  integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
+  dependencies:
+    stackframe "^1.3.4"
+
+es-abstract@^1.17.2, es-abstract@^1.22.1:
+  version "1.22.3"
+  resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.3.tgz"
+  integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==
+  dependencies:
+    array-buffer-byte-length "^1.0.0"
+    arraybuffer.prototype.slice "^1.0.2"
+    available-typed-arrays "^1.0.5"
+    call-bind "^1.0.5"
+    es-set-tostringtag "^2.0.1"
+    es-to-primitive "^1.2.1"
+    function.prototype.name "^1.1.6"
+    get-intrinsic "^1.2.2"
+    get-symbol-description "^1.0.0"
+    globalthis "^1.0.3"
+    gopd "^1.0.1"
+    has-property-descriptors "^1.0.0"
+    has-proto "^1.0.1"
+    has-symbols "^1.0.3"
+    hasown "^2.0.0"
+    internal-slot "^1.0.5"
+    is-array-buffer "^3.0.2"
+    is-callable "^1.2.7"
+    is-negative-zero "^2.0.2"
+    is-regex "^1.1.4"
+    is-shared-array-buffer "^1.0.2"
+    is-string "^1.0.7"
+    is-typed-array "^1.1.12"
+    is-weakref "^1.0.2"
+    object-inspect "^1.13.1"
+    object-keys "^1.1.1"
+    object.assign "^4.1.4"
+    regexp.prototype.flags "^1.5.1"
+    safe-array-concat "^1.0.1"
+    safe-regex-test "^1.0.0"
+    string.prototype.trim "^1.2.8"
+    string.prototype.trimend "^1.0.7"
+    string.prototype.trimstart "^1.0.7"
+    typed-array-buffer "^1.0.0"
+    typed-array-byte-length "^1.0.0"
+    typed-array-byte-offset "^1.0.0"
+    typed-array-length "^1.0.4"
+    unbox-primitive "^1.0.2"
+    which-typed-array "^1.1.13"
+
+es-array-method-boxes-properly@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz"
+  integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
+
+es-set-tostringtag@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz"
+  integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==
+  dependencies:
+    get-intrinsic "^1.2.2"
+    has-tostringtag "^1.0.0"
+    hasown "^2.0.0"
+
+es-to-primitive@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
+  integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+  dependencies:
+    is-callable "^1.1.4"
+    is-date-object "^1.0.1"
+    is-symbol "^1.0.2"
+
+escalade@^3.1.1:
+  version "3.1.1"
+  resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz"
+  integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@~1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz"
+  integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
+
+escape-string-regexp@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+  integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+eslint-loader@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.npmmirror.com/eslint-loader/-/eslint-loader-2.2.1.tgz"
+  integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==
+  dependencies:
+    loader-fs-cache "^1.0.0"
+    loader-utils "^1.0.2"
+    object-assign "^4.0.1"
+    object-hash "^1.1.4"
+    rimraf "^2.6.1"
+
+eslint-plugin-vue@^6.2.2:
+  version "6.2.2"
+  resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz"
+  integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==
+  dependencies:
+    natural-compare "^1.4.0"
+    semver "^5.6.0"
+    vue-eslint-parser "^7.0.0"
+
+eslint-scope@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz"
+  integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+  dependencies:
+    esrecurse "^4.1.0"
+    estraverse "^4.1.1"
+
+eslint-scope@^5.0.0:
+  version "5.1.1"
+  resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz"
+  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+  dependencies:
+    esrecurse "^4.3.0"
+    estraverse "^4.1.1"
+
+eslint-scope@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz"
+  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+  dependencies:
+    esrecurse "^4.3.0"
+    estraverse "^4.1.1"
+
+eslint-utils@^1.4.3:
+  version "1.4.3"
+  resolved "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz"
+  integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
+  dependencies:
+    eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
+  version "1.3.0"
+  resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz"
+  integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+"eslint@^5.0.0 || ^6.0.0", eslint@^6.7.2, "eslint@>= 1.6.0 < 7.0.0", "eslint@>= 4.12.1", "eslint@>=1.6.0 <7.0.0", eslint@>=5.0.0:
+  version "6.8.0"
+  resolved "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz"
+  integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==
+  dependencies:
+    "@babel/code-frame" "^7.0.0"
+    ajv "^6.10.0"
+    chalk "^2.1.0"
+    cross-spawn "^6.0.5"
+    debug "^4.0.1"
+    doctrine "^3.0.0"
+    eslint-scope "^5.0.0"
+    eslint-utils "^1.4.3"
+    eslint-visitor-keys "^1.1.0"
+    espree "^6.1.2"
+    esquery "^1.0.1"
+    esutils "^2.0.2"
+    file-entry-cache "^5.0.1"
+    functional-red-black-tree "^1.0.1"
+    glob-parent "^5.0.0"
+    globals "^12.1.0"
+    ignore "^4.0.6"
+    import-fresh "^3.0.0"
+    imurmurhash "^0.1.4"
+    inquirer "^7.0.0"
+    is-glob "^4.0.0"
+    js-yaml "^3.13.1"
+    json-stable-stringify-without-jsonify "^1.0.1"
+    levn "^0.3.0"
+    lodash "^4.17.14"
+    minimatch "^3.0.4"
+    mkdirp "^0.5.1"
+    natural-compare "^1.4.0"
+    optionator "^0.8.3"
+    progress "^2.0.0"
+    regexpp "^2.0.1"
+    semver "^6.1.2"
+    strip-ansi "^5.2.0"
+    strip-json-comments "^3.0.1"
+    table "^5.2.3"
+    text-table "^0.2.0"
+    v8-compile-cache "^2.0.3"
+
+espree@^6.1.2, espree@^6.2.1:
+  version "6.2.1"
+  resolved "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz"
+  integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
+  dependencies:
+    acorn "^7.1.1"
+    acorn-jsx "^5.2.0"
+    eslint-visitor-keys "^1.1.0"
+
+esprima@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz"
+  integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.0.1, esquery@^1.4.0:
+  version "1.5.0"
+  resolved "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz"
+  integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
+  dependencies:
+    estraverse "^5.1.0"
+
+esrecurse@^4.1.0, esrecurse@^4.3.0:
+  version "4.3.0"
+  resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz"
+  integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+  dependencies:
+    estraverse "^5.2.0"
+
+estraverse@^4.1.1:
+  version "4.3.0"
+  resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz"
+  integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0:
+  version "5.3.0"
+  resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
+  integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+estraverse@^5.2.0:
+  version "5.3.0"
+  resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
+  integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+estree-walker@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz"
+  integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+esutils@^2.0.2:
+  version "2.0.3"
+  resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz"
+  integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+  version "1.8.1"
+  resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz"
+  integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
+
+event-pubsub@4.3.0:
+  version "4.3.0"
+  resolved "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz"
+  integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==
+
+eventemitter3@^4.0.0:
+  version "4.0.7"
+  resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz"
+  integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
+events@^3.0.0:
+  version "3.3.0"
+  resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz"
+  integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
+eventsource@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/eventsource/-/eventsource-2.0.2.tgz"
+  integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz"
+  integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+  dependencies:
+    md5.js "^1.3.4"
+    safe-buffer "^5.1.1"
+
+execa@^0.8.0:
+  version "0.8.0"
+  resolved "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz"
+  integrity sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==
+  dependencies:
+    cross-spawn "^5.0.1"
+    get-stream "^3.0.0"
+    is-stream "^1.1.0"
+    npm-run-path "^2.0.0"
+    p-finally "^1.0.0"
+    signal-exit "^3.0.0"
+    strip-eof "^1.0.0"
+
+execa@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz"
+  integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+  dependencies:
+    cross-spawn "^6.0.0"
+    get-stream "^4.0.0"
+    is-stream "^1.1.0"
+    npm-run-path "^2.0.0"
+    p-finally "^1.0.0"
+    signal-exit "^3.0.0"
+    strip-eof "^1.0.0"
+
+execa@^3.3.0:
+  version "3.4.0"
+  resolved "https://registry.npmmirror.com/execa/-/execa-3.4.0.tgz"
+  integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==
+  dependencies:
+    cross-spawn "^7.0.0"
+    get-stream "^5.0.0"
+    human-signals "^1.1.1"
+    is-stream "^2.0.0"
+    merge-stream "^2.0.0"
+    npm-run-path "^4.0.0"
+    onetime "^5.1.0"
+    p-finally "^2.0.0"
+    signal-exit "^3.0.2"
+    strip-final-newline "^2.0.0"
+
+expand-brackets@^2.1.4:
+  version "2.1.4"
+  resolved "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz"
+  integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==
+  dependencies:
+    debug "^2.3.3"
+    define-property "^0.2.5"
+    extend-shallow "^2.0.1"
+    posix-character-classes "^0.1.0"
+    regex-not "^1.0.0"
+    snapdragon "^0.8.1"
+    to-regex "^3.0.1"
+
+express@^4.16.3, express@^4.17.1:
+  version "4.18.2"
+  resolved "https://registry.npmmirror.com/express/-/express-4.18.2.tgz"
+  integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
+  dependencies:
+    accepts "~1.3.8"
+    array-flatten "1.1.1"
+    body-parser "1.20.1"
+    content-disposition "0.5.4"
+    content-type "~1.0.4"
+    cookie "0.5.0"
+    cookie-signature "1.0.6"
+    debug "2.6.9"
+    depd "2.0.0"
+    encodeurl "~1.0.2"
+    escape-html "~1.0.3"
+    etag "~1.8.1"
+    finalhandler "1.2.0"
+    fresh "0.5.2"
+    http-errors "2.0.0"
+    merge-descriptors "1.0.1"
+    methods "~1.1.2"
+    on-finished "2.4.1"
+    parseurl "~1.3.3"
+    path-to-regexp "0.1.7"
+    proxy-addr "~2.0.7"
+    qs "6.11.0"
+    range-parser "~1.2.1"
+    safe-buffer "5.2.1"
+    send "0.18.0"
+    serve-static "1.15.0"
+    setprototypeof "1.2.0"
+    statuses "2.0.1"
+    type-is "~1.6.18"
+    utils-merge "1.0.1"
+    vary "~1.1.2"
+
+extend-shallow@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz"
+  integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+  dependencies:
+    is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz"
+  integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==
+  dependencies:
+    assign-symbols "^1.0.0"
+    is-extendable "^1.0.1"
+
+extend@~3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz"
+  integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+external-editor@^3.0.3:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz"
+  integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+  dependencies:
+    chardet "^0.7.0"
+    iconv-lite "^0.4.24"
+    tmp "^0.0.33"
+
+extglob@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz"
+  integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+  dependencies:
+    array-unique "^0.3.2"
+    define-property "^1.0.0"
+    expand-brackets "^2.1.4"
+    extend-shallow "^2.0.1"
+    fragment-cache "^0.2.1"
+    regex-not "^1.0.0"
+    snapdragon "^0.8.1"
+    to-regex "^3.0.1"
+
+extsprintf@^1.2.0, extsprintf@1.3.0:
+  version "1.3.0"
+  resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz"
+  integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==
+
+fast-deep-equal@^3.1.1:
+  version "3.1.3"
+  resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+  integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^2.2.6:
+  version "2.2.7"
+  resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz"
+  integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==
+  dependencies:
+    "@mrmlnc/readdir-enhanced" "^2.2.1"
+    "@nodelib/fs.stat" "^1.1.2"
+    glob-parent "^3.1.0"
+    is-glob "^4.0.0"
+    merge2 "^1.2.3"
+    micromatch "^3.1.10"
+
+fast-json-stable-stringify@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
+  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@~2.0.6:
+  version "2.0.6"
+  resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+  integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+faye-websocket@^0.11.3, faye-websocket@^0.11.4:
+  version "0.11.4"
+  resolved "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz"
+  integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
+  dependencies:
+    websocket-driver ">=0.5.1"
+
+figgy-pudding@^3.5.1:
+  version "3.5.2"
+  resolved "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz"
+  integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+figures@^3.0.0:
+  version "3.2.0"
+  resolved "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz"
+  integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+  dependencies:
+    escape-string-regexp "^1.0.5"
+
+file-entry-cache@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz"
+  integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+  dependencies:
+    flat-cache "^2.0.1"
+
+file-loader@*, file-loader@^4.2.0:
+  version "4.3.0"
+  resolved "https://registry.npmmirror.com/file-loader/-/file-loader-4.3.0.tgz"
+  integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==
+  dependencies:
+    loader-utils "^1.2.3"
+    schema-utils "^2.5.0"
+
+filesize@^3.6.1:
+  version "3.6.1"
+  resolved "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz"
+  integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
+
+fill-range@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz"
+  integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==
+  dependencies:
+    extend-shallow "^2.0.1"
+    is-number "^3.0.0"
+    repeat-string "^1.6.1"
+    to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+  version "7.0.1"
+  resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz"
+  integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+  dependencies:
+    to-regex-range "^5.0.1"
+
+finalhandler@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz"
+  integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
+  dependencies:
+    debug "2.6.9"
+    encodeurl "~1.0.2"
+    escape-html "~1.0.3"
+    on-finished "2.4.1"
+    parseurl "~1.3.3"
+    statuses "2.0.1"
+    unpipe "~1.0.0"
+
+find-cache-dir@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz"
+  integrity sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==
+  dependencies:
+    commondir "^1.0.1"
+    mkdirp "^0.5.1"
+    pkg-dir "^1.0.0"
+
+find-cache-dir@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz"
+  integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
+  dependencies:
+    commondir "^1.0.1"
+    make-dir "^2.0.0"
+    pkg-dir "^3.0.0"
+
+find-cache-dir@^3.0.0, find-cache-dir@^3.3.1:
+  version "3.3.2"
+  resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz"
+  integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
+  dependencies:
+    commondir "^1.0.1"
+    make-dir "^3.0.2"
+    pkg-dir "^4.1.0"
+
+find-up@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz"
+  integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==
+  dependencies:
+    path-exists "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+find-up@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz"
+  integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+  dependencies:
+    locate-path "^3.0.0"
+
+find-up@^4.0.0, find-up@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz"
+  integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+  dependencies:
+    locate-path "^5.0.0"
+    path-exists "^4.0.0"
+
+flat-cache@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz"
+  integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+  dependencies:
+    flatted "^2.0.0"
+    rimraf "2.6.3"
+    write "1.0.3"
+
+flatted@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz"
+  integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
+
+flush-write-stream@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz"
+  integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+  dependencies:
+    inherits "^2.0.3"
+    readable-stream "^2.3.6"
+
+follow-redirects@^1.0.0:
+  version "1.15.5"
+  resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.5.tgz"
+  integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==
+
+follow-redirects@^1.15.6:
+  version "1.15.6"
+  resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz"
+  integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
+
+for-each@^0.3.3:
+  version "0.3.3"
+  resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz"
+  integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
+  dependencies:
+    is-callable "^1.1.3"
+
+for-in@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz"
+  integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
+
+forever-agent@~0.6.1:
+  version "0.6.1"
+  resolved "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz"
+  integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
+
+form-data@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
+  integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.8"
+    mime-types "^2.1.12"
+
+form-data@~2.3.2:
+  version "2.3.3"
+  resolved "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz"
+  integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.6"
+    mime-types "^2.1.12"
+
+forwarded@0.2.0:
+  version "0.2.0"
+  resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz"
+  integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
+
+fragment-cache@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz"
+  integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==
+  dependencies:
+    map-cache "^0.2.2"
+
+fresh@0.5.2:
+  version "0.5.2"
+  resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz"
+  integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
+
+from2@^2.1.0:
+  version "2.3.0"
+  resolved "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz"
+  integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==
+  dependencies:
+    inherits "^2.0.1"
+    readable-stream "^2.0.0"
+
+fs-extra@^7.0.1:
+  version "7.0.1"
+  resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz"
+  integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+  dependencies:
+    graceful-fs "^4.1.2"
+    jsonfile "^4.0.0"
+    universalify "^0.1.0"
+
+fs-minipass@^2.0.0, fs-minipass@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"
+  integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
+  dependencies:
+    minipass "^3.0.0"
+
+fs-write-stream-atomic@^1.0.8:
+  version "1.0.10"
+  resolved "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz"
+  integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==
+  dependencies:
+    graceful-fs "^4.1.2"
+    iferr "^0.1.5"
+    imurmurhash "^0.1.4"
+    readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz"
+  integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+function-bind@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz"
+  integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
+function.prototype.name@^1.1.6:
+  version "1.1.6"
+  resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz"
+  integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+    functions-have-names "^1.2.3"
+
+functional-red-black-tree@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz"
+  integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==
+
+functions-have-names@^1.2.3:
+  version "1.2.3"
+  resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz"
+  integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+
+gauge@^4.0.3:
+  version "4.0.4"
+  resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz"
+  integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==
+  dependencies:
+    aproba "^1.0.3 || ^2.0.0"
+    color-support "^1.1.3"
+    console-control-strings "^1.1.0"
+    has-unicode "^2.0.1"
+    signal-exit "^3.0.7"
+    string-width "^4.2.3"
+    strip-ansi "^6.0.1"
+    wide-align "^1.1.5"
+
+gaze@^1.0.0:
+  version "1.1.3"
+  resolved "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz"
+  integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==
+  dependencies:
+    globule "^1.0.0"
+
+gensync@^1.0.0-beta.2:
+  version "1.0.0-beta.2"
+  resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz"
+  integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.1, get-caller-file@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz"
+  integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz"
+  integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
+  dependencies:
+    function-bind "^1.1.2"
+    has-proto "^1.0.1"
+    has-symbols "^1.0.3"
+    hasown "^2.0.0"
+
+get-stdin@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
+  integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==
+
+get-stream@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz"
+  integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==
+
+get-stream@^4.0.0:
+  version "4.1.0"
+  resolved "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz"
+  integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+  dependencies:
+    pump "^3.0.0"
+
+get-stream@^5.0.0:
+  version "5.2.0"
+  resolved "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz"
+  integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+  dependencies:
+    pump "^3.0.0"
+
+get-stream@^5.1.0:
+  version "5.2.0"
+  resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz"
+  integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+  dependencies:
+    pump "^3.0.0"
+
+get-symbol-description@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz"
+  integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
+  dependencies:
+    call-bind "^1.0.2"
+    get-intrinsic "^1.1.1"
+
+get-value@^2.0.3, get-value@^2.0.6:
+  version "2.0.6"
+  resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz"
+  integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
+
+getpass@^0.1.1:
+  version "0.1.7"
+  resolved "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz"
+  integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==
+  dependencies:
+    assert-plus "^1.0.0"
+
+glob-parent@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz"
+  integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==
+  dependencies:
+    is-glob "^3.1.0"
+    path-dirname "^1.0.0"
+
+glob-parent@^5.0.0, glob-parent@~5.1.2:
+  version "5.1.2"
+  resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
+  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+  dependencies:
+    is-glob "^4.0.1"
+
+glob-to-regexp@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz"
+  integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==
+
+glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
+  version "7.2.3"
+  resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+  integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.1.1"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+glob@^8.0.1:
+  version "8.1.0"
+  resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz"
+  integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^5.0.1"
+    once "^1.3.0"
+
+glob@~7.1.1:
+  version "7.1.7"
+  resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz"
+  integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.0.4"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+globals@^11.1.0:
+  version "11.12.0"
+  resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz"
+  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^12.1.0:
+  version "12.4.0"
+  resolved "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz"
+  integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
+  dependencies:
+    type-fest "^0.8.1"
+
+globalthis@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz"
+  integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
+  dependencies:
+    define-properties "^1.1.3"
+
+globby@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz"
+  integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==
+  dependencies:
+    array-union "^1.0.1"
+    glob "^7.0.3"
+    object-assign "^4.0.1"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+globby@^7.1.1:
+  version "7.1.1"
+  resolved "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz"
+  integrity sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==
+  dependencies:
+    array-union "^1.0.1"
+    dir-glob "^2.0.0"
+    glob "^7.1.2"
+    ignore "^3.3.5"
+    pify "^3.0.0"
+    slash "^1.0.0"
+
+globby@^9.2.0:
+  version "9.2.0"
+  resolved "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz"
+  integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==
+  dependencies:
+    "@types/glob" "^7.1.1"
+    array-union "^1.0.2"
+    dir-glob "^2.2.2"
+    fast-glob "^2.2.6"
+    glob "^7.1.3"
+    ignore "^4.0.3"
+    pify "^4.0.1"
+    slash "^2.0.0"
+
+globule@^1.0.0:
+  version "1.3.4"
+  resolved "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz"
+  integrity sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==
+  dependencies:
+    glob "~7.1.1"
+    lodash "^4.17.21"
+    minimatch "~3.0.2"
+
+gopd@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz"
+  integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+  dependencies:
+    get-intrinsic "^1.1.3"
+
+"got@>=8.0 <12.0":
+  version "11.8.6"
+  resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz"
+  integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
+  dependencies:
+    "@sindresorhus/is" "^4.0.0"
+    "@szmarczak/http-timer" "^4.0.5"
+    "@types/cacheable-request" "^6.0.1"
+    "@types/responselike" "^1.0.0"
+    cacheable-lookup "^5.0.3"
+    cacheable-request "^7.0.2"
+    decompress-response "^6.0.0"
+    http2-wrapper "^1.0.0-beta.5.2"
+    lowercase-keys "^2.0.0"
+    p-cancelable "^2.0.0"
+    responselike "^2.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.6:
+  version "4.2.11"
+  resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz"
+  integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+gzip-size@^5.0.0:
+  version "5.1.1"
+  resolved "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz"
+  integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
+  dependencies:
+    duplexer "^0.1.1"
+    pify "^4.0.1"
+
+handle-thing@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz"
+  integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
+
+har-schema@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz"
+  integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==
+
+har-validator@~5.1.3:
+  version "5.1.5"
+  resolved "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz"
+  integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
+  dependencies:
+    ajv "^6.12.3"
+    har-schema "^2.0.0"
+
+hard-rejection@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz"
+  integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
+
+has-bigints@^1.0.1, has-bigints@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz"
+  integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+
+has-flag@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz"
+  integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
+  integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz"
+  integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==
+  dependencies:
+    get-intrinsic "^1.2.2"
+
+has-proto@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz"
+  integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+
+has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz"
+  integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
+  integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+  dependencies:
+    has-symbols "^1.0.2"
+
+has-unicode@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"
+  integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==
+
+has-value@^0.3.1:
+  version "0.3.1"
+  resolved "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz"
+  integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==
+  dependencies:
+    get-value "^2.0.3"
+    has-values "^0.1.4"
+    isobject "^2.0.0"
+
+has-value@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz"
+  integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==
+  dependencies:
+    get-value "^2.0.6"
+    has-values "^1.0.0"
+    isobject "^3.0.0"
+
+has-values@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz"
+  integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==
+
+has-values@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz"
+  integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==
+  dependencies:
+    is-number "^3.0.0"
+    kind-of "^4.0.0"
+
+has@^1.0.0:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/has/-/has-1.0.4.tgz"
+  integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==
+
+hash-base@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz"
+  integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
+  dependencies:
+    inherits "^2.0.4"
+    readable-stream "^3.6.0"
+    safe-buffer "^5.2.0"
+
+hash-sum@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz"
+  integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==
+
+hash-sum@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz"
+  integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+  version "1.1.7"
+  resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz"
+  integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+  dependencies:
+    inherits "^2.0.3"
+    minimalistic-assert "^1.0.1"
+
+hasown@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz"
+  integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
+  dependencies:
+    function-bind "^1.1.2"
+
+he@^1.2.0, he@1.2.x:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz"
+  integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+hex-color-regex@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz"
+  integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+
+highlight.js@^10.7.1:
+  version "10.7.3"
+  resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz"
+  integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
+
+highlight.js@^9.12.0:
+  version "9.18.5"
+  resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz"
+  integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==
+
+hmac-drbg@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz"
+  integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==
+  dependencies:
+    hash.js "^1.0.3"
+    minimalistic-assert "^1.0.0"
+    minimalistic-crypto-utils "^1.0.1"
+
+hoopy@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz"
+  integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
+
+hosted-git-info@^2.1.4:
+  version "2.8.9"
+  resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
+  integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+
+hosted-git-info@^4.0.1:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz"
+  integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==
+  dependencies:
+    lru-cache "^6.0.0"
+
+hpack.js@^2.1.6:
+  version "2.1.6"
+  resolved "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz"
+  integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==
+  dependencies:
+    inherits "^2.0.1"
+    obuf "^1.0.0"
+    readable-stream "^2.0.1"
+    wbuf "^1.1.0"
+
+hsl-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz"
+  integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==
+
+hsla-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz"
+  integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==
+
+html-entities@^1.3.1:
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz"
+  integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
+
+html-minifier@^3.2.3:
+  version "3.5.21"
+  resolved "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz"
+  integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==
+  dependencies:
+    camel-case "3.0.x"
+    clean-css "4.2.x"
+    commander "2.17.x"
+    he "1.2.x"
+    param-case "2.1.x"
+    relateurl "0.2.x"
+    uglify-js "3.4.x"
+
+html-tags@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz"
+  integrity sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==
+
+html-tags@^3.3.1:
+  version "3.3.1"
+  resolved "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz"
+  integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
+
+html-webpack-plugin@^3.2.0, html-webpack-plugin@>=2.26.0:
+  version "3.2.0"
+  resolved "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz"
+  integrity sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==
+  dependencies:
+    html-minifier "^3.2.3"
+    loader-utils "^0.2.16"
+    lodash "^4.17.3"
+    pretty-error "^2.0.2"
+    tapable "^1.0.0"
+    toposort "^1.0.0"
+    util.promisify "1.0.0"
+
+htmlparser2@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz"
+  integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
+  dependencies:
+    domelementtype "^2.0.1"
+    domhandler "^4.0.0"
+    domutils "^2.5.2"
+    entities "^2.0.0"
+
+http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0:
+  version "4.1.1"
+  resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz"
+  integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
+
+http-deceiver@^1.2.7:
+  version "1.2.7"
+  resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz"
+  integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
+
+http-errors@~1.6.2:
+  version "1.6.3"
+  resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz"
+  integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
+  dependencies:
+    depd "~1.1.2"
+    inherits "2.0.3"
+    setprototypeof "1.1.0"
+    statuses ">= 1.4.0 < 2"
+
+http-errors@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz"
+  integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+  dependencies:
+    depd "2.0.0"
+    inherits "2.0.4"
+    setprototypeof "1.2.0"
+    statuses "2.0.1"
+    toidentifier "1.0.1"
+
+http-parser-js@>=0.5.1:
+  version "0.5.8"
+  resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz"
+  integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
+
+http-proxy-agent@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz"
+  integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+  dependencies:
+    "@tootallnate/once" "1"
+    agent-base "6"
+    debug "4"
+
+http-proxy-agent@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz"
+  integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
+  dependencies:
+    "@tootallnate/once" "2"
+    agent-base "6"
+    debug "4"
+
+http-proxy-middleware@^1.0.0:
+  version "1.3.1"
+  resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz"
+  integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==
+  dependencies:
+    "@types/http-proxy" "^1.17.5"
+    http-proxy "^1.18.1"
+    is-glob "^4.0.1"
+    is-plain-obj "^3.0.0"
+    micromatch "^4.0.2"
+
+http-proxy-middleware@0.19.1:
+  version "0.19.1"
+  resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz"
+  integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
+  dependencies:
+    http-proxy "^1.17.0"
+    is-glob "^4.0.0"
+    lodash "^4.17.11"
+    micromatch "^3.1.10"
+
+http-proxy@^1.17.0, http-proxy@^1.18.1:
+  version "1.18.1"
+  resolved "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz"
+  integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
+  dependencies:
+    eventemitter3 "^4.0.0"
+    follow-redirects "^1.0.0"
+    requires-port "^1.0.0"
+
+http-signature@~1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz"
+  integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==
+  dependencies:
+    assert-plus "^1.0.0"
+    jsprim "^1.2.2"
+    sshpk "^1.7.0"
+
+http2-wrapper@^1.0.0-beta.5.2:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz"
+  integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
+  dependencies:
+    quick-lru "^5.1.1"
+    resolve-alpn "^1.0.0"
+
+https-browserify@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz"
+  integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==
+
+https-proxy-agent@^5.0.0:
+  version "5.0.1"
+  resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz"
+  integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
+  dependencies:
+    agent-base "6"
+    debug "4"
+
+human-signals@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz"
+  integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+humanize-ms@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz"
+  integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
+  dependencies:
+    ms "^2.0.0"
+
+iconv-lite@^0.4.24, iconv-lite@0.4.24:
+  version "0.4.24"
+  resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
+  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+  dependencies:
+    safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.2:
+  version "0.6.3"
+  resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz"
+  integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+  dependencies:
+    safer-buffer ">= 2.1.2 < 3.0.0"
+
+iconv-lite@^0.6.3:
+  version "0.6.3"
+  resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz"
+  integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+  dependencies:
+    safer-buffer ">= 2.1.2 < 3.0.0"
+
+icss-utils@^4.0.0, icss-utils@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-4.1.1.tgz"
+  integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==
+  dependencies:
+    postcss "^7.0.14"
+
+ieee754@^1.1.4:
+  version "1.2.1"
+  resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz"
+  integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+iferr@^0.1.5:
+  version "0.1.5"
+  resolved "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz"
+  integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==
+
+ignore@^3.3.5:
+  version "3.3.10"
+  resolved "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz"
+  integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+
+ignore@^4.0.3, ignore@^4.0.6:
+  version "4.0.6"
+  resolved "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz"
+  integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+image-size@~0.5.0:
+  version "0.5.5"
+  resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz"
+  integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
+
+import-cwd@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz"
+  integrity sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==
+  dependencies:
+    import-from "^2.1.0"
+
+import-fresh@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz"
+  integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==
+  dependencies:
+    caller-path "^2.0.0"
+    resolve-from "^3.0.0"
+
+import-fresh@^3.0.0:
+  version "3.3.0"
+  resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz"
+  integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+  dependencies:
+    parent-module "^1.0.0"
+    resolve-from "^4.0.0"
+
+import-from@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz"
+  integrity sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==
+  dependencies:
+    resolve-from "^3.0.0"
+
+import-local@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz"
+  integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+  dependencies:
+    pkg-dir "^3.0.0"
+    resolve-cwd "^2.0.0"
+
+imurmurhash@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz"
+  integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+indent-string@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz"
+  integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+indexes-of@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz"
+  integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==
+
+infer-owner@^1.0.3, infer-owner@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz"
+  integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+  version "1.0.6"
+  resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz"
+  integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+  dependencies:
+    once "^1.3.0"
+    wrappy "1"
+
+inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@2, inherits@2.0.4:
+  version "2.0.4"
+  resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz"
+  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.3:
+  version "2.0.3"
+  resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz"
+  integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
+
+inquirer@^7.0.0, inquirer@^7.1.0:
+  version "7.3.3"
+  resolved "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz"
+  integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
+  dependencies:
+    ansi-escapes "^4.2.1"
+    chalk "^4.1.0"
+    cli-cursor "^3.1.0"
+    cli-width "^3.0.0"
+    external-editor "^3.0.3"
+    figures "^3.0.0"
+    lodash "^4.17.19"
+    mute-stream "0.0.8"
+    run-async "^2.4.0"
+    rxjs "^6.6.0"
+    string-width "^4.1.0"
+    strip-ansi "^6.0.0"
+    through "^2.3.6"
+
+internal-ip@^4.3.0:
+  version "4.3.0"
+  resolved "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz"
+  integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
+  dependencies:
+    default-gateway "^4.2.0"
+    ipaddr.js "^1.9.0"
+
+internal-slot@^1.0.5:
+  version "1.0.6"
+  resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.6.tgz"
+  integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==
+  dependencies:
+    get-intrinsic "^1.2.2"
+    hasown "^2.0.0"
+    side-channel "^1.0.4"
+
+ip-address@^9.0.5:
+  version "9.0.5"
+  resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz"
+  integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==
+  dependencies:
+    jsbn "1.1.0"
+    sprintf-js "^1.1.3"
+
+ip-regex@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz"
+  integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==
+
+ip@^1.1.0, ip@^1.1.5:
+  version "1.1.8"
+  resolved "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz"
+  integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==
+
+ipaddr.js@^1.9.0, ipaddr.js@1.9.1:
+  version "1.9.1"
+  resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
+  integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-absolute-url@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz"
+  integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==
+
+is-absolute-url@^3.0.3:
+  version "3.0.3"
+  resolved "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz"
+  integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
+
+is-accessor-descriptor@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz"
+  integrity sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==
+  dependencies:
+    hasown "^2.0.0"
+
+is-arguments@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz"
+  integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+  dependencies:
+    call-bind "^1.0.2"
+    has-tostringtag "^1.0.0"
+
+is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz"
+  integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
+  dependencies:
+    call-bind "^1.0.2"
+    get-intrinsic "^1.2.0"
+    is-typed-array "^1.1.10"
+
+is-arrayish@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz"
+  integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+is-arrayish@^0.3.1:
+  version "0.3.2"
+  resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz"
+  integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
+is-bigint@^1.0.1:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz"
+  integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+  dependencies:
+    has-bigints "^1.0.1"
+
+is-binary-path@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz"
+  integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==
+  dependencies:
+    binary-extensions "^1.0.0"
+
+is-binary-path@~2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz"
+  integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+  dependencies:
+    binary-extensions "^2.0.0"
+
+is-boolean-object@^1.1.0:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz"
+  integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+  dependencies:
+    call-bind "^1.0.2"
+    has-tostringtag "^1.0.0"
+
+is-buffer@^1.1.5:
+  version "1.1.6"
+  resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz"
+  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
+  version "1.2.7"
+  resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz"
+  integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
+
+is-ci@^1.0.10:
+  version "1.2.1"
+  resolved "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz"
+  integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
+  dependencies:
+    ci-info "^1.5.0"
+
+is-color-stop@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz"
+  integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==
+  dependencies:
+    css-color-names "^0.0.4"
+    hex-color-regex "^1.1.0"
+    hsl-regex "^1.0.0"
+    hsla-regex "^1.0.0"
+    rgb-regex "^1.0.1"
+    rgba-regex "^1.0.0"
+
+is-core-module@^2.13.0, is-core-module@^2.5.0:
+  version "2.13.1"
+  resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz"
+  integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
+  dependencies:
+    hasown "^2.0.0"
+
+is-data-descriptor@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz"
+  integrity sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==
+  dependencies:
+    hasown "^2.0.0"
+
+is-date-object@^1.0.1, is-date-object@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz"
+  integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+  dependencies:
+    has-tostringtag "^1.0.0"
+
+is-descriptor@^0.1.0:
+  version "0.1.7"
+  resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.7.tgz"
+  integrity sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==
+  dependencies:
+    is-accessor-descriptor "^1.0.1"
+    is-data-descriptor "^1.0.1"
+
+is-descriptor@^1.0.0:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.3.tgz"
+  integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==
+  dependencies:
+    is-accessor-descriptor "^1.0.1"
+    is-data-descriptor "^1.0.1"
+
+is-descriptor@^1.0.2:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.3.tgz"
+  integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==
+  dependencies:
+    is-accessor-descriptor "^1.0.1"
+    is-data-descriptor "^1.0.1"
+
+is-directory@^0.3.1:
+  version "0.3.1"
+  resolved "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz"
+  integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==
+
+is-docker@^2.0.0:
+  version "2.2.1"
+  resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz"
+  integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz"
+  integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
+is-extendable@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz"
+  integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+  dependencies:
+    is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz"
+  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-fullwidth-code-point@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
+  integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==
+
+is-fullwidth-code-point@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
+  integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz"
+  integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==
+  dependencies:
+    is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+  version "4.0.3"
+  resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz"
+  integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+  dependencies:
+    is-extglob "^2.1.1"
+
+is-lambda@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz"
+  integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==
+
+is-negative-zero@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz"
+  integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+
+is-number-object@^1.0.4:
+  version "1.0.7"
+  resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz"
+  integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
+  dependencies:
+    has-tostringtag "^1.0.0"
+
+is-number@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz"
+  integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==
+  dependencies:
+    kind-of "^3.0.2"
+
+is-number@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz"
+  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz"
+  integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-path-cwd@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz"
+  integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
+
+is-path-in-cwd@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz"
+  integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
+  dependencies:
+    is-path-inside "^2.1.0"
+
+is-path-inside@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz"
+  integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
+  dependencies:
+    path-is-inside "^1.0.2"
+
+is-plain-obj@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz"
+  integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==
+
+is-plain-obj@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz"
+  integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==
+
+is-plain-obj@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz"
+  integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz"
+  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+  dependencies:
+    isobject "^3.0.1"
+
+is-regex@^1.1.4:
+  version "1.1.4"
+  resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz"
+  integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+  dependencies:
+    call-bind "^1.0.2"
+    has-tostringtag "^1.0.0"
+
+is-resolvable@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz"
+  integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-shared-array-buffer@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz"
+  integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
+  dependencies:
+    call-bind "^1.0.2"
+
+is-stream@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz"
+  integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==
+
+is-stream@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz"
+  integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+is-string@^1.0.5, is-string@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz"
+  integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+  dependencies:
+    has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz"
+  integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+  dependencies:
+    has-symbols "^1.0.2"
+
+is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9:
+  version "1.1.12"
+  resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz"
+  integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==
+  dependencies:
+    which-typed-array "^1.1.11"
+
+is-typedarray@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz"
+  integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
+
+is-weakref@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz"
+  integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+  dependencies:
+    call-bind "^1.0.2"
+
+is-what@^3.14.1:
+  version "3.14.1"
+  resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz"
+  integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
+
+is-windows@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz"
+  integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz"
+  integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==
+
+is-wsl@^2.1.1:
+  version "2.2.0"
+  resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz"
+  integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+  dependencies:
+    is-docker "^2.0.0"
+
+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
+  integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
+
+isarray@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz"
+  integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
+iscroll@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.npmmirror.com/iscroll/-/iscroll-5.2.0.tgz"
+  integrity sha512-HyEu3cR8ulc0JONuQq6yht7s4iYgIPpYvy0h8IJflOUMDB95pwZ7e5FQtA6qfCESxhfxv7JZb9kIQe0JFPL05g==
+
+isexe@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz"
+  integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+isobject@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz"
+  integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==
+  dependencies:
+    isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz"
+  integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
+
+isstream@~0.1.2:
+  version "0.1.2"
+  resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz"
+  integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
+
+javascript-stringify@^2.0.1:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz"
+  integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==
+
+js-base64@^2.4.9:
+  version "2.6.4"
+  resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz"
+  integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
+
+js-message@1.0.7:
+  version "1.0.7"
+  resolved "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz"
+  integrity sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==
+
+js-tokens@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz"
+  integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.1:
+  version "3.14.1"
+  resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz"
+  integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+  dependencies:
+    argparse "^1.0.7"
+    esprima "^4.0.0"
+
+jsbn@~0.1.0:
+  version "0.1.1"
+  resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz"
+  integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
+
+jsbn@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz"
+  integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==
+
+jsesc@^2.5.1:
+  version "2.5.2"
+  resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz"
+  integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+jsesc@~0.5.0:
+  version "0.5.0"
+  resolved "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz"
+  integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
+
+json-buffer@3.0.1:
+  version "3.0.1"
+  resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
+  integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
+  integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-parse-even-better-errors@^2.3.0:
+  version "2.3.1"
+  resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
+  integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
+  integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema@0.4.0:
+  version "0.4.0"
+  resolved "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz"
+  integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
+  integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+json-stringify-safe@~5.0.1:
+  version "5.0.1"
+  resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
+  integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
+
+json5@^0.5.0:
+  version "0.5.1"
+  resolved "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz"
+  integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==
+
+json5@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz"
+  integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
+  dependencies:
+    minimist "^1.2.0"
+
+json5@^2.1.2, json5@^2.2.3:
+  version "2.2.3"
+  resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz"
+  integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonfile@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz"
+  integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
+jsprim@^1.2.2:
+  version "1.4.2"
+  resolved "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz"
+  integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==
+  dependencies:
+    assert-plus "1.0.0"
+    extsprintf "1.3.0"
+    json-schema "0.4.0"
+    verror "1.10.0"
+
+jwchat@^0.2.3:
+  version "0.2.50"
+  resolved "https://registry.npmmirror.com/jwchat/-/jwchat-0.2.50.tgz"
+  integrity sha512-KG83DwMUcwOVrKMWS7a9venILjvLGYLNGHgCG+LXl5vY/WrZ7esT8oXrMn+kmH9c8HhIa2TGTlC+GWFOHrzneg==
+  dependencies:
+    element-ui "^2.13.1"
+    iscroll "^5.2.0"
+    vue "^2.6.11"
+    wechat-emoji-parser "^1.1.0"
+
+katex@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.npmjs.org/katex/-/katex-0.6.0.tgz"
+  integrity sha512-rS4mY3SvHYg5LtQV6RBcK0if7ur6plyEukAOV+jGGPqFImuzu8fHL6M752iBmRGoUyF0bhZbAPoezehn7xYksA==
+  dependencies:
+    match-at "^0.1.0"
+
+keyv@^4.0.0:
+  version "4.5.4"
+  resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
+  integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
+  dependencies:
+    json-buffer "3.0.1"
+
+killable@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz"
+  integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
+
+kind-of@^3.0.2:
+  version "3.2.2"
+  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+  integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+  dependencies:
+    is-buffer "^1.1.5"
+
+kind-of@^3.0.3:
+  version "3.2.2"
+  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+  integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+  dependencies:
+    is-buffer "^1.1.5"
+
+kind-of@^3.2.0:
+  version "3.2.2"
+  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+  integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+  dependencies:
+    is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz"
+  integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==
+  dependencies:
+    is-buffer "^1.1.5"
+
+kind-of@^6.0.2, kind-of@^6.0.3:
+  version "6.0.3"
+  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz"
+  integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+launch-editor-middleware@^2.2.1:
+  version "2.6.1"
+  resolved "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.6.1.tgz"
+  integrity sha512-Fg/xYhf7ARmRp40n18wIfJyuAMEjXo67Yull7uF7d0OJ3qA4EYJISt1XfPPn69IIJ5jKgQwzcg6DqHYo95LL/g==
+  dependencies:
+    launch-editor "^2.6.1"
+
+launch-editor@^2.2.1, launch-editor@^2.6.1:
+  version "2.6.1"
+  resolved "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.1.tgz"
+  integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==
+  dependencies:
+    picocolors "^1.0.0"
+    shell-quote "^1.8.1"
+
+less-loader@^12.2.0:
+  version "12.2.0"
+  resolved "https://registry.npmmirror.com/less-loader/-/less-loader-12.2.0.tgz"
+  integrity sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==
+
+"less@^3.5.0 || ^4.0.0", less@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.npmmirror.com/less/-/less-4.2.0.tgz"
+  integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==
+  dependencies:
+    copy-anything "^2.0.1"
+    parse-node-version "^1.0.1"
+    tslib "^2.3.0"
+  optionalDependencies:
+    errno "^0.1.1"
+    graceful-fs "^4.1.2"
+    image-size "~0.5.0"
+    make-dir "^2.1.0"
+    mime "^1.4.1"
+    needle "^3.1.0"
+    source-map "~0.6.0"
+
+levn@^0.3.0, levn@~0.3.0:
+  version "0.3.0"
+  resolved "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz"
+  integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==
+  dependencies:
+    prelude-ls "~1.1.2"
+    type-check "~0.3.2"
+
+lines-and-columns@^1.1.6:
+  version "1.2.4"
+  resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
+  integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+linkify-it@~1.2.2:
+  version "1.2.4"
+  resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz"
+  integrity sha512-eGHwtlABkp1NOJSiKUNqBf3SYAS5jPHtvRXPAgNaQwTqmkTahjtiLH9NtxdR5IOPhNvwNMN/diswSfZKzUkhGg==
+  dependencies:
+    uc.micro "^1.0.1"
+
+loader-fs-cache@^1.0.0:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz"
+  integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==
+  dependencies:
+    find-cache-dir "^0.1.1"
+    mkdirp "^0.5.1"
+
+loader-runner@^2.3.1, loader-runner@^2.4.0:
+  version "2.4.0"
+  resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz"
+  integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+
+loader-utils@^0.2.16:
+  version "0.2.17"
+  resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz"
+  integrity sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==
+  dependencies:
+    big.js "^3.1.3"
+    emojis-list "^2.0.0"
+    json5 "^0.5.0"
+    object-assign "^4.0.1"
+
+loader-utils@^1.0.2:
+  version "1.4.2"
+  resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz"
+  integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
+  dependencies:
+    big.js "^5.2.2"
+    emojis-list "^3.0.0"
+    json5 "^1.0.1"
+
+loader-utils@^1.1.0:
+  version "1.4.2"
+  resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz"
+  integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
+  dependencies:
+    big.js "^5.2.2"
+    emojis-list "^3.0.0"
+    json5 "^1.0.1"
+
+loader-utils@^1.2.3:
+  version "1.4.2"
+  resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz"
+  integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
+  dependencies:
+    big.js "^5.2.2"
+    emojis-list "^3.0.0"
+    json5 "^1.0.1"
+
+loader-utils@^2.0.0:
+  version "2.0.4"
+  resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz"
+  integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==
+  dependencies:
+    big.js "^5.2.2"
+    emojis-list "^3.0.0"
+    json5 "^2.1.2"
+
+locate-path@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz"
+  integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+  dependencies:
+    p-locate "^3.0.0"
+    path-exists "^3.0.0"
+
+locate-path@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz"
+  integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+  dependencies:
+    p-locate "^4.1.0"
+
+lodash.debounce@^4.0.8:
+  version "4.0.8"
+  resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
+  integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+
+lodash.defaultsdeep@^4.6.1:
+  version "4.6.1"
+  resolved "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz"
+  integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==
+
+lodash.kebabcase@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz"
+  integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==
+
+lodash.mapvalues@^4.6.0:
+  version "4.6.0"
+  resolved "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz"
+  integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==
+
+lodash.memoize@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz"
+  integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
+
+lodash.transform@^4.6.0:
+  version "4.6.0"
+  resolved "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz"
+  integrity sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==
+
+lodash.uniq@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz"
+  integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
+
+lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3:
+  version "4.17.21"
+  resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz"
+  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+log-symbols@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz"
+  integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+  dependencies:
+    chalk "^2.0.1"
+
+loglevel@^1.6.8:
+  version "1.9.1"
+  resolved "https://registry.npmmirror.com/loglevel/-/loglevel-1.9.1.tgz"
+  integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==
+
+lower-case@^1.1.1:
+  version "1.1.4"
+  resolved "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz"
+  integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==
+
+lowercase-keys@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz"
+  integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+
+lru-cache@^4.0.1:
+  version "4.1.5"
+  resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
+  integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+  dependencies:
+    pseudomap "^1.0.2"
+    yallist "^2.1.2"
+
+lru-cache@^4.1.2:
+  version "4.1.5"
+  resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
+  integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+  dependencies:
+    pseudomap "^1.0.2"
+    yallist "^2.1.2"
+
+lru-cache@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz"
+  integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+  dependencies:
+    yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
+  integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+  dependencies:
+    yallist "^4.0.0"
+
+lru-cache@^7.7.1:
+  version "7.18.3"
+  resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz"
+  integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
+
+magic-string@^0.30.5:
+  version "0.30.5"
+  resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz"
+  integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==
+  dependencies:
+    "@jridgewell/sourcemap-codec" "^1.4.15"
+
+make-dir@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz"
+  integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+  dependencies:
+    pify "^4.0.1"
+    semver "^5.6.0"
+
+make-dir@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz"
+  integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+  dependencies:
+    pify "^4.0.1"
+    semver "^5.6.0"
+
+make-dir@^3.0.2, make-dir@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz"
+  integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+  dependencies:
+    semver "^6.0.0"
+
+make-fetch-happen@^10.0.4:
+  version "10.2.1"
+  resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz"
+  integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==
+  dependencies:
+    agentkeepalive "^4.2.1"
+    cacache "^16.1.0"
+    http-cache-semantics "^4.1.0"
+    http-proxy-agent "^5.0.0"
+    https-proxy-agent "^5.0.0"
+    is-lambda "^1.0.1"
+    lru-cache "^7.7.1"
+    minipass "^3.1.6"
+    minipass-collect "^1.0.2"
+    minipass-fetch "^2.0.3"
+    minipass-flush "^1.0.5"
+    minipass-pipeline "^1.2.4"
+    negotiator "^0.6.3"
+    promise-retry "^2.0.1"
+    socks-proxy-agent "^7.0.0"
+    ssri "^9.0.0"
+
+make-fetch-happen@^9.1.0:
+  version "9.1.0"
+  resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz"
+  integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==
+  dependencies:
+    agentkeepalive "^4.1.3"
+    cacache "^15.2.0"
+    http-cache-semantics "^4.1.0"
+    http-proxy-agent "^4.0.1"
+    https-proxy-agent "^5.0.0"
+    is-lambda "^1.0.1"
+    lru-cache "^6.0.0"
+    minipass "^3.1.3"
+    minipass-collect "^1.0.2"
+    minipass-fetch "^1.3.2"
+    minipass-flush "^1.0.5"
+    minipass-pipeline "^1.2.4"
+    negotiator "^0.6.2"
+    promise-retry "^2.0.1"
+    socks-proxy-agent "^6.0.0"
+    ssri "^8.0.0"
+
+map-cache@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz"
+  integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==
+
+map-obj@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz"
+  integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==
+
+map-obj@^4.0.0:
+  version "4.3.0"
+  resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz"
+  integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==
+
+map-visit@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz"
+  integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==
+  dependencies:
+    object-visit "^1.0.0"
+
+markdown-it-abbr@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.npmjs.org/markdown-it-abbr/-/markdown-it-abbr-1.0.4.tgz"
+  integrity sha512-ZeA4Z4SaBbYysZap5iZcxKmlPL6bYA8grqhzJIHB1ikn7njnzaP8uwbtuXc4YXD5LicI4/2Xmc0VwmSiFV04gg==
+
+markdown-it-deflist@^2.0.1:
+  version "2.1.0"
+  resolved "https://registry.npmjs.org/markdown-it-deflist/-/markdown-it-deflist-2.1.0.tgz"
+  integrity sha512-3OuqoRUlSxJiuQYu0cWTLHNhhq2xtoSFqsZK8plANg91+RJQU1ziQ6lA2LzmFAEes18uPBsHZpcX6We5l76Nzg==
+
+markdown-it-emoji@^1.1.1:
+  version "1.4.0"
+  resolved "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz"
+  integrity sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==
+
+markdown-it-footnote@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-2.0.0.tgz"
+  integrity sha512-GMWkJXSHh5tiQt77zCLOSZI2Xy3Oqdb82GmT0Q0h2UT6SbUrMCAiHEiMBIt5V7Xfm73rBxS0VOhlLndkn1GPnw==
+
+markdown-it-ins@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/markdown-it-ins/-/markdown-it-ins-2.0.0.tgz"
+  integrity sha512-DhLLxseIg2C7+AULvoyVI+zMeufR0QFvXJ2o0oV013hN5HvBvNh2rbVtTdxZjI959+hgo2AA0aRdtEIUaKPbhg==
+
+markdown-it-katex@^2.0.3:
+  version "2.0.3"
+  resolved "https://registry.npmjs.org/markdown-it-katex/-/markdown-it-katex-2.0.3.tgz"
+  integrity sha512-nUkkMtRWeg7OpdflamflE/Ho/pWl64Lk9wNBKOmaj33XkQdumhXAIYhI0WO03GeiycPCsxbmX536V5NEXpC3Ng==
+  dependencies:
+    katex "^0.6.0"
+
+markdown-it-mark@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/markdown-it-mark/-/markdown-it-mark-2.0.0.tgz"
+  integrity sha512-iT8ua0Bda8QrVwHDOUNw1eyCuL7irXeYch5n8zGS4tb7wsDIn7EjQZLjihKaijzBiL0ikfWL2zAvL/ECqTvsNA==
+
+markdown-it-sub@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz"
+  integrity sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q==
+
+markdown-it-sup@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz"
+  integrity sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==
+
+markdown-it-task-lists@^2.0.1:
+  version "2.1.1"
+  resolved "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz"
+  integrity sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==
+
+markdown-it-toc-and-anchor@^4.1.2:
+  version "4.2.0"
+  resolved "https://registry.npmjs.org/markdown-it-toc-and-anchor/-/markdown-it-toc-and-anchor-4.2.0.tgz"
+  integrity sha512-DusSbKtg8CwZ92ztN7bOojDpP4h0+w7BVOPuA3PHDIaabMsERYpwsazLYSP/UlKedoQjOz21mwlai36TQ04EpA==
+  dependencies:
+    clone "^2.1.0"
+    uslug "^1.0.4"
+
+markdown-it@^6.0.1:
+  version "6.1.1"
+  resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-6.1.1.tgz"
+  integrity sha512-woFl7h/sqt9xRmiMweNuO7nu+w8Lz3SXsDlvE3TYeu1SdPqQ+VW4GZyaKP442Bq6XUN6V6IQjJTR93RDYG2mjw==
+  dependencies:
+    argparse "^1.0.7"
+    entities "~1.1.1"
+    linkify-it "~1.2.2"
+    mdurl "~1.0.1"
+    uc.micro "^1.0.1"
+
+match-at@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz"
+  integrity sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q==
+
+md5.js@^1.3.4:
+  version "1.3.5"
+  resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz"
+  integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+  dependencies:
+    hash-base "^3.0.0"
+    inherits "^2.0.1"
+    safe-buffer "^5.1.2"
+
+mdn-data@2.0.14:
+  version "2.0.14"
+  resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz"
+  integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
+mdn-data@2.0.4:
+  version "2.0.4"
+  resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz"
+  integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+
+mdurl@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz"
+  integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
+
+media-typer@0.3.0:
+  version "0.3.0"
+  resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz"
+  integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
+
+memory-fs@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz"
+  integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==
+  dependencies:
+    errno "^0.1.3"
+    readable-stream "^2.0.1"
+
+memory-fs@^0.5.0:
+  version "0.5.0"
+  resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz"
+  integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
+  dependencies:
+    errno "^0.1.3"
+    readable-stream "^2.0.1"
+
+meow@^9.0.0:
+  version "9.0.0"
+  resolved "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz"
+  integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==
+  dependencies:
+    "@types/minimist" "^1.2.0"
+    camelcase-keys "^6.2.2"
+    decamelize "^1.2.0"
+    decamelize-keys "^1.1.0"
+    hard-rejection "^2.1.0"
+    minimist-options "4.1.0"
+    normalize-package-data "^3.0.0"
+    read-pkg-up "^7.0.1"
+    redent "^3.0.0"
+    trim-newlines "^3.0.0"
+    type-fest "^0.18.0"
+    yargs-parser "^20.2.3"
+
+merge-descriptors@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
+  integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+
+merge-source-map@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz"
+  integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
+  dependencies:
+    source-map "^0.6.1"
+
+merge-stream@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz"
+  integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.2.3:
+  version "1.4.1"
+  resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz"
+  integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+methods@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz"
+  integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
+
+micromatch@^3.1.10, micromatch@^3.1.4:
+  version "3.1.10"
+  resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz"
+  integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+  dependencies:
+    arr-diff "^4.0.0"
+    array-unique "^0.3.2"
+    braces "^2.3.1"
+    define-property "^2.0.2"
+    extend-shallow "^3.0.2"
+    extglob "^2.0.4"
+    fragment-cache "^0.2.1"
+    kind-of "^6.0.2"
+    nanomatch "^1.2.9"
+    object.pick "^1.3.0"
+    regex-not "^1.0.0"
+    snapdragon "^0.8.1"
+    to-regex "^3.0.2"
+
+micromatch@^4.0.2:
+  version "4.0.5"
+  resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz"
+  integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+  dependencies:
+    braces "^3.0.2"
+    picomatch "^2.3.1"
+
+miller-rabin@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz"
+  integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+  dependencies:
+    bn.js "^4.0.0"
+    brorand "^1.0.1"
+
+"mime-db@>= 1.43.0 < 2", mime-db@1.52.0:
+  version "1.52.0"
+  resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
+  integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34:
+  version "2.1.35"
+  resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz"
+  integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+  dependencies:
+    mime-db "1.52.0"
+
+mime@^1.4.1:
+  version "1.6.0"
+  resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz"
+  integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^2.4.4:
+  version "2.6.0"
+  resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz"
+  integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
+
+mime@1.6.0:
+  version "1.6.0"
+  resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz"
+  integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mimic-fn@^1.0.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz"
+  integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+mimic-fn@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz"
+  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mimic-response@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz"
+  integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+
+mimic-response@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz"
+  integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
+
+min-indent@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz"
+  integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
+
+mini-css-extract-plugin@^0.9.0:
+  version "0.9.0"
+  resolved "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz"
+  integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==
+  dependencies:
+    loader-utils "^1.1.0"
+    normalize-url "1.9.1"
+    schema-utils "^1.0.0"
+    webpack-sources "^1.1.0"
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
+  integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz"
+  integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
+
+minimatch@^3.0.4, minimatch@^3.1.1:
+  version "3.1.2"
+  resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+  integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+  dependencies:
+    brace-expansion "^1.1.7"
+
+minimatch@^5.0.1:
+  version "5.1.6"
+  resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz"
+  integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
+  dependencies:
+    brace-expansion "^2.0.1"
+
+minimatch@~3.0.2:
+  version "3.0.8"
+  resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz"
+  integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==
+  dependencies:
+    brace-expansion "^1.1.7"
+
+minimist-options@4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz"
+  integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
+  dependencies:
+    arrify "^1.0.1"
+    is-plain-obj "^1.1.0"
+    kind-of "^6.0.3"
+
+minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
+  version "1.2.8"
+  resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz"
+  integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+
+minipass-collect@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz"
+  integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
+  dependencies:
+    minipass "^3.0.0"
+
+minipass-fetch@^1.3.2:
+  version "1.4.1"
+  resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz"
+  integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==
+  dependencies:
+    minipass "^3.1.0"
+    minipass-sized "^1.0.3"
+    minizlib "^2.0.0"
+  optionalDependencies:
+    encoding "^0.1.12"
+
+minipass-fetch@^2.0.3:
+  version "2.1.2"
+  resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz"
+  integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==
+  dependencies:
+    minipass "^3.1.6"
+    minipass-sized "^1.0.3"
+    minizlib "^2.1.2"
+  optionalDependencies:
+    encoding "^0.1.13"
+
+minipass-flush@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz"
+  integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
+  dependencies:
+    minipass "^3.0.0"
+
+minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4:
+  version "1.2.4"
+  resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz"
+  integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
+  dependencies:
+    minipass "^3.0.0"
+
+minipass-sized@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz"
+  integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==
+  dependencies:
+    minipass "^3.0.0"
+
+minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6:
+  version "3.3.6"
+  resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz"
+  integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
+  dependencies:
+    yallist "^4.0.0"
+
+minipass@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz"
+  integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
+
+minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"
+  integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
+  dependencies:
+    minipass "^3.0.0"
+    yallist "^4.0.0"
+
+mississippi@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz"
+  integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+  dependencies:
+    concat-stream "^1.5.0"
+    duplexify "^3.4.2"
+    end-of-stream "^1.1.0"
+    flush-write-stream "^1.0.0"
+    from2 "^2.1.0"
+    parallel-transform "^1.1.0"
+    pump "^3.0.0"
+    pumpify "^1.3.3"
+    stream-each "^1.1.0"
+    through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+  version "1.3.2"
+  resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz"
+  integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+  dependencies:
+    for-in "^1.0.2"
+    is-extendable "^1.0.1"
+
+mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.6, mkdirp@~0.5.1:
+  version "0.5.6"
+  resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz"
+  integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
+  dependencies:
+    minimist "^1.2.6"
+
+mkdirp@^1.0.3, mkdirp@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
+  integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+move-concurrently@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz"
+  integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==
+  dependencies:
+    aproba "^1.1.1"
+    copy-concurrently "^1.0.0"
+    fs-write-stream-atomic "^1.0.8"
+    mkdirp "^0.5.1"
+    rimraf "^2.5.4"
+    run-queue "^1.0.3"
+
+ms@^2.0.0, ms@^2.1.1, ms@2.1.2:
+  version "2.1.2"
+  resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz"
+  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz"
+  integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
+
+ms@2.1.3:
+  version "2.1.3"
+  resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz"
+  integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+multicast-dns-service-types@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz"
+  integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==
+
+multicast-dns@^6.0.1:
+  version "6.2.3"
+  resolved "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz"
+  integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
+  dependencies:
+    dns-packet "^1.3.1"
+    thunky "^1.0.2"
+
+mute-stream@0.0.8:
+  version "0.0.8"
+  resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz"
+  integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+mz@^2.4.0:
+  version "2.7.0"
+  resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz"
+  integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+  dependencies:
+    any-promise "^1.0.0"
+    object-assign "^4.0.1"
+    thenify-all "^1.0.0"
+
+nan@^2.17.0:
+  version "2.19.0"
+  resolved "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz"
+  integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==
+
+nanoid@^3.3.7:
+  version "3.3.7"
+  resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz"
+  integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+
+nanomatch@^1.2.9:
+  version "1.2.13"
+  resolved "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz"
+  integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+  dependencies:
+    arr-diff "^4.0.0"
+    array-unique "^0.3.2"
+    define-property "^2.0.2"
+    extend-shallow "^3.0.2"
+    fragment-cache "^0.2.1"
+    is-windows "^1.0.2"
+    kind-of "^6.0.2"
+    object.pick "^1.3.0"
+    regex-not "^1.0.0"
+    snapdragon "^0.8.1"
+    to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz"
+  integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+needle@^3.1.0:
+  version "3.3.1"
+  resolved "https://registry.npmmirror.com/needle/-/needle-3.3.1.tgz"
+  integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==
+  dependencies:
+    iconv-lite "^0.6.3"
+    sax "^1.2.4"
+
+negotiator@^0.6.2, negotiator@^0.6.3, negotiator@0.6.3:
+  version "0.6.3"
+  resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz"
+  integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+
+neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2:
+  version "2.6.2"
+  resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz"
+  integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+nice-try@^1.0.4:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz"
+  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+no-case@^2.2.0:
+  version "2.3.2"
+  resolved "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz"
+  integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
+  dependencies:
+    lower-case "^1.1.1"
+
+node-forge@^0.10.0:
+  version "0.10.0"
+  resolved "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz"
+  integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
+
+node-gyp@^8.4.1:
+  version "8.4.1"
+  resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz"
+  integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==
+  dependencies:
+    env-paths "^2.2.0"
+    glob "^7.1.4"
+    graceful-fs "^4.2.6"
+    make-fetch-happen "^9.1.0"
+    nopt "^5.0.0"
+    npmlog "^6.0.0"
+    rimraf "^3.0.2"
+    semver "^7.3.5"
+    tar "^6.1.2"
+    which "^2.0.2"
+
+node-libs-browser@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz"
+  integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
+  dependencies:
+    assert "^1.1.1"
+    browserify-zlib "^0.2.0"
+    buffer "^4.3.0"
+    console-browserify "^1.1.0"
+    constants-browserify "^1.0.0"
+    crypto-browserify "^3.11.0"
+    domain-browser "^1.1.1"
+    events "^3.0.0"
+    https-browserify "^1.0.0"
+    os-browserify "^0.3.0"
+    path-browserify "0.0.1"
+    process "^0.11.10"
+    punycode "^1.2.4"
+    querystring-es3 "^0.2.0"
+    readable-stream "^2.3.3"
+    stream-browserify "^2.0.1"
+    stream-http "^2.7.2"
+    string_decoder "^1.0.0"
+    timers-browserify "^2.0.4"
+    tty-browserify "0.0.0"
+    url "^0.11.0"
+    util "^0.11.0"
+    vm-browserify "^1.0.1"
+
+node-releases@^2.0.14:
+  version "2.0.14"
+  resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz"
+  integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+
+"node-sass@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", node-sass@^9.0.0:
+  version "9.0.0"
+  resolved "https://registry.npmjs.org/node-sass/-/node-sass-9.0.0.tgz"
+  integrity sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg==
+  dependencies:
+    async-foreach "^0.1.3"
+    chalk "^4.1.2"
+    cross-spawn "^7.0.3"
+    gaze "^1.0.0"
+    get-stdin "^4.0.1"
+    glob "^7.0.3"
+    lodash "^4.17.15"
+    make-fetch-happen "^10.0.4"
+    meow "^9.0.0"
+    nan "^2.17.0"
+    node-gyp "^8.4.1"
+    sass-graph "^4.0.1"
+    stdout-stream "^1.4.0"
+    "true-case-path" "^2.2.1"
+
+nopt@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz"
+  integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
+  dependencies:
+    abbrev "1"
+
+normalize-package-data@^2.5.0:
+  version "2.5.0"
+  resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
+  integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+  dependencies:
+    hosted-git-info "^2.1.4"
+    resolve "^1.10.0"
+    semver "2 || 3 || 4 || 5"
+    validate-npm-package-license "^3.0.1"
+
+normalize-package-data@^3.0.0:
+  version "3.0.3"
+  resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz"
+  integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
+  dependencies:
+    hosted-git-info "^4.0.1"
+    is-core-module "^2.5.0"
+    semver "^7.3.4"
+    validate-npm-package-license "^3.0.1"
+
+normalize-path@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz"
+  integrity sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==
+
+normalize-path@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz"
+  integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==
+  dependencies:
+    remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz"
+  integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz"
+  integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+normalize-url@^3.0.0:
+  version "3.3.0"
+  resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz"
+  integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+
+normalize-url@^6.0.1:
+  version "6.1.0"
+  resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz"
+  integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
+
+normalize-url@1.9.1:
+  version "1.9.1"
+  resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz"
+  integrity sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==
+  dependencies:
+    object-assign "^4.0.1"
+    prepend-http "^1.0.0"
+    query-string "^4.1.0"
+    sort-keys "^1.0.0"
+
+normalize-wheel@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz"
+  integrity sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==
+
+npm-run-path@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz"
+  integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==
+  dependencies:
+    path-key "^2.0.0"
+
+npm-run-path@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz"
+  integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+  dependencies:
+    path-key "^3.0.0"
+
+npmlog@^6.0.0:
+  version "6.0.2"
+  resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz"
+  integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==
+  dependencies:
+    are-we-there-yet "^3.0.0"
+    console-control-strings "^1.1.0"
+    gauge "^4.0.3"
+    set-blocking "^2.0.0"
+
+nth-check@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz"
+  integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+  dependencies:
+    boolbase "~1.0.0"
+
+nth-check@^2.0.1:
+  version "2.1.1"
+  resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz"
+  integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+  dependencies:
+    boolbase "^1.0.0"
+
+num2fraction@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz"
+  integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==
+
+oauth-sign@~0.9.0:
+  version "0.9.0"
+  resolved "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz"
+  integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+  version "4.1.1"
+  resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz"
+  integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+object-copy@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz"
+  integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==
+  dependencies:
+    copy-descriptor "^0.1.0"
+    define-property "^0.2.5"
+    kind-of "^3.0.3"
+
+object-hash@^1.1.4:
+  version "1.3.1"
+  resolved "https://registry.npmmirror.com/object-hash/-/object-hash-1.3.1.tgz"
+  integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==
+
+object-inspect@^1.13.1, object-inspect@^1.9.0:
+  version "1.13.1"
+  resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz"
+  integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+
+object-is@^1.1.5:
+  version "1.1.5"
+  resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz"
+  integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.1.3"
+
+object-keys@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz"
+  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-visit@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz"
+  integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==
+  dependencies:
+    isobject "^3.0.0"
+
+object.assign@^4.1.0, object.assign@^4.1.4:
+  version "4.1.5"
+  resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz"
+  integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
+  dependencies:
+    call-bind "^1.0.5"
+    define-properties "^1.2.1"
+    has-symbols "^1.0.3"
+    object-keys "^1.1.1"
+
+object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0:
+  version "2.1.7"
+  resolved "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz"
+  integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==
+  dependencies:
+    array.prototype.reduce "^1.0.6"
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+    safe-array-concat "^1.0.0"
+
+object.pick@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz"
+  integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==
+  dependencies:
+    isobject "^3.0.1"
+
+object.values@^1.1.0:
+  version "1.1.7"
+  resolved "https://registry.npmmirror.com/object.values/-/object.values-1.1.7.tgz"
+  integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+
+obuf@^1.0.0, obuf@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz"
+  integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
+
+on-finished@2.4.1:
+  version "2.4.1"
+  resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz"
+  integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
+  dependencies:
+    ee-first "1.1.1"
+
+on-headers@~1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz"
+  integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz"
+  integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+  dependencies:
+    wrappy "1"
+
+onetime@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz"
+  integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==
+  dependencies:
+    mimic-fn "^1.0.0"
+
+onetime@^5.1.0:
+  version "5.1.2"
+  resolved "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz"
+  integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+  dependencies:
+    mimic-fn "^2.1.0"
+
+open@^6.3.0:
+  version "6.4.0"
+  resolved "https://registry.npmmirror.com/open/-/open-6.4.0.tgz"
+  integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==
+  dependencies:
+    is-wsl "^1.1.0"
+
+opener@^1.5.1:
+  version "1.5.2"
+  resolved "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz"
+  integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
+
+opn@^5.5.0:
+  version "5.5.0"
+  resolved "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz"
+  integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
+  dependencies:
+    is-wsl "^1.1.0"
+
+optionator@^0.8.3:
+  version "0.8.3"
+  resolved "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz"
+  integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+  dependencies:
+    deep-is "~0.1.3"
+    fast-levenshtein "~2.0.6"
+    levn "~0.3.0"
+    prelude-ls "~1.1.2"
+    type-check "~0.3.2"
+    word-wrap "~1.2.3"
+
+ora@^3.4.0:
+  version "3.4.0"
+  resolved "https://registry.npmmirror.com/ora/-/ora-3.4.0.tgz"
+  integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==
+  dependencies:
+    chalk "^2.4.2"
+    cli-cursor "^2.1.0"
+    cli-spinners "^2.0.0"
+    log-symbols "^2.2.0"
+    strip-ansi "^5.2.0"
+    wcwidth "^1.0.1"
+
+os-browserify@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz"
+  integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==
+
+os-tmpdir@~1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
+  integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
+
+p-cancelable@^2.0.0:
+  version "2.1.1"
+  resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz"
+  integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
+
+p-finally@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz"
+  integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==
+
+p-finally@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz"
+  integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==
+
+p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1:
+  version "2.3.0"
+  resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz"
+  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+  dependencies:
+    p-try "^2.0.0"
+
+p-locate@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz"
+  integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+  dependencies:
+    p-limit "^2.0.0"
+
+p-locate@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz"
+  integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+  dependencies:
+    p-limit "^2.2.0"
+
+p-map@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz"
+  integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-map@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz"
+  integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+  dependencies:
+    aggregate-error "^3.0.0"
+
+p-retry@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz"
+  integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==
+  dependencies:
+    retry "^0.12.0"
+
+p-try@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz"
+  integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pako@~1.0.5:
+  version "1.0.11"
+  resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz"
+  integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
+parallel-transform@^1.1.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz"
+  integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
+  dependencies:
+    cyclist "^1.0.1"
+    inherits "^2.0.3"
+    readable-stream "^2.1.5"
+
+param-case@2.1.x:
+  version "2.1.1"
+  resolved "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz"
+  integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==
+  dependencies:
+    no-case "^2.2.0"
+
+parent-module@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz"
+  integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+  dependencies:
+    callsites "^3.0.0"
+
+parse-asn1@^5.0.0, parse-asn1@^5.1.6:
+  version "5.1.6"
+  resolved "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz"
+  integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
+  dependencies:
+    asn1.js "^5.2.0"
+    browserify-aes "^1.0.0"
+    evp_bytestokey "^1.0.0"
+    pbkdf2 "^3.0.3"
+    safe-buffer "^5.1.1"
+
+parse-json@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz"
+  integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==
+  dependencies:
+    error-ex "^1.3.1"
+    json-parse-better-errors "^1.0.1"
+
+parse-json@^5.0.0:
+  version "5.2.0"
+  resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz"
+  integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+  dependencies:
+    "@babel/code-frame" "^7.0.0"
+    error-ex "^1.3.1"
+    json-parse-even-better-errors "^2.3.0"
+    lines-and-columns "^1.1.6"
+
+parse-node-version@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz"
+  integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
+parse5-htmlparser2-tree-adapter@^6.0.0:
+  version "6.0.1"
+  resolved "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz"
+  integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==
+  dependencies:
+    parse5 "^6.0.1"
+
+parse5@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz"
+  integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
+
+parse5@^6.0.1:
+  version "6.0.1"
+  resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz"
+  integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+parseurl@~1.3.2, parseurl@~1.3.3:
+  version "1.3.3"
+  resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz"
+  integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascalcase@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz"
+  integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==
+
+path-browserify@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz"
+  integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz"
+  integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==
+
+path-exists@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz"
+  integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==
+  dependencies:
+    pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz"
+  integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
+
+path-exists@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz"
+  integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+  integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+path-is-inside@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz"
+  integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==
+
+path-key@^2.0.0, path-key@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz"
+  integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
+
+path-key@^3.0.0, path-key@^3.1.0:
+  version "3.1.1"
+  resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
+  integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz"
+  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@0.1.7:
+  version "0.1.7"
+  resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
+  integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
+
+path-type@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz"
+  integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+  dependencies:
+    pify "^3.0.0"
+
+pbkdf2@^3.0.3:
+  version "3.1.2"
+  resolved "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz"
+  integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
+  dependencies:
+    create-hash "^1.1.2"
+    create-hmac "^1.1.4"
+    ripemd160 "^2.0.1"
+    safe-buffer "^5.0.1"
+    sha.js "^2.4.8"
+
+performance-now@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz"
+  integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
+
+picocolors@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz"
+  integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
+
+picocolors@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz"
+  integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+  version "2.3.1"
+  resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz"
+  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pify@^2.0.0:
+  version "2.3.0"
+  resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz"
+  integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
+
+pify@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz"
+  integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
+
+pify@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz"
+  integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
+  integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==
+  dependencies:
+    pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+  version "2.0.4"
+  resolved "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz"
+  integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==
+
+pkg-dir@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-1.0.0.tgz"
+  integrity sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==
+  dependencies:
+    find-up "^1.0.0"
+
+pkg-dir@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz"
+  integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+  dependencies:
+    find-up "^3.0.0"
+
+pkg-dir@^4.1.0:
+  version "4.2.0"
+  resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz"
+  integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+  dependencies:
+    find-up "^4.0.0"
+
+pnp-webpack-plugin@^1.6.4:
+  version "1.7.0"
+  resolved "https://registry.npmmirror.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz"
+  integrity sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==
+  dependencies:
+    ts-pnp "^1.1.6"
+
+portfinder@^1.0.26:
+  version "1.0.32"
+  resolved "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz"
+  integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==
+  dependencies:
+    async "^2.6.4"
+    debug "^3.2.7"
+    mkdirp "^0.5.6"
+
+posix-character-classes@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz"
+  integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==
+
+postcss-calc@^7.0.1:
+  version "7.0.5"
+  resolved "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz"
+  integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==
+  dependencies:
+    postcss "^7.0.27"
+    postcss-selector-parser "^6.0.2"
+    postcss-value-parser "^4.0.2"
+
+postcss-colormin@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz"
+  integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
+  dependencies:
+    browserslist "^4.0.0"
+    color "^3.0.0"
+    has "^1.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-convert-values@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz"
+  integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
+  dependencies:
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-discard-comments@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz"
+  integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
+  dependencies:
+    postcss "^7.0.0"
+
+postcss-discard-duplicates@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz"
+  integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
+  dependencies:
+    postcss "^7.0.0"
+
+postcss-discard-empty@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz"
+  integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
+  dependencies:
+    postcss "^7.0.0"
+
+postcss-discard-overridden@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz"
+  integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
+  dependencies:
+    postcss "^7.0.0"
+
+postcss-load-config@^2.0.0:
+  version "2.1.2"
+  resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz"
+  integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==
+  dependencies:
+    cosmiconfig "^5.0.0"
+    import-cwd "^2.0.0"
+
+postcss-loader@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz"
+  integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==
+  dependencies:
+    loader-utils "^1.1.0"
+    postcss "^7.0.0"
+    postcss-load-config "^2.0.0"
+    schema-utils "^1.0.0"
+
+postcss-merge-longhand@^4.0.11:
+  version "4.0.11"
+  resolved "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz"
+  integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
+  dependencies:
+    css-color-names "0.0.4"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+    stylehacks "^4.0.0"
+
+postcss-merge-rules@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz"
+  integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
+  dependencies:
+    browserslist "^4.0.0"
+    caniuse-api "^3.0.0"
+    cssnano-util-same-parent "^4.0.0"
+    postcss "^7.0.0"
+    postcss-selector-parser "^3.0.0"
+    vendors "^1.0.0"
+
+postcss-minify-font-values@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz"
+  integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
+  dependencies:
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-minify-gradients@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz"
+  integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
+  dependencies:
+    cssnano-util-get-arguments "^4.0.0"
+    is-color-stop "^1.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-minify-params@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz"
+  integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
+  dependencies:
+    alphanum-sort "^1.0.0"
+    browserslist "^4.0.0"
+    cssnano-util-get-arguments "^4.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+    uniqs "^2.0.0"
+
+postcss-minify-selectors@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz"
+  integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
+  dependencies:
+    alphanum-sort "^1.0.0"
+    has "^1.0.0"
+    postcss "^7.0.0"
+    postcss-selector-parser "^3.0.0"
+
+postcss-modules-extract-imports@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz"
+  integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
+  dependencies:
+    postcss "^7.0.5"
+
+postcss-modules-local-by-default@^3.0.2:
+  version "3.0.3"
+  resolved "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz"
+  integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==
+  dependencies:
+    icss-utils "^4.1.1"
+    postcss "^7.0.32"
+    postcss-selector-parser "^6.0.2"
+    postcss-value-parser "^4.1.0"
+
+postcss-modules-scope@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz"
+  integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==
+  dependencies:
+    postcss "^7.0.6"
+    postcss-selector-parser "^6.0.0"
+
+postcss-modules-values@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz"
+  integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
+  dependencies:
+    icss-utils "^4.0.0"
+    postcss "^7.0.6"
+
+postcss-normalize-charset@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz"
+  integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
+  dependencies:
+    postcss "^7.0.0"
+
+postcss-normalize-display-values@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz"
+  integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
+  dependencies:
+    cssnano-util-get-match "^4.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-normalize-positions@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz"
+  integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
+  dependencies:
+    cssnano-util-get-arguments "^4.0.0"
+    has "^1.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-normalize-repeat-style@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz"
+  integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
+  dependencies:
+    cssnano-util-get-arguments "^4.0.0"
+    cssnano-util-get-match "^4.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-normalize-string@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz"
+  integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
+  dependencies:
+    has "^1.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-normalize-timing-functions@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz"
+  integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
+  dependencies:
+    cssnano-util-get-match "^4.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-normalize-unicode@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz"
+  integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
+  dependencies:
+    browserslist "^4.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-normalize-url@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz"
+  integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
+  dependencies:
+    is-absolute-url "^2.0.0"
+    normalize-url "^3.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-normalize-whitespace@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz"
+  integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
+  dependencies:
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-ordered-values@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz"
+  integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
+  dependencies:
+    cssnano-util-get-arguments "^4.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-reduce-initial@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz"
+  integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
+  dependencies:
+    browserslist "^4.0.0"
+    caniuse-api "^3.0.0"
+    has "^1.0.0"
+    postcss "^7.0.0"
+
+postcss-reduce-transforms@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz"
+  integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
+  dependencies:
+    cssnano-util-get-match "^4.0.0"
+    has "^1.0.0"
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+
+postcss-selector-parser@^3.0.0:
+  version "3.1.2"
+  resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz"
+  integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
+  dependencies:
+    dot-prop "^5.2.0"
+    indexes-of "^1.0.1"
+    uniq "^1.0.1"
+
+postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
+  version "6.0.15"
+  resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz"
+  integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==
+  dependencies:
+    cssesc "^3.0.0"
+    util-deprecate "^1.0.2"
+
+postcss-svgo@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz"
+  integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==
+  dependencies:
+    postcss "^7.0.0"
+    postcss-value-parser "^3.0.0"
+    svgo "^1.0.0"
+
+postcss-unique-selectors@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz"
+  integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
+  dependencies:
+    alphanum-sort "^1.0.0"
+    postcss "^7.0.0"
+    uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.0:
+  version "3.3.1"
+  resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz"
+  integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
+
+postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
+  version "4.2.0"
+  resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
+  integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@^7.0.0:
+  version "7.0.39"
+  resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+  dependencies:
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
+
+postcss@^7.0.1:
+  version "7.0.39"
+  resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+  dependencies:
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
+
+postcss@^7.0.14:
+  version "7.0.39"
+  resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+  dependencies:
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
+
+postcss@^7.0.27:
+  version "7.0.39"
+  resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+  dependencies:
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
+
+postcss@^7.0.32:
+  version "7.0.39"
+  resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+  dependencies:
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
+
+postcss@^7.0.36:
+  version "7.0.39"
+  resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+  dependencies:
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
+
+postcss@^7.0.5:
+  version "7.0.39"
+  resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+  dependencies:
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
+
+postcss@^7.0.6:
+  version "7.0.39"
+  resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+  dependencies:
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
+
+postcss@^8.4.14, postcss@^8.4.33:
+  version "8.4.33"
+  resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.33.tgz"
+  integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==
+  dependencies:
+    nanoid "^3.3.7"
+    picocolors "^1.0.0"
+    source-map-js "^1.0.2"
+
+prelude-ls@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz"
+  integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
+
+prepend-http@^1.0.0:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz"
+  integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==
+
+"prettier@^1.18.2 || ^2.0.0":
+  version "2.8.8"
+  resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz"
+  integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
+
+pretty-error@^2.0.2:
+  version "2.1.2"
+  resolved "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz"
+  integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==
+  dependencies:
+    lodash "^4.17.20"
+    renderkid "^2.0.4"
+
+process-nextick-args@~2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
+  integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10:
+  version "0.11.10"
+  resolved "https://registry.npmmirror.com/process/-/process-0.11.10.tgz"
+  integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
+
+progress@^2.0.0:
+  version "2.0.3"
+  resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz"
+  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz"
+  integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
+
+promise-retry@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz"
+  integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==
+  dependencies:
+    err-code "^2.0.2"
+    retry "^0.12.0"
+
+proxy-addr@~2.0.7:
+  version "2.0.7"
+  resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz"
+  integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
+  dependencies:
+    forwarded "0.2.0"
+    ipaddr.js "1.9.1"
+
+proxy-from-env@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
+  integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
+prr@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz"
+  integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
+
+pseudomap@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz"
+  integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
+
+psl@^1.1.28:
+  version "1.9.0"
+  resolved "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz"
+  integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
+
+public-encrypt@^4.0.0:
+  version "4.0.3"
+  resolved "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz"
+  integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+  dependencies:
+    bn.js "^4.1.0"
+    browserify-rsa "^4.0.0"
+    create-hash "^1.1.0"
+    parse-asn1 "^5.0.0"
+    randombytes "^2.0.1"
+    safe-buffer "^5.1.2"
+
+pump@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz"
+  integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+  dependencies:
+    end-of-stream "^1.1.0"
+    once "^1.3.1"
+
+pump@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz"
+  integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+  dependencies:
+    end-of-stream "^1.1.0"
+    once "^1.3.1"
+
+pumpify@^1.3.3:
+  version "1.5.1"
+  resolved "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz"
+  integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+  dependencies:
+    duplexify "^3.6.0"
+    inherits "^2.0.3"
+    pump "^2.0.0"
+
+punycode@^1.2.4:
+  version "1.4.1"
+  resolved "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz"
+  integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
+
+punycode@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz"
+  integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
+
+punycode@^2.1.0, punycode@^2.1.1:
+  version "2.3.1"
+  resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz"
+  integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+
+q@^1.1.2:
+  version "1.5.1"
+  resolved "https://registry.npmmirror.com/q/-/q-1.5.1.tgz"
+  integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
+
+qs@^6.11.2:
+  version "6.11.2"
+  resolved "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz"
+  integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==
+  dependencies:
+    side-channel "^1.0.4"
+
+qs@~6.5.2:
+  version "6.5.3"
+  resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz"
+  integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
+
+qs@6.11.0:
+  version "6.11.0"
+  resolved "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz"
+  integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+  dependencies:
+    side-channel "^1.0.4"
+
+query-string@^4.1.0:
+  version "4.3.4"
+  resolved "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz"
+  integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==
+  dependencies:
+    object-assign "^4.1.0"
+    strict-uri-encode "^1.0.0"
+
+querystring-es3@^0.2.0:
+  version "0.2.1"
+  resolved "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz"
+  integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==
+
+querystringify@^2.1.1:
+  version "2.2.0"
+  resolved "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz"
+  integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+
+quick-lru@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz"
+  integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
+
+quick-lru@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz"
+  integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz"
+  integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+  dependencies:
+    safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz"
+  integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+  dependencies:
+    randombytes "^2.0.5"
+    safe-buffer "^5.1.0"
+
+range-parser@^1.2.1, range-parser@~1.2.1:
+  version "1.2.1"
+  resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz"
+  integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.5.1:
+  version "2.5.1"
+  resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz"
+  integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
+  dependencies:
+    bytes "3.1.2"
+    http-errors "2.0.0"
+    iconv-lite "0.4.24"
+    unpipe "1.0.0"
+
+read-pkg-up@^7.0.1:
+  version "7.0.1"
+  resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz"
+  integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
+  dependencies:
+    find-up "^4.1.0"
+    read-pkg "^5.2.0"
+    type-fest "^0.8.1"
+
+read-pkg@^5.1.1, read-pkg@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz"
+  integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
+  dependencies:
+    "@types/normalize-package-data" "^2.4.0"
+    normalize-package-data "^2.5.0"
+    parse-json "^5.0.0"
+    type-fest "^0.6.0"
+
+readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6, "readable-stream@1 || 2":
+  version "2.3.8"
+  resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
+  integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.3"
+    isarray "~1.0.0"
+    process-nextick-args "~2.0.0"
+    safe-buffer "~5.1.1"
+    string_decoder "~1.1.1"
+    util-deprecate "~1.0.1"
+
+readable-stream@^3.0.6:
+  version "3.6.2"
+  resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz"
+  integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+  dependencies:
+    inherits "^2.0.3"
+    string_decoder "^1.1.1"
+    util-deprecate "^1.0.1"
+
+readable-stream@^3.6.0:
+  version "3.6.2"
+  resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz"
+  integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+  dependencies:
+    inherits "^2.0.3"
+    string_decoder "^1.1.1"
+    util-deprecate "^1.0.1"
+
+readable-stream@^3.6.2:
+  version "3.6.2"
+  resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz"
+  integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+  dependencies:
+    inherits "^2.0.3"
+    string_decoder "^1.1.1"
+    util-deprecate "^1.0.1"
+
+readdirp@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz"
+  integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+  dependencies:
+    graceful-fs "^4.1.11"
+    micromatch "^3.1.10"
+    readable-stream "^2.0.2"
+
+readdirp@~3.6.0:
+  version "3.6.0"
+  resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz"
+  integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+  dependencies:
+    picomatch "^2.2.1"
+
+redent@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz"
+  integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
+  dependencies:
+    indent-string "^4.0.0"
+    strip-indent "^3.0.0"
+
+regenerate-unicode-properties@^10.1.0:
+  version "10.1.1"
+  resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz"
+  integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==
+  dependencies:
+    regenerate "^1.4.2"
+
+regenerate@^1.4.2:
+  version "1.4.2"
+  resolved "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz"
+  integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
+
+regenerator-runtime@^0.11.0:
+  version "0.11.1"
+  resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz"
+  integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+
+regenerator-runtime@^0.14.0:
+  version "0.14.1"
+  resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz"
+  integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+
+regenerator-transform@^0.15.2:
+  version "0.15.2"
+  resolved "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz"
+  integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==
+  dependencies:
+    "@babel/runtime" "^7.8.4"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz"
+  integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+  dependencies:
+    extend-shallow "^3.0.2"
+    safe-regex "^1.1.0"
+
+regexp.prototype.flags@^1.5.1:
+  version "1.5.1"
+  resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz"
+  integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    set-function-name "^2.0.0"
+
+regexpp@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz"
+  integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
+
+regexpu-core@^5.3.1:
+  version "5.3.2"
+  resolved "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz"
+  integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==
+  dependencies:
+    "@babel/regjsgen" "^0.8.0"
+    regenerate "^1.4.2"
+    regenerate-unicode-properties "^10.1.0"
+    regjsparser "^0.9.1"
+    unicode-match-property-ecmascript "^2.0.0"
+    unicode-match-property-value-ecmascript "^2.1.0"
+
+regjsparser@^0.9.1:
+  version "0.9.1"
+  resolved "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz"
+  integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==
+  dependencies:
+    jsesc "~0.5.0"
+
+relateurl@0.2.x:
+  version "0.2.7"
+  resolved "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz"
+  integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==
+
+remove-trailing-separator@^1.0.1:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz"
+  integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==
+
+renderkid@^2.0.4:
+  version "2.0.7"
+  resolved "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz"
+  integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==
+  dependencies:
+    css-select "^4.1.3"
+    dom-converter "^0.2.0"
+    htmlparser2 "^6.1.0"
+    lodash "^4.17.21"
+    strip-ansi "^3.0.1"
+
+repeat-element@^1.1.2:
+  version "1.1.4"
+  resolved "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz"
+  integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
+
+repeat-string@^1.6.1:
+  version "1.6.1"
+  resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz"
+  integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
+
+request@^2.88.2:
+  version "2.88.2"
+  resolved "https://registry.npmmirror.com/request/-/request-2.88.2.tgz"
+  integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+  dependencies:
+    aws-sign2 "~0.7.0"
+    aws4 "^1.8.0"
+    caseless "~0.12.0"
+    combined-stream "~1.0.6"
+    extend "~3.0.2"
+    forever-agent "~0.6.1"
+    form-data "~2.3.2"
+    har-validator "~5.1.3"
+    http-signature "~1.2.0"
+    is-typedarray "~1.0.0"
+    isstream "~0.1.2"
+    json-stringify-safe "~5.0.1"
+    mime-types "~2.1.19"
+    oauth-sign "~0.9.0"
+    performance-now "^2.1.0"
+    qs "~6.5.2"
+    safe-buffer "^5.1.2"
+    tough-cookie "~2.5.0"
+    tunnel-agent "^0.6.0"
+    uuid "^3.3.2"
+
+require-directory@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz"
+  integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+
+require-main-filename@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz"
+  integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+requires-port@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz"
+  integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
+
+resize-observer-polyfill@^1.5.0:
+  version "1.5.1"
+  resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz"
+  integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
+
+resolve-alpn@^1.0.0:
+  version "1.2.1"
+  resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz"
+  integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
+
+resolve-cwd@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz"
+  integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==
+  dependencies:
+    resolve-from "^3.0.0"
+
+resolve-from@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz"
+  integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==
+
+resolve-from@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz"
+  integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-url@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz"
+  integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
+
+resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2:
+  version "1.22.8"
+  resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz"
+  integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+  dependencies:
+    is-core-module "^2.13.0"
+    path-parse "^1.0.7"
+    supports-preserve-symlinks-flag "^1.0.0"
+
+responselike@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz"
+  integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==
+  dependencies:
+    lowercase-keys "^2.0.0"
+
+restore-cursor@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz"
+  integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==
+  dependencies:
+    onetime "^2.0.0"
+    signal-exit "^3.0.2"
+
+restore-cursor@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz"
+  integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+  dependencies:
+    onetime "^5.1.0"
+    signal-exit "^3.0.2"
+
+ret@~0.1.10:
+  version "0.1.15"
+  resolved "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz"
+  integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+retry@^0.12.0:
+  version "0.12.0"
+  resolved "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz"
+  integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
+
+rgb-regex@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz"
+  integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==
+
+rgba-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz"
+  integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==
+
+rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
+  version "2.7.1"
+  resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
+  integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+  dependencies:
+    glob "^7.1.3"
+
+rimraf@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
+  integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+  dependencies:
+    glob "^7.1.3"
+
+rimraf@2.6.3:
+  version "2.6.3"
+  resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz"
+  integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+  dependencies:
+    glob "^7.1.3"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz"
+  integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+  dependencies:
+    hash-base "^3.0.0"
+    inherits "^2.0.1"
+
+run-async@^2.4.0:
+  version "2.4.1"
+  resolved "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz"
+  integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz"
+  integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==
+  dependencies:
+    aproba "^1.1.1"
+
+rxjs@^6.6.0:
+  version "6.6.7"
+  resolved "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz"
+  integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+  dependencies:
+    tslib "^1.9.0"
+
+safe-array-concat@^1.0.0, safe-array-concat@^1.0.1:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz"
+  integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==
+  dependencies:
+    call-bind "^1.0.5"
+    get-intrinsic "^1.2.2"
+    has-symbols "^1.0.3"
+    isarray "^2.0.5"
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@>=5.1.0, safe-buffer@5.2.1:
+  version "5.2.1"
+  resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz"
+  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@~5.1.0:
+  version "5.1.2"
+  resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
+  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@~5.1.1:
+  version "5.1.2"
+  resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
+  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@5.1.2:
+  version "5.1.2"
+  resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
+  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-regex-test@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz"
+  integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==
+  dependencies:
+    call-bind "^1.0.5"
+    get-intrinsic "^1.2.2"
+    is-regex "^1.1.4"
+
+safe-regex@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz"
+  integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==
+  dependencies:
+    ret "~0.1.10"
+
+safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0:
+  version "2.1.2"
+  resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
+  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sass-graph@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz"
+  integrity sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==
+  dependencies:
+    glob "^7.0.0"
+    lodash "^4.17.11"
+    scss-tokenizer "^0.4.3"
+    yargs "^17.2.1"
+
+sass-loader@^14.2.1:
+  version "14.2.1"
+  resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz"
+  integrity sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==
+  dependencies:
+    neo-async "^2.6.2"
+
+sax@^1.2.4, sax@~1.2.4:
+  version "1.2.4"
+  resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
+  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+schema-utils@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz"
+  integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+  dependencies:
+    ajv "^6.1.0"
+    ajv-errors "^1.0.0"
+    ajv-keywords "^3.1.0"
+
+schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.7.0:
+  version "2.7.1"
+  resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz"
+  integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
+  dependencies:
+    "@types/json-schema" "^7.0.5"
+    ajv "^6.12.4"
+    ajv-keywords "^3.5.2"
+
+scss-tokenizer@^0.4.3:
+  version "0.4.3"
+  resolved "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz"
+  integrity sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==
+  dependencies:
+    js-base64 "^2.4.9"
+    source-map "^0.7.3"
+
+select-hose@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz"
+  integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
+
+selfsigned@^1.10.8:
+  version "1.10.14"
+  resolved "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz"
+  integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==
+  dependencies:
+    node-forge "^0.10.0"
+
+semver@^5.5.0:
+  version "5.7.2"
+  resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+  integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^5.6.0:
+  version "5.7.2"
+  resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+  integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1:
+  version "6.3.1"
+  resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
+  integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^7.3.4:
+  version "7.6.2"
+  resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
+  integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
+
+semver@^7.3.5:
+  version "7.6.2"
+  resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
+  integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
+
+"semver@2 || 3 || 4 || 5":
+  version "5.7.2"
+  resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
+  integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+send@0.18.0:
+  version "0.18.0"
+  resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz"
+  integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
+  dependencies:
+    debug "2.6.9"
+    depd "2.0.0"
+    destroy "1.2.0"
+    encodeurl "~1.0.2"
+    escape-html "~1.0.3"
+    etag "~1.8.1"
+    fresh "0.5.2"
+    http-errors "2.0.0"
+    mime "1.6.0"
+    ms "2.1.3"
+    on-finished "2.4.1"
+    range-parser "~1.2.1"
+    statuses "2.0.1"
+
+serialize-javascript@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz"
+  integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
+  dependencies:
+    randombytes "^2.1.0"
+
+serve-index@^1.9.1:
+  version "1.9.1"
+  resolved "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz"
+  integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
+  dependencies:
+    accepts "~1.3.4"
+    batch "0.6.1"
+    debug "2.6.9"
+    escape-html "~1.0.3"
+    http-errors "~1.6.2"
+    mime-types "~2.1.17"
+    parseurl "~1.3.2"
+
+serve-static@1.15.0:
+  version "1.15.0"
+  resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz"
+  integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
+  dependencies:
+    encodeurl "~1.0.2"
+    escape-html "~1.0.3"
+    parseurl "~1.3.3"
+    send "0.18.0"
+
+set-blocking@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz"
+  integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
+
+set-function-length@^1.1.1:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.0.tgz"
+  integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==
+  dependencies:
+    define-data-property "^1.1.1"
+    function-bind "^1.1.2"
+    get-intrinsic "^1.2.2"
+    gopd "^1.0.1"
+    has-property-descriptors "^1.0.1"
+
+set-function-name@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.1.tgz"
+  integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==
+  dependencies:
+    define-data-property "^1.0.1"
+    functions-have-names "^1.2.3"
+    has-property-descriptors "^1.0.0"
+
+set-value@^2.0.0, set-value@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz"
+  integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+  dependencies:
+    extend-shallow "^2.0.1"
+    is-extendable "^0.1.1"
+    is-plain-object "^2.0.3"
+    split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+  version "1.0.5"
+  resolved "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz"
+  integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
+
+setprototypeof@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz"
+  integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+
+setprototypeof@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz"
+  integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+  version "2.4.11"
+  resolved "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz"
+  integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+  dependencies:
+    inherits "^2.0.1"
+    safe-buffer "^5.0.1"
+
+shebang-command@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz"
+  integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
+  dependencies:
+    shebang-regex "^1.0.0"
+
+shebang-command@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
+  integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+  dependencies:
+    shebang-regex "^3.0.0"
+
+shebang-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz"
+  integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
+
+shebang-regex@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
+  integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+shell-quote@^1.8.1:
+  version "1.8.1"
+  resolved "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz"
+  integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
+
+side-channel@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz"
+  integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+  dependencies:
+    call-bind "^1.0.0"
+    get-intrinsic "^1.0.2"
+    object-inspect "^1.9.0"
+
+signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.7:
+  version "3.0.7"
+  resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz"
+  integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+simple-swizzle@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
+  integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
+  dependencies:
+    is-arrayish "^0.3.1"
+
+slash@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz"
+  integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==
+
+slash@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz"
+  integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+
+slice-ansi@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz"
+  integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
+  dependencies:
+    ansi-styles "^3.2.0"
+    astral-regex "^1.0.0"
+    is-fullwidth-code-point "^2.0.0"
+
+smart-buffer@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
+  integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
+
+snapdragon-node@^2.0.1:
+  version "2.1.1"
+  resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz"
+  integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+  dependencies:
+    define-property "^1.0.0"
+    isobject "^3.0.0"
+    snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz"
+  integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+  dependencies:
+    kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+  version "0.8.2"
+  resolved "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz"
+  integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+  dependencies:
+    base "^0.11.1"
+    debug "^2.2.0"
+    define-property "^0.2.5"
+    extend-shallow "^2.0.1"
+    map-cache "^0.2.2"
+    source-map "^0.5.6"
+    source-map-resolve "^0.5.0"
+    use "^3.1.0"
+
+sockjs-client@^1.5.0:
+  version "1.6.1"
+  resolved "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.1.tgz"
+  integrity sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==
+  dependencies:
+    debug "^3.2.7"
+    eventsource "^2.0.2"
+    faye-websocket "^0.11.4"
+    inherits "^2.0.4"
+    url-parse "^1.5.10"
+
+sockjs@^0.3.21:
+  version "0.3.24"
+  resolved "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz"
+  integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
+  dependencies:
+    faye-websocket "^0.11.3"
+    uuid "^8.3.2"
+    websocket-driver "^0.7.4"
+
+socks-proxy-agent@^6.0.0:
+  version "6.2.1"
+  resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz"
+  integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==
+  dependencies:
+    agent-base "^6.0.2"
+    debug "^4.3.3"
+    socks "^2.6.2"
+
+socks-proxy-agent@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz"
+  integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==
+  dependencies:
+    agent-base "^6.0.2"
+    debug "^4.3.3"
+    socks "^2.6.2"
+
+socks@^2.6.2:
+  version "2.8.3"
+  resolved "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz"
+  integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==
+  dependencies:
+    ip-address "^9.0.5"
+    smart-buffer "^4.2.0"
+
+sort-keys@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz"
+  integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==
+  dependencies:
+    is-plain-obj "^1.0.0"
+
+source-list-map@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz"
+  integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-js@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz"
+  integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map-resolve@^0.5.0:
+  version "0.5.3"
+  resolved "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz"
+  integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
+  dependencies:
+    atob "^2.1.2"
+    decode-uri-component "^0.2.0"
+    resolve-url "^0.2.1"
+    source-map-url "^0.4.0"
+    urix "^0.1.0"
+
+source-map-support@~0.5.12:
+  version "0.5.21"
+  resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz"
+  integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+  dependencies:
+    buffer-from "^1.0.0"
+    source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+  version "0.4.1"
+  resolved "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz"
+  integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
+
+source-map@^0.5.6:
+  version "0.5.7"
+  resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz"
+  integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
+  version "0.6.1"
+  resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
+  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+  version "0.7.4"
+  resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
+  integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+spdx-correct@^3.0.0:
+  version "3.2.0"
+  resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz"
+  integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==
+  dependencies:
+    spdx-expression-parse "^3.0.0"
+    spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+  version "2.4.0"
+  resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz"
+  integrity sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==
+
+spdx-expression-parse@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz"
+  integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+  dependencies:
+    spdx-exceptions "^2.1.0"
+    spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+  version "3.0.16"
+  resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz"
+  integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==
+
+spdy-transport@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz"
+  integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
+  dependencies:
+    debug "^4.1.0"
+    detect-node "^2.0.4"
+    hpack.js "^2.1.6"
+    obuf "^1.1.2"
+    readable-stream "^3.0.6"
+    wbuf "^1.7.3"
+
+spdy@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz"
+  integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
+  dependencies:
+    debug "^4.1.0"
+    handle-thing "^2.0.0"
+    http-deceiver "^1.2.7"
+    select-hose "^2.0.0"
+    spdy-transport "^3.0.0"
+
+split-string@^3.0.1, split-string@^3.0.2:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz"
+  integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+  dependencies:
+    extend-shallow "^3.0.0"
+
+sprintf-js@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz"
+  integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
+
+sprintf-js@~1.0.2:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz"
+  integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
+sshpk@^1.7.0:
+  version "1.18.0"
+  resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.18.0.tgz"
+  integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==
+  dependencies:
+    asn1 "~0.2.3"
+    assert-plus "^1.0.0"
+    bcrypt-pbkdf "^1.0.0"
+    dashdash "^1.12.0"
+    ecc-jsbn "~0.1.1"
+    getpass "^0.1.1"
+    jsbn "~0.1.0"
+    safer-buffer "^2.0.2"
+    tweetnacl "~0.14.0"
+
+ssri@^6.0.1:
+  version "6.0.2"
+  resolved "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz"
+  integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==
+  dependencies:
+    figgy-pudding "^3.5.1"
+
+ssri@^8.0.0, ssri@^8.0.1:
+  version "8.0.1"
+  resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz"
+  integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
+  dependencies:
+    minipass "^3.1.1"
+
+ssri@^9.0.0:
+  version "9.0.1"
+  resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz"
+  integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==
+  dependencies:
+    minipass "^3.1.1"
+
+stable@^0.1.8:
+  version "0.1.8"
+  resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz"
+  integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+stackframe@^1.3.4:
+  version "1.3.4"
+  resolved "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz"
+  integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
+
+static-extend@^0.1.1:
+  version "0.1.2"
+  resolved "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz"
+  integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==
+  dependencies:
+    define-property "^0.2.5"
+    object-copy "^0.1.0"
+
+"statuses@>= 1.4.0 < 2":
+  version "1.5.0"
+  resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz"
+  integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+
+statuses@2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz"
+  integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
+stdout-stream@^1.4.0:
+  version "1.4.1"
+  resolved "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz"
+  integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==
+  dependencies:
+    readable-stream "^2.0.1"
+
+stream-browserify@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz"
+  integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
+  dependencies:
+    inherits "~2.0.1"
+    readable-stream "^2.0.2"
+
+stream-each@^1.1.0:
+  version "1.2.3"
+  resolved "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz"
+  integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+  dependencies:
+    end-of-stream "^1.1.0"
+    stream-shift "^1.0.0"
+
+stream-http@^2.7.2:
+  version "2.8.3"
+  resolved "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz"
+  integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+  dependencies:
+    builtin-status-codes "^3.0.0"
+    inherits "^2.0.1"
+    readable-stream "^2.3.6"
+    to-arraybuffer "^1.0.0"
+    xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.3.tgz"
+  integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==
+
+strict-uri-encode@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz"
+  integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
+
+string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz"
+  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+  dependencies:
+    safe-buffer "~5.1.0"
+
+"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+  version "4.2.3"
+  resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
+  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+  dependencies:
+    emoji-regex "^8.0.0"
+    is-fullwidth-code-point "^3.0.0"
+    strip-ansi "^6.0.1"
+
+string-width@^3.0.0, string-width@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz"
+  integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+  dependencies:
+    emoji-regex "^7.0.1"
+    is-fullwidth-code-point "^2.0.0"
+    strip-ansi "^5.1.0"
+
+string.prototype.trim@^1.2.8:
+  version "1.2.8"
+  resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz"
+  integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+
+string.prototype.trimend@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz"
+  integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+
+string.prototype.trimstart@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz"
+  integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+
+strip-ansi@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz"
+  integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==
+  dependencies:
+    ansi-regex "^2.0.0"
+
+strip-ansi@^5.0.0:
+  version "5.2.0"
+  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz"
+  integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+  dependencies:
+    ansi-regex "^4.1.0"
+
+strip-ansi@^5.1.0:
+  version "5.2.0"
+  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz"
+  integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+  dependencies:
+    ansi-regex "^4.1.0"
+
+strip-ansi@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz"
+  integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+  dependencies:
+    ansi-regex "^4.1.0"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+  version "6.0.1"
+  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz"
+  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+  dependencies:
+    ansi-regex "^5.0.1"
+
+strip-eof@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz"
+  integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==
+
+strip-final-newline@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz"
+  integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-indent@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz"
+  integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==
+
+strip-indent@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz"
+  integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
+  dependencies:
+    min-indent "^1.0.0"
+
+strip-json-comments@^3.0.1:
+  version "3.1.1"
+  resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+  integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+stylehacks@^4.0.0:
+  version "4.0.3"
+  resolved "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz"
+  integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
+  dependencies:
+    browserslist "^4.0.0"
+    postcss "^7.0.0"
+    postcss-selector-parser "^3.0.0"
+
+supports-color@^5.3.0:
+  version "5.5.0"
+  resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz"
+  integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+  dependencies:
+    has-flag "^3.0.0"
+
+supports-color@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz"
+  integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+  dependencies:
+    has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+  version "7.2.0"
+  resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
+  integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+  dependencies:
+    has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
+  integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svg-tags@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz"
+  integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
+
+svgo@^1.0.0:
+  version "1.3.2"
+  resolved "https://registry.npmmirror.com/svgo/-/svgo-1.3.2.tgz"
+  integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
+  dependencies:
+    chalk "^2.4.1"
+    coa "^2.0.2"
+    css-select "^2.0.0"
+    css-select-base-adapter "^0.1.1"
+    css-tree "1.0.0-alpha.37"
+    csso "^4.0.2"
+    js-yaml "^3.13.1"
+    mkdirp "~0.5.1"
+    object.values "^1.1.0"
+    sax "~1.2.4"
+    stable "^0.1.8"
+    unquote "~1.1.1"
+    util.promisify "~1.0.0"
+
+table@^5.2.3:
+  version "5.4.6"
+  resolved "https://registry.npmmirror.com/table/-/table-5.4.6.tgz"
+  integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
+  dependencies:
+    ajv "^6.10.2"
+    lodash "^4.17.14"
+    slice-ansi "^2.1.0"
+    string-width "^3.0.0"
+
+tapable@^1.0.0, tapable@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz"
+  integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+tar@^6.0.2, tar@^6.1.11, tar@^6.1.2:
+  version "6.2.1"
+  resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz"
+  integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
+  dependencies:
+    chownr "^2.0.0"
+    fs-minipass "^2.0.0"
+    minipass "^5.0.0"
+    minizlib "^2.1.1"
+    mkdirp "^1.0.3"
+    yallist "^4.0.0"
+
+terser-webpack-plugin@^1.4.3, terser-webpack-plugin@^1.4.4:
+  version "1.4.5"
+  resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz"
+  integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==
+  dependencies:
+    cacache "^12.0.2"
+    find-cache-dir "^2.1.0"
+    is-wsl "^1.1.0"
+    schema-utils "^1.0.0"
+    serialize-javascript "^4.0.0"
+    source-map "^0.6.1"
+    terser "^4.1.2"
+    webpack-sources "^1.4.0"
+    worker-farm "^1.7.0"
+
+terser@^4.1.2:
+  version "4.8.1"
+  resolved "https://registry.npmmirror.com/terser/-/terser-4.8.1.tgz"
+  integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==
+  dependencies:
+    commander "^2.20.0"
+    source-map "~0.6.1"
+    source-map-support "~0.5.12"
+
+text-table@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz"
+  integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+
+thenify-all@^1.0.0:
+  version "1.6.0"
+  resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz"
+  integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
+  dependencies:
+    thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+  version "3.3.1"
+  resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz"
+  integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
+  dependencies:
+    any-promise "^1.0.0"
+
+thread-loader@^2.1.3:
+  version "2.1.3"
+  resolved "https://registry.npmmirror.com/thread-loader/-/thread-loader-2.1.3.tgz"
+  integrity sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==
+  dependencies:
+    loader-runner "^2.3.1"
+    loader-utils "^1.1.0"
+    neo-async "^2.6.0"
+
+throttle-debounce@^1.0.1:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz"
+  integrity sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==
+
+through@^2.3.6:
+  version "2.3.8"
+  resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz"
+  integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
+through2@^2.0.0:
+  version "2.0.5"
+  resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz"
+  integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+  dependencies:
+    readable-stream "~2.3.6"
+    xtend "~4.0.1"
+
+thunky@^1.0.2:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz"
+  integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+
+timers-browserify@^2.0.4:
+  version "2.0.12"
+  resolved "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz"
+  integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
+  dependencies:
+    setimmediate "^1.0.4"
+
+timsort@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz"
+  integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==
+
+tmp@^0.0.33:
+  version "0.0.33"
+  resolved "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz"
+  integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+  dependencies:
+    os-tmpdir "~1.0.2"
+
+to-arraybuffer@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz"
+  integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==
+
+to-fast-properties@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
+  integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+to-object-path@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz"
+  integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==
+  dependencies:
+    kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+  version "2.1.1"
+  resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz"
+  integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==
+  dependencies:
+    is-number "^3.0.0"
+    repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz"
+  integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+  dependencies:
+    is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz"
+  integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+  dependencies:
+    define-property "^2.0.2"
+    extend-shallow "^3.0.2"
+    regex-not "^1.0.2"
+    safe-regex "^1.1.0"
+
+toidentifier@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz"
+  integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+toposort@^1.0.0:
+  version "1.0.7"
+  resolved "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz"
+  integrity sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==
+
+tough-cookie@~2.5.0:
+  version "2.5.0"
+  resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz"
+  integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+  dependencies:
+    psl "^1.1.28"
+    punycode "^2.1.1"
+
+trim-newlines@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz"
+  integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
+
+"true-case-path@^2.2.1":
+  version "2.2.1"
+  resolved "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz"
+  integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==
+
+tryer@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz"
+  integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+
+ts-pnp@^1.1.6:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/ts-pnp/-/ts-pnp-1.2.0.tgz"
+  integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
+
+tslib@^1.9.0:
+  version "1.14.1"
+  resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz"
+  integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^2.3.0:
+  version "2.6.2"
+  resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz"
+  integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
+tty-browserify@0.0.0:
+  version "0.0.0"
+  resolved "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz"
+  integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==
+
+tunnel-agent@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz"
+  integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
+  dependencies:
+    safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+  version "0.14.5"
+  resolved "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz"
+  integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
+
+type-check@~0.3.2:
+  version "0.3.2"
+  resolved "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz"
+  integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==
+  dependencies:
+    prelude-ls "~1.1.2"
+
+type-fest@^0.18.0:
+  version "0.18.1"
+  resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz"
+  integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
+
+type-fest@^0.21.3:
+  version "0.21.3"
+  resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz"
+  integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
+type-fest@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz"
+  integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
+
+type-fest@^0.8.1:
+  version "0.8.1"
+  resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz"
+  integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+type-is@~1.6.18:
+  version "1.6.18"
+  resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz"
+  integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+  dependencies:
+    media-typer "0.3.0"
+    mime-types "~2.1.24"
+
+typed-array-buffer@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz"
+  integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==
+  dependencies:
+    call-bind "^1.0.2"
+    get-intrinsic "^1.2.1"
+    is-typed-array "^1.1.10"
+
+typed-array-byte-length@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz"
+  integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==
+  dependencies:
+    call-bind "^1.0.2"
+    for-each "^0.3.3"
+    has-proto "^1.0.1"
+    is-typed-array "^1.1.10"
+
+typed-array-byte-offset@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz"
+  integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==
+  dependencies:
+    available-typed-arrays "^1.0.5"
+    call-bind "^1.0.2"
+    for-each "^0.3.3"
+    has-proto "^1.0.1"
+    is-typed-array "^1.1.10"
+
+typed-array-length@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.4.tgz"
+  integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==
+  dependencies:
+    call-bind "^1.0.2"
+    for-each "^0.3.3"
+    is-typed-array "^1.1.9"
+
+typedarray@^0.0.6:
+  version "0.0.6"
+  resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz"
+  integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
+
+uc.micro@^1.0.1:
+  version "1.0.6"
+  resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz"
+  integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
+
+uglify-js@3.4.x:
+  version "3.4.10"
+  resolved "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz"
+  integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==
+  dependencies:
+    commander "~2.19.0"
+    source-map "~0.6.1"
+
+unbox-primitive@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
+  integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
+  dependencies:
+    call-bind "^1.0.2"
+    has-bigints "^1.0.2"
+    has-symbols "^1.0.3"
+    which-boxed-primitive "^1.0.2"
+
+undici-types@~5.26.4:
+  version "5.26.5"
+  resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz"
+  integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+
+unicode-canonical-property-names-ecmascript@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz"
+  integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
+
+unicode-match-property-ecmascript@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz"
+  integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
+  dependencies:
+    unicode-canonical-property-names-ecmascript "^2.0.0"
+    unicode-property-aliases-ecmascript "^2.0.0"
+
+unicode-match-property-value-ecmascript@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz"
+  integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==
+
+unicode-property-aliases-ecmascript@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz"
+  integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
+
+union-value@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz"
+  integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+  dependencies:
+    arr-union "^3.1.0"
+    get-value "^2.0.6"
+    is-extendable "^0.1.1"
+    set-value "^2.0.1"
+
+uniq@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz"
+  integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==
+
+uniqs@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz"
+  integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==
+
+unique-filename@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz"
+  integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+  dependencies:
+    unique-slug "^2.0.0"
+
+unique-filename@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz"
+  integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==
+  dependencies:
+    unique-slug "^3.0.0"
+
+unique-slug@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz"
+  integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+  dependencies:
+    imurmurhash "^0.1.4"
+
+unique-slug@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz"
+  integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==
+  dependencies:
+    imurmurhash "^0.1.4"
+
+universalify@^0.1.0:
+  version "0.1.2"
+  resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz"
+  integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+"unorm@>= 1.0.0":
+  version "1.6.0"
+  resolved "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz"
+  integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==
+
+unpipe@~1.0.0, unpipe@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz"
+  integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
+
+unquote@~1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz"
+  integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==
+
+unset-value@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz"
+  integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==
+  dependencies:
+    has-value "^0.3.1"
+    isobject "^3.0.0"
+
+upath@^1.1.1:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz"
+  integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+
+update-browserslist-db@^1.0.13:
+  version "1.0.13"
+  resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz"
+  integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
+  dependencies:
+    escalade "^3.1.1"
+    picocolors "^1.0.0"
+
+upper-case@^1.1.1:
+  version "1.1.3"
+  resolved "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz"
+  integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==
+
+uri-js@^4.2.2:
+  version "4.4.1"
+  resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz"
+  integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+  dependencies:
+    punycode "^2.1.0"
+
+urix@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz"
+  integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==
+
+url-loader@^2.2.0:
+  version "2.3.0"
+  resolved "https://registry.npmmirror.com/url-loader/-/url-loader-2.3.0.tgz"
+  integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==
+  dependencies:
+    loader-utils "^1.2.3"
+    mime "^2.4.4"
+    schema-utils "^2.5.0"
+
+url-parse@^1.5.10:
+  version "1.5.10"
+  resolved "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz"
+  integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
+  dependencies:
+    querystringify "^2.1.1"
+    requires-port "^1.0.0"
+
+url@^0.11.0:
+  version "0.11.3"
+  resolved "https://registry.npmmirror.com/url/-/url-0.11.3.tgz"
+  integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==
+  dependencies:
+    punycode "^1.4.1"
+    qs "^6.11.2"
+
+use@^3.1.0:
+  version "3.1.1"
+  resolved "https://registry.npmmirror.com/use/-/use-3.1.1.tgz"
+  integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+uslug@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npmjs.org/uslug/-/uslug-1.0.4.tgz"
+  integrity sha512-Jrbpp/NS3TvIGNjfJT1sn3/BCeykoxR8GbNYW5lF6fUscLkbXFwj1b7m4DvIkHm8k3Qr6Co68lbTmoZTMGk/ow==
+  dependencies:
+    unorm ">= 1.0.0"
+
+util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz"
+  integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+util.promisify@~1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz"
+  integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
+  dependencies:
+    define-properties "^1.1.3"
+    es-abstract "^1.17.2"
+    has-symbols "^1.0.1"
+    object.getownpropertydescriptors "^2.1.0"
+
+util.promisify@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz"
+  integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
+  dependencies:
+    define-properties "^1.1.2"
+    object.getownpropertydescriptors "^2.0.3"
+
+util@^0.10.4:
+  version "0.10.4"
+  resolved "https://registry.npmmirror.com/util/-/util-0.10.4.tgz"
+  integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
+  dependencies:
+    inherits "2.0.3"
+
+util@^0.11.0:
+  version "0.11.1"
+  resolved "https://registry.npmmirror.com/util/-/util-0.11.1.tgz"
+  integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
+  dependencies:
+    inherits "2.0.3"
+
+utila@~0.4:
+  version "0.4.0"
+  resolved "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz"
+  integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==
+
+utils-merge@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz"
+  integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
+
+uuid@^3.3.2:
+  version "3.4.0"
+  resolved "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz"
+  integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
+uuid@^8.3.2:
+  version "8.3.2"
+  resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz"
+  integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+v8-compile-cache@^2.0.3:
+  version "2.4.0"
+  resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz"
+  integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==
+
+validate-npm-package-license@^3.0.1:
+  version "3.0.4"
+  resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"
+  integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+  dependencies:
+    spdx-correct "^3.0.0"
+    spdx-expression-parse "^3.0.0"
+
+vary@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz"
+  integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
+
+vendors@^1.0.0:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz"
+  integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
+
+verror@1.10.0:
+  version "1.10.0"
+  resolved "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz"
+  integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==
+  dependencies:
+    assert-plus "^1.0.0"
+    core-util-is "1.0.2"
+    extsprintf "^1.2.0"
+
+vm-browserify@^1.0.1:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz"
+  integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
+
+vue-eslint-parser@^7.0.0:
+  version "7.11.0"
+  resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz"
+  integrity sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==
+  dependencies:
+    debug "^4.1.1"
+    eslint-scope "^5.1.1"
+    eslint-visitor-keys "^1.1.0"
+    espree "^6.2.1"
+    esquery "^1.4.0"
+    lodash "^4.17.21"
+    semver "^6.3.0"
+
+vue-hot-reload-api@^2.3.0:
+  version "2.3.4"
+  resolved "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz"
+  integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
+
+"vue-loader-v16@npm:vue-loader@^16.1.0":
+  version "16.8.3"
+  resolved "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz"
+  integrity sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==
+  dependencies:
+    chalk "^4.1.0"
+    hash-sum "^2.0.0"
+    loader-utils "^2.0.0"
+
+vue-loader@^15.9.2:
+  version "15.11.1"
+  resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz"
+  integrity sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==
+  dependencies:
+    "@vue/component-compiler-utils" "^3.1.0"
+    hash-sum "^1.0.2"
+    loader-utils "^1.1.0"
+    vue-hot-reload-api "^2.3.0"
+    vue-style-loader "^4.1.0"
+
+vue-markdown@^2.2.4:
+  version "2.2.4"
+  resolved "https://registry.npmjs.org/vue-markdown/-/vue-markdown-2.2.4.tgz"
+  integrity sha512-hoTX/W1UIdHZrp/b0vpHSsJXAEfWsafaQLgtE2VX4gY8O/C3L2Gabqu95gyG429rL4ML1SwGv+xsPABX7yfFIQ==
+  dependencies:
+    highlight.js "^9.12.0"
+    markdown-it "^6.0.1"
+    markdown-it-abbr "^1.0.3"
+    markdown-it-deflist "^2.0.1"
+    markdown-it-emoji "^1.1.1"
+    markdown-it-footnote "^2.0.0"
+    markdown-it-ins "^2.0.0"
+    markdown-it-katex "^2.0.3"
+    markdown-it-mark "^2.0.0"
+    markdown-it-sub "^1.0.0"
+    markdown-it-sup "^1.0.0"
+    markdown-it-task-lists "^2.0.1"
+    markdown-it-toc-and-anchor "^4.1.2"
+
+vue-resource@^1.5.3:
+  version "1.5.3"
+  resolved "https://registry.npmjs.org/vue-resource/-/vue-resource-1.5.3.tgz"
+  integrity sha512-REhTuEuYSpwmEH/VN4fgDQVC/VXxDK/xsguuiDPnINxOwy1s0CSu//p++osTUkiAXi6d/vptwBpb0AcBIDsXzw==
+  dependencies:
+    got ">=8.0 <12.0"
+
+vue-router@^3.6.5:
+  version "3.6.5"
+  resolved "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz"
+  integrity sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==
+
+vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
+  version "4.1.3"
+  resolved "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz"
+  integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==
+  dependencies:
+    hash-sum "^1.0.2"
+    loader-utils "^1.0.2"
+
+vue-template-compiler@^2.0.0, vue-template-compiler@^2.6.11:
+  version "2.7.16"
+  resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz"
+  integrity sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==
+  dependencies:
+    de-indent "^1.0.2"
+    he "^1.2.0"
+
+vue-template-es2015-compiler@^1.9.0:
+  version "1.9.1"
+  resolved "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
+  integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
+
+vue@*, "vue@^2 || ^3.0.0-0", vue@^2.0.0, vue@^2.5.17, vue@^2.6.11:
+  version "2.7.16"
+  resolved "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz"
+  integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==
+  dependencies:
+    "@vue/compiler-sfc" "2.7.16"
+    csstype "^3.1.0"
+
+vuex@^3.6.2:
+  version "3.6.2"
+  resolved "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz"
+  integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==
+
+watchpack-chokidar2@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz"
+  integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
+  dependencies:
+    chokidar "^2.1.8"
+
+watchpack@^1.7.4:
+  version "1.7.5"
+  resolved "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz"
+  integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
+  dependencies:
+    graceful-fs "^4.1.2"
+    neo-async "^2.5.0"
+  optionalDependencies:
+    chokidar "^3.4.1"
+    watchpack-chokidar2 "^2.0.1"
+
+wbuf@^1.1.0, wbuf@^1.7.3:
+  version "1.7.3"
+  resolved "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz"
+  integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
+  dependencies:
+    minimalistic-assert "^1.0.0"
+
+wcwidth@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz"
+  integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
+  dependencies:
+    defaults "^1.0.3"
+
+webpack-bundle-analyzer@^3.8.0:
+  version "3.9.0"
+  resolved "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz"
+  integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==
+  dependencies:
+    acorn "^7.1.1"
+    acorn-walk "^7.1.1"
+    bfj "^6.1.1"
+    chalk "^2.4.1"
+    commander "^2.18.0"
+    ejs "^2.6.1"
+    express "^4.16.3"
+    filesize "^3.6.1"
+    gzip-size "^5.0.0"
+    lodash "^4.17.19"
+    mkdirp "^0.5.1"
+    opener "^1.5.1"
+    ws "^6.0.0"
+
+webpack-chain@^6.4.0:
+  version "6.5.1"
+  resolved "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz"
+  integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==
+  dependencies:
+    deepmerge "^1.5.2"
+    javascript-stringify "^2.0.1"
+
+webpack-dev-middleware@^3.7.2:
+  version "3.7.3"
+  resolved "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz"
+  integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==
+  dependencies:
+    memory-fs "^0.4.1"
+    mime "^2.4.4"
+    mkdirp "^0.5.1"
+    range-parser "^1.2.1"
+    webpack-log "^2.0.0"
+
+webpack-dev-server@^3.11.0:
+  version "3.11.3"
+  resolved "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz"
+  integrity sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==
+  dependencies:
+    ansi-html-community "0.0.8"
+    bonjour "^3.5.0"
+    chokidar "^2.1.8"
+    compression "^1.7.4"
+    connect-history-api-fallback "^1.6.0"
+    debug "^4.1.1"
+    del "^4.1.1"
+    express "^4.17.1"
+    html-entities "^1.3.1"
+    http-proxy-middleware "0.19.1"
+    import-local "^2.0.0"
+    internal-ip "^4.3.0"
+    ip "^1.1.5"
+    is-absolute-url "^3.0.3"
+    killable "^1.0.1"
+    loglevel "^1.6.8"
+    opn "^5.5.0"
+    p-retry "^3.0.1"
+    portfinder "^1.0.26"
+    schema-utils "^1.0.0"
+    selfsigned "^1.10.8"
+    semver "^6.3.0"
+    serve-index "^1.9.1"
+    sockjs "^0.3.21"
+    sockjs-client "^1.5.0"
+    spdy "^4.0.2"
+    strip-ansi "^3.0.1"
+    supports-color "^6.1.0"
+    url "^0.11.0"
+    webpack-dev-middleware "^3.7.2"
+    webpack-log "^2.0.0"
+    ws "^6.2.1"
+    yargs "^13.3.2"
+
+webpack-log@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz"
+  integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
+  dependencies:
+    ansi-colors "^3.0.0"
+    uuid "^3.3.2"
+
+webpack-merge@^4.2.2:
+  version "4.2.2"
+  resolved "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz"
+  integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==
+  dependencies:
+    lodash "^4.17.15"
+
+webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1:
+  version "1.4.3"
+  resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz"
+  integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+  dependencies:
+    source-list-map "^2.0.0"
+    source-map "~0.6.1"
+
+"webpack@^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.1.0 || ^5.0.0-0", webpack@^4.0.0, "webpack@^4.0.0 || ^5.0.0", webpack@^4.4.0, webpack@^5.0.0, webpack@>=2, "webpack@>=2.0.0 <5.0.0", webpack@>=4.0.0:
+  version "4.47.0"
+  resolved "https://registry.npmmirror.com/webpack/-/webpack-4.47.0.tgz"
+  integrity sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==
+  dependencies:
+    "@webassemblyjs/ast" "1.9.0"
+    "@webassemblyjs/helper-module-context" "1.9.0"
+    "@webassemblyjs/wasm-edit" "1.9.0"
+    "@webassemblyjs/wasm-parser" "1.9.0"
+    acorn "^6.4.1"
+    ajv "^6.10.2"
+    ajv-keywords "^3.4.1"
+    chrome-trace-event "^1.0.2"
+    enhanced-resolve "^4.5.0"
+    eslint-scope "^4.0.3"
+    json-parse-better-errors "^1.0.2"
+    loader-runner "^2.4.0"
+    loader-utils "^1.2.3"
+    memory-fs "^0.4.1"
+    micromatch "^3.1.10"
+    mkdirp "^0.5.3"
+    neo-async "^2.6.1"
+    node-libs-browser "^2.2.1"
+    schema-utils "^1.0.0"
+    tapable "^1.1.3"
+    terser-webpack-plugin "^1.4.3"
+    watchpack "^1.7.4"
+    webpack-sources "^1.4.1"
+
+websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
+  version "0.7.4"
+  resolved "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz"
+  integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
+  dependencies:
+    http-parser-js ">=0.5.1"
+    safe-buffer ">=5.1.0"
+    websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+  version "0.1.4"
+  resolved "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz"
+  integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+
+wechat-emoji-parser@^1.0.4, wechat-emoji-parser@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.npmmirror.com/wechat-emoji-parser/-/wechat-emoji-parser-1.1.1.tgz"
+  integrity sha512-FOB3KIhyEYmYledm/gnyHitL+sq1SGvDPpUE1AYxougmcd1/ibGHld/J+GDC+8DtgxsmGpY5f30gTFX0zwtTJQ==
+
+which-boxed-primitive@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
+  integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+  dependencies:
+    is-bigint "^1.0.1"
+    is-boolean-object "^1.1.0"
+    is-number-object "^1.0.4"
+    is-string "^1.0.5"
+    is-symbol "^1.0.3"
+
+which-module@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz"
+  integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
+
+which-typed-array@^1.1.11, which-typed-array@^1.1.13:
+  version "1.1.13"
+  resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.13.tgz"
+  integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==
+  dependencies:
+    available-typed-arrays "^1.0.5"
+    call-bind "^1.0.4"
+    for-each "^0.3.3"
+    gopd "^1.0.1"
+    has-tostringtag "^1.0.0"
+
+which@^1.2.9:
+  version "1.3.1"
+  resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz"
+  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+  dependencies:
+    isexe "^2.0.0"
+
+which@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
+  integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+  dependencies:
+    isexe "^2.0.0"
+
+which@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
+  integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+  dependencies:
+    isexe "^2.0.0"
+
+wide-align@^1.1.5:
+  version "1.1.5"
+  resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz"
+  integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
+  dependencies:
+    string-width "^1.0.2 || 2 || 3 || 4"
+
+word-wrap@~1.2.3:
+  version "1.2.5"
+  resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz"
+  integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
+
+worker-farm@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz"
+  integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+  dependencies:
+    errno "~0.1.7"
+
+wrap-ansi@^5.1.0:
+  version "5.1.0"
+  resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz"
+  integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+  dependencies:
+    ansi-styles "^3.2.0"
+    string-width "^3.0.0"
+    strip-ansi "^5.0.0"
+
+wrap-ansi@^6.2.0:
+  version "6.2.0"
+  resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
+  integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+  dependencies:
+    ansi-styles "^4.0.0"
+    string-width "^4.1.0"
+    strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+  dependencies:
+    ansi-styles "^4.0.0"
+    string-width "^4.1.0"
+    strip-ansi "^6.0.0"
+
+wrappy@1:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz"
+  integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+write@1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmmirror.com/write/-/write-1.0.3.tgz"
+  integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+  dependencies:
+    mkdirp "^0.5.1"
+
+ws@^6.0.0, ws@^6.2.1:
+  version "6.2.2"
+  resolved "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz"
+  integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==
+  dependencies:
+    async-limiter "~1.0.0"
+
+xtend@^4.0.0, xtend@~4.0.1:
+  version "4.0.2"
+  resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz"
+  integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^4.0.0:
+  version "4.0.3"
+  resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz"
+  integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
+
+y18n@^5.0.5:
+  version "5.0.8"
+  resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz"
+  integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
+yallist@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz"
+  integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
+
+yallist@^3.0.2:
+  version "3.1.1"
+  resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz"
+  integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
+  integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yargs-parser@^13.1.2:
+  version "13.1.2"
+  resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz"
+  integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
+  dependencies:
+    camelcase "^5.0.0"
+    decamelize "^1.2.0"
+
+yargs-parser@^20.2.2, yargs-parser@^20.2.3:
+  version "20.2.9"
+  resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz"
+  integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
+yargs-parser@^21.1.1:
+  version "21.1.1"
+  resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
+  integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+
+yargs@^13.3.2:
+  version "13.3.2"
+  resolved "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz"
+  integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
+  dependencies:
+    cliui "^5.0.0"
+    find-up "^3.0.0"
+    get-caller-file "^2.0.1"
+    require-directory "^2.1.1"
+    require-main-filename "^2.0.0"
+    set-blocking "^2.0.0"
+    string-width "^3.0.0"
+    which-module "^2.0.0"
+    y18n "^4.0.0"
+    yargs-parser "^13.1.2"
+
+yargs@^16.0.0:
+  version "16.2.0"
+  resolved "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz"
+  integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
+  dependencies:
+    cliui "^7.0.2"
+    escalade "^3.1.1"
+    get-caller-file "^2.0.5"
+    require-directory "^2.1.1"
+    string-width "^4.2.0"
+    y18n "^5.0.5"
+    yargs-parser "^20.2.2"
+
+yargs@^17.2.1:
+  version "17.7.2"
+  resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
+  integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
+  dependencies:
+    cliui "^8.0.1"
+    escalade "^3.1.1"
+    get-caller-file "^2.0.5"
+    require-directory "^2.1.1"
+    string-width "^4.2.3"
+    y18n "^5.0.5"
+    yargs-parser "^21.1.1"
+
+yorkie@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz"
+  integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==
+  dependencies:
+    execa "^0.8.0"
+    is-ci "^1.0.10"
+    normalize-path "^1.0.0"
+    strip-indent "^2.0.0"

--
Gitblit v1.9.3