@kepler.gl/components 3.3.0-alpha.4 → 3.3.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/styled-components.d.ts +2 -1
- package/dist/common/styled-components.js +8 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.js +9 -1
- package/dist/loading-indicator.d.ts +1 -0
- package/dist/loading-indicator.js +5 -2
- package/dist/map/attribution.js +5 -3
- package/dist/map/map-scale.d.ts +11 -0
- package/dist/map/map-scale.js +162 -0
- package/dist/map-container.d.ts +3 -2
- package/dist/map-container.js +161 -80
- package/dist/modals/add-map-style-modal.js +48 -10
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +3 -3
- package/package.json +20 -21
package/dist/map/attribution.js
CHANGED
|
@@ -303,7 +303,8 @@ var Attribution = exports.Attribution = function Attribution(_ref3) {
|
|
|
303
303
|
if (!showBaseMapLibLogo) {
|
|
304
304
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledAttribution, {
|
|
305
305
|
mapLibCssClass: baseMapLibraryConfig.mapLibCssClass,
|
|
306
|
-
mapLibAttributionCssClass: baseMapLibraryConfig.mapLibAttributionCssClass
|
|
306
|
+
mapLibAttributionCssClass: baseMapLibraryConfig.mapLibAttributionCssClass,
|
|
307
|
+
showLogo: globeAttributions.length > 0
|
|
307
308
|
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.EndHorizontalFlexbox, null, /*#__PURE__*/_react["default"].createElement(DatasetAttributions, {
|
|
308
309
|
datasetAttributions: datasetAttributions,
|
|
309
310
|
isPalm: isPalm
|
|
@@ -325,7 +326,8 @@ var Attribution = exports.Attribution = function Attribution(_ref3) {
|
|
|
325
326
|
}
|
|
326
327
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledAttribution, {
|
|
327
328
|
mapLibCssClass: baseMapLibraryConfig.mapLibCssClass,
|
|
328
|
-
mapLibAttributionCssClass: baseMapLibraryConfig.mapLibAttributionCssClass
|
|
329
|
+
mapLibAttributionCssClass: baseMapLibraryConfig.mapLibAttributionCssClass,
|
|
330
|
+
showLogo: true
|
|
329
331
|
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.EndHorizontalFlexbox, null, /*#__PURE__*/_react["default"].createElement(DatasetAttributions, {
|
|
330
332
|
datasetAttributions: datasetAttributions,
|
|
331
333
|
isPalm: isPalm
|
|
@@ -386,4 +388,4 @@ var AttributionLogos = exports.AttributionLogos = function AttributionLogos(_ref
|
|
|
386
388
|
}));
|
|
387
389
|
}));
|
|
388
390
|
};
|
|
389
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl91dGlscyIsIl9zdHlsZXMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiTWFwTGliTG9nbyIsImV4cG9ydHMiLCJfcmVmIiwiYmFzZU1hcExpYnJhcnlDb25maWciLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwiY29uY2F0IiwibWFwTGliQ3NzQ2xhc3MiLCJ0YXJnZXQiLCJyZWwiLCJocmVmIiwibWFwTGliVXJsIiwibWFwTGliTmFtZSIsIlN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiaXNQYWxtIiwidGhlbWUiLCJsYWJlbENvbG9yIiwiRGF0YXNldEF0dHJpYnV0aW9ucyIsIl9yZWYyIiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsIkZyYWdtZW50IiwibGVuZ3RoIiwibWFwIiwiZHMiLCJpZHgiLCJfZXh0ZW5kczIiLCJ1cmwiLCJrZXkiLCJ0aXRsZSIsIkFUVFJJQlVUSU9OX1NBRkVfSFJFRl9SRUdFWCIsImRlY29kZUF0dHJpYnV0aW9uRW50aXRpZXMiLCJ0ZXh0IiwicmVwbGFjZSIsInN0cmlwVGFncyIsImh0bWwiLCJ0cmltIiwiZG9tTm9kZXNUb1JlYWN0Iiwibm9kZXMiLCJrZXlQcmVmaXgiLCJjb3VudGVyIiwicmVzdWx0IiwiZm9yRWFjaCIsIm5vZGUiLCJub2RlVHlwZSIsInRleHRDb250ZW50IiwicHVzaCIsImVsIiwidGFnIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiZ2V0QXR0cmlidXRlIiwidGVzdCIsImFwcGx5IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNoaWxkTm9kZXMiLCJyZXNvbHZlRE9NUGFyc2VyIiwid2luZG93IiwiRE9NUGFyc2VyIiwiZ2xvYmFsVGhpcyIsInJlbmRlckJhc2VtYXBBdHRyaWJ1dGlvbiIsIkRPTVBhcnNlckN0b3IiLCJkb2MiLCJwYXJzZUZyb21TdHJpbmciLCJib2R5IiwiZmlsdGVyIiwiQm9vbGVhbiIsIl91bnVzZWQiLCJhdHRyaWJ1dGlvblNpZ25hdHVyZSIsInRva2VucyIsIlNldCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJhIiwiYWRkIiwiVVJMIiwiaG9zdG5hbWUiLCJfdW51c2VkMiIsIl91bnVzZWQzIiwibm9ybWFsaXplZCIsInNwbGl0Iiwid29yZCIsImRlZHVwZUJhc2VtYXBBdHRyaWJ1dGlvbnMiLCJhdHRyaWJ1dGlvbnMiLCJrZXB0Iiwia2VwdFRva2VucyIsImF0dHJpYnV0aW9uIiwic2lnIiwic2l6ZSIsImluY2x1ZGVzIiwiaXNTdWJzdW1lZCIsInNvbWUiLCJldmVyeSIsInJlbmRlclNlcGFyYXRlZExpbmtzIiwiaXRlbXMiLCJyZW5kZXJJdGVtIiwiaXRlbSIsIkF0dHJpYnV0aW9uIiwiX3JlZjMiLCJfcmVmMyRzaG93QmFzZU1hcExpYkwiLCJzaG93QmFzZU1hcExpYkxvZ28iLCJfcmVmMyRiYXNlbWFwQXR0cmlidXQiLCJiYXNlbWFwQXR0cmlidXRpb25zIiwiX3JlZjMkZ2xvYmVBdHRyaWJ1dGlvIiwiZ2xvYmVBdHRyaWJ1dGlvbnMiLCJoYXNNb2JpbGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJtZW1vaXplZENvbXBvbmVudHMiLCJ1c2VNZW1vIiwiZGVkdXBlZEJhc2VtYXBBdHRyaWJ1dGlvbnMiLCJiYXNlbWFwQXR0cmlidXRpb25Ob2RlcyIsImdsb2JlQXR0cmlidXRpb25Ob2RlcyIsImF0dHIiLCJsYWJlbCIsIlN0eWxlZEF0dHJpYnV0aW9uIiwibWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcyIsIkVuZEhvcml6b250YWxGbGV4Ym94IiwiU3R5bGVkQXR0cmlidXRpb25Mb2dvQ29udGFpbmVyIiwic2lkZVBhbmVsIiwibWFyZ2luIiwibGVmdCIsIiRsZWZ0IiwiU3R5bGVkTG9nb0xpbmsiLCIkZW5hYmxlZCIsIkxPR09fTEVGVF9BREpVU1RNRU5UIiwiQXR0cmlidXRpb25Mb2dvcyIsIl9yZWY0IiwibG9nb3MiLCJhY3RpdmVTaWRlUGFuZWwiLCJzaWRlUGFuZWxXaWR0aCIsInVzZVRoZW1lIiwibG9nbyIsImxvZ29VcmwiLCJ1bmRlZmluZWQiLCJib3R0b20iLCJtYXJnaW5Cb3R0b20iLCJzcmMiLCJoZWlnaHQiLCJhbHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFwL2F0dHJpYnV0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7dXNlVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtBdHRyaWJ1dGlvbldpdGhTdHlsZSwgRGF0YXNldEF0dHJpYnV0aW9ufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7QmFzZU1hcExpYnJhcnlDb25maWcsIGhhc01vYmlsZVdpZHRofSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7YnJlYWtQb2ludFZhbHVlc30gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHR5cGUge0dsb2JlQXR0cmlidXRpb259IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5cbmltcG9ydCB7U3R5bGVkQXR0cmlidXRpb24sIEVuZEhvcml6b250YWxGbGV4Ym94fSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG50eXBlIE1hcExpYkxvZ29Qcm9wcyA9IHtcbiAgYmFzZU1hcExpYnJhcnlDb25maWc6IEJhc2VNYXBMaWJyYXJ5Q29uZmlnO1xufTtcblxuZXhwb3J0IGNvbnN0IE1hcExpYkxvZ28gPSAoe2Jhc2VNYXBMaWJyYXJ5Q29uZmlnfTogTWFwTGliTG9nb1Byb3BzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxvZ29cIj5cbiAgICBCYXNlbWFwIGJ5OlxuICAgIDxhXG4gICAgICBzdHlsZT17e21hcmdpbkxlZnQ6ICc1cHgnfX1cbiAgICAgIGNsYXNzTmFtZT17YCR7YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQ3NzQ2xhc3N9LWN0cmwtbG9nb2B9XG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICBocmVmPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJVcmx9XG4gICAgICBhcmlhLWxhYmVsPXtgJHtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJOYW1lfSBsb2dvYH1cbiAgICAvPlxuICA8L2Rpdj5cbik7XG5cbmludGVyZmFjZSBTdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyUHJvcHMge1xuICBpc1BhbG06IGJvb2xlYW47XG59XG5cbmNvbnN0IFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXJQcm9wcz5gXG4gIG1heC13aWR0aDogJHtwcm9wcyA9PiAocHJvcHMuaXNQYWxtID8gJzIwMHB4JyA6ICczMDBweCcpfTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3J9O1xuICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICBsaW5lLWhlaWdodDogJHtwcm9wcyA9PiAocHJvcHMuaXNQYWxtID8gJzFlbScgOiAnMS40ZW0nKX07XG5cbiAgJjpob3ZlciB7XG4gICAgd2hpdGUtc3BhY2U6IGluaGVyaXQ7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEYXRhc2V0QXR0cmlidXRpb25zID0gKHtcbiAgZGF0YXNldEF0dHJpYnV0aW9ucyxcbiAgaXNQYWxtXG59OiB7XG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnM6IERhdGFzZXRBdHRyaWJ1dGlvbltdO1xuICBpc1BhbG06IGJvb2xlYW47XG59KSA9PiAoXG4gIDw+XG4gICAge2RhdGFzZXRBdHRyaWJ1dGlvbnM/Lmxlbmd0aCA/IChcbiAgICAgIDxTdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyIGlzUGFsbT17aXNQYWxtfT5cbiAgICAgICAge2RhdGFzZXRBdHRyaWJ1dGlvbnMubWFwKChkcywgaWR4KSA9PiAoXG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIHsuLi4oZHMudXJsID8ge2hyZWY6IGRzLnVybH0gOiBudWxsKX1cbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIGtleT17YCR7ZHMudGl0bGV9XyR7aWR4fWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2RzLnRpdGxlfVxuICAgICAgICAgICAge2lkeCAhPT0gZGF0YXNldEF0dHJpYnV0aW9ucy5sZW5ndGggLSAxID8gJywgJyA6IG51bGx9XG4gICAgICAgICAgPC9hPlxuICAgICAgICApKX1cbiAgICAgIDwvU3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lcj5cbiAgICApIDogbnVsbH1cbiAgPC8+XG4pO1xuXG50eXBlIEF0dHJpYnV0aW9uUHJvcHMgPSB7XG4gIHNob3dCYXNlTWFwTGliTG9nbzogYm9vbGVhbjtcbiAgYmFzZW1hcEF0dHJpYnV0aW9ucz86IHN0cmluZ1tdO1xuICBkYXRhc2V0QXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXTtcbiAgYmFzZU1hcExpYnJhcnlDb25maWc6IEJhc2VNYXBMaWJyYXJ5Q29uZmlnO1xuICBnbG9iZUF0dHJpYnV0aW9ucz86IEdsb2JlQXR0cmlidXRpb25bXTtcbn07XG5cbmNvbnN0IEFUVFJJQlVUSU9OX1NBRkVfSFJFRl9SRUdFWCA9IC9eKGh0dHBzPzp8bWFpbHRvOikvaTtcblxuLyoqXG4gKiBEZWNvZGUgdGhlIGhhbmRmdWwgb2YgSFRNTCBlbnRpdGllcyB0aGF0IGNvbW1vbmx5IGFwcGVhciBpbiBiYXNlbWFwXG4gKiBhdHRyaWJ1dGlvbiBzdHJpbmdzLCBzbyB0aGV5IHJlbmRlciBhcyB0ZXh0IHJhdGhlciB0aGFuIHJhdyBlbnRpdGllcy4gT25seVxuICogbmVlZGVkIG9uIHRoZSBTU1IgLyBuby1ET00gZmFsbGJhY2sgcGF0aDsgaW4gdGhlIGJyb3dzZXIgRE9NUGFyc2VyIGRlY29kZXNcbiAqIGVudGl0aWVzIGZvciB1cy5cbiAqL1xuZnVuY3Rpb24gZGVjb2RlQXR0cmlidXRpb25FbnRpdGllcyh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8mY29weTsvZ2ksICfCqScpXG4gICAgLnJlcGxhY2UoLyZuYnNwOy9naSwgJyAnKVxuICAgIC5yZXBsYWNlKC8mbHQ7L2dpLCAnPCcpXG4gICAgLnJlcGxhY2UoLyZndDsvZ2ksICc+JylcbiAgICAucmVwbGFjZSgvJnF1b3Q7L2dpLCAnXCInKVxuICAgIC5yZXBsYWNlKC8mIzAqMzk7L2dpLCBcIidcIilcbiAgICAucmVwbGFjZSgvJmFtcDsvZ2ksICcmJyk7XG59XG5cbi8qKlxuICogU3RyaXAgYWxsIG1hcmt1cCBmcm9tIGEgc3RyaW5nIGFzIGEgZmFsbGJhY2sgZm9yIGVudmlyb25tZW50cyB3aXRob3V0IGEgRE9NXG4gKiAoZS5nLiBTU1IpLCB0aGVuIGRlY29kZSBjb21tb24gSFRNTCBlbnRpdGllcy4gVXNlcyBhIG5vbi1ncmVlZHkgdGFnIG1hdGNoZXI7XG4gKiBvbmx5IHVzZWQgd2hlbiBET01QYXJzZXIgaXMgdW5hdmFpbGFibGUsIHNvIGl0IG5ldmVyIGhhcyB0byBiZSBwZXJmZWN0bHlcbiAqIGNvcnJlY3QuXG4gKi9cbmZ1bmN0aW9uIHN0cmlwVGFncyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZGVjb2RlQXR0cmlidXRpb25FbnRpdGllcyhodG1sLnJlcGxhY2UoLzxbXj5dKj4vZywgJycpKS50cmltKCk7XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgY29udmVydCBwYXJzZWQgRE9NIG5vZGVzIGludG8gc2FmZSBSZWFjdCBub2Rlcy4gT25seSBhbmNob3JcbiAqIGVsZW1lbnRzIHdpdGggaHR0cChzKS9tYWlsdG8gaHJlZnMgYmVjb21lIGxpbmtzOyBldmVyeSBvdGhlciBlbGVtZW50IGlzXG4gKiBmbGF0dGVuZWQgdG8gaXRzIHRleHQgY29udGVudC4gVGV4dCBub2RlcyBhcmUgZW1pdHRlZCB3aXRoIGludGVybmFsXG4gKiB3aGl0ZXNwYWNlIGNvbGxhcHNlZCB0byBzaW5nbGUgc3BhY2VzIChtYXRjaGluZyBIVE1MIHJlbmRlcmluZyksIHNvIHRoZVxuICogbWVhbmluZ2Z1bCBzaW5nbGUgc3BhY2UgYmV0d2VlbiBhZGphY2VudCBsaW5rcyBpcyBwcmVzZXJ2ZWQgd2hpbGUgd2UgYXZvaWRcbiAqIGVtaXR0aW5nIGxhcmdlIHdoaXRlc3BhY2UgYmxvYnMuXG4gKlxuICogQW5jaG9ycyBhcmUgY29sbGFwc2VkIHRvIHRoZWlyIGB0ZXh0Q29udGVudGAsIHNvIGFueSBtYXJrdXAgbmVzdGVkIGluc2lkZSBhblxuICogYW5jaG9yIChpbmNsdWRpbmcgYW4gaW52YWxpZCBuZXN0ZWQgYDxhPmApIGJlY29tZXMgcGxhaW4gdGV4dCDigJQgYSBsaW5rIGNhblxuICogbmV2ZXIgY29udGFpbiBhbm90aGVyIGxpbmsuXG4gKi9cbmZ1bmN0aW9uIGRvbU5vZGVzVG9SZWFjdChcbiAgbm9kZXM6IE5vZGVMaXN0T2Y8Q2hpbGROb2RlPiB8IENoaWxkTm9kZVtdLFxuICBrZXlQcmVmaXg6IHN0cmluZyxcbiAgY291bnRlcjoge2k6IG51bWJlcn1cbik6IFJlYWN0LlJlYWN0Tm9kZVtdIHtcbiAgY29uc3QgcmVzdWx0OiBSZWFjdC5SZWFjdE5vZGVbXSA9IFtdO1xuICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzIC8qIFRFWFRfTk9ERSAqLykge1xuICAgICAgLy8gY29sbGFwc2Ugd2hpdGVzcGFjZSBydW5zIHRvIGEgc2luZ2xlIHNwYWNlIChIVE1MLWxpa2UpLCBrZWVwaW5nIGFcbiAgICAgIC8vIG1lYW5pbmdmdWwgc2VwYXJhdGluZyBzcGFjZSBiZXR3ZWVuIGFkamFjZW50IGlubGluZSBsaW5rc1xuICAgICAgY29uc3QgdGV4dCA9IChub2RlLnRleHRDb250ZW50IHx8ICcnKS5yZXBsYWNlKC9cXHMrL2csICcgJyk7XG4gICAgICBpZiAodGV4dCkge1xuICAgICAgICByZXN1bHQucHVzaCg8UmVhY3QuRnJhZ21lbnQga2V5PXtgJHtrZXlQcmVmaXh9LXQke2NvdW50ZXIuaSsrfWB9Pnt0ZXh0fTwvUmVhY3QuRnJhZ21lbnQ+KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IDEgLyogRUxFTUVOVF9OT0RFICovKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsID0gbm9kZSBhcyBFbGVtZW50O1xuICAgIGNvbnN0IHRhZyA9IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAvLyBuZXZlciBzdXJmYWNlIHRoZSBzb3VyY2Ugb2Ygc2NyaXB0L3N0eWxlL3RlbXBsYXRlIGVsZW1lbnRzIGFzIHRleHRcbiAgICBpZiAodGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAndGVtcGxhdGUnIHx8IHRhZyA9PT0gJ25vc2NyaXB0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnYScpIHtcbiAgICAgIGNvbnN0IGhyZWYgPSBlbC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnJztcbiAgICAgIC8vIHRleHRDb250ZW50IGZsYXR0ZW5zIGFueSBuZXN0ZWQgbWFya3VwIChpbmNsLiBhIG5lc3RlZCA8YT4pIHRvIHRleHQsIHNvXG4gICAgICAvLyB0aGUgcmVuZGVyZWQgbGluayBjYW4gbmV2ZXIgY29udGFpbiBhbm90aGVyIGxpbmtcbiAgICAgIGNvbnN0IHRleHQgPSBlbC50ZXh0Q29udGVudCB8fCAnJztcbiAgICAgIGlmICghdGV4dC50cmltKCkpIHJldHVybjtcbiAgICAgIGlmIChBVFRSSUJVVElPTl9TQUZFX0hSRUZfUkVHRVgudGVzdChocmVmKSkge1xuICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICA8YVxuICAgICAgICAgICAga2V5PXtgJHtrZXlQcmVmaXh9LWEke2NvdW50ZXIuaSsrfWB9XG4gICAgICAgICAgICBocmVmPXtocmVmfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0ZXh0fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRyb3AgdW5zYWZlIGhyZWZzIChlLmcuIGphdmFzY3JpcHQ6KSBidXQga2VlcCB0aGUgbGluayB0ZXh0XG4gICAgICAgIHJlc3VsdC5wdXNoKDxSZWFjdC5GcmFnbWVudCBrZXk9e2Ake2tleVByZWZpeH0tYSR7Y291bnRlci5pKyt9YH0+e3RleHR9PC9SZWFjdC5GcmFnbWVudD4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBhbnkgb3RoZXIgZWxlbWVudDoga2VlcCBpdHMgKHJlY3Vyc2l2ZWx5IHJlc29sdmVkKSBjaGlsZHJlblxuICAgIHJlc3VsdC5wdXNoKC4uLmRvbU5vZGVzVG9SZWFjdChlbC5jaGlsZE5vZGVzLCBrZXlQcmVmaXgsIGNvdW50ZXIpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVET01QYXJzZXIoKToge25ldyAoKTogRE9NUGFyc2VyfSB8IG51bGwge1xuICByZXR1cm4gKFxuICAgICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSkuRE9NUGFyc2VyKSB8fFxuICAgICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgKGdsb2JhbFRoaXMgYXMgYW55KS5ET01QYXJzZXIpIHx8XG4gICAgbnVsbFxuICApO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgYmFzZW1hcCBhdHRyaWJ1dGlvbiBIVE1MIHN0cmluZyBpbnRvIHNhZmUgUmVhY3Qgbm9kZXMuIE9ubHkgYW5jaG9yXG4gKiB0YWdzIHdpdGggaHR0cChzKS9tYWlsdG8gaHJlZnMgYmVjb21lIGxpbmtzOyBldmVyeXRoaW5nIGVsc2UgaXMgcmVuZGVyZWQgYXNcbiAqIHBsYWluIHRleHQuIFRoaXMgYXZvaWRzIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIHdoaWxlIHByZXNlcnZpbmcgdGhlIGxpbmtzXG4gKiBjdXN0b20gYmFzZW1hcCBzdHlsZXMgKGUuZy4gT3BlbkZyZWVNYXApIGRlY2xhcmUgaW4gdGhlaXIgYXR0cmlidXRpb24uXG4gKlxuICogVXNlcyB0aGUgYnJvd3NlcidzIERPTVBhcnNlciAoaW5lcnQ6IHNjcmlwdHMgZG9uJ3QgcnVuIGFuZCBubyByZXNvdXJjZXMgYXJlXG4gKiBmZXRjaGVkKSBzbyBuZXN0ZWQgdGFncywgYD5gIGluc2lkZSBhdHRyaWJ1dGVzLCB1bnVzdWFsIHF1b3RpbmcsIGFuZCBIVE1MXG4gKiBlbnRpdGllcyBhcmUgYWxsIGhhbmRsZWQgY29ycmVjdGx5LiBGYWxscyBiYWNrIHRvIHBsYWluIHRleHQgd2hlcmUgbm8gRE9NIGlzXG4gKiBhdmFpbGFibGUgKGUuZy4gU1NSKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckJhc2VtYXBBdHRyaWJ1dGlvbihodG1sOiBzdHJpbmcsIGtleVByZWZpeDogc3RyaW5nKTogUmVhY3QuUmVhY3ROb2RlW10ge1xuICBjb25zdCBET01QYXJzZXJDdG9yID0gcmVzb2x2ZURPTVBhcnNlcigpO1xuICBpZiAoIURPTVBhcnNlckN0b3IpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3RyaXBUYWdzKGh0bWwpO1xuICAgIHJldHVybiB0ZXh0ID8gWzxSZWFjdC5GcmFnbWVudCBrZXk9e2Ake2tleVByZWZpeH0tdDBgfT57dGV4dH08L1JlYWN0LkZyYWdtZW50Pl0gOiBbXTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXJDdG9yKCkucGFyc2VGcm9tU3RyaW5nKGh0bWwsICd0ZXh0L2h0bWwnKTtcbiAgICByZXR1cm4gZG9tTm9kZXNUb1JlYWN0KGRvYy5ib2R5LmNoaWxkTm9kZXMsIGtleVByZWZpeCwge2k6IDB9KS5maWx0ZXIoQm9vbGVhbik7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnN0IHRleHQgPSBzdHJpcFRhZ3MoaHRtbCk7XG4gICAgcmV0dXJuIHRleHQgPyBbPFJlYWN0LkZyYWdtZW50IGtleT17YCR7a2V5UHJlZml4fS10MGB9Pnt0ZXh0fTwvUmVhY3QuRnJhZ21lbnQ+XSA6IFtdO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBzZXQgb2YgXCJzaWduYXR1cmVcIiB0b2tlbnMgZm9yIGFuIGF0dHJpYnV0aW9uIHN0cmluZzogdGhlIGhvc3RuYW1lIG9mXG4gKiBlYWNoIHNhZmUgbGluayBwbHVzIHRoZSBub3JtYWxpemVkIHBsYWluIHRleHQgKGxvd2VyY2FzZWQsIHB1bmN0dWF0aW9uIGFuZFxuICogdGhlIGJvaWxlcnBsYXRlIHdvcmQgXCJjb250cmlidXRvcnNcIiByZW1vdmVkKS4gVHdvIGF0dHJpYnV0aW9ucyB0aGF0IHBvaW50IGF0XG4gKiB0aGUgc2FtZSBwcm92aWRlcnMgdGhlcmVmb3JlIHByb2R1Y2Ugb3ZlcmxhcHBpbmcgc2lnbmF0dXJlcyBldmVuIHdoZW4gdGhlaXJcbiAqIHdvcmRpbmcgZGlmZmVycyAoZS5nLiBcIsKpIE9wZW5TdHJlZXRNYXBcIiB2cyBcIsKpIE9wZW5TdHJlZXRNYXAgY29udHJpYnV0b3JzXCIpLlxuICovXG5mdW5jdGlvbiBhdHRyaWJ1dGlvblNpZ25hdHVyZShodG1sOiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gIGNvbnN0IHRva2VucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBET01QYXJzZXJDdG9yID0gcmVzb2x2ZURPTVBhcnNlcigpO1xuICBsZXQgdGV4dCA9IGh0bWw7XG4gIGlmIChET01QYXJzZXJDdG9yKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXJDdG9yKCkucGFyc2VGcm9tU3RyaW5nKGh0bWwsICd0ZXh0L2h0bWwnKTtcbiAgICAgIGRvYy5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKS5mb3JFYWNoKGEgPT4ge1xuICAgICAgICBjb25zdCBocmVmID0gYS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnJztcbiAgICAgICAgaWYgKEFUVFJJQlVUSU9OX1NBRkVfSFJFRl9SRUdFWC50ZXN0KGhyZWYpKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRva2Vucy5hZGQoYGhyZWY6JHtuZXcgVVJMKGhyZWYpLmhvc3RuYW1lLnJlcGxhY2UoL153d3dcXC4vLCAnJykudG9Mb3dlckNhc2UoKX1gKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHRva2Vucy5hZGQoYGhyZWY6JHtocmVmLnRvTG93ZXJDYXNlKCl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRleHQgPSBkb2MuYm9keS50ZXh0Q29udGVudCB8fCAnJztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRleHQgPSBzdHJpcFRhZ3MoaHRtbCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRleHQgPSBzdHJpcFRhZ3MoaHRtbCk7XG4gIH1cbiAgY29uc3Qgbm9ybWFsaXplZCA9IHRleHRcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC/CqXwmY29weTsvZywgJycpXG4gICAgLnJlcGxhY2UoL1xcYmNvbnRyaWJ1dG9ycz9cXGIvZywgJycpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJyAnKVxuICAgIC50cmltKCk7XG4gIGlmIChub3JtYWxpemVkKSB7XG4gICAgLy8gZW1pdCBwZXItd29yZCB0b2tlbnMgc28gYSBzaG9ydGVyIGF0dHJpYnV0aW9uJ3Mgd29yZHMgY2FuIGJlIHN1YnN1bWVkIGJ5XG4gICAgLy8gYSBsb25nZXIgb25lIHRoYXQgbWVudGlvbnMgdGhlIHNhbWUgcHJvdmlkZXJzIChlLmcuIFwib3BlbnN0cmVldG1hcFwiIGlzXG4gICAgLy8gY292ZXJlZCBieSBhIENBUlRPIHN0cmluZyBtZW50aW9uaW5nIGJvdGggXCJjYXJ0b1wiIGFuZCBcIm9wZW5zdHJlZXRtYXBcIilcbiAgICBub3JtYWxpemVkLnNwbGl0KCcgJykuZm9yRWFjaCh3b3JkID0+IHtcbiAgICAgIGlmICh3b3JkKSB0b2tlbnMuYWRkKGB0ZXh0OiR7d29yZH1gKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdG9rZW5zO1xufVxuXG4vKipcbiAqIERyb3AgYXR0cmlidXRpb25zIHdob3NlIHByb3ZpZGVycyBhcmUgYWxyZWFkeSBmdWxseSByZXByZXNlbnRlZCBieSBhIHNpbmdsZVxuICogZWFybGllciAoa2VwdCkgYXR0cmlidXRpb24uIE9yZGVyIGlzIHByZXNlcnZlZCwgYW5kIHRoZSBsb25nZXIvbW9yZSBjb21wbGV0ZVxuICogc3RyaW5ncyB0ZW5kIHRvIGNvbWUgZmlyc3QgZnJvbSB0aGUgc291cmNlcyBzbyB0aGV5IHN1cnZpdmUuIFRoaXMgY29sbGFwc2VzXG4gKiBuZWFyLWR1cGxpY2F0ZXMgc3VjaCBhcyBhIHN0YW5kYWxvbmUgXCLCqSBPcGVuU3RyZWV0TWFwXCIgd2hlbiBhIENBUlRPIHN0cmluZ1xuICogdGhhdCBhbHJlYWR5IGxpbmtzIE9wZW5TdHJlZXRNYXAgaXMgcHJlc2VudC5cbiAqXG4gKiBTdWJzdW1wdGlvbiBpcyBjaGVja2VkIGFnYWluc3QgZWFjaCBrZXB0IGF0dHJpYnV0aW9uICppbmRpdmlkdWFsbHkqIChuZXZlciBhXG4gKiBtZXJnZWQgdW5pb24pLCBzbyBhbiBlbnRyeSBpcyBvbmx5IGRyb3BwZWQgd2hlbiBzb21lIHNpbmdsZSBlYXJsaWVyIGVudHJ5XG4gKiBmdWxseSBjb3ZlcnMgaXQuIFRoaXMgYXZvaWRzIGZhbHNlIHBvc2l0aXZlcyB3aGVyZSB0d28gdW5yZWxhdGVkIHByb3ZpZGVycydcbiAqIHRva2VucyB0b2dldGhlciBoYXBwZW4gdG8gY292ZXIgYSBkaXN0aW5jdCB0aGlyZCBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZHVwZUJhc2VtYXBBdHRyaWJ1dGlvbnMoYXR0cmlidXRpb25zOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3Qga2VwdDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qga2VwdFRva2VuczogU2V0PHN0cmluZz5bXSA9IFtdO1xuICBhdHRyaWJ1dGlvbnMuZm9yRWFjaChhdHRyaWJ1dGlvbiA9PiB7XG4gICAgY29uc3Qgc2lnID0gYXR0cmlidXRpb25TaWduYXR1cmUoYXR0cmlidXRpb24pO1xuICAgIGlmIChzaWcuc2l6ZSA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBjb21wYXJlIG9uOyBrZWVwIGFzLWlzIChleGFjdCBkZWR1cCBhbHJlYWR5IGRvbmUgdXBzdHJlYW0pXG4gICAgICBpZiAoIWtlcHQuaW5jbHVkZXMoYXR0cmlidXRpb24pKSB7XG4gICAgICAgIGtlcHQucHVzaChhdHRyaWJ1dGlvbik7XG4gICAgICAgIGtlcHRUb2tlbnMucHVzaChzaWcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBzdWJzdW1lZCBvbmx5IGlmIHNvbWUgc2luZ2xlIGtlcHQgYXR0cmlidXRpb24ncyB0b2tlbnMgYXJlIGEgc3VwZXJzZXRcbiAgICBjb25zdCBpc1N1YnN1bWVkID0ga2VwdFRva2Vucy5zb21lKFxuICAgICAgdG9rZW5zID0+IHRva2Vucy5zaXplID4gMCAmJiBbLi4uc2lnXS5ldmVyeSh0ID0+IHRva2Vucy5oYXModCkpXG4gICAgKTtcbiAgICBpZiAoIWlzU3Vic3VtZWQpIHtcbiAgICAgIGtlcHQucHVzaChhdHRyaWJ1dGlvbik7XG4gICAgICBrZXB0VG9rZW5zLnB1c2goc2lnKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ga2VwdDtcbn1cblxuLyoqXG4gKiBSZW5kZXIgYSBsaXN0IG9mIGl0ZW1zIGFzIGB8IGl0ZW0gfCBpdGVtIC4uLmAgZnJhZ21lbnRzLCBlYWNoIHByZWNlZGVkIGJ5IGFcbiAqIHBpcGUgc2VwYXJhdG9yLiBLZXlzIGFyZSBpbmRleC1iYXNlZCAoc2FmZSBldmVuIHdoZW4gaXRlbSBjb250ZW50IGNvbGxpZGVzLFxuICogZS5nLiB0d28gZ2xvYmUgYXR0cmlidXRpb25zIHNoYXJpbmcgYSBsYWJlbCkuIFJldHVybnMgbnVsbCB3aGVuIGVtcHR5IHNvXG4gKiBjYWxsZXJzIGNhbiBge2dyb3VwfWAgaW5saW5lLlxuICovXG5mdW5jdGlvbiByZW5kZXJTZXBhcmF0ZWRMaW5rczxUPihcbiAgaXRlbXM6IFRbXSxcbiAga2V5UHJlZml4OiBzdHJpbmcsXG4gIHJlbmRlckl0ZW06IChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBSZWFjdC5SZWFjdE5vZGVcbik6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGlmICghaXRlbXMubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2l0ZW1zLm1hcCgoaXRlbSwgaWR4KSA9PiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudCBrZXk9e2Ake2tleVByZWZpeH0tJHtpZHh9YH0+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicGlwZS1zZXBhcmF0b3JcIj58PC9zcGFuPlxuICAgICAgICAgIHtyZW5kZXJJdGVtKGl0ZW0sIGlkeCl9XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICApKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0aW9uOiBSZWFjdC5GQzxBdHRyaWJ1dGlvblByb3BzPiA9ICh7XG4gIHNob3dCYXNlTWFwTGliTG9nbyA9IHRydWUsXG4gIGJhc2VtYXBBdHRyaWJ1dGlvbnMgPSBbXSxcbiAgZGF0YXNldEF0dHJpYnV0aW9ucyxcbiAgYmFzZU1hcExpYnJhcnlDb25maWcsXG4gIGdsb2JlQXR0cmlidXRpb25zID0gW11cbn06IEF0dHJpYnV0aW9uUHJvcHMpID0+IHtcbiAgY29uc3QgaXNQYWxtID0gaGFzTW9iaWxlV2lkdGgoYnJlYWtQb2ludFZhbHVlcyk7XG5cbiAgY29uc3QgbWVtb2l6ZWRDb21wb25lbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgLy8gY29sbGFwc2UgbmVhci1kdXBsaWNhdGUgYXR0cmlidXRpb25zIChlLmcuIGEgc3RhbmRhbG9uZSBPU00gbGluayB3aGVuIGFcbiAgICAvLyBDQVJUTyBzdHJpbmcgYWxyZWFkeSBsaW5rcyBPU00pIGJlZm9yZSByZW5kZXJpbmdcbiAgICBjb25zdCBkZWR1cGVkQmFzZW1hcEF0dHJpYnV0aW9ucyA9IGRlZHVwZUJhc2VtYXBBdHRyaWJ1dGlvbnMoYmFzZW1hcEF0dHJpYnV0aW9ucyk7XG4gICAgLy8gYXR0cmlidXRpb25zIGRlY2xhcmVkIGJ5IGN1c3RvbSBiYXNlbWFwIHN0eWxlcywgcmVuZGVyZWQgYXMgc2FmZSBsaW5rc1xuICAgIGNvbnN0IGJhc2VtYXBBdHRyaWJ1dGlvbk5vZGVzID0gcmVuZGVyU2VwYXJhdGVkTGlua3MoXG4gICAgICBkZWR1cGVkQmFzZW1hcEF0dHJpYnV0aW9ucyxcbiAgICAgICdiYXNlbWFwLWF0dHInLFxuICAgICAgKGF0dHJpYnV0aW9uLCBpZHgpID0+IChcbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmFzZW1hcC1hdHRyaWJ1dGlvblwiPlxuICAgICAgICAgIHtyZW5kZXJCYXNlbWFwQXR0cmlidXRpb24oYXR0cmlidXRpb24sIGBiYXNlbWFwLWF0dHItJHtpZHh9YCl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIClcbiAgICApO1xuXG4gICAgY29uc3QgZ2xvYmVBdHRyaWJ1dGlvbk5vZGVzID0gcmVuZGVyU2VwYXJhdGVkTGlua3MoZ2xvYmVBdHRyaWJ1dGlvbnMsICdnbG9iZS1hdHRyJywgYXR0ciA9PiAoXG4gICAgICA8YSBocmVmPXthdHRyLmhyZWZ9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAge2F0dHIubGFiZWx9XG4gICAgICA8L2E+XG4gICAgKSk7XG5cbiAgICBpZiAoIXNob3dCYXNlTWFwTGliTG9nbykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZEF0dHJpYnV0aW9uXG4gICAgICAgICAgbWFwTGliQ3NzQ2xhc3M9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkNzc0NsYXNzfVxuICAgICAgICAgIG1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3M9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3N9XG4gICAgICAgID5cbiAgICAgICAgICA8RW5kSG9yaXpvbnRhbEZsZXhib3g+XG4gICAgICAgICAgICA8RGF0YXNldEF0dHJpYnV0aW9ucyBkYXRhc2V0QXR0cmlidXRpb25zPXtkYXRhc2V0QXR0cmlidXRpb25zfSBpc1BhbG09e2lzUGFsbX0gLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxpbmtcIj5cbiAgICAgICAgICAgICAge2RhdGFzZXRBdHRyaWJ1dGlvbnM/Lmxlbmd0aCA/IDxzcGFuIGNsYXNzTmFtZT1cInBpcGUtc2VwYXJhdG9yXCI+fDwvc3Bhbj4gOiBudWxsfVxuICAgICAgICAgICAgICB7Z2xvYmVBdHRyaWJ1dGlvbnMubGVuZ3RoICYmIGlzUGFsbSA/IChcbiAgICAgICAgICAgICAgICA8TWFwTGliTG9nbyBiYXNlTWFwTGlicmFyeUNvbmZpZz17YmFzZU1hcExpYnJhcnlDb25maWd9IC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9rZXBsZXIuZ2wvcG9saWN5L1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICDCqSBrZXBsZXIuZ2xcbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICB7YmFzZW1hcEF0dHJpYnV0aW9uTm9kZXN9XG4gICAgICAgICAgICAgIHtnbG9iZUF0dHJpYnV0aW9uTm9kZXN9XG4gICAgICAgICAgICAgIHtnbG9iZUF0dHJpYnV0aW9ucy5sZW5ndGggPyA8c3BhbiBjbGFzc05hbWU9XCJwaXBlLXNlcGFyYXRvclwiPnw8L3NwYW4+IDogbnVsbH1cbiAgICAgICAgICAgICAge2dsb2JlQXR0cmlidXRpb25zLmxlbmd0aCAmJiAhaXNQYWxtID8gKFxuICAgICAgICAgICAgICAgIDxNYXBMaWJMb2dvIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPXtiYXNlTWFwTGlicmFyeUNvbmZpZ30gLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0VuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgICA8L1N0eWxlZEF0dHJpYnV0aW9uPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEF0dHJpYnV0aW9uXG4gICAgICAgIG1hcExpYkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJDc3NDbGFzc31cbiAgICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcz17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQXR0cmlidXRpb25Dc3NDbGFzc31cbiAgICAgID5cbiAgICAgICAgPEVuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgICAgIDxEYXRhc2V0QXR0cmlidXRpb25zIGRhdGFzZXRBdHRyaWJ1dGlvbnM9e2RhdGFzZXRBdHRyaWJ1dGlvbnN9IGlzUGFsbT17aXNQYWxtfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxpbmtcIj5cbiAgICAgICAgICAgIHtkYXRhc2V0QXR0cmlidXRpb25zPy5sZW5ndGggPyA8c3BhbiBjbGFzc05hbWU9XCJwaXBlLXNlcGFyYXRvclwiPnw8L3NwYW4+IDogbnVsbH1cbiAgICAgICAgICAgIHtpc1BhbG0gPyA8TWFwTGliTG9nbyBiYXNlTWFwTGlicmFyeUNvbmZpZz17YmFzZU1hcExpYnJhcnlDb25maWd9IC8+IDogbnVsbH1cbiAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2tlcGxlci5nbC9wb2xpY3kvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICDCqSBrZXBsZXIuZ2xcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIHtiYXNlbWFwQXR0cmlidXRpb25Ob2Rlc31cbiAgICAgICAgICAgIHtnbG9iZUF0dHJpYnV0aW9uTm9kZXN9XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwaXBlLXNlcGFyYXRvclwiPnw8L3NwYW4+XG4gICAgICAgICAgICB7IWlzUGFsbSA/IDxNYXBMaWJMb2dvIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPXtiYXNlTWFwTGlicmFyeUNvbmZpZ30gLz4gOiBudWxsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0VuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgPC9TdHlsZWRBdHRyaWJ1dGlvbj5cbiAgICApO1xuICB9LCBbXG4gICAgc2hvd0Jhc2VNYXBMaWJMb2dvLFxuICAgIGJhc2VtYXBBdHRyaWJ1dGlvbnMsXG4gICAgZGF0YXNldEF0dHJpYnV0aW9ucyxcbiAgICBpc1BhbG0sXG4gICAgYmFzZU1hcExpYnJhcnlDb25maWcsXG4gICAgZ2xvYmVBdHRyaWJ1dGlvbnNcbiAgXSk7XG5cbiAgcmV0dXJuIG1lbW9pemVkQ29tcG9uZW50cztcbn07XG5cbmNvbnN0IFN0eWxlZEF0dHJpYnV0aW9uTG9nb0NvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyRsZWZ0OiBudW1iZXJ9PmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2lkZVBhbmVsLm1hcmdpbi5sZWZ0fXB4O1xuICBsZWZ0OiAke3Byb3BzID0+IHByb3BzLiRsZWZ0fXB4O1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGdhcDogNHB4O1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluLW91dDtcbmA7XG5cbmNvbnN0IFN0eWxlZExvZ29MaW5rID0gc3R5bGVkLmE8eyRlbmFibGVkOiBib29sZWFufT5gXG4gIGN1cnNvcjogJHtwcm9wcyA9PiAocHJvcHMuJGVuYWJsZWQgPyAncG9pbnRlcicgOiAnZGVmYXVsdCcpfTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuYDtcblxudHlwZSBBdHRyaWJ1dGlvbkxvZ29zUHJvcHMgPSB7XG4gIGxvZ29zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdO1xuICBhY3RpdmVTaWRlUGFuZWw/OiBib29sZWFuO1xuICBzaWRlUGFuZWxXaWR0aD86IG51bWJlcjtcbn07XG5cbmNvbnN0IExPR09fTEVGVF9BREpVU1RNRU5UID0gMztcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0aW9uTG9nb3M6IFJlYWN0LkZDPEF0dHJpYnV0aW9uTG9nb3NQcm9wcz4gPSAoe1xuICBsb2dvcyxcbiAgYWN0aXZlU2lkZVBhbmVsLFxuICBzaWRlUGFuZWxXaWR0aFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCkgYXMgYW55O1xuICBjb25zdCBsZWZ0ID1cbiAgICAoYWN0aXZlU2lkZVBhbmVsID8gKHNpZGVQYW5lbFdpZHRoIHx8IDApICsgTE9HT19MRUZUX0FESlVTVE1FTlQgOiAwKSArXG4gICAgdGhlbWUuc2lkZVBhbmVsLm1hcmdpbi5sZWZ0O1xuXG4gIGlmICghbG9nb3M/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEF0dHJpYnV0aW9uTG9nb0NvbnRhaW5lciAkbGVmdD17bGVmdH0+XG4gICAgICB7bG9nb3MubWFwKChsb2dvLCBpZHgpID0+IChcbiAgICAgICAgPFN0eWxlZExvZ29MaW5rXG4gICAgICAgICAga2V5PXtsb2dvLmxvZ29VcmwgfHwgaWR4fVxuICAgICAgICAgIGhyZWY9e2xvZ28udXJsIHx8IHVuZGVmaW5lZH1cbiAgICAgICAgICB7Li4uKGxvZ28udXJsID8ge3RhcmdldDogJ19ibGFuaycsIHJlbDogJ25vb3BlbmVyIG5vcmVmZXJyZXInfSA6IHt9KX1cbiAgICAgICAgICAkZW5hYmxlZD17Qm9vbGVhbihsb2dvLnVybCl9XG4gICAgICAgICAgc3R5bGU9e2xvZ28uYm90dG9tID8ge21hcmdpbkJvdHRvbTogbG9nby5ib3R0b219IDogdW5kZWZpbmVkfVxuICAgICAgICA+XG4gICAgICAgICAgPGltZyBzcmM9e2xvZ28ubG9nb1VybH0gc3R5bGU9e3toZWlnaHQ6IGxvZ28uaGVpZ2h0IHx8IDEyfX0gYWx0PXtsb2dvLnRpdGxlfSAvPlxuICAgICAgICA8L1N0eWxlZExvZ29MaW5rPlxuICAgICAgKSl9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
|
|
391
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl91dGlscyIsIl9zdHlsZXMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiTWFwTGliTG9nbyIsImV4cG9ydHMiLCJfcmVmIiwiYmFzZU1hcExpYnJhcnlDb25maWciLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwiY29uY2F0IiwibWFwTGliQ3NzQ2xhc3MiLCJ0YXJnZXQiLCJyZWwiLCJocmVmIiwibWFwTGliVXJsIiwibWFwTGliTmFtZSIsIlN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiaXNQYWxtIiwidGhlbWUiLCJsYWJlbENvbG9yIiwiRGF0YXNldEF0dHJpYnV0aW9ucyIsIl9yZWYyIiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsIkZyYWdtZW50IiwibGVuZ3RoIiwibWFwIiwiZHMiLCJpZHgiLCJfZXh0ZW5kczIiLCJ1cmwiLCJrZXkiLCJ0aXRsZSIsIkFUVFJJQlVUSU9OX1NBRkVfSFJFRl9SRUdFWCIsImRlY29kZUF0dHJpYnV0aW9uRW50aXRpZXMiLCJ0ZXh0IiwicmVwbGFjZSIsInN0cmlwVGFncyIsImh0bWwiLCJ0cmltIiwiZG9tTm9kZXNUb1JlYWN0Iiwibm9kZXMiLCJrZXlQcmVmaXgiLCJjb3VudGVyIiwicmVzdWx0IiwiZm9yRWFjaCIsIm5vZGUiLCJub2RlVHlwZSIsInRleHRDb250ZW50IiwicHVzaCIsImVsIiwidGFnIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiZ2V0QXR0cmlidXRlIiwidGVzdCIsImFwcGx5IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNoaWxkTm9kZXMiLCJyZXNvbHZlRE9NUGFyc2VyIiwid2luZG93IiwiRE9NUGFyc2VyIiwiZ2xvYmFsVGhpcyIsInJlbmRlckJhc2VtYXBBdHRyaWJ1dGlvbiIsIkRPTVBhcnNlckN0b3IiLCJkb2MiLCJwYXJzZUZyb21TdHJpbmciLCJib2R5IiwiZmlsdGVyIiwiQm9vbGVhbiIsIl91bnVzZWQiLCJhdHRyaWJ1dGlvblNpZ25hdHVyZSIsInRva2VucyIsIlNldCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJhIiwiYWRkIiwiVVJMIiwiaG9zdG5hbWUiLCJfdW51c2VkMiIsIl91bnVzZWQzIiwibm9ybWFsaXplZCIsInNwbGl0Iiwid29yZCIsImRlZHVwZUJhc2VtYXBBdHRyaWJ1dGlvbnMiLCJhdHRyaWJ1dGlvbnMiLCJrZXB0Iiwia2VwdFRva2VucyIsImF0dHJpYnV0aW9uIiwic2lnIiwic2l6ZSIsImluY2x1ZGVzIiwiaXNTdWJzdW1lZCIsInNvbWUiLCJldmVyeSIsInJlbmRlclNlcGFyYXRlZExpbmtzIiwiaXRlbXMiLCJyZW5kZXJJdGVtIiwiaXRlbSIsIkF0dHJpYnV0aW9uIiwiX3JlZjMiLCJfcmVmMyRzaG93QmFzZU1hcExpYkwiLCJzaG93QmFzZU1hcExpYkxvZ28iLCJfcmVmMyRiYXNlbWFwQXR0cmlidXQiLCJiYXNlbWFwQXR0cmlidXRpb25zIiwiX3JlZjMkZ2xvYmVBdHRyaWJ1dGlvIiwiZ2xvYmVBdHRyaWJ1dGlvbnMiLCJoYXNNb2JpbGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJtZW1vaXplZENvbXBvbmVudHMiLCJ1c2VNZW1vIiwiZGVkdXBlZEJhc2VtYXBBdHRyaWJ1dGlvbnMiLCJiYXNlbWFwQXR0cmlidXRpb25Ob2RlcyIsImdsb2JlQXR0cmlidXRpb25Ob2RlcyIsImF0dHIiLCJsYWJlbCIsIlN0eWxlZEF0dHJpYnV0aW9uIiwibWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcyIsInNob3dMb2dvIiwiRW5kSG9yaXpvbnRhbEZsZXhib3giLCJTdHlsZWRBdHRyaWJ1dGlvbkxvZ29Db250YWluZXIiLCJzaWRlUGFuZWwiLCJtYXJnaW4iLCJsZWZ0IiwiJGxlZnQiLCJTdHlsZWRMb2dvTGluayIsIiRlbmFibGVkIiwiTE9HT19MRUZUX0FESlVTVE1FTlQiLCJBdHRyaWJ1dGlvbkxvZ29zIiwiX3JlZjQiLCJsb2dvcyIsImFjdGl2ZVNpZGVQYW5lbCIsInNpZGVQYW5lbFdpZHRoIiwidXNlVGhlbWUiLCJsb2dvIiwibG9nb1VybCIsInVuZGVmaW5lZCIsImJvdHRvbSIsIm1hcmdpbkJvdHRvbSIsInNyYyIsImhlaWdodCIsImFsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAvYXR0cmlidXRpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHt1c2VUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0F0dHJpYnV0aW9uV2l0aFN0eWxlLCBEYXRhc2V0QXR0cmlidXRpb259IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtCYXNlTWFwTGlicmFyeUNvbmZpZywgaGFzTW9iaWxlV2lkdGh9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHticmVha1BvaW50VmFsdWVzfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQgdHlwZSB7R2xvYmVBdHRyaWJ1dGlvbn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuaW1wb3J0IHtTdHlsZWRBdHRyaWJ1dGlvbiwgRW5kSG9yaXpvbnRhbEZsZXhib3h9IGZyb20gJy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbnR5cGUgTWFwTGliTG9nb1Byb3BzID0ge1xuICBiYXNlTWFwTGlicmFyeUNvbmZpZzogQmFzZU1hcExpYnJhcnlDb25maWc7XG59O1xuXG5leHBvcnQgY29uc3QgTWFwTGliTG9nbyA9ICh7YmFzZU1hcExpYnJhcnlDb25maWd9OiBNYXBMaWJMb2dvUHJvcHMpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbG9nb1wiPlxuICAgIEJhc2VtYXAgYnk6XG4gICAgPGFcbiAgICAgIHN0eWxlPXt7bWFyZ2luTGVmdDogJzVweCd9fVxuICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJDc3NDbGFzc30tY3RybC1sb2dvYH1cbiAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIGhyZWY9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYlVybH1cbiAgICAgIGFyaWEtbGFiZWw9e2Ake2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYk5hbWV9IGxvZ29gfVxuICAgIC8+XG4gIDwvZGl2PlxuKTtcblxuaW50ZXJmYWNlIFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXJQcm9wcyB7XG4gIGlzUGFsbTogYm9vbGVhbjtcbn1cblxuY29uc3QgU3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lciA9IHN0eWxlZC5kaXY8U3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lclByb3BzPmBcbiAgbWF4LXdpZHRoOiAke3Byb3BzID0+IChwcm9wcy5pc1BhbG0gPyAnMjAwcHgnIDogJzMwMHB4Jyl9O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIG1hcmdpbi1yaWdodDogMnB4O1xuICBtYXJnaW4tYm90dG9tOiAxcHg7XG4gIGxpbmUtaGVpZ2h0OiAke3Byb3BzID0+IChwcm9wcy5pc1BhbG0gPyAnMWVtJyA6ICcxLjRlbScpfTtcblxuICAmOmhvdmVyIHtcbiAgICB3aGl0ZS1zcGFjZTogaW5oZXJpdDtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IERhdGFzZXRBdHRyaWJ1dGlvbnMgPSAoe1xuICBkYXRhc2V0QXR0cmlidXRpb25zLFxuICBpc1BhbG1cbn06IHtcbiAgZGF0YXNldEF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW107XG4gIGlzUGFsbTogYm9vbGVhbjtcbn0pID0+IChcbiAgPD5cbiAgICB7ZGF0YXNldEF0dHJpYnV0aW9ucz8ubGVuZ3RoID8gKFxuICAgICAgPFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXIgaXNQYWxtPXtpc1BhbG19PlxuICAgICAgICB7ZGF0YXNldEF0dHJpYnV0aW9ucy5tYXAoKGRzLCBpZHgpID0+IChcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgey4uLihkcy51cmwgPyB7aHJlZjogZHMudXJsfSA6IG51bGwpfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAga2V5PXtgJHtkcy50aXRsZX1fJHtpZHh9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZHMudGl0bGV9XG4gICAgICAgICAgICB7aWR4ICE9PSBkYXRhc2V0QXR0cmlidXRpb25zLmxlbmd0aCAtIDEgPyAnLCAnIDogbnVsbH1cbiAgICAgICAgICA8L2E+XG4gICAgICAgICkpfVxuICAgICAgPC9TdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyPlxuICAgICkgOiBudWxsfVxuICA8Lz5cbik7XG5cbnR5cGUgQXR0cmlidXRpb25Qcm9wcyA9IHtcbiAgc2hvd0Jhc2VNYXBMaWJMb2dvOiBib29sZWFuO1xuICBiYXNlbWFwQXR0cmlidXRpb25zPzogc3RyaW5nW107XG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnM6IERhdGFzZXRBdHRyaWJ1dGlvbltdO1xuICBiYXNlTWFwTGlicmFyeUNvbmZpZzogQmFzZU1hcExpYnJhcnlDb25maWc7XG4gIGdsb2JlQXR0cmlidXRpb25zPzogR2xvYmVBdHRyaWJ1dGlvbltdO1xufTtcblxuY29uc3QgQVRUUklCVVRJT05fU0FGRV9IUkVGX1JFR0VYID0gL14oaHR0cHM/OnxtYWlsdG86KS9pO1xuXG4vKipcbiAqIERlY29kZSB0aGUgaGFuZGZ1bCBvZiBIVE1MIGVudGl0aWVzIHRoYXQgY29tbW9ubHkgYXBwZWFyIGluIGJhc2VtYXBcbiAqIGF0dHJpYnV0aW9uIHN0cmluZ3MsIHNvIHRoZXkgcmVuZGVyIGFzIHRleHQgcmF0aGVyIHRoYW4gcmF3IGVudGl0aWVzLiBPbmx5XG4gKiBuZWVkZWQgb24gdGhlIFNTUiAvIG5vLURPTSBmYWxsYmFjayBwYXRoOyBpbiB0aGUgYnJvd3NlciBET01QYXJzZXIgZGVjb2Rlc1xuICogZW50aXRpZXMgZm9yIHVzLlxuICovXG5mdW5jdGlvbiBkZWNvZGVBdHRyaWJ1dGlvbkVudGl0aWVzKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoLyZjb3B5Oy9naSwgJ8KpJylcbiAgICAucmVwbGFjZSgvJm5ic3A7L2dpLCAnICcpXG4gICAgLnJlcGxhY2UoLyZsdDsvZ2ksICc8JylcbiAgICAucmVwbGFjZSgvJmd0Oy9naSwgJz4nKVxuICAgIC5yZXBsYWNlKC8mcXVvdDsvZ2ksICdcIicpXG4gICAgLnJlcGxhY2UoLyYjMCozOTsvZ2ksIFwiJ1wiKVxuICAgIC5yZXBsYWNlKC8mYW1wOy9naSwgJyYnKTtcbn1cblxuLyoqXG4gKiBTdHJpcCBhbGwgbWFya3VwIGZyb20gYSBzdHJpbmcgYXMgYSBmYWxsYmFjayBmb3IgZW52aXJvbm1lbnRzIHdpdGhvdXQgYSBET01cbiAqIChlLmcuIFNTUiksIHRoZW4gZGVjb2RlIGNvbW1vbiBIVE1MIGVudGl0aWVzLiBVc2VzIGEgbm9uLWdyZWVkeSB0YWcgbWF0Y2hlcjtcbiAqIG9ubHkgdXNlZCB3aGVuIERPTVBhcnNlciBpcyB1bmF2YWlsYWJsZSwgc28gaXQgbmV2ZXIgaGFzIHRvIGJlIHBlcmZlY3RseVxuICogY29ycmVjdC5cbiAqL1xuZnVuY3Rpb24gc3RyaXBUYWdzKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBkZWNvZGVBdHRyaWJ1dGlvbkVudGl0aWVzKGh0bWwucmVwbGFjZSgvPFtePl0qPi9nLCAnJykpLnRyaW0oKTtcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjb252ZXJ0IHBhcnNlZCBET00gbm9kZXMgaW50byBzYWZlIFJlYWN0IG5vZGVzLiBPbmx5IGFuY2hvclxuICogZWxlbWVudHMgd2l0aCBodHRwKHMpL21haWx0byBocmVmcyBiZWNvbWUgbGlua3M7IGV2ZXJ5IG90aGVyIGVsZW1lbnQgaXNcbiAqIGZsYXR0ZW5lZCB0byBpdHMgdGV4dCBjb250ZW50LiBUZXh0IG5vZGVzIGFyZSBlbWl0dGVkIHdpdGggaW50ZXJuYWxcbiAqIHdoaXRlc3BhY2UgY29sbGFwc2VkIHRvIHNpbmdsZSBzcGFjZXMgKG1hdGNoaW5nIEhUTUwgcmVuZGVyaW5nKSwgc28gdGhlXG4gKiBtZWFuaW5nZnVsIHNpbmdsZSBzcGFjZSBiZXR3ZWVuIGFkamFjZW50IGxpbmtzIGlzIHByZXNlcnZlZCB3aGlsZSB3ZSBhdm9pZFxuICogZW1pdHRpbmcgbGFyZ2Ugd2hpdGVzcGFjZSBibG9icy5cbiAqXG4gKiBBbmNob3JzIGFyZSBjb2xsYXBzZWQgdG8gdGhlaXIgYHRleHRDb250ZW50YCwgc28gYW55IG1hcmt1cCBuZXN0ZWQgaW5zaWRlIGFuXG4gKiBhbmNob3IgKGluY2x1ZGluZyBhbiBpbnZhbGlkIG5lc3RlZCBgPGE+YCkgYmVjb21lcyBwbGFpbiB0ZXh0IOKAlCBhIGxpbmsgY2FuXG4gKiBuZXZlciBjb250YWluIGFub3RoZXIgbGluay5cbiAqL1xuZnVuY3Rpb24gZG9tTm9kZXNUb1JlYWN0KFxuICBub2RlczogTm9kZUxpc3RPZjxDaGlsZE5vZGU+IHwgQ2hpbGROb2RlW10sXG4gIGtleVByZWZpeDogc3RyaW5nLFxuICBjb3VudGVyOiB7aTogbnVtYmVyfVxuKTogUmVhY3QuUmVhY3ROb2RlW10ge1xuICBjb25zdCByZXN1bHQ6IFJlYWN0LlJlYWN0Tm9kZVtdID0gW107XG4gIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMgLyogVEVYVF9OT0RFICovKSB7XG4gICAgICAvLyBjb2xsYXBzZSB3aGl0ZXNwYWNlIHJ1bnMgdG8gYSBzaW5nbGUgc3BhY2UgKEhUTUwtbGlrZSksIGtlZXBpbmcgYVxuICAgICAgLy8gbWVhbmluZ2Z1bCBzZXBhcmF0aW5nIHNwYWNlIGJldHdlZW4gYWRqYWNlbnQgaW5saW5lIGxpbmtzXG4gICAgICBjb25zdCB0ZXh0ID0gKG5vZGUudGV4dENvbnRlbnQgfHwgJycpLnJlcGxhY2UoL1xccysvZywgJyAnKTtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKDxSZWFjdC5GcmFnbWVudCBrZXk9e2Ake2tleVByZWZpeH0tdCR7Y291bnRlci5pKyt9YH0+e3RleHR9PC9SZWFjdC5GcmFnbWVudD4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gMSAvKiBFTEVNRU5UX05PREUgKi8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZWwgPSBub2RlIGFzIEVsZW1lbnQ7XG4gICAgY29uc3QgdGFnID0gZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIC8vIG5ldmVyIHN1cmZhY2UgdGhlIHNvdXJjZSBvZiBzY3JpcHQvc3R5bGUvdGVtcGxhdGUgZWxlbWVudHMgYXMgdGV4dFxuICAgIGlmICh0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZScgfHwgdGFnID09PSAnbm9zY3JpcHQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdhJykge1xuICAgICAgY29uc3QgaHJlZiA9IGVsLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnO1xuICAgICAgLy8gdGV4dENvbnRlbnQgZmxhdHRlbnMgYW55IG5lc3RlZCBtYXJrdXAgKGluY2wuIGEgbmVzdGVkIDxhPikgdG8gdGV4dCwgc29cbiAgICAgIC8vIHRoZSByZW5kZXJlZCBsaW5rIGNhbiBuZXZlciBjb250YWluIGFub3RoZXIgbGlua1xuICAgICAgY29uc3QgdGV4dCA9IGVsLnRleHRDb250ZW50IHx8ICcnO1xuICAgICAgaWYgKCF0ZXh0LnRyaW0oKSkgcmV0dXJuO1xuICAgICAgaWYgKEFUVFJJQlVUSU9OX1NBRkVfSFJFRl9SRUdFWC50ZXN0KGhyZWYpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBrZXk9e2Ake2tleVByZWZpeH0tYSR7Y291bnRlci5pKyt9YH1cbiAgICAgICAgICAgIGhyZWY9e2hyZWZ9XG4gICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgPC9hPlxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZHJvcCB1bnNhZmUgaHJlZnMgKGUuZy4gamF2YXNjcmlwdDopIGJ1dCBrZWVwIHRoZSBsaW5rIHRleHRcbiAgICAgICAgcmVzdWx0LnB1c2goPFJlYWN0LkZyYWdtZW50IGtleT17YCR7a2V5UHJlZml4fS1hJHtjb3VudGVyLmkrK31gfT57dGV4dH08L1JlYWN0LkZyYWdtZW50Pik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGFueSBvdGhlciBlbGVtZW50OiBrZWVwIGl0cyAocmVjdXJzaXZlbHkgcmVzb2x2ZWQpIGNoaWxkcmVuXG4gICAgcmVzdWx0LnB1c2goLi4uZG9tTm9kZXNUb1JlYWN0KGVsLmNoaWxkTm9kZXMsIGtleVByZWZpeCwgY291bnRlcikpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURPTVBhcnNlcigpOiB7bmV3ICgpOiBET01QYXJzZXJ9IHwgbnVsbCB7XG4gIHJldHVybiAoXG4gICAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5ET01QYXJzZXIpIHx8XG4gICAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiAoZ2xvYmFsVGhpcyBhcyBhbnkpLkRPTVBhcnNlcikgfHxcbiAgICBudWxsXG4gICk7XG59XG5cbi8qKlxuICogUGFyc2UgYSBiYXNlbWFwIGF0dHJpYnV0aW9uIEhUTUwgc3RyaW5nIGludG8gc2FmZSBSZWFjdCBub2Rlcy4gT25seSBhbmNob3JcbiAqIHRhZ3Mgd2l0aCBodHRwKHMpL21haWx0byBocmVmcyBiZWNvbWUgbGlua3M7IGV2ZXJ5dGhpbmcgZWxzZSBpcyByZW5kZXJlZCBhc1xuICogcGxhaW4gdGV4dC4gVGhpcyBhdm9pZHMgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgd2hpbGUgcHJlc2VydmluZyB0aGUgbGlua3NcbiAqIGN1c3RvbSBiYXNlbWFwIHN0eWxlcyAoZS5nLiBPcGVuRnJlZU1hcCkgZGVjbGFyZSBpbiB0aGVpciBhdHRyaWJ1dGlvbi5cbiAqXG4gKiBVc2VzIHRoZSBicm93c2VyJ3MgRE9NUGFyc2VyIChpbmVydDogc2NyaXB0cyBkb24ndCBydW4gYW5kIG5vIHJlc291cmNlcyBhcmVcbiAqIGZldGNoZWQpIHNvIG5lc3RlZCB0YWdzLCBgPmAgaW5zaWRlIGF0dHJpYnV0ZXMsIHVudXN1YWwgcXVvdGluZywgYW5kIEhUTUxcbiAqIGVudGl0aWVzIGFyZSBhbGwgaGFuZGxlZCBjb3JyZWN0bHkuIEZhbGxzIGJhY2sgdG8gcGxhaW4gdGV4dCB3aGVyZSBubyBET00gaXNcbiAqIGF2YWlsYWJsZSAoZS5nLiBTU1IpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQmFzZW1hcEF0dHJpYnV0aW9uKGh0bWw6IHN0cmluZywga2V5UHJlZml4OiBzdHJpbmcpOiBSZWFjdC5SZWFjdE5vZGVbXSB7XG4gIGNvbnN0IERPTVBhcnNlckN0b3IgPSByZXNvbHZlRE9NUGFyc2VyKCk7XG4gIGlmICghRE9NUGFyc2VyQ3Rvcikge1xuICAgIGNvbnN0IHRleHQgPSBzdHJpcFRhZ3MoaHRtbCk7XG4gICAgcmV0dXJuIHRleHQgPyBbPFJlYWN0LkZyYWdtZW50IGtleT17YCR7a2V5UHJlZml4fS10MGB9Pnt0ZXh0fTwvUmVhY3QuRnJhZ21lbnQ+XSA6IFtdO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlckN0b3IoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgIHJldHVybiBkb21Ob2Rlc1RvUmVhY3QoZG9jLmJvZHkuY2hpbGROb2Rlcywga2V5UHJlZml4LCB7aTogMH0pLmZpbHRlcihCb29sZWFuKTtcbiAgfSBjYXRjaCB7XG4gICAgY29uc3QgdGV4dCA9IHN0cmlwVGFncyhodG1sKTtcbiAgICByZXR1cm4gdGV4dCA/IFs8UmVhY3QuRnJhZ21lbnQga2V5PXtgJHtrZXlQcmVmaXh9LXQwYH0+e3RleHR9PC9SZWFjdC5GcmFnbWVudD5dIDogW107XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIHNldCBvZiBcInNpZ25hdHVyZVwiIHRva2VucyBmb3IgYW4gYXR0cmlidXRpb24gc3RyaW5nOiB0aGUgaG9zdG5hbWUgb2ZcbiAqIGVhY2ggc2FmZSBsaW5rIHBsdXMgdGhlIG5vcm1hbGl6ZWQgcGxhaW4gdGV4dCAobG93ZXJjYXNlZCwgcHVuY3R1YXRpb24gYW5kXG4gKiB0aGUgYm9pbGVycGxhdGUgd29yZCBcImNvbnRyaWJ1dG9yc1wiIHJlbW92ZWQpLiBUd28gYXR0cmlidXRpb25zIHRoYXQgcG9pbnQgYXRcbiAqIHRoZSBzYW1lIHByb3ZpZGVycyB0aGVyZWZvcmUgcHJvZHVjZSBvdmVybGFwcGluZyBzaWduYXR1cmVzIGV2ZW4gd2hlbiB0aGVpclxuICogd29yZGluZyBkaWZmZXJzIChlLmcuIFwiwqkgT3BlblN0cmVldE1hcFwiIHZzIFwiwqkgT3BlblN0cmVldE1hcCBjb250cmlidXRvcnNcIikuXG4gKi9cbmZ1bmN0aW9uIGF0dHJpYnV0aW9uU2lnbmF0dXJlKGh0bWw6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgdG9rZW5zID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IERPTVBhcnNlckN0b3IgPSByZXNvbHZlRE9NUGFyc2VyKCk7XG4gIGxldCB0ZXh0ID0gaHRtbDtcbiAgaWYgKERPTVBhcnNlckN0b3IpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlckN0b3IoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgICAgZG9jLmJvZHkucXVlcnlTZWxlY3RvckFsbCgnYScpLmZvckVhY2goYSA9PiB7XG4gICAgICAgIGNvbnN0IGhyZWYgPSBhLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnO1xuICAgICAgICBpZiAoQVRUUklCVVRJT05fU0FGRV9IUkVGX1JFR0VYLnRlc3QoaHJlZikpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdG9rZW5zLmFkZChgaHJlZjoke25ldyBVUkwoaHJlZikuaG9zdG5hbWUucmVwbGFjZSgvXnd3d1xcLi8sICcnKS50b0xvd2VyQ2FzZSgpfWApO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgdG9rZW5zLmFkZChgaHJlZjoke2hyZWYudG9Mb3dlckNhc2UoKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGV4dCA9IGRvYy5ib2R5LnRleHRDb250ZW50IHx8ICcnO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGV4dCA9IHN0cmlwVGFncyhodG1sKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGV4dCA9IHN0cmlwVGFncyhodG1sKTtcbiAgfVxuICBjb25zdCBub3JtYWxpemVkID0gdGV4dFxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL8KpfCZjb3B5Oy9nLCAnJylcbiAgICAucmVwbGFjZSgvXFxiY29udHJpYnV0b3JzP1xcYi9nLCAnJylcbiAgICAucmVwbGFjZSgvW15hLXowLTldKy9nLCAnICcpXG4gICAgLnRyaW0oKTtcbiAgaWYgKG5vcm1hbGl6ZWQpIHtcbiAgICAvLyBlbWl0IHBlci13b3JkIHRva2VucyBzbyBhIHNob3J0ZXIgYXR0cmlidXRpb24ncyB3b3JkcyBjYW4gYmUgc3Vic3VtZWQgYnlcbiAgICAvLyBhIGxvbmdlciBvbmUgdGhhdCBtZW50aW9ucyB0aGUgc2FtZSBwcm92aWRlcnMgKGUuZy4gXCJvcGVuc3RyZWV0bWFwXCIgaXNcbiAgICAvLyBjb3ZlcmVkIGJ5IGEgQ0FSVE8gc3RyaW5nIG1lbnRpb25pbmcgYm90aCBcImNhcnRvXCIgYW5kIFwib3BlbnN0cmVldG1hcFwiKVxuICAgIG5vcm1hbGl6ZWQuc3BsaXQoJyAnKS5mb3JFYWNoKHdvcmQgPT4ge1xuICAgICAgaWYgKHdvcmQpIHRva2Vucy5hZGQoYHRleHQ6JHt3b3JkfWApO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiB0b2tlbnM7XG59XG5cbi8qKlxuICogRHJvcCBhdHRyaWJ1dGlvbnMgd2hvc2UgcHJvdmlkZXJzIGFyZSBhbHJlYWR5IGZ1bGx5IHJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlXG4gKiBlYXJsaWVyIChrZXB0KSBhdHRyaWJ1dGlvbi4gT3JkZXIgaXMgcHJlc2VydmVkLCBhbmQgdGhlIGxvbmdlci9tb3JlIGNvbXBsZXRlXG4gKiBzdHJpbmdzIHRlbmQgdG8gY29tZSBmaXJzdCBmcm9tIHRoZSBzb3VyY2VzIHNvIHRoZXkgc3Vydml2ZS4gVGhpcyBjb2xsYXBzZXNcbiAqIG5lYXItZHVwbGljYXRlcyBzdWNoIGFzIGEgc3RhbmRhbG9uZSBcIsKpIE9wZW5TdHJlZXRNYXBcIiB3aGVuIGEgQ0FSVE8gc3RyaW5nXG4gKiB0aGF0IGFscmVhZHkgbGlua3MgT3BlblN0cmVldE1hcCBpcyBwcmVzZW50LlxuICpcbiAqIFN1YnN1bXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCBlYWNoIGtlcHQgYXR0cmlidXRpb24gKmluZGl2aWR1YWxseSogKG5ldmVyIGFcbiAqIG1lcmdlZCB1bmlvbiksIHNvIGFuIGVudHJ5IGlzIG9ubHkgZHJvcHBlZCB3aGVuIHNvbWUgc2luZ2xlIGVhcmxpZXIgZW50cnlcbiAqIGZ1bGx5IGNvdmVycyBpdC4gVGhpcyBhdm9pZHMgZmFsc2UgcG9zaXRpdmVzIHdoZXJlIHR3byB1bnJlbGF0ZWQgcHJvdmlkZXJzJ1xuICogdG9rZW5zIHRvZ2V0aGVyIGhhcHBlbiB0byBjb3ZlciBhIGRpc3RpbmN0IHRoaXJkIHByb3ZpZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVkdXBlQmFzZW1hcEF0dHJpYnV0aW9ucyhhdHRyaWJ1dGlvbnM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBjb25zdCBrZXB0OiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBrZXB0VG9rZW5zOiBTZXQ8c3RyaW5nPltdID0gW107XG4gIGF0dHJpYnV0aW9ucy5mb3JFYWNoKGF0dHJpYnV0aW9uID0+IHtcbiAgICBjb25zdCBzaWcgPSBhdHRyaWJ1dGlvblNpZ25hdHVyZShhdHRyaWJ1dGlvbik7XG4gICAgaWYgKHNpZy5zaXplID09PSAwKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGNvbXBhcmUgb247IGtlZXAgYXMtaXMgKGV4YWN0IGRlZHVwIGFscmVhZHkgZG9uZSB1cHN0cmVhbSlcbiAgICAgIGlmICgha2VwdC5pbmNsdWRlcyhhdHRyaWJ1dGlvbikpIHtcbiAgICAgICAga2VwdC5wdXNoKGF0dHJpYnV0aW9uKTtcbiAgICAgICAga2VwdFRva2Vucy5wdXNoKHNpZyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHN1YnN1bWVkIG9ubHkgaWYgc29tZSBzaW5nbGUga2VwdCBhdHRyaWJ1dGlvbidzIHRva2VucyBhcmUgYSBzdXBlcnNldFxuICAgIGNvbnN0IGlzU3Vic3VtZWQgPSBrZXB0VG9rZW5zLnNvbWUoXG4gICAgICB0b2tlbnMgPT4gdG9rZW5zLnNpemUgPiAwICYmIFsuLi5zaWddLmV2ZXJ5KHQgPT4gdG9rZW5zLmhhcyh0KSlcbiAgICApO1xuICAgIGlmICghaXNTdWJzdW1lZCkge1xuICAgICAga2VwdC5wdXNoKGF0dHJpYnV0aW9uKTtcbiAgICAgIGtlcHRUb2tlbnMucHVzaChzaWcpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBrZXB0O1xufVxuXG4vKipcbiAqIFJlbmRlciBhIGxpc3Qgb2YgaXRlbXMgYXMgYHwgaXRlbSB8IGl0ZW0gLi4uYCBmcmFnbWVudHMsIGVhY2ggcHJlY2VkZWQgYnkgYVxuICogcGlwZSBzZXBhcmF0b3IuIEtleXMgYXJlIGluZGV4LWJhc2VkIChzYWZlIGV2ZW4gd2hlbiBpdGVtIGNvbnRlbnQgY29sbGlkZXMsXG4gKiBlLmcuIHR3byBnbG9iZSBhdHRyaWJ1dGlvbnMgc2hhcmluZyBhIGxhYmVsKS4gUmV0dXJucyBudWxsIHdoZW4gZW1wdHkgc29cbiAqIGNhbGxlcnMgY2FuIGB7Z3JvdXB9YCBpbmxpbmUuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclNlcGFyYXRlZExpbmtzPFQ+KFxuICBpdGVtczogVFtdLFxuICBrZXlQcmVmaXg6IHN0cmluZyxcbiAgcmVuZGVySXRlbTogKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IFJlYWN0LlJlYWN0Tm9kZVxuKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgaWYgKCFpdGVtcy5sZW5ndGgpIHJldHVybiBudWxsO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXRlbXMubWFwKChpdGVtLCBpZHgpID0+IChcbiAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17YCR7a2V5UHJlZml4fS0ke2lkeH1gfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwaXBlLXNlcGFyYXRvclwiPnw8L3NwYW4+XG4gICAgICAgICAge3JlbmRlckl0ZW0oaXRlbSwgaWR4KX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuXG5leHBvcnQgY29uc3QgQXR0cmlidXRpb246IFJlYWN0LkZDPEF0dHJpYnV0aW9uUHJvcHM+ID0gKHtcbiAgc2hvd0Jhc2VNYXBMaWJMb2dvID0gdHJ1ZSxcbiAgYmFzZW1hcEF0dHJpYnV0aW9ucyA9IFtdLFxuICBkYXRhc2V0QXR0cmlidXRpb25zLFxuICBiYXNlTWFwTGlicmFyeUNvbmZpZyxcbiAgZ2xvYmVBdHRyaWJ1dGlvbnMgPSBbXVxufTogQXR0cmlidXRpb25Qcm9wcykgPT4ge1xuICBjb25zdCBpc1BhbG0gPSBoYXNNb2JpbGVXaWR0aChicmVha1BvaW50VmFsdWVzKTtcblxuICBjb25zdCBtZW1vaXplZENvbXBvbmVudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAvLyBjb2xsYXBzZSBuZWFyLWR1cGxpY2F0ZSBhdHRyaWJ1dGlvbnMgKGUuZy4gYSBzdGFuZGFsb25lIE9TTSBsaW5rIHdoZW4gYVxuICAgIC8vIENBUlRPIHN0cmluZyBhbHJlYWR5IGxpbmtzIE9TTSkgYmVmb3JlIHJlbmRlcmluZ1xuICAgIGNvbnN0IGRlZHVwZWRCYXNlbWFwQXR0cmlidXRpb25zID0gZGVkdXBlQmFzZW1hcEF0dHJpYnV0aW9ucyhiYXNlbWFwQXR0cmlidXRpb25zKTtcbiAgICAvLyBhdHRyaWJ1dGlvbnMgZGVjbGFyZWQgYnkgY3VzdG9tIGJhc2VtYXAgc3R5bGVzLCByZW5kZXJlZCBhcyBzYWZlIGxpbmtzXG4gICAgY29uc3QgYmFzZW1hcEF0dHJpYnV0aW9uTm9kZXMgPSByZW5kZXJTZXBhcmF0ZWRMaW5rcyhcbiAgICAgIGRlZHVwZWRCYXNlbWFwQXR0cmlidXRpb25zLFxuICAgICAgJ2Jhc2VtYXAtYXR0cicsXG4gICAgICAoYXR0cmlidXRpb24sIGlkeCkgPT4gKFxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiYXNlbWFwLWF0dHJpYnV0aW9uXCI+XG4gICAgICAgICAge3JlbmRlckJhc2VtYXBBdHRyaWJ1dGlvbihhdHRyaWJ1dGlvbiwgYGJhc2VtYXAtYXR0ci0ke2lkeH1gKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCBnbG9iZUF0dHJpYnV0aW9uTm9kZXMgPSByZW5kZXJTZXBhcmF0ZWRMaW5rcyhnbG9iZUF0dHJpYnV0aW9ucywgJ2dsb2JlLWF0dHInLCBhdHRyID0+IChcbiAgICAgIDxhIGhyZWY9e2F0dHIuaHJlZn0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICB7YXR0ci5sYWJlbH1cbiAgICAgIDwvYT5cbiAgICApKTtcblxuICAgIGlmICghc2hvd0Jhc2VNYXBMaWJMb2dvKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkQXR0cmlidXRpb25cbiAgICAgICAgICBtYXBMaWJDc3NDbGFzcz17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQ3NzQ2xhc3N9XG4gICAgICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcz17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQXR0cmlidXRpb25Dc3NDbGFzc31cbiAgICAgICAgICBzaG93TG9nbz17Z2xvYmVBdHRyaWJ1dGlvbnMubGVuZ3RoID4gMH1cbiAgICAgICAgPlxuICAgICAgICAgIDxFbmRIb3Jpem9udGFsRmxleGJveD5cbiAgICAgICAgICAgIDxEYXRhc2V0QXR0cmlidXRpb25zIGRhdGFzZXRBdHRyaWJ1dGlvbnM9e2RhdGFzZXRBdHRyaWJ1dGlvbnN9IGlzUGFsbT17aXNQYWxtfSAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbGlua1wiPlxuICAgICAgICAgICAgICB7ZGF0YXNldEF0dHJpYnV0aW9ucz8ubGVuZ3RoID8gPHNwYW4gY2xhc3NOYW1lPVwicGlwZS1zZXBhcmF0b3JcIj58PC9zcGFuPiA6IG51bGx9XG4gICAgICAgICAgICAgIHtnbG9iZUF0dHJpYnV0aW9ucy5sZW5ndGggJiYgaXNQYWxtID8gKFxuICAgICAgICAgICAgICAgIDxNYXBMaWJMb2dvIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPXtiYXNlTWFwTGlicmFyeUNvbmZpZ30gLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2tlcGxlci5nbC9wb2xpY3kvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICAgIMKpIGtlcGxlci5nbFxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIHtiYXNlbWFwQXR0cmlidXRpb25Ob2Rlc31cbiAgICAgICAgICAgICAge2dsb2JlQXR0cmlidXRpb25Ob2Rlc31cbiAgICAgICAgICAgICAge2dsb2JlQXR0cmlidXRpb25zLmxlbmd0aCA/IDxzcGFuIGNsYXNzTmFtZT1cInBpcGUtc2VwYXJhdG9yXCI+fDwvc3Bhbj4gOiBudWxsfVxuICAgICAgICAgICAgICB7Z2xvYmVBdHRyaWJ1dGlvbnMubGVuZ3RoICYmICFpc1BhbG0gPyAoXG4gICAgICAgICAgICAgICAgPE1hcExpYkxvZ28gYmFzZU1hcExpYnJhcnlDb25maWc9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnfSAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvRW5kSG9yaXpvbnRhbEZsZXhib3g+XG4gICAgICAgIDwvU3R5bGVkQXR0cmlidXRpb24+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQXR0cmlidXRpb25cbiAgICAgICAgbWFwTGliQ3NzQ2xhc3M9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkNzc0NsYXNzfVxuICAgICAgICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzfVxuICAgICAgICBzaG93TG9nbz17dHJ1ZX1cbiAgICAgID5cbiAgICAgICAgPEVuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgICAgIDxEYXRhc2V0QXR0cmlidXRpb25zIGRhdGFzZXRBdHRyaWJ1dGlvbnM9e2RhdGFzZXRBdHRyaWJ1dGlvbnN9IGlzUGFsbT17aXNQYWxtfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxpbmtcIj5cbiAgICAgICAgICAgIHtkYXRhc2V0QXR0cmlidXRpb25zPy5sZW5ndGggPyA8c3BhbiBjbGFzc05hbWU9XCJwaXBlLXNlcGFyYXRvclwiPnw8L3NwYW4+IDogbnVsbH1cbiAgICAgICAgICAgIHtpc1BhbG0gPyA8TWFwTGliTG9nbyBiYXNlTWFwTGlicmFyeUNvbmZpZz17YmFzZU1hcExpYnJhcnlDb25maWd9IC8+IDogbnVsbH1cbiAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2tlcGxlci5nbC9wb2xpY3kvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICDCqSBrZXBsZXIuZ2xcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIHtiYXNlbWFwQXR0cmlidXRpb25Ob2Rlc31cbiAgICAgICAgICAgIHtnbG9iZUF0dHJpYnV0aW9uTm9kZXN9XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwaXBlLXNlcGFyYXRvclwiPnw8L3NwYW4+XG4gICAgICAgICAgICB7IWlzUGFsbSA/IDxNYXBMaWJMb2dvIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPXtiYXNlTWFwTGlicmFyeUNvbmZpZ30gLz4gOiBudWxsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0VuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgPC9TdHlsZWRBdHRyaWJ1dGlvbj5cbiAgICApO1xuICB9LCBbXG4gICAgc2hvd0Jhc2VNYXBMaWJMb2dvLFxuICAgIGJhc2VtYXBBdHRyaWJ1dGlvbnMsXG4gICAgZGF0YXNldEF0dHJpYnV0aW9ucyxcbiAgICBpc1BhbG0sXG4gICAgYmFzZU1hcExpYnJhcnlDb25maWcsXG4gICAgZ2xvYmVBdHRyaWJ1dGlvbnNcbiAgXSk7XG5cbiAgcmV0dXJuIG1lbW9pemVkQ29tcG9uZW50cztcbn07XG5cbmNvbnN0IFN0eWxlZEF0dHJpYnV0aW9uTG9nb0NvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyRsZWZ0OiBudW1iZXJ9PmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2lkZVBhbmVsLm1hcmdpbi5sZWZ0fXB4O1xuICBsZWZ0OiAke3Byb3BzID0+IHByb3BzLiRsZWZ0fXB4O1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGdhcDogNHB4O1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluLW91dDtcbmA7XG5cbmNvbnN0IFN0eWxlZExvZ29MaW5rID0gc3R5bGVkLmE8eyRlbmFibGVkOiBib29sZWFufT5gXG4gIGN1cnNvcjogJHtwcm9wcyA9PiAocHJvcHMuJGVuYWJsZWQgPyAncG9pbnRlcicgOiAnZGVmYXVsdCcpfTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuYDtcblxudHlwZSBBdHRyaWJ1dGlvbkxvZ29zUHJvcHMgPSB7XG4gIGxvZ29zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdO1xuICBhY3RpdmVTaWRlUGFuZWw/OiBib29sZWFuO1xuICBzaWRlUGFuZWxXaWR0aD86IG51bWJlcjtcbn07XG5cbmNvbnN0IExPR09fTEVGVF9BREpVU1RNRU5UID0gMztcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0aW9uTG9nb3M6IFJlYWN0LkZDPEF0dHJpYnV0aW9uTG9nb3NQcm9wcz4gPSAoe1xuICBsb2dvcyxcbiAgYWN0aXZlU2lkZVBhbmVsLFxuICBzaWRlUGFuZWxXaWR0aFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCkgYXMgYW55O1xuICBjb25zdCBsZWZ0ID1cbiAgICAoYWN0aXZlU2lkZVBhbmVsID8gKHNpZGVQYW5lbFdpZHRoIHx8IDApICsgTE9HT19MRUZUX0FESlVTVE1FTlQgOiAwKSArXG4gICAgdGhlbWUuc2lkZVBhbmVsLm1hcmdpbi5sZWZ0O1xuXG4gIGlmICghbG9nb3M/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEF0dHJpYnV0aW9uTG9nb0NvbnRhaW5lciAkbGVmdD17bGVmdH0+XG4gICAgICB7bG9nb3MubWFwKChsb2dvLCBpZHgpID0+IChcbiAgICAgICAgPFN0eWxlZExvZ29MaW5rXG4gICAgICAgICAga2V5PXtsb2dvLmxvZ29VcmwgfHwgaWR4fVxuICAgICAgICAgIGhyZWY9e2xvZ28udXJsIHx8IHVuZGVmaW5lZH1cbiAgICAgICAgICB7Li4uKGxvZ28udXJsID8ge3RhcmdldDogJ19ibGFuaycsIHJlbDogJ25vb3BlbmVyIG5vcmVmZXJyZXInfSA6IHt9KX1cbiAgICAgICAgICAkZW5hYmxlZD17Qm9vbGVhbihsb2dvLnVybCl9XG4gICAgICAgICAgc3R5bGU9e2xvZ28uYm90dG9tID8ge21hcmdpbkJvdHRvbTogbG9nby5ib3R0b219IDogdW5kZWZpbmVkfVxuICAgICAgICA+XG4gICAgICAgICAgPGltZyBzcmM9e2xvZ28ubG9nb1VybH0gc3R5bGU9e3toZWlnaHQ6IGxvZ28uaGVpZ2h0IHx8IDEyfX0gYWx0PXtsb2dvLnRpdGxlfSAvPlxuICAgICAgICA8L1N0eWxlZExvZ29MaW5rPlxuICAgICAgKSl9XG4gICAgPC9TdHlsZWRBdHRyaWJ1dGlvbkxvZ29Db250YWluZXI+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUdBLElBQUFJLGtCQUFBLEdBQUFKLE9BQUE7QUFBb0YsSUFBQUssZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQVhwRjtBQUNBO0FBQUEsU0FBQVIsd0JBQUFTLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFYLHVCQUFBLFlBQUFBLHdCQUFBUyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFBLENBQUFiLENBQUEsRUFBQVEsQ0FBQSxjQUFBTSxFQUFBLElBQUFkLENBQUEsZ0JBQUFjLEVBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFB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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { MapState } from '@kepler.gl/types';
|
|
3
|
+
export type MapScaleProps = {
|
|
4
|
+
mapState: MapState;
|
|
5
|
+
mapIndex?: number;
|
|
6
|
+
};
|
|
7
|
+
declare function MapScaleFactory(): React.NamedExoticComponent<MapScaleProps>;
|
|
8
|
+
declare namespace MapScaleFactory {
|
|
9
|
+
var deps: any[];
|
|
10
|
+
}
|
|
11
|
+
export default MapScaleFactory;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = MapScaleFactory;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
12
|
+
var _distance = _interopRequireDefault(require("@turf/distance"));
|
|
13
|
+
var _d3Array = require("d3-array");
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
16
|
+
var _mapViewStateContext = require("../map-view-state-context");
|
|
17
|
+
var _utils = require("@kepler.gl/utils");
|
|
18
|
+
var _templateObject; // SPDX-License-Identifier: MIT
|
|
19
|
+
// Copyright contributors to the kepler.gl project
|
|
20
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
21
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
|
+
var DISPLAY_UNITS = {
|
|
24
|
+
km: [{
|
|
25
|
+
label: 'm',
|
|
26
|
+
meters: 1
|
|
27
|
+
}, {
|
|
28
|
+
label: 'km',
|
|
29
|
+
meters: 1000
|
|
30
|
+
}],
|
|
31
|
+
miles: [{
|
|
32
|
+
label: 'ft',
|
|
33
|
+
meters: 0.3048
|
|
34
|
+
}, {
|
|
35
|
+
label: 'mi',
|
|
36
|
+
meters: 1609.34
|
|
37
|
+
}]
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Pre-generated list of "round" numbers: 1, 2, 5, 10, 20, 50, 100, ...
|
|
41
|
+
var NICE_VALUES = (0, _d3Array.range)(15).flatMap(function (p) {
|
|
42
|
+
return [1, 2, 5].map(function (n) {
|
|
43
|
+
return n * Math.pow(10, p);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
function findLast(array, predicate) {
|
|
47
|
+
for (var i = array.length - 1; i >= 0; i--) {
|
|
48
|
+
if (predicate(array[i])) {
|
|
49
|
+
return array[i];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
var DISTANCE_PREFERENCE_KEY = 'keplergl_distancePreference';
|
|
55
|
+
function getStoredDistancePreference() {
|
|
56
|
+
try {
|
|
57
|
+
var stored = window.localStorage.getItem(DISTANCE_PREFERENCE_KEY);
|
|
58
|
+
if (stored === 'km' || stored === 'miles') return stored;
|
|
59
|
+
} catch (_unused) {
|
|
60
|
+
// localStorage unavailable (e.g. SSR)
|
|
61
|
+
}
|
|
62
|
+
return 'km';
|
|
63
|
+
}
|
|
64
|
+
function setStoredDistancePreference(value) {
|
|
65
|
+
try {
|
|
66
|
+
window.localStorage.setItem(DISTANCE_PREFERENCE_KEY, value);
|
|
67
|
+
} catch (_unused2) {
|
|
68
|
+
// localStorage unavailable
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
var StyledMapScale = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n cursor: pointer;\n padding: 0 1px 2px 1px;\n border-radius: 3px;\n border: 1px solid ", ";\n background-color: ", "cc;\n user-select: none;\n svg {\n text {\n fill: ", ";\n font-size: 10px;\n }\n path {\n stroke: ", ";\n }\n }\n"])), function (props) {
|
|
72
|
+
return props.theme.borderColor;
|
|
73
|
+
}, function (props) {
|
|
74
|
+
return props.theme.sidePanelBg;
|
|
75
|
+
}, function (props) {
|
|
76
|
+
return props.theme.textColorHl;
|
|
77
|
+
}, function (props) {
|
|
78
|
+
return props.theme.textColorHl;
|
|
79
|
+
});
|
|
80
|
+
var Scale = function Scale(_ref) {
|
|
81
|
+
var metersPerPixel = _ref.metersPerPixel,
|
|
82
|
+
_ref$maxWidth = _ref.maxWidth,
|
|
83
|
+
maxWidth = _ref$maxWidth === void 0 ? 150 : _ref$maxWidth,
|
|
84
|
+
_ref$height = _ref.height,
|
|
85
|
+
h = _ref$height === void 0 ? 15 : _ref$height,
|
|
86
|
+
_ref$displayUnits = _ref.displayUnits,
|
|
87
|
+
displayUnits = _ref$displayUnits === void 0 ? 'km' : _ref$displayUnits;
|
|
88
|
+
var maxMetersContainer = maxWidth * metersPerPixel;
|
|
89
|
+
var unit = findLast(DISPLAY_UNITS[displayUnits], function (u) {
|
|
90
|
+
return u.meters * NICE_VALUES[0] <= maxMetersContainer;
|
|
91
|
+
});
|
|
92
|
+
if (!unit) return null;
|
|
93
|
+
var niceValue = findLast(NICE_VALUES, function (v) {
|
|
94
|
+
return v * unit.meters <= maxMetersContainer;
|
|
95
|
+
});
|
|
96
|
+
if (!niceValue) return null;
|
|
97
|
+
var niceValuePixels = niceValue * unit.meters / metersPerPixel;
|
|
98
|
+
var x1 = Math.round((maxWidth - niceValuePixels) / 2);
|
|
99
|
+
var x2 = maxWidth - x1;
|
|
100
|
+
var w = x2 - x1 + 1;
|
|
101
|
+
var dx = (maxWidth - w) / 2;
|
|
102
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
103
|
+
width: w,
|
|
104
|
+
height: h
|
|
105
|
+
}, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("text", {
|
|
106
|
+
textAnchor: "middle",
|
|
107
|
+
x: w / 2,
|
|
108
|
+
y: h - 3
|
|
109
|
+
}, niceValue, " ", unit.label), /*#__PURE__*/_react["default"].createElement("path", {
|
|
110
|
+
d: "M ".concat(-dx + x1 + 0.5, " ").concat(h / 2, "\n L ").concat(-dx + x1 + 0.5, " ").concat(h, "\n L ").concat(-dx + x2 - 0.5, " ").concat(h, "\n L ").concat(-dx + x2 - 0.5, " ").concat(h / 2),
|
|
111
|
+
fill: "none"
|
|
112
|
+
})));
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// Reference ruler width in pixels used to sample real-world distance
|
|
116
|
+
var RULER_SIZE = 100;
|
|
117
|
+
MapScaleFactory.deps = [];
|
|
118
|
+
function MapScaleFactory() {
|
|
119
|
+
var MapScale = function MapScale(_ref2) {
|
|
120
|
+
var mapState = _ref2.mapState,
|
|
121
|
+
_ref2$mapIndex = _ref2.mapIndex,
|
|
122
|
+
mapIndex = _ref2$mapIndex === void 0 ? 0 : _ref2$mapIndex;
|
|
123
|
+
var _useContext = (0, _react.useContext)(_mapViewStateContext.MapViewStateContext),
|
|
124
|
+
getInternalViewState = _useContext.getInternalViewState;
|
|
125
|
+
var viewState = getInternalViewState(mapIndex);
|
|
126
|
+
var _useState = (0, _react.useState)(getStoredDistancePreference),
|
|
127
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
128
|
+
displayUnits = _useState2[0],
|
|
129
|
+
setDisplayUnits = _useState2[1];
|
|
130
|
+
var handleClick = (0, _react.useCallback)(function () {
|
|
131
|
+
setDisplayUnits(function (prev) {
|
|
132
|
+
var next = prev === 'km' ? 'miles' : 'km';
|
|
133
|
+
setStoredDistancePreference(next);
|
|
134
|
+
return next;
|
|
135
|
+
});
|
|
136
|
+
}, []);
|
|
137
|
+
if (!(0, _utils.getApplicationConfig)().enableMapScale) return null;
|
|
138
|
+
var mergedState = _objectSpread(_objectSpread({}, mapState), viewState);
|
|
139
|
+
var viewport = (0, _utils.getViewportFromMapState)(mergedState);
|
|
140
|
+
var cx = (mapState.width || 0) / 2;
|
|
141
|
+
var cy = (mapState.height || 0) / 2;
|
|
142
|
+
var p1 = viewport.unproject([cx - RULER_SIZE / 2, cy]);
|
|
143
|
+
var p2 = viewport.unproject([cx + RULER_SIZE / 2, cy]);
|
|
144
|
+
|
|
145
|
+
// unproject can return null in some edge cases (e.g. during globe projection)
|
|
146
|
+
if (!p1 || !p2) return null;
|
|
147
|
+
var metersPerPixel = (0, _distance["default"])(p1, p2, {
|
|
148
|
+
units: 'meters'
|
|
149
|
+
}) / RULER_SIZE;
|
|
150
|
+
if (!isFinite(metersPerPixel) || metersPerPixel <= 0) return null;
|
|
151
|
+
return /*#__PURE__*/_react["default"].createElement(StyledMapScale, {
|
|
152
|
+
className: "map-scale",
|
|
153
|
+
onClick: handleClick
|
|
154
|
+
}, /*#__PURE__*/_react["default"].createElement(Scale, {
|
|
155
|
+
metersPerPixel: metersPerPixel,
|
|
156
|
+
displayUnits: displayUnits
|
|
157
|
+
}));
|
|
158
|
+
};
|
|
159
|
+
MapScale.displayName = 'MapScale';
|
|
160
|
+
return /*#__PURE__*/_react["default"].memo(MapScale);
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGlzdGFuY2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9kM0FycmF5IiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9tYXBWaWV3U3RhdGVDb250ZXh0IiwiX3V0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkRJU1BMQVlfVU5JVFMiLCJrbSIsImxhYmVsIiwibWV0ZXJzIiwibWlsZXMiLCJOSUNFX1ZBTFVFUyIsInJhbmdlIiwiZmxhdE1hcCIsInAiLCJtYXAiLCJNYXRoIiwicG93IiwiZmluZExhc3QiLCJhcnJheSIsInByZWRpY2F0ZSIsInVuZGVmaW5lZCIsIkRJU1RBTkNFX1BSRUZFUkVOQ0VfS0VZIiwiZ2V0U3RvcmVkRGlzdGFuY2VQcmVmZXJlbmNlIiwic3RvcmVkIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIl91bnVzZWQiLCJzZXRTdG9yZWREaXN0YW5jZVByZWZlcmVuY2UiLCJ2YWx1ZSIsInNldEl0ZW0iLCJfdW51c2VkMiIsIlN0eWxlZE1hcFNjYWxlIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiYm9yZGVyQ29sb3IiLCJzaWRlUGFuZWxCZyIsInRleHRDb2xvckhsIiwiU2NhbGUiLCJfcmVmIiwibWV0ZXJzUGVyUGl4ZWwiLCJfcmVmJG1heFdpZHRoIiwibWF4V2lkdGgiLCJfcmVmJGhlaWdodCIsImhlaWdodCIsImgiLCJfcmVmJGRpc3BsYXlVbml0cyIsImRpc3BsYXlVbml0cyIsIm1heE1ldGVyc0NvbnRhaW5lciIsInVuaXQiLCJ1IiwibmljZVZhbHVlIiwidiIsIm5pY2VWYWx1ZVBpeGVscyIsIngxIiwicm91bmQiLCJ4MiIsInciLCJkeCIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsInRleHRBbmNob3IiLCJ4IiwieSIsImQiLCJjb25jYXQiLCJmaWxsIiwiUlVMRVJfU0laRSIsIk1hcFNjYWxlRmFjdG9yeSIsImRlcHMiLCJNYXBTY2FsZSIsIl9yZWYyIiwibWFwU3RhdGUiLCJfcmVmMiRtYXBJbmRleCIsIm1hcEluZGV4IiwiX3VzZUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiTWFwVmlld1N0YXRlQ29udGV4dCIsImdldEludGVybmFsVmlld1N0YXRlIiwidmlld1N0YXRlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2V0RGlzcGxheVVuaXRzIiwiaGFuZGxlQ2xpY2siLCJ1c2VDYWxsYmFjayIsInByZXYiLCJuZXh0IiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJlbmFibGVNYXBTY2FsZSIsIm1lcmdlZFN0YXRlIiwidmlld3BvcnQiLCJnZXRWaWV3cG9ydEZyb21NYXBTdGF0ZSIsImN4IiwiY3kiLCJwMSIsInVucHJvamVjdCIsInAyIiwiZGlzdGFuY2UiLCJ1bml0cyIsImlzRmluaXRlIiwiY2xhc3NOYW1lIiwib25DbGljayIsImRpc3BsYXlOYW1lIiwiUmVhY3QiLCJtZW1vIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC9tYXAtc2NhbGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBkaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQge3JhbmdlfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgUmVhY3QsIHtGQywgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7V2ViTWVyY2F0b3JWaWV3cG9ydH0gZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5cbmltcG9ydCB7TWFwVmlld1N0YXRlQ29udGV4dCwgTWFwVmlld1N0YXRlQ29udGV4dFR5cGV9IGZyb20gJy4uL21hcC12aWV3LXN0YXRlLWNvbnRleHQnO1xuaW1wb3J0IHtnZXRWaWV3cG9ydEZyb21NYXBTdGF0ZSwgZ2V0QXBwbGljYXRpb25Db25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtNYXBTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIE1hcFNjYWxlUHJvcHMgPSB7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbiAgbWFwSW5kZXg/OiBudW1iZXI7XG59O1xuXG50eXBlIFVuaXQgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG1ldGVyczogbnVtYmVyO1xufTtcblxuY29uc3QgRElTUExBWV9VTklUUzogUmVjb3JkPCdrbScgfCAnbWlsZXMnLCBVbml0W10+ID0ge1xuICBrbTogW1xuICAgIHtsYWJlbDogJ20nLCBtZXRlcnM6IDF9LFxuICAgIHtsYWJlbDogJ2ttJywgbWV0ZXJzOiAxMDAwfVxuICBdLFxuICBtaWxlczogW1xuICAgIHtsYWJlbDogJ2Z0JywgbWV0ZXJzOiAwLjMwNDh9LFxuICAgIHtsYWJlbDogJ21pJywgbWV0ZXJzOiAxNjA5LjM0fVxuICBdXG59O1xuXG4vLyBQcmUtZ2VuZXJhdGVkIGxpc3Qgb2YgXCJyb3VuZFwiIG51bWJlcnM6IDEsIDIsIDUsIDEwLCAyMCwgNTAsIDEwMCwgLi4uXG5jb25zdCBOSUNFX1ZBTFVFUyA9IHJhbmdlKDE1KS5mbGF0TWFwKHAgPT4gWzEsIDIsIDVdLm1hcChuID0+IG4gKiBNYXRoLnBvdygxMCwgcCkpKTtcblxuZnVuY3Rpb24gZmluZExhc3Q8VD4oYXJyYXk6IFRbXSwgcHJlZGljYXRlOiAoaXRlbTogVCkgPT4gYm9vbGVhbik6IFQgfCB1bmRlZmluZWQge1xuICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2ldKSkge1xuICAgICAgcmV0dXJuIGFycmF5W2ldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5jb25zdCBESVNUQU5DRV9QUkVGRVJFTkNFX0tFWSA9ICdrZXBsZXJnbF9kaXN0YW5jZVByZWZlcmVuY2UnO1xuXG5mdW5jdGlvbiBnZXRTdG9yZWREaXN0YW5jZVByZWZlcmVuY2UoKTogJ2ttJyB8ICdtaWxlcycge1xuICB0cnkge1xuICAgIGNvbnN0IHN0b3JlZCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShESVNUQU5DRV9QUkVGRVJFTkNFX0tFWSk7XG4gICAgaWYgKHN0b3JlZCA9PT0gJ2ttJyB8fCBzdG9yZWQgPT09ICdtaWxlcycpIHJldHVybiBzdG9yZWQ7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGxvY2FsU3RvcmFnZSB1bmF2YWlsYWJsZSAoZS5nLiBTU1IpXG4gIH1cbiAgcmV0dXJuICdrbSc7XG59XG5cbmZ1bmN0aW9uIHNldFN0b3JlZERpc3RhbmNlUHJlZmVyZW5jZSh2YWx1ZTogJ2ttJyB8ICdtaWxlcycpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oRElTVEFOQ0VfUFJFRkVSRU5DRV9LRVksIHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gbG9jYWxTdG9yYWdlIHVuYXZhaWxhYmxlXG4gIH1cbn1cblxuY29uc3QgU3R5bGVkTWFwU2NhbGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDAgMXB4IDJweCAxcHg7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm9yZGVyOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ib3JkZXJDb2xvcn07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2lkZVBhbmVsQmd9Y2M7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBzdmcge1xuICAgIHRleHQge1xuICAgICAgZmlsbDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgfVxuICAgIHBhdGgge1xuICAgICAgc3Ryb2tlOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG4gIH1cbmA7XG5cbmludGVyZmFjZSBTY2FsZVByb3BzIHtcbiAgbWV0ZXJzUGVyUGl4ZWw6IG51bWJlcjtcbiAgbWF4V2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgZGlzcGxheVVuaXRzPzogJ2ttJyB8ICdtaWxlcyc7XG59XG5cbmNvbnN0IFNjYWxlOiBGQzxTY2FsZVByb3BzPiA9ICh7XG4gIG1ldGVyc1BlclBpeGVsLFxuICBtYXhXaWR0aCA9IDE1MCxcbiAgaGVpZ2h0OiBoID0gMTUsXG4gIGRpc3BsYXlVbml0cyA9ICdrbSdcbn0pID0+IHtcbiAgY29uc3QgbWF4TWV0ZXJzQ29udGFpbmVyID0gbWF4V2lkdGggKiBtZXRlcnNQZXJQaXhlbDtcbiAgY29uc3QgdW5pdCA9IGZpbmRMYXN0KFxuICAgIERJU1BMQVlfVU5JVFNbZGlzcGxheVVuaXRzXSxcbiAgICB1ID0+IHUubWV0ZXJzICogTklDRV9WQUxVRVNbMF0gPD0gbWF4TWV0ZXJzQ29udGFpbmVyXG4gICk7XG4gIGlmICghdW5pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbmljZVZhbHVlID0gZmluZExhc3QoTklDRV9WQUxVRVMsIHYgPT4gdiAqIHVuaXQubWV0ZXJzIDw9IG1heE1ldGVyc0NvbnRhaW5lcik7XG4gIGlmICghbmljZVZhbHVlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBuaWNlVmFsdWVQaXhlbHMgPSAobmljZVZhbHVlICogdW5pdC5tZXRlcnMpIC8gbWV0ZXJzUGVyUGl4ZWw7XG4gIGNvbnN0IHgxID0gTWF0aC5yb3VuZCgobWF4V2lkdGggLSBuaWNlVmFsdWVQaXhlbHMpIC8gMik7XG4gIGNvbnN0IHgyID0gbWF4V2lkdGggLSB4MTtcbiAgY29uc3QgdyA9IHgyIC0geDEgKyAxO1xuICBjb25zdCBkeCA9IChtYXhXaWR0aCAtIHcpIC8gMjtcblxuICByZXR1cm4gKFxuICAgIDxzdmcgd2lkdGg9e3d9IGhlaWdodD17aH0+XG4gICAgICA8Zz5cbiAgICAgICAgPHRleHQgdGV4dEFuY2hvcj1cIm1pZGRsZVwiIHg9e3cgLyAyfSB5PXtoIC0gM30+XG4gICAgICAgICAge25pY2VWYWx1ZX0ge3VuaXQubGFiZWx9XG4gICAgICAgIDwvdGV4dD5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPXtgTSAkey1keCArIHgxICsgMC41fSAke2ggLyAyfVxuICAgICAgICAgICAgICBMICR7LWR4ICsgeDEgKyAwLjV9ICR7aH1cbiAgICAgICAgICAgICAgTCAkey1keCArIHgyIC0gMC41fSAke2h9XG4gICAgICAgICAgICAgIEwgJHstZHggKyB4MiAtIDAuNX0gJHtoIC8gMn1gfVxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZz5cbiAgICA8L3N2Zz5cbiAgKTtcbn07XG5cbi8vIFJlZmVyZW5jZSBydWxlciB3aWR0aCBpbiBwaXhlbHMgdXNlZCB0byBzYW1wbGUgcmVhbC13b3JsZCBkaXN0YW5jZVxuY29uc3QgUlVMRVJfU0laRSA9IDEwMDtcblxuTWFwU2NhbGVGYWN0b3J5LmRlcHMgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwU2NhbGVGYWN0b3J5KCkge1xuICBjb25zdCBNYXBTY2FsZTogRkM8TWFwU2NhbGVQcm9wcz4gPSAoe21hcFN0YXRlLCBtYXBJbmRleCA9IDB9KSA9PiB7XG4gICAgY29uc3Qge2dldEludGVybmFsVmlld1N0YXRlfSA9IHVzZUNvbnRleHQ8TWFwVmlld1N0YXRlQ29udGV4dFR5cGU+KE1hcFZpZXdTdGF0ZUNvbnRleHQpO1xuICAgIGNvbnN0IHZpZXdTdGF0ZSA9IGdldEludGVybmFsVmlld1N0YXRlKG1hcEluZGV4KTtcblxuICAgIGNvbnN0IFtkaXNwbGF5VW5pdHMsIHNldERpc3BsYXlVbml0c10gPSB1c2VTdGF0ZTwna20nIHwgJ21pbGVzJz4oXG4gICAgICBnZXRTdG9yZWREaXN0YW5jZVByZWZlcmVuY2VcbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXREaXNwbGF5VW5pdHMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBwcmV2ID09PSAna20nID8gJ21pbGVzJyA6ICdrbSc7XG4gICAgICAgIHNldFN0b3JlZERpc3RhbmNlUHJlZmVyZW5jZShuZXh0KTtcbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9KTtcbiAgICB9LCBbXSk7XG5cbiAgICBpZiAoIWdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZW5hYmxlTWFwU2NhbGUpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgbWVyZ2VkU3RhdGUgPSB7Li4ubWFwU3RhdGUsIC4uLnZpZXdTdGF0ZX07XG4gICAgY29uc3Qgdmlld3BvcnQgPSBnZXRWaWV3cG9ydEZyb21NYXBTdGF0ZShtZXJnZWRTdGF0ZSBhcyBNYXBTdGF0ZSkgYXMgV2ViTWVyY2F0b3JWaWV3cG9ydDtcblxuICAgIGNvbnN0IGN4ID0gKG1hcFN0YXRlLndpZHRoIHx8IDApIC8gMjtcbiAgICBjb25zdCBjeSA9IChtYXBTdGF0ZS5oZWlnaHQgfHwgMCkgLyAyO1xuICAgIGNvbnN0IHAxID0gdmlld3BvcnQudW5wcm9qZWN0KFtjeCAtIFJVTEVSX1NJWkUgLyAyLCBjeV0pO1xuICAgIGNvbnN0IHAyID0gdmlld3BvcnQudW5wcm9qZWN0KFtjeCArIFJVTEVSX1NJWkUgLyAyLCBjeV0pO1xuXG4gICAgLy8gdW5wcm9qZWN0IGNhbiByZXR1cm4gbnVsbCBpbiBzb21lIGVkZ2UgY2FzZXMgKGUuZy4gZHVyaW5nIGdsb2JlIHByb2plY3Rpb24pXG4gICAgaWYgKCFwMSB8fCAhcDIpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgbWV0ZXJzUGVyUGl4ZWwgPSBkaXN0YW5jZShwMSBhcyBbbnVtYmVyLCBudW1iZXJdLCBwMiBhcyBbbnVtYmVyLCBudW1iZXJdLCB7dW5pdHM6ICdtZXRlcnMnfSkgLyBSVUxFUl9TSVpFO1xuXG4gICAgaWYgKCFpc0Zpbml0ZShtZXRlcnNQZXJQaXhlbCkgfHwgbWV0ZXJzUGVyUGl4ZWwgPD0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZE1hcFNjYWxlIGNsYXNzTmFtZT1cIm1hcC1zY2FsZVwiIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfT5cbiAgICAgICAgPFNjYWxlIG1ldGVyc1BlclBpeGVsPXttZXRlcnNQZXJQaXhlbH0gZGlzcGxheVVuaXRzPXtkaXNwbGF5VW5pdHN9IC8+XG4gICAgICA8L1N0eWxlZE1hcFNjYWxlPlxuICAgICk7XG4gIH07XG5cbiAgTWFwU2NhbGUuZGlzcGxheU5hbWUgPSAnTWFwU2NhbGUnO1xuICByZXR1cm4gUmVhY3QubWVtbyhNYXBTY2FsZSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFB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
|
package/dist/map-container.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { Map as MaplibreMap } from '@vis.gl/react-maplibre';
|
|
|
4
4
|
import { VisStateActions, MapStateActions, UIStateActions } from '@kepler.gl/actions';
|
|
5
5
|
import MapPopoverFactory from './map/map-popover';
|
|
6
6
|
import MapControlFactory from './map/map-control';
|
|
7
|
+
import MapScaleFactory from './map/map-scale';
|
|
7
8
|
import { Attribution, AttributionLogos, renderBasemapAttribution, dedupeBasemapAttributions } from './map/attribution';
|
|
8
9
|
import EditorFactory from './editor/editor';
|
|
9
10
|
import { generateMapboxLayers } from '@kepler.gl/layers';
|
|
@@ -71,8 +72,8 @@ export interface MapContainerProps {
|
|
|
71
72
|
};
|
|
72
73
|
logoComponent?: React.FC | React.ReactNode;
|
|
73
74
|
}
|
|
74
|
-
declare function MapContainerFactory(MapPopover: ReturnType<typeof MapPopoverFactory>, MapControl: ReturnType<typeof MapControlFactory>, Editor: ReturnType<typeof EditorFactory>): React.ComponentType<MapContainerProps>;
|
|
75
|
+
declare function MapContainerFactory(MapPopover: ReturnType<typeof MapPopoverFactory>, MapControl: ReturnType<typeof MapControlFactory>, Editor: ReturnType<typeof EditorFactory>, MapScale: ReturnType<typeof MapScaleFactory>): React.ComponentType<MapContainerProps>;
|
|
75
76
|
declare namespace MapContainerFactory {
|
|
76
|
-
var deps: (typeof
|
|
77
|
+
var deps: (typeof MapScaleFactory | typeof MapPopoverFactory | typeof MapControlFactory | typeof EditorFactory)[];
|
|
77
78
|
}
|
|
78
79
|
export default MapContainerFactory;
|