UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

93 lines (92 loc) 17.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.hexagonVisConfigs = exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _layers = require("@deck.gl/layers"); var _aggregationLayer = _interopRequireDefault(require("../aggregation-layer")); var _deckglLayers = require("@kepler.gl/deckgl-layers"); var _hexagonUtils = require("./hexagon-utils"); var _hexagonLayerIcon = _interopRequireDefault(require("./hexagon-layer-icon")); var _utils = require("@kepler.gl/utils"); 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; } 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; } function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project var hexagonVisConfigs = exports.hexagonVisConfigs = { opacity: 'opacity', worldUnitSize: 'worldUnitSize', resolution: 'resolution', colorRange: 'colorRange', coverage: 'coverage', sizeRange: 'elevationRange', percentile: 'percentile', elevationPercentile: 'elevationPercentile', elevationScale: 'elevationScale', enableElevationZoomFactor: 'enableElevationZoomFactor', fixedHeight: 'fixedHeight', colorAggregation: 'colorAggregation', sizeAggregation: 'sizeAggregation', enable3d: 'enable3d' }; var HexagonLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer) { function HexagonLayer(props) { var _this; (0, _classCallCheck2["default"])(this, HexagonLayer); _this = _callSuper(this, HexagonLayer, [props]); _this.registerVisConfig(hexagonVisConfigs); _this.visConfigSettings.worldUnitSize.label = 'columns.hexagon.worldUnitSize'; return _this; } (0, _inherits2["default"])(HexagonLayer, _AggregationLayer); return (0, _createClass2["default"])(HexagonLayer, [{ key: "type", get: function get() { return 'hexagon'; } }, { key: "name", get: function get() { return 'Hexbin'; } }, { key: "layerIcon", get: function get() { return _hexagonLayerIcon["default"]; } }, { key: "renderLayer", value: function renderLayer(opts) { var data = opts.data, objectHovered = opts.objectHovered, mapState = opts.mapState; var defaultAggregationLayerProps = this.getDefaultAggregationLayerProp(opts); var zoomFactor = this.getZoomFactor(mapState); var visConfig = this.config.visConfig; var radius = visConfig.worldUnitSize * 1000; var hoveredObject = this.hasHoveredObject(objectHovered); return [new _deckglLayers.EnhancedHexagonLayer(_objectSpread(_objectSpread(_objectSpread({}, defaultAggregationLayerProps), data), {}, { wrapLongitude: false, radius: radius }))].concat((0, _toConsumableArray2["default"])(hoveredObject && !visConfig.enable3d ? [new _layers.GeoJsonLayer(_objectSpread(_objectSpread({}, this.getDefaultHoverLayerProps()), {}, { visible: defaultAggregationLayerProps.visible, wrapLongitude: false, data: [(0, _hexagonUtils.hexagonToPolygonGeo)(hoveredObject, {}, radius * visConfig.coverage, mapState)].filter(function (d) { return d; }), getLineColor: this.config.highlightColor, lineWidthScale: (0, _utils.clamp)([1, 100], radius * 0.1 * zoomFactor) }))] : [])); } }]); }(_aggregationLayer["default"]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9hZ2dyZWdhdGlvbkxheWVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9kZWNrZ2xMYXllcnMiLCJfaGV4YWdvblV0aWxzIiwiX2hleGFnb25MYXllckljb24iLCJfdXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsImhleGFnb25WaXNDb25maWdzIiwiZXhwb3J0cyIsIm9wYWNpdHkiLCJ3b3JsZFVuaXRTaXplIiwicmVzb2x1dGlvbiIsImNvbG9yUmFuZ2UiLCJjb3ZlcmFnZSIsInNpemVSYW5nZSIsInBlcmNlbnRpbGUiLCJlbGV2YXRpb25QZXJjZW50aWxlIiwiZWxldmF0aW9uU2NhbGUiLCJlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yIiwiZml4ZWRIZWlnaHQiLCJjb2xvckFnZ3JlZ2F0aW9uIiwic2l6ZUFnZ3JlZ2F0aW9uIiwiZW5hYmxlM2QiLCJIZXhhZ29uTGF5ZXIiLCJfQWdncmVnYXRpb25MYXllciIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwicmVnaXN0ZXJWaXNDb25maWciLCJ2aXNDb25maWdTZXR0aW5ncyIsImxhYmVsIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJnZXQiLCJIZXhhZ29uTGF5ZXJJY29uIiwidmFsdWUiLCJyZW5kZXJMYXllciIsIm9wdHMiLCJkYXRhIiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uTGF5ZXJQcm9wcyIsImdldERlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcCIsInpvb21GYWN0b3IiLCJnZXRab29tRmFjdG9yIiwidmlzQ29uZmlnIiwiY29uZmlnIiwicmFkaXVzIiwiaG92ZXJlZE9iamVjdCIsImhhc0hvdmVyZWRPYmplY3QiLCJFbmhhbmNlZEhleGFnb25MYXllciIsIndyYXBMb25naXR1ZGUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiR2VvSnNvbkxheWVyIiwiZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcyIsInZpc2libGUiLCJoZXhhZ29uVG9Qb2x5Z29uR2VvIiwiZCIsImdldExpbmVDb2xvciIsImhpZ2hsaWdodENvbG9yIiwibGluZVdpZHRoU2NhbGUiLCJjbGFtcCIsIkFnZ3JlZ2F0aW9uTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGV4YWdvbi1sYXllci9oZXhhZ29uLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7R2VvSnNvbkxheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IEFnZ3JlZ2F0aW9uTGF5ZXIsIHtBZ2dyZWdhdGlvbkxheWVyQ29uZmlnfSBmcm9tICcuLi9hZ2dyZWdhdGlvbi1sYXllcic7XG5pbXBvcnQge0VuaGFuY2VkSGV4YWdvbkxheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IHtoZXhhZ29uVG9Qb2x5Z29uR2VvfSBmcm9tICcuL2hleGFnb24tdXRpbHMnO1xuaW1wb3J0IEhleGFnb25MYXllckljb24gZnJvbSAnLi9oZXhhZ29uLWxheWVyLWljb24nO1xuaW1wb3J0IHtjbGFtcH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlLFxuICBWaXNDb25maWdCb29sZWFuLFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBWaXNDb25maWdTZWxlY3Rpb24sXG4gIE1lcmdlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBZ2dyZWdhdGlvblR5cGVzfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB0eXBlIEhleGFnb25MYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHdvcmxkVW5pdFNpemU6IFZpc0NvbmZpZ051bWJlcjtcbiAgcmVzb2x1dGlvbjogVmlzQ29uZmlnTnVtYmVyO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBjb3ZlcmFnZTogVmlzQ29uZmlnTnVtYmVyO1xuICBzaXplUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBwZXJjZW50aWxlOiBWaXNDb25maWdSYW5nZTtcbiAgZWxldmF0aW9uUGVyY2VudGlsZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGVsZXZhdGlvblNjYWxlOiBWaXNDb25maWdOdW1iZXI7XG4gIGVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3I6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGNvbG9yQWdncmVnYXRpb246IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbiAgc2l6ZUFnZ3JlZ2F0aW9uOiBWaXNDb25maWdTZWxlY3Rpb247XG4gIGVuYWJsZTNkOiBWaXNDb25maWdCb29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgSGV4YWdvbkxheWVyVmlzQ29uZmlnID0ge1xuICBvcGFjaXR5OiBudW1iZXI7XG4gIHdvcmxkVW5pdFNpemU6IG51bWJlcjtcbiAgcmVzb2x1dGlvbjogbnVtYmVyO1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICBjb3ZlcmFnZTogbnVtYmVyO1xuICBzaXplUmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG4gIHBlcmNlbnRpbGU6IFtudW1iZXIsIG51bWJlcl07XG4gIGVsZXZhdGlvblBlcmNlbnRpbGU6IFtudW1iZXIsIG51bWJlcl07XG4gIGVsZXZhdGlvblNjYWxlOiBudW1iZXI7XG4gIGVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3I6IGJvb2xlYW47XG4gIGNvbG9yQWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uVHlwZXM7XG4gIHNpemVBZ2dyZWdhdGlvbjogQWdncmVnYXRpb25UeXBlcztcbiAgZW5hYmxlM2Q6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBIZXhhZ29uTGF5ZXJDb25maWcgPSBNZXJnZTxBZ2dyZWdhdGlvbkxheWVyQ29uZmlnLCB7dmlzQ29uZmlnOiBIZXhhZ29uTGF5ZXJWaXNDb25maWd9PjtcblxuZXhwb3J0IGNvbnN0IGhleGFnb25WaXNDb25maWdzOiB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgd29ybGRVbml0U2l6ZTogJ3dvcmxkVW5pdFNpemUnO1xuICByZXNvbHV0aW9uOiAncmVzb2x1dGlvbic7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgY292ZXJhZ2U6ICdjb3ZlcmFnZSc7XG4gIHNpemVSYW5nZTogJ2VsZXZhdGlvblJhbmdlJztcbiAgcGVyY2VudGlsZTogJ3BlcmNlbnRpbGUnO1xuICBlbGV2YXRpb25QZXJjZW50aWxlOiAnZWxldmF0aW9uUGVyY2VudGlsZSc7XG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnO1xuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiAnZW5hYmxlRWxldmF0aW9uWm9vbUZhY3Rvcic7XG4gIGZpeGVkSGVpZ2h0OiAnZml4ZWRIZWlnaHQnO1xuICBjb2xvckFnZ3JlZ2F0aW9uOiAnY29sb3JBZ2dyZWdhdGlvbic7XG4gIHNpemVBZ2dyZWdhdGlvbjogJ3NpemVBZ2dyZWdhdGlvbic7XG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnO1xufSA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICB3b3JsZFVuaXRTaXplOiAnd29ybGRVbml0U2l6ZScsXG4gIHJlc29sdXRpb246ICdyZXNvbHV0aW9uJyxcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnLFxuICBjb3ZlcmFnZTogJ2NvdmVyYWdlJyxcbiAgc2l6ZVJhbmdlOiAnZWxldmF0aW9uUmFuZ2UnLFxuICBwZXJjZW50aWxlOiAncGVyY2VudGlsZScsXG4gIGVsZXZhdGlvblBlcmNlbnRpbGU6ICdlbGV2YXRpb25QZXJjZW50aWxlJyxcbiAgZWxldmF0aW9uU2NhbGU6ICdlbGV2YXRpb25TY2FsZScsXG4gIGVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3I6ICdlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yJyxcbiAgZml4ZWRIZWlnaHQ6ICdmaXhlZEhlaWdodCcsXG4gIGNvbG9yQWdncmVnYXRpb246ICdjb2xvckFnZ3JlZ2F0aW9uJyxcbiAgc2l6ZUFnZ3JlZ2F0aW9uOiAnc2l6ZUFnZ3JlZ2F0aW9uJyxcbiAgZW5hYmxlM2Q6ICdlbmFibGUzZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhleGFnb25MYXllciBleHRlbmRzIEFnZ3JlZ2F0aW9uTGF5ZXIge1xuICBkZWNsYXJlIHZpc0NvbmZpZ1NldHRpbmdzOiBIZXhhZ29uTGF5ZXJWaXNDb25maWdTZXR0aW5ncztcbiAgZGVjbGFyZSBjb25maWc6IEhleGFnb25MYXllckNvbmZpZztcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMucmVnaXN0ZXJWaXNDb25maWcoaGV4YWdvblZpc0NvbmZpZ3MpO1xuICAgIHRoaXMudmlzQ29uZmlnU2V0dGluZ3Mud29ybGRVbml0U2l6ZS5sYWJlbCA9ICdjb2x1bW5zLmhleGFnb24ud29ybGRVbml0U2l6ZSc7XG4gIH1cblxuICBnZXQgdHlwZSgpOiAnaGV4YWdvbicge1xuICAgIHJldHVybiAnaGV4YWdvbic7XG4gIH1cblxuICBnZXQgbmFtZSgpOiAnSGV4YmluJyB7XG4gICAgcmV0dXJuICdIZXhiaW4nO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gSGV4YWdvbkxheWVySWNvbjtcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgb2JqZWN0SG92ZXJlZCwgbWFwU3RhdGV9ID0gb3B0cztcblxuICAgIGNvbnN0IGRlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcChvcHRzKTtcbiAgICBjb25zdCB6b29tRmFjdG9yID0gdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHJhZGl1cyA9IHZpc0NvbmZpZy53b3JsZFVuaXRTaXplICogMTAwMDtcbiAgICBjb25zdCBob3ZlcmVkT2JqZWN0ID0gdGhpcy5oYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEhvdmVyZWQpO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBFbmhhbmNlZEhleGFnb25MYXllcih7XG4gICAgICAgIC4uLmRlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcHMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICByYWRpdXNcbiAgICAgIH0pLFxuXG4gICAgICAvLyByZW5kZXIgYW4gb3V0bGluZSBvZiBlYWNoIGhleGFnb24gaWYgbm90IGV4dHJ1ZGVkXG4gICAgICAuLi4oaG92ZXJlZE9iamVjdCAmJiAhdmlzQ29uZmlnLmVuYWJsZTNkXG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IEdlb0pzb25MYXllcih7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpLFxuICAgICAgICAgICAgICB2aXNpYmxlOiBkZWZhdWx0QWdncmVnYXRpb25MYXllclByb3BzLnZpc2libGUsXG4gICAgICAgICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICAgICAgaGV4YWdvblRvUG9seWdvbkdlbyhob3ZlcmVkT2JqZWN0LCB7fSwgcmFkaXVzICogdmlzQ29uZmlnLmNvdmVyYWdlLCBtYXBTdGF0ZSlcbiAgICAgICAgICAgICAgXS5maWx0ZXIoZCA9PiBkKSxcbiAgICAgICAgICAgICAgZ2V0TGluZUNvbG9yOiB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICAgICAgICAgICAgbGluZVdpZHRoU2NhbGU6IGNsYW1wKFsxLCAxMDBdLCByYWRpdXMgKiAwLjEgKiB6b29tRmFjdG9yKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pXG4gICAgXTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQXVDLFNBQUFPLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FB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