diff --git a/.gitignore b/.gitignore index b9e8d4a18..7066053bc 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ /package-lock.json .npmrc /dist/mapboxgl/resources/ -/dist/maplibregl/resources/ \ No newline at end of file +/dist/maplibregl/resources/ +/custom-dist/ \ No newline at end of file diff --git a/build/custom/common-webmapv2base.js b/build/custom/common-webmapv2base.js new file mode 100644 index 000000000..3c6e13ecd --- /dev/null +++ b/build/custom/common-webmapv2base.js @@ -0,0 +1 @@ +export * from '../../src/common/mapping/WebMapV2Base'; \ No newline at end of file diff --git a/build/custom/common.js b/build/custom/common.js new file mode 100644 index 000000000..0c733c284 --- /dev/null +++ b/build/custom/common.js @@ -0,0 +1,33 @@ +import { QueryBySQLParameters } from '../../src/common/iServer/QueryBySQLParameters'; +import { QueryByGeometryParameters } from '../../src/common/iServer/QueryByGeometryParameters'; +import { FilterParameter } from '../../src/common/iServer/FilterParameter'; +import { QueryBySQLService } from '../../src/common/iServer/QueryBySQLService'; +import { QueryService } from '../../src/common/iServer/QueryService'; +import { FetchRequest } from '../../src/common/util/FetchRequest'; +import { GetFeaturesBySQLParameters } from '../../src/common/iServer/GetFeaturesBySQLParameters'; +import { GetFeaturesBySQLService } from '../../src/common/iServer/GetFeaturesBySQLService'; +import { GetFeaturesByBoundsParameters } from '../../src/common/iServer/GetFeaturesByBoundsParameters'; +import { FeatureService } from '../../src/common/iServer/FeatureService'; +import { Util } from '../../src/common/commontypes/Util'; +import { ColorsPickerUtil } from '../../src/common/util/ColorsPickerUtil'; +import { GeometryPolygon, GeometryLinearRing, GeometryPoint } from '../../src/common/commontypes'; +import { mapboxFilterToQueryFilter } from '../../src/common/util/FilterCondition'; + +export { + QueryBySQLParameters, + QueryByGeometryParameters, + FilterParameter, + QueryBySQLService, + QueryService, + FetchRequest, + GetFeaturesBySQLParameters, + GetFeaturesBySQLService, + GetFeaturesByBoundsParameters, + FeatureService, + Util, + ColorsPickerUtil, + GeometryPolygon, + GeometryLinearRing, + GeometryPoint, + mapboxFilterToQueryFilter +}; diff --git a/build/custom/externals.js b/build/custom/externals.js new file mode 100644 index 000000000..fc8ca2a11 --- /dev/null +++ b/build/custom/externals.js @@ -0,0 +1,33 @@ +/** + * Remove specified keys from externals so those dependencies are bundled. + * @param {Object} externals + * @param {string[]} omitList + * @returns {Object} + */ +function omitExternals(externals, omitList = []) { + const result = Object.assign({}, externals); + omitList.forEach((key) => { + delete result[key]; + }); + return result; +} + +/** + * Parse omit list from env: VUE_ICLIENT_OMIT_EXTERNALS="@antv/g6,@antv/g2" + * @param {string[]} defaultOmit + * @returns {string[]} + */ +function parseOmitList(defaultOmit) { + const env = process.env.VUE_ICLIENT_OMIT_EXTERNALS; + if (!env) { + return defaultOmit; + } + return env.split(',').map((item) => item.trim()).filter(Boolean); +} + +module.exports = { + omitExternals, + parseOmitList, + COMMON_OMIT: ['@antv/g6'], + MAPBOXGL_OMIT: ['./L7/l7-render', '@antv/g2'] +}; diff --git a/build/custom/webpack.config.common-webmapv2base.js b/build/custom/webpack.config.common-webmapv2base.js new file mode 100644 index 000000000..93939078f --- /dev/null +++ b/build/custom/webpack.config.common-webmapv2base.js @@ -0,0 +1,48 @@ +// "deploy-common": "webpack --config ./build/webpack.config.common.js --color", + +// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; + +module.exports = { + target: ['es6'], + mode: 'production', + //页面入口文件配置 + entry: [`${__dirname}/common-webmapv2base.js`], + + output: { + clean: true, + path: `${__dirname}/../../custom-dist/iclient-common/`, + filename: 'iclient-common-webmapv2base.js', + chunkFormat: 'commonjs', + libraryTarget: 'umd' + }, + + //是否启用压缩 + optimization: { + minimize: true, + emitOnErrors: false + }, + //不显示打包文件大小相关警告 + performance: { + hints: false + }, + + //其它解决方案配置 + resolve: { + extensions: ['.js'] + }, + + module: { + rules: [ + { + test: [/\.js$/], + exclude: /node_modules[\/\\]proj4/, + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'] + } + } + ] + }, + + plugins: [] +}; diff --git a/build/custom/webpack.config.common.js b/build/custom/webpack.config.common.js new file mode 100644 index 000000000..d1b59bd41 --- /dev/null +++ b/build/custom/webpack.config.common.js @@ -0,0 +1,31 @@ +// "deploy-common": "webpack --config ./build/webpack.config.common.js --color", +module.exports = { + target: ['es5'], + mode: 'production', + //页面入口文件配置 + entry: [`${__dirname}/common.js`], + + output: { + path: `${__dirname}/../../custom-dist/iclient-common/`, + filename: `iclient-common.js`, + chunkFormat:'commonjs', + libraryTarget: 'umd' + }, + + //是否启用压缩 + optimization: { + minimize: true, + emitOnErrors: false + }, + //不显示打包文件大小相关警告 + performance: { + hints: false + }, + + //其它解决方案配置 + resolve: { + extensions: ['.js'] + }, + + plugins: [] +}; diff --git a/build/custom/webpack.config.mapboxgl.js b/build/custom/webpack.config.mapboxgl.js new file mode 100644 index 000000000..ed4f6ebb4 --- /dev/null +++ b/build/custom/webpack.config.mapboxgl.js @@ -0,0 +1,13 @@ +const mapboxglConfig = require('../webpack.config.mapboxgl'); +const { omitExternals, parseOmitList, MAPBOXGL_OMIT, COMMON_OMIT } = require('./externals'); +const configBase = require('../webpack.config.base'); + +// mapboxglConfig.externals[0] = Object.assign({}, configBase.externals, mapboxglExternals) +const [mapboxglExternals] = mapboxglConfig.externals; + +module.exports = Object.assign({}, mapboxglConfig, { + externals: [omitExternals(mapboxglExternals, parseOmitList(MAPBOXGL_OMIT.concat(COMMON_OMIT)))], + output: Object.assign({}, configBase.output('iclient-mapboxgl', 'iclient-mapboxgl'), { + path: `${__dirname}/../../custom-dist/iclient-mapboxgl/`, + }), +}); diff --git a/package.json b/package.json index e4b3c45a6..47d90ad6a 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,10 @@ "build-docs-maplibregl": "rimraf ./docs/maplibregl && jsdoc -c ./build/jsdocs/maplibregl/docs.json -R ./build/jsdocs/maplibregl/index.md", "build-docs-classic": "rimraf ./docs/classic && jsdoc -c ./build/jsdocs/classic/docs.json -R ./build/jsdocs/classic/index.md", "pre-publish": "node ./build/publish.js --leaflet && node ./build/publish.js --openlayers && node ./build/publish.js --mapboxgl && node ./build/publish.js --maplibregl && node ./build/publish.js --classic", + "deploy-custom-webmapv2base": "webpack --config ./build/custom/webpack.config.common-webmapv2base.js --color && rimraf ./custom-dist/iclient-common/iclient-common-webmapv2base.js.LICENSE.txt", + "deploy-custom-common": "webpack --config ./build/custom/webpack.config.common.js --color && rimraf ./custom-dist/iclient-common/iclient-common.js.LICENSE.txt", + "deploy-custom-mapboxgl-es5": "cross-env moduleVersion=es5 webpack --config ./build/custom/webpack.config.mapboxgl.js --color && uglifyjs ./custom-dist/iclient-mapboxgl/iclient-mapboxgl.js --ecma 5 --comments /iclient-/i -c -m -o ./custom-dist/iclient-mapboxgl/iclient-mapboxgl.min.js && cleancss -o ./custom-dist/iclient-mapboxgl/iclient-mapboxgl.min.css ./custom-dist/iclient-mapboxgl/iclient-mapboxgl.css && rimraf ./custom-dist/iclient-mapboxgl/iclient-mapboxgl.js ./custom-dist/iclient-mapboxgl/iclient-mapboxgl.css", + "deploy-custom-mapboxgl": "npm run deploy-custom-webmapv2base && npm run deploy-custom-common && npm run deploy-custom-mapboxgl-es5", "publish": "npm run pre-publish && cd ./src/common && npm publish && cd ../leaflet && npm publish && cd ../openlayers && npm publish && cd ../mapboxgl && npm publish && cd ../maplibregl && npm publish && cd ../classic && npm publish" }, "keywords": [ @@ -139,7 +143,7 @@ "dependencies": { "@antv/g2": "^4.2.11", "@antv/g6": "^4.8.14", - "@mapbox/mapbox-gl-style-spec": "^14.3.0", + "@mapbox/mapbox-gl-style-spec": "14.23.0", "@mapbox/vector-tile": "1.3.1", "@maplibre/maplibre-gl-style-spec": "^23.3.0", "@supermapgis/iclient-common": "file:src/common", diff --git a/src/common/mapping/MapBase.js b/src/common/mapping/MapBase.js index d4a221adc..9fa338d01 100644 --- a/src/common/mapping/MapBase.js +++ b/src/common/mapping/MapBase.js @@ -26,6 +26,10 @@ export function createMapClassExtending(SuperClass = class {}) { return this._legendList; } + setLegends(legendList) { + this._legendList = legendList || []; + } + getSelfAppreciableLayers() { return (this._sourceListModel && this._sourceListModel.getSelfLayers(...arguments)) || []; } @@ -84,7 +88,9 @@ export function createMapClassExtending(SuperClass = class {}) { } } Array.from(new Set(sourceList)).forEach((sourceId) => { - this.map.removeSource(sourceId); + if (this.map.getSource(sourceId)) { + this.map.removeSource(sourceId); + } }); } }; diff --git a/src/common/mapping/WebMapBase.js b/src/common/mapping/WebMapBase.js index e680e268f..515b40f2b 100644 --- a/src/common/mapping/WebMapBase.js +++ b/src/common/mapping/WebMapBase.js @@ -365,7 +365,17 @@ export function createWebMapBaseExtending(SuperClass, { mapRepo }) { * @returns {Array} 弹窗信息数组。 */ getPopupInfos() { - return this._handler._getPopupInfos() || []; + return (this._handler && this._handler._getPopupInfos()) || []; + } + + /** + * @version 11.3.0 + * @function WebMapBase.prototype.getLegendInfos + * @description 获取地图本身所有图层的legend状态。 + * @returns {Array} 图例信息数组,包含 showLegend、id、title 三个属性。 + */ + getLegendInfos() { + return (this._handler && this._handler._getLegendInfos()) || []; } /** @@ -485,16 +495,23 @@ export function createWebMapBaseExtending(SuperClass, { mapRepo }) { * @version 11.2.1 * @function WebMapBase.prototype.cleanLayers * @description 删除追加的图层和事件。当设置 `map` 时有效 + * @param {Array} [layersToClean] - 要删除的图层数组,默认为所有可删除的缓存图层(非 reused)。每个图层对象包含 id 属性 + * @param {boolean} [isClean=true] - 是否调用 clean(false) 销毁内部资源。为 false 时只删除指定图层并同步清理 legends */ - cleanLayers() { + cleanLayers(layersToClean = this._cacheCleanLayers.filter(item => !item.reused), isClean = true) { // 清空追加的地图图层以及对应的事件 if (!this.map) { return; } - const layersToClean = this._cacheCleanLayers.filter((item) => !item.reused); + const cacheLayers = this._cacheCleanLayers.filter((item) => !item.reused); this._handler && this._handler.cleanLayers(layersToClean); - this._cacheCleanLayers = []; - this.clean(false); + this._cacheCleanLayers = cacheLayers.filter(item => !layersToClean.some((item1=> item1.id === item.id))); + if (isClean) { + this.clean(false); + } else { + const legends = this.getLegends(); + this._handler.setLegends(legends.filter(item => !layersToClean.some((item1=> item1.id === item.layerId)))); + } } /** diff --git a/src/common/mapping/WebMapService.js b/src/common/mapping/WebMapService.js index a283d20e0..cb6bca900 100644 --- a/src/common/mapping/WebMapService.js +++ b/src/common/mapping/WebMapService.js @@ -1006,6 +1006,12 @@ export class WebMapService { return defaultValue; } + handleUrlWithCredentials(serviceUrl) { + if (serviceUrl && this.iportalServiceProxyUrl && serviceUrl.indexOf(this.iportalServiceProxyUrl) >= 0) { + return true; + } + return null; + } isIportalResourceUrl(serviceUrl) { return ( diff --git a/src/common/mapping/WebMapV2.js b/src/common/mapping/WebMapV2.js index 9e328f613..95f6973f7 100644 --- a/src/common/mapping/WebMapV2.js +++ b/src/common/mapping/WebMapV2.js @@ -60,6 +60,10 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa } this._appendLayers = true; this.map = map; + if (this.map.addLocalIdeographFontFamily) { + const fontFamilys = this._getLabelFontFamily(mapInfo); + this.map.addLocalIdeographFontFamily(fontFamilys); + } } this._mapInfo = mapInfo; this._loadLayers(mapInfo, this._taskID); @@ -210,6 +214,18 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa }).filter(item => item !== null); } + _getLegendInfos() { + const { layers = [] } = this._mapInfo; + return layers.map((layer) => { + const { legendSetting, name, layerID: layerId } = layer; + return { + showLegend: legendSetting ? legendSetting.isShow : false, + id: layerId, + title: name + }; + }); + } + _handleLayerInfo(mapInfo, _taskID) { mapInfo = this._setLayerID(mapInfo); this._mapInfo = mapInfo; @@ -916,6 +932,9 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa } } } + if (bounds && !this._isValidBounds(bounds)) { + bounds = null; + } this._addBaselayer({ url: [requestUrl], layerID: layerId, @@ -2869,6 +2888,35 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa return coor; } + // 校验 bounds 是否为合法的经纬度范围(EPSG:4326) + // 不合法返回 false:值非数字/无穷、左>=右、下>=上、四个坐标都在 ±0.5 度内(认为退化为原点附近)、超出经纬度范围 + _isValidBounds(bounds) { + if (!Array.isArray(bounds) || bounds.length !== 4) { + return false; + } + const [left, bottom, right, top] = bounds; + if (![left, bottom, right, top].every((v) => typeof v === 'number' && Number.isFinite(v))) { + return false; + } + if (left >= right || bottom >= top) { + return false; + } + // 容差,吸收浮点计算误差(如 180.00000000000006) + const tolerance = 1e-6; + if ( + Math.abs(left) > 180 + tolerance || + Math.abs(right) > 180 + tolerance || + Math.abs(bottom) > 90 + tolerance || + Math.abs(top) > 90 + tolerance + ) { + return false; + } + if (Math.abs(left) < 0.5 && Math.abs(right) < 0.5 && Math.abs(bottom) < 0.5 && Math.abs(top) < 0.5) { + return false; + } + return true; + } + _getMapCenter(mapInfo) { // center let center = mapInfo.center && [mapInfo.center.x, mapInfo.center.y]; diff --git a/src/common/mapping/WebMapV3.js b/src/common/mapping/WebMapV3.js index 72041b76e..5e3a2bfe6 100644 --- a/src/common/mapping/WebMapV3.js +++ b/src/common/mapping/WebMapV3.js @@ -160,7 +160,7 @@ export const LEGEND_STYLE_TYPES = { IMAGE: 'image', STYLE: 'style' }; -export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, crsManager, l7LayerUtil }) { +export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, crsManager, l7LayerUtil, webMapService }) { return class WebMapV3 extends SuperClass { constructor(mapId, options, mapOptions = {}) { super(); @@ -193,6 +193,10 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, crsMa sprite }); } + if (this.map.addLocalIdeographFontFamily) { + const fontFamilys = this._getLabelFontFamily(mapInfo); + this.map.addLocalIdeographFontFamily(fontFamilys); + } this._initLayers(); return; } @@ -389,6 +393,31 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, crsMa return res; } + _getLegendInfoByCatalog(catalog, res = []) { + const { catalogType, children, showLegend, title, id } = catalog; + if (catalogType === 'group' && children) { + children.forEach(child => { + this._getLegendInfoByCatalog(child, res); + }); + } + if (catalogType === 'layer') { + res.push({ + showLegend: showLegend !== false, + id: id, + title: title + }); + } + } + + _getLegendInfos(_mapResourceInfo = this._mapResourceInfo) { + const { catalogs = [] } = _mapResourceInfo; + const res = []; + catalogs.forEach((item) => { + this._getLegendInfoByCatalog(item, res); + }); + return res; + } + /** * @private * @function WebMapV3.prototype._initLayers @@ -466,7 +495,7 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, crsMa const mapResourceUrl = transformUrl( Object.assign({ url: `${this.options.server}web/maps/${this.mapId}` }, this.options) ); - return FetchRequest.get(mapResourceUrl, null, { withCredentials: this.options.withCredentials }).then((response) => + return FetchRequest.get(mapResourceUrl, null, { withCredentials: webMapService.handleUrlWithCredentials(mapResourceUrl) }).then((response) => response.json() ); } @@ -725,9 +754,9 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, crsMa * @function WebMapV3.prototype._getLabelFontFamily * @description 获取图层字体类型。 */ - _getLabelFontFamily() { + _getLabelFontFamily(mapInfo = this._mapInfo) { const fonts = ['sans-serif']; - const layers = this._mapInfo.layers; + const layers = mapInfo.layers; if (layers && layers.length > 0) { layers.forEach((layer) => { const textFont = (layer.layout && layer.layout['text-font']) || []; @@ -768,7 +797,7 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, crsMa _getSpriteData(sprite) { const url = sprite.replace(/.+(web\/maps\/.+)/, `${this.options.server}$1`); - return FetchRequest.get(url, null, { withCredentials: this.options.withCredentials }) + return FetchRequest.get(url, null, { withCredentials: webMapService.handleUrlWithCredentials(url) }) .then((response) => { return response.json(); }); diff --git a/src/common/mapping/utils/AppreciableLayerBase.js b/src/common/mapping/utils/AppreciableLayerBase.js index aa6063ede..dfc4f2f2d 100644 --- a/src/common/mapping/utils/AppreciableLayerBase.js +++ b/src/common/mapping/utils/AppreciableLayerBase.js @@ -98,10 +98,12 @@ export class AppreciableLayerBase extends Events { } } - setLayersVisible(layers, visibility) { + setLayersVisible(layers, visibility, isSetVisible = true) { layers.forEach((layer) => { const visbleId = this._getLayerVisibleId(layer); - this.layersVisibleMap.set(visbleId, visibility === 'visible'); + if (isSetVisible) { + this.layersVisibleMap.set(visbleId, visibility === 'visible'); + } if (layer.CLASS_INSTANCE && layer.CLASS_INSTANCE.show && layer.CLASS_INSTANCE.hide) { visibility === 'visible' ? layer.CLASS_INSTANCE.show() : layer.CLASS_INSTANCE.hide(); this.map.style.fire('data', { dataType: 'style' }); diff --git a/src/common/mapping/utils/L7LayerUtil.js b/src/common/mapping/utils/L7LayerUtil.js index a1d6087d2..456f4acd4 100644 --- a/src/common/mapping/utils/L7LayerUtil.js +++ b/src/common/mapping/utils/L7LayerUtil.js @@ -220,7 +220,7 @@ export function getL7Filter(filter, featureFilter) { } export function L7LayerUtil(config) { - const { featureFilter, expression, spec, L7Layer, L7, proj4 } = config; + const { featureFilter, expression, spec, L7Layer, L7, proj4, webMapService } = config; /** * @param {string} url @@ -244,7 +244,7 @@ export function L7LayerUtil(config) { */ function getRestDataFields(datasetUrl, credential, options) { const url = addCredentialToUrl(`${datasetUrl}/fields.json?returnAll=true`, credential); - return FetchRequest.get(url, null, options) + return FetchRequest.get(url, null, { ...options, withCredentials: webMapService.handleUrlWithCredentials(url) }) .then((res) => res.json()) .then((result) => { return result.map((item) => { @@ -270,7 +270,7 @@ export function L7LayerUtil(config) { */ function getRestDataDomains(datasetUrl, credential, options) { const url = addCredentialToUrl(`${datasetUrl}/domain.json`, credential); - return FetchRequest.get(url, null, options).then((result) => { + return FetchRequest.get(url, null, { ...options, withCredentials: webMapService.handleUrlWithCredentials(url) }).then((result) => { return result.json(); }); } @@ -453,7 +453,7 @@ export function L7LayerUtil(config) { const nextOptions = handleWithRequestOptions(datasetUrl, options); const { fieldNames, fieldTypes } = await getRestDataFieldInfo(datasetUrl, credential, nextOptions); const nextUrl = addCredentialToUrl(url, credential); - const attrDataInfo = await FetchRequest.post(nextUrl, JSON.stringify(SQLParams), nextOptions); + const attrDataInfo = await FetchRequest.post(nextUrl, JSON.stringify(SQLParams), { ...nextOptions, withCredentials: webMapService.handleUrlWithCredentials(nextUrl) }); const featuresRes = await attrDataInfo.json(); return { @@ -468,7 +468,7 @@ export function L7LayerUtil(config) { * @param option */ function getStructDataItemJson(href, option) { - return FetchRequest.get(href, null, option) + return FetchRequest.get(href, null, { ...option, withCredentials: webMapService.handleUrlWithCredentials(href) }) .then((res) => res.json()) .then((data) => { if (data.succeed === false) { @@ -616,10 +616,11 @@ export function L7LayerUtil(config) { */ async function getStructuredDataGeojsonByWebMap(data, options) { const allFeature = await getStructDataGeojson(data.dataId, options); + const url = `${options.server}web/datas/${data.dataId}/structureddata.json` const resultRes = await FetchRequest.get( - `${options.server}web/datas/${data.dataId}/structureddata.json`, + url, null, - options + { ...options, withCredentials: webMapService.handleUrlWithCredentials(url) } ); const result = await resultRes.json(); const projection = `EPSG:${result.epsgCode}`; diff --git a/src/common/mapping/utils/SourceListModelV3.js b/src/common/mapping/utils/SourceListModelV3.js index 637f3f776..f0ed952e5 100644 --- a/src/common/mapping/utils/SourceListModelV3.js +++ b/src/common/mapping/utils/SourceListModelV3.js @@ -175,17 +175,34 @@ export class SourceListModelV3 extends AppreciableLayerBase { const sourceOnMap = this.map.getSource(layer.source); if (!Object.keys(dataSource).length && sourceOnMap && sourceOnMap.type === 'vector') { const matchSource = this._mapInfo.sources[layer.source] || sourceOnMap; - if (matchSource.tiles && matchSource.tiles[0].includes('/rest/maps/')) { + if (matchSource.tiles && matchSource.tiles.length > 0) { const tileUrl = matchSource.tiles[0]; - const [serverUrl, leftParts] = tileUrl.split('/rest/maps/'); - const [mapName] = leftParts.split('/tileFeature'); - dataSource.url = `${serverUrl}/rest/maps`; - dataSource.mapName = mapName; - dataSource.type = 'REST_MAP'; - dataSource.layerName = serviceLayerId; + switch (true) { + case tileUrl.includes('/rest/maps/'): { + const [serverUrl, leftParts] = tileUrl.split('/rest/maps/'); + const [mapName] = leftParts.split('/tileFeature'); + dataSource.url = `${serverUrl}/rest/maps`; + dataSource.mapName = mapName; + dataSource.type = 'REST_MAP'; + dataSource.layerName = serviceLayerId; + break; + } + case tileUrl.includes('/restjsr/v1/'): { + const [serverUrl, leftParts] = tileUrl.split('/restjsr/v1/'); + const [mapName] = leftParts.split('/tiles/'); + dataSource.url = `${serverUrl}/restjsr/v1/vectortile/maps`; + dataSource.mapName = mapName; + dataSource.type = 'RESTJSR'; + break; + } + default: { + dataSource.url = tileUrl; + dataSource.type = 'VECTOR_OTHER'; + } + } } } - layerInfo.dataSource = dataSource; + layerInfo.dataSource = Object.assign(dataSource, { serviceLayerId }); if (this._l7LayerUtil.isL7Layer(layer)) { layerInfo.CLASS_NAME = 'L7Layer'; } diff --git a/src/common/util/MapExtend.js b/src/common/util/MapExtend.js index 552f8ec7f..326247013 100644 --- a/src/common/util/MapExtend.js +++ b/src/common/util/MapExtend.js @@ -101,8 +101,10 @@ export function createMapExtendExtending(product) { } return this; } - this.style.setLayoutProperty(layerID, name, value); - this._update(true); + if (this.getLayer(layerID)) { + this.style.setLayoutProperty(layerID, name, value); + this._update(true); + } return this; } diff --git a/src/mapboxgl/mapping/WebMap.js b/src/mapboxgl/mapping/WebMap.js index 283fa43fc..fd340786d 100644 --- a/src/mapboxgl/mapping/WebMap.js +++ b/src/mapboxgl/mapping/WebMap.js @@ -122,7 +122,8 @@ export class WebMap extends createWebMapBaseExtending(mapboxgl.Evented, { mapRep spec, L7Layer, L7, - proj4: this._crsManager.getProj4() + proj4: this._crsManager.getProj4(), + webMapService: this.webMapService }); switch (type) { case 'MapStyle': @@ -130,7 +131,8 @@ export class WebMap extends createWebMapBaseExtending(mapboxgl.Evented, { mapRep case 'WebMap3': return createWebMapV3Extending(createMapClassExtending(mapboxgl.Evented), { ...commonFactoryOptions, - l7LayerUtil + l7LayerUtil, + webMapService: this.webMapService }); default: return createWebMapV2Extending( diff --git a/src/mapboxgl/package.json b/src/mapboxgl/package.json index 4aa669599..71eea8eaa 100644 --- a/src/mapboxgl/package.json +++ b/src/mapboxgl/package.json @@ -15,7 +15,7 @@ "author": "SuperMap", "license": "Apache-2.0", "dependencies": { - "@mapbox/mapbox-gl-style-spec": "^14.3.0", + "@mapbox/mapbox-gl-style-spec": "14.23.0", "@turf/turf": "7.2.0", "@turf/meta": "^7.2.0", "mapv": "2.0.62", diff --git a/src/maplibregl/mapping/WebMap.js b/src/maplibregl/mapping/WebMap.js index d18db2b18..4c622f0e1 100644 --- a/src/maplibregl/mapping/WebMap.js +++ b/src/maplibregl/mapping/WebMap.js @@ -121,7 +121,8 @@ export class WebMap extends createWebMapBaseExtending(maplibregl.Evented, { mapR spec, L7Layer, L7, - proj4: this._crsManager.getProj4() + proj4: this._crsManager.getProj4(), + webMapService: this.webMapService }); switch (type) { case 'MapStyle': @@ -129,7 +130,8 @@ export class WebMap extends createWebMapBaseExtending(maplibregl.Evented, { mapR case 'WebMap3': return createWebMapV3Extending(createMapClassExtending(maplibregl.Evented), { ...commonFactoryOptions, - l7LayerUtil + l7LayerUtil, + webMapService: this.webMapService }); default: return createWebMapV2Extending( diff --git a/test/common/mapping/MapBaseSpec.js b/test/common/mapping/MapBaseSpec.js new file mode 100644 index 000000000..5b75576f1 --- /dev/null +++ b/test/common/mapping/MapBaseSpec.js @@ -0,0 +1,200 @@ +import { createMapClassExtending } from '@supermapgis/iclient-common/mapping/MapBase'; + +describe('MapBase', () => { + let MapBase; + let instance; + + beforeEach(() => { + MapBase = createMapClassExtending(); + instance = new MapBase(); + }); + + describe('setLegends', () => { + it('should set _legendList with provided array', () => { + const legends = [ + { layerId: 'layer1', items: [{ color: '#fff', label: 'test' }] }, + { layerId: 'layer2', items: [{ color: '#000' }] } + ]; + + instance.setLegends(legends); + + expect(instance._legendList).toEqual(legends); + }); + + it('should set _legendList to empty array when null is passed', () => { + instance.setLegends(null); + + expect(instance._legendList).toEqual([]); + }); + + it('should set _legendList to empty array when undefined is passed', () => { + instance.setLegends(undefined); + + expect(instance._legendList).toEqual([]); + }); + + it('should set _legendList to empty array when no argument is passed', () => { + instance.setLegends(); + + expect(instance._legendList).toEqual([]); + }); + + it('should overwrite existing legends', () => { + instance._legendList = [{ layerId: 'old' }]; + + instance.setLegends([{ layerId: 'new' }]); + + expect(instance._legendList).toEqual([{ layerId: 'new' }]); + }); + }); + + describe('getLegends', () => { + it('should return _legendList', () => { + const legends = [{ layerId: 'layer1' }]; + instance._legendList = legends; + + expect(instance.getLegends()).toEqual(legends); + }); + + it('should return empty array when _legendList is not set', () => { + expect(instance.getLegends()).toEqual([]); + }); + }); + + describe('getLayerCatalog', () => { + it('should return _sourceListModel.getLayerCatalog() when _sourceListModel exists', () => { + const catalogs = [{ id: 'cat1' }]; + instance._sourceListModel = jasmine.createSpyObj('sourceListModel', ['getLayerCatalog']); + instance._sourceListModel.getLayerCatalog.and.returnValue(catalogs); + + expect(instance.getLayerCatalog()).toEqual(catalogs); + }); + + it('should return empty array when _sourceListModel is null', () => { + instance._sourceListModel = null; + + expect(instance.getLayerCatalog()).toEqual([]); + }); + }); + + describe('getLayers', () => { + it('should return _sourceListModel.getLayers() when _sourceListModel exists', () => { + const layers = [{ id: 'layer1' }]; + instance._sourceListModel = jasmine.createSpyObj('sourceListModel', ['getLayers']); + instance._sourceListModel.getLayers.and.returnValue(layers); + + expect(instance.getLayers()).toEqual(layers); + }); + + it('should return empty array when _sourceListModel is null', () => { + instance._sourceListModel = null; + + expect(instance.getLayers()).toEqual([]); + }); + }); + + describe('cleanLayers', () => { + beforeEach(() => { + instance.map = jasmine.createSpyObj('map', [ + 'getLayer', + 'removeLayer', + 'getSource', + 'removeSource' + ]); + }); + + it('should remove layers from map', () => { + const layers = [ + { + renderLayers: ['layer1', 'layer2'], + renderSource: { id: 'source1' }, + l7Layer: false + } + ]; + instance.map.getLayer.and.callFake((layerId) => { + if (layerId === 'layer1' || layerId === 'layer2') { + return { source: 'source1' }; + } + return undefined; + }); + instance.map.getSource.and.returnValue(true); + + instance.cleanLayers(layers); + + expect(instance.map.removeLayer).toHaveBeenCalledWith('layer1'); + expect(instance.map.removeLayer).toHaveBeenCalledWith('layer2'); + }); + + it('should remove sources from map when layers are removed', () => { + const layers = [ + { + renderLayers: ['layer1'], + renderSource: { id: 'source1' }, + l7Layer: false + } + ]; + instance.map.getLayer.and.returnValue({ source: 'source1' }); + instance.map.getSource.and.returnValue(true); + + instance.cleanLayers(layers); + + expect(instance.map.removeSource).toHaveBeenCalledWith('source1'); + }); + + it('should not remove source when renderSource.id is falsy', () => { + const layers = [ + { + renderLayers: ['layer1'], + renderSource: { id: null }, + l7Layer: false + } + ]; + instance.map.getLayer.and.returnValue({ source: null }); + // getSource(null) returns falsy, so source won't be added to list + instance.map.getSource.and.returnValue(false); + + instance.cleanLayers(layers); + + expect(instance.map.removeSource).not.toHaveBeenCalled(); + }); + + it('should not remove source when layer is l7Layer', () => { + const layers = [ + { + renderLayers: ['layer1'], + renderSource: { id: 'source1' }, + l7Layer: true + } + ]; + instance.map.getLayer.and.returnValue({ source: 'source1' }); + instance.map.getSource.and.returnValue(true); + + instance.cleanLayers(layers); + + expect(instance.map.removeSource).not.toHaveBeenCalled(); + }); + + it('should deduplicate sources before removal', () => { + const layers = [ + { + renderLayers: ['layer1'], + renderSource: { id: 'source1' }, + l7Layer: false + }, + { + renderLayers: ['layer2'], + renderSource: { id: 'source1' }, + l7Layer: false + } + ]; + instance.map.getLayer.and.returnValue({ source: 'source1' }); + instance.map.getSource.and.returnValue(true); + + instance.cleanLayers(layers); + + // Should only call removeSource once due to deduplication + expect(instance.map.removeSource).toHaveBeenCalledTimes(1); + expect(instance.map.removeSource).toHaveBeenCalledWith('source1'); + }); + }); +}); diff --git a/test/common/mapping/WebMapBaseSpec.js b/test/common/mapping/WebMapBaseSpec.js new file mode 100644 index 000000000..729c475f8 --- /dev/null +++ b/test/common/mapping/WebMapBaseSpec.js @@ -0,0 +1,227 @@ +import { createMapClassExtending } from '../../../src/common/mapping/MapBase'; +import { createWebMapBaseExtending } from '../../../src/common/mapping/WebMapBase'; +import { Events } from '../../../src/common/commontypes'; + +function createWebMapBaseInstance() { + const WebMapBase = createWebMapBaseExtending(Events, { mapRepo: {} }); + return new WebMapBase('', { target: 'map' }); +} + +describe('WebMapBase - MapBase Methods', () => { + let MapBase; + let instance; + + beforeEach(() => { + MapBase = createMapClassExtending(); + instance = new MapBase(); + }); + + describe('setLegends', () => { + it('should set _legendList with provided array', () => { + const legends = [ + { layerId: 'layer1', items: [{ color: '#fff', label: 'test' }] }, + { layerId: 'layer2', items: [{ color: '#000' }] } + ]; + + instance.setLegends(legends); + + expect(instance._legendList).toEqual(legends); + }); + + it('should set _legendList to empty array when null is passed', () => { + instance.setLegends(null); + + expect(instance._legendList).toEqual([]); + }); + + it('should set _legendList to empty array when undefined is passed', () => { + instance.setLegends(undefined); + + expect(instance._legendList).toEqual([]); + }); + }); + + describe('getLegends', () => { + it('should return _legendList', () => { + const legends = [{ layerId: 'layer1' }]; + instance._legendList = legends; + + expect(instance.getLegends()).toEqual(legends); + }); + + it('should return empty array when _legendList is not set', () => { + expect(instance.getLegends()).toEqual([]); + }); + }); + + describe('getLayerCatalog', () => { + it('should return _sourceListModel.getLayerCatalog() when _sourceListModel exists', () => { + const catalogs = [{ id: 'cat1' }]; + instance._sourceListModel = jasmine.createSpyObj('sourceListModel', ['getLayerCatalog']); + instance._sourceListModel.getLayerCatalog.and.returnValue(catalogs); + + expect(instance.getLayerCatalog()).toEqual(catalogs); + }); + + it('should return empty array when _sourceListModel is null', () => { + instance._sourceListModel = null; + + expect(instance.getLayerCatalog()).toEqual([]); + }); + }); + + describe('getLayers', () => { + it('should return _sourceListModel.getLayers() when _sourceListModel exists', () => { + const layers = [{ id: 'layer1' }]; + instance._sourceListModel = jasmine.createSpyObj('sourceListModel', ['getLayers']); + instance._sourceListModel.getLayers.and.returnValue(layers); + + expect(instance.getLayers()).toEqual(layers); + }); + + it('should return empty array when _sourceListModel is null', () => { + instance._sourceListModel = null; + + expect(instance.getLayers()).toEqual([]); + }); + }); +}); + +describe('WebMapBase - getLegendInfos', () => { + let instance; + let mockHandler; + + beforeEach(() => { + instance = createWebMapBaseInstance(); + mockHandler = { + _getLegendInfos: jasmine.createSpy('_getLegendInfos').and.returnValue([ + { showLegend: true, id: 'layer1', title: 'Layer 1' }, + { showLegend: false, id: 'layer2', title: 'Layer 2' } + ]) + }; + instance._handler = mockHandler; + }); + + it('should call handler._getLegendInfos and return result', () => { + const result = instance.getLegendInfos(); + + expect(mockHandler._getLegendInfos).toHaveBeenCalled(); + expect(result).toEqual([ + { showLegend: true, id: 'layer1', title: 'Layer 1' }, + { showLegend: false, id: 'layer2', title: 'Layer 2' } + ]); + }); + + it('should return empty array when handler._getLegendInfos returns empty array', () => { + mockHandler._getLegendInfos.and.returnValue([]); + + expect(instance.getLegendInfos()).toEqual([]); + }); + + it('should return empty array when handler._getLegendInfos returns null', () => { + mockHandler._getLegendInfos.and.returnValue(null); + + expect(instance.getLegendInfos()).toEqual([]); + }); + + it('should return empty array when handler._getLegendInfos returns undefined', () => { + mockHandler._getLegendInfos.and.returnValue(undefined); + + expect(instance.getLegendInfos()).toEqual([]); + }); + + it('should return empty array when handler is null', () => { + instance._handler = null; + + expect(instance.getLegendInfos()).toEqual([]); + }); + + it('should return empty array when handler is undefined', () => { + instance._handler = undefined; + + expect(instance.getLegendInfos()).toEqual([]); + }); + + it('should return legend info from WebMapV2-like handler', () => { + const webMapV2Handler = { + _getLegendInfos: jasmine.createSpy('_getLegendInfos').and.callFake(function() { + const { layers = [] } = this._mapInfo || {}; + return layers.map((layer) => { + const { legendSetting, name, layerID: layerId } = layer; + return { + showLegend: legendSetting ? legendSetting.isShow : false, + id: layerId, + title: name + }; + }); + }), + _mapInfo: { + layers: [ + { name: 'Layer1', layerID: 'layer1', legendSetting: { isShow: true } }, + { name: 'Layer2', layerID: 'layer2', legendSetting: { isShow: false } }, + { name: 'Layer3', layerID: 'layer3', legendSetting: {} } + ] + } + }; + instance._handler = webMapV2Handler; + + expect(instance.getLegendInfos()).toEqual([ + { showLegend: true, id: 'layer1', title: 'Layer1' }, + { showLegend: false, id: 'layer2', title: 'Layer2' }, + { showLegend: undefined, id: 'layer3', title: 'Layer3' } + ]); + expect(webMapV2Handler._getLegendInfos).toHaveBeenCalled(); + }); + + it('should return legend info from WebMapV3-like handler', () => { + const webMapV3Handler = { + _getLegendInfos: jasmine.createSpy('_getLegendInfos').and.callFake(function() { + const { catalogs = [] } = this._mapResourceInfo || {}; + const res = []; + const processCatalog = (catalog) => { + const { catalogType, children, showLegend, title, id } = catalog; + if (catalogType === 'group' && children) { + children.forEach(child => processCatalog(child)); + } + if (catalogType === 'layer') { + res.push({ + showLegend: showLegend !== false, + id: id, + title: title + }); + } + }; + catalogs.forEach(item => processCatalog(item)); + return res; + }), + _mapResourceInfo: { + catalogs: [ + { + catalogType: 'layer', + title: 'Layer1', + showLegend: true, + id: 'layer1' + }, + { + catalogType: 'group', + children: [ + { + catalogType: 'layer', + title: 'Layer2', + showLegend: false, + id: 'layer2' + } + ] + } + ] + } + }; + instance._handler = webMapV3Handler; + + expect(instance.getLegendInfos()).toEqual([ + { showLegend: true, id: 'layer1', title: 'Layer1' }, + { showLegend: false, id: 'layer2', title: 'Layer2' } + ]); + expect(webMapV3Handler._getLegendInfos).toHaveBeenCalled(); + }); +}); diff --git a/test/common/mapping/WebMapV2Spec.js b/test/common/mapping/WebMapV2Spec.js new file mode 100644 index 000000000..5e4f839e5 --- /dev/null +++ b/test/common/mapping/WebMapV2Spec.js @@ -0,0 +1,211 @@ +import { createWebMapV2Extending } from '../../../src/common/mapping/WebMapV2'; +import { createWebMapV2BaseExtending } from '../../../src/common/mapping/WebMapV2Base'; +import { Events } from '../../../src/common/commontypes'; + +const mockCrsManager = { + isSameProjection: () => true, + registerCRS: () => {}, + getCRS: () => ({}), + getProj4: () => ({ defs: () => null }) +}; + +function createWebMapV2Instance() { + const WebMapV2 = createWebMapV2Extending( + createWebMapV2BaseExtending(Events, 'fire'), + { + MapManager: function (options) { + this.options = options; + }, + mapRepo: { + LngLat: function (lng, lat) { + return { lng, lat }; + }, + CRS: { + get: () => ({ + getExtent: () => [0, 0, 1, 1] + }) + } + }, + crsManager: mockCrsManager, + DataFlowService: function () {}, + GraticuleLayer: {} + } + ); + return new WebMapV2({}, { target: 'map' }); +} + +describe('WebMapV2 - addLocalIdeographFontFamily', () => { + let instance; + + beforeEach(() => { + instance = createWebMapV2Instance(); + }); + + describe('_getLabelFontFamily', () => { + it('should collect fontFamily from labelStyle and append supermapol-icons', () => { + const mapInfo = { + layers: [ + { labelStyle: { fontFamily: 'Arial' } }, + { labelStyle: { fontFamily: 'Microsoft YaHei' } } + ] + }; + + expect(instance._getLabelFontFamily(mapInfo)).toBe('sans-serif,Arial,Microsoft YaHei,supermapol-icons'); + }); + + it('should return default fonts when no layers', () => { + expect(instance._getLabelFontFamily({})).toBe('sans-serif,supermapol-icons'); + }); + + it('should skip layers without labelStyle', () => { + const mapInfo = { + layers: [{ labelStyle: { fontFamily: '黑体' } }, {}] + }; + + expect(instance._getLabelFontFamily(mapInfo)).toBe('sans-serif,黑体,supermapol-icons'); + }); + }); + + describe('initializeMap', () => { + it('should call addLocalIdeographFontFamily when map is provided', async () => { + spyOn(instance, '_registerMapCRS').and.returnValue(Promise.resolve('EPSG:3857')); + spyOn(instance, '_loadLayers'); + const mapInfo = { + layers: [{ labelStyle: { fontFamily: '微软雅黑' } }] + }; + const map = { + getCRS: () => ({ epsgCode: 'EPSG:3857' }), + addLocalIdeographFontFamily: jasmine.createSpy('addLocalIdeographFontFamily') + }; + + await instance.initializeMap(mapInfo, map); + + expect(instance._appendLayers).toBe(true); + expect(instance.map).toBe(map); + expect(map.addLocalIdeographFontFamily).toHaveBeenCalledWith('sans-serif,微软雅黑,supermapol-icons'); + expect(instance._loadLayers).toHaveBeenCalledWith(mapInfo, instance._taskID); + }); + + it('should not call addLocalIdeographFontFamily when map does not support it', async () => { + spyOn(instance, '_registerMapCRS').and.returnValue(Promise.resolve('EPSG:3857')); + spyOn(instance, '_loadLayers'); + const mapInfo = { + layers: [{ labelStyle: { fontFamily: '微软雅黑' } }] + }; + const map = { + getCRS: () => ({ epsgCode: 'EPSG:3857' }) + }; + + await expectAsync(instance.initializeMap(mapInfo, map)).toBeResolved(); + expect(instance._appendLayers).toBe(true); + expect(instance._loadLayers).toHaveBeenCalledWith(mapInfo, instance._taskID); + }); + }); + + describe('_createMap', () => { + it('should pass localIdeographFontFamily to MapManager', async () => { + let capturedOptions; + const WebMapV2WithCapture = createWebMapV2Extending( + createWebMapV2BaseExtending(Events, 'fire'), + { + MapManager: function (options) { + capturedOptions = options; + this.on = jasmine.createSpy('on'); + }, + mapRepo: { + LngLat: function (lng, lat) { + return { lng, lat }; + }, + CRS: { + get: () => ({ + getExtent: () => [0, 0, 1, 1], + unit: 'degree' + }) + } + }, + DataFlowService: function () {}, + GraticuleLayer: {}, + crsManager: mockCrsManager + } + ); + const inst = new WebMapV2WithCapture({}, { target: 'map' }, { bounds: [[0, 0], [1, 1]], minZoom: 0, maxZoom: 22 }); + const mapInfo = { + projection: 'EPSG:3857', + extent: { leftBottom: { x: 0, y: 0 }, rightTop: { x: 1, y: 1 } }, + baseLayer: { tileSize: 256 }, + layers: [{ labelStyle: { fontFamily: '微软雅黑' } }] + }; + inst.baseProjection = 'EPSG:3857'; + inst.fire = jasmine.createSpy('fire'); + spyOn(inst, '_getMapCenter').and.returnValue({ lng: 0, lat: 0 }); + await inst._createMap(mapInfo); + expect(capturedOptions).toBeDefined(); + expect(capturedOptions.localIdeographFontFamily).toBe('sans-serif,微软雅黑,supermapol-icons'); + await inst.clean(false); + }); + }); +}); + +describe('WebMapV2 - _getLegendInfos', () => { + let instance; + + beforeEach(() => { + instance = createWebMapV2Instance(); + }); + + it('should return showLegend true when isShow is true', () => { + instance._mapInfo = { + layers: [{ name: 'Layer1', layerID: 'layer1', legendSetting: { isShow: true } }] + }; + expect(instance._getLegendInfos()).toEqual([ + { showLegend: true, id: 'layer1', title: 'Layer1' } + ]); + }); + + it('should return showLegend false when isShow is false', () => { + instance._mapInfo = { + layers: [{ name: 'Layer2', layerID: 'layer2', legendSetting: { isShow: false } }] + }; + expect(instance._getLegendInfos()).toEqual([ + { showLegend: false, id: 'layer2', title: 'Layer2' } + ]); + }); + + it('should return showLegend undefined when legendSetting exists without isShow', () => { + instance._mapInfo = { + layers: [{ name: 'Layer3', layerID: 'layer3', legendSetting: {} }] + }; + expect(instance._getLegendInfos()).toEqual([ + { showLegend: undefined, id: 'layer3', title: 'Layer3' } + ]); + }); + + it('should return showLegend false when legendSetting is absent', () => { + instance._mapInfo = { + layers: [{ name: 'Layer4', layerID: 'layer4' }] + }; + expect(instance._getLegendInfos()).toEqual([ + { showLegend: false, id: 'layer4', title: 'Layer4' } + ]); + }); + + it('should return empty array when no layers', () => { + instance._mapInfo = {}; + expect(instance._getLegendInfos()).toEqual([]); + }); + + it('should return legend info for multiple layers', () => { + instance._mapInfo = { + layers: [ + { name: 'Layer1', layerID: 'layer1', legendSetting: { isShow: true } }, + { name: 'Layer2', layerID: 'layer2' }, + { name: 'Layer3', layerID: 'layer3', legendSetting: { isShow: false } } + ] + }; + expect(instance._getLegendInfos()).toEqual([ + { showLegend: true, id: 'layer1', title: 'Layer1' }, + { showLegend: false, id: 'layer2', title: 'Layer2' }, + { showLegend: false, id: 'layer3', title: 'Layer3' } + ]); + }); +}); diff --git a/test/common/mapping/WebMapV3Spec.js b/test/common/mapping/WebMapV3Spec.js new file mode 100644 index 000000000..d5d19586d --- /dev/null +++ b/test/common/mapping/WebMapV3Spec.js @@ -0,0 +1,384 @@ +import { createWebMapV3Extending } from '../../../src/common/mapping/WebMapV3'; +import { Events } from '../../../src/common/commontypes'; + +const mockCrsManager = { + isSameProjection: () => true, + registerCRS: () => {}, + getCRS: () => ({}), + getProj4: () => ({ defs: () => null }) +}; + +function createWebMapV3Instance() { + const WebMapV3 = createWebMapV3Extending(Events, { + MapManager: function () {}, + mapRepo: { + LngLat: function (lng, lat) { + return { lng, lat }; + }, + CRS: null + }, + crsManager: mockCrsManager, + mapRepoName: 'mapbox-gl', + l7LayerUtil: { + getL7MarkerLayers: () => ({}) + } + }); + return new WebMapV3({}, { target: 'map' }); +} + +describe('WebMapV3 - addLocalIdeographFontFamily', () => { + let instance; + + beforeEach(() => { + instance = createWebMapV3Instance(); + }); + + describe('_getLabelFontFamily', () => { + it('should collect text-font from layer layout', () => { + const mapInfo = { + layers: [ + { layout: { 'text-font': ['Arial Unicode MS Regular'] } }, + { layout: { 'text-font': ['Microsoft YaHei Regular', 'Arial Unicode MS Regular'] } } + ] + }; + + expect(instance._getLabelFontFamily(mapInfo)).toBe( + 'sans-serif,Arial Unicode MS Regular,Microsoft YaHei Regular,Arial Unicode MS Regular' + ); + }); + + it('should return sans-serif when no layers', () => { + expect(instance._getLabelFontFamily({})).toBe('sans-serif'); + }); + + it('should skip layers without text-font', () => { + const mapInfo = { + layers: [{ layout: { 'text-font': ['PingFang SC Regular'] } }, {}] + }; + + expect(instance._getLabelFontFamily(mapInfo)).toBe('sans-serif,PingFang SC Regular'); + }); + }); + + describe('initializeMap', () => { + it('should call addLocalIdeographFontFamily when map is provided', () => { + spyOn(instance, '_initLayers'); + const mapInfo = { + crs: 'EPSG:3857', + layers: [{ layout: { 'text-font': ['PingFang SC Regular'] } }] + }; + const map = { + addLocalIdeographFontFamily: jasmine.createSpy('addLocalIdeographFontFamily') + }; + + instance.initializeMap(mapInfo, map); + + expect(instance._appendLayers).toBe(true); + expect(instance.map).toBe(map); + expect(map.addLocalIdeographFontFamily).toHaveBeenCalledWith('sans-serif,PingFang SC Regular'); + expect(instance._initLayers).toHaveBeenCalled(); + }); + + it('should not call addLocalIdeographFontFamily when map does not support it', () => { + spyOn(instance, '_initLayers'); + const mapInfo = { + crs: 'EPSG:3857', + layers: [{ layout: { 'text-font': ['PingFang SC Regular'] } }] + }; + const map = {}; + + expect(() => instance.initializeMap(mapInfo, map)).not.toThrow(); + expect(instance._appendLayers).toBe(true); + expect(instance._initLayers).toHaveBeenCalled(); + }); + }); + + describe('_createMap', () => { + it('should pass localIdeographFontFamily to MapManager', () => { + let capturedOptions; + const WebMapV3WithCapture = createWebMapV3Extending(Events, { + MapManager: function (options) { + capturedOptions = options; + this.on = jasmine.createSpy('on'); + }, + mapRepo: { + LngLat: function (lng, lat) { + return { lng, lat }; + }, + CRS: null + }, + mapRepoName: 'mapbox-gl', + l7LayerUtil: { + getL7MarkerLayers: () => ({}) + }, + crsManager: mockCrsManager + }); + const inst = new WebMapV3WithCapture({}, { target: 'map' }); + inst._mapInfo = { + crs: 'EPSG:3857', + center: { lng: 0, lat: 0 }, + layers: [{ layout: { 'text-font': ['PingFang SC Regular'] } }] + }; + inst._baseProjection = 'EPSG:3857'; + inst.fire = jasmine.createSpy('fire'); + inst._createMap(); + expect(capturedOptions).toBeDefined(); + expect(capturedOptions.localIdeographFontFamily).toBe('sans-serif,PingFang SC Regular'); + }); + }); +}); + +describe('WebMapV3 - _getLegendInfos', () => { + let instance; + + beforeEach(() => { + instance = createWebMapV3Instance(); + }); + + describe('_getLegendInfos', () => { + it('should return legend info from catalogs with catalogType layer', () => { + instance._mapResourceInfo = { + catalogs: [ + { + catalogType: 'layer', + title: 'Layer1', + showLegend: true, + id: 'layer1' + }, + { + catalogType: 'layer', + title: 'Layer2', + showLegend: false, + id: 'layer2' + } + ] + }; + + expect(instance._getLegendInfos()).toEqual([ + { showLegend: true, id: 'layer1', title: 'Layer1' }, + { showLegend: false, id: 'layer2', title: 'Layer2' } + ]); + }); + + it('should recursively process group catalogs', () => { + instance._mapResourceInfo = { + catalogs: [ + { + catalogType: 'group', + children: [ + { + catalogType: 'layer', + title: 'ChildLayer', + showLegend: true, + id: 'childLayer' + } + ] + } + ] + }; + + expect(instance._getLegendInfos()).toEqual([ + { showLegend: true, id: 'childLayer', title: 'ChildLayer' } + ]); + }); + + it('should default showLegend to true when undefined', () => { + instance._mapResourceInfo = { + catalogs: [ + { + catalogType: 'layer', + title: 'Layer1', + id: 'layer1' + } + ] + }; + + expect(instance._getLegendInfos()).toEqual([ + { showLegend: true, id: 'layer1', title: 'Layer1' } + ]); + }); + + it('should use id from catalog', () => { + instance._mapResourceInfo = { + catalogs: [ + { + catalogType: 'layer', + title: 'Layer1', + id: 'layer1' + } + ] + }; + + expect(instance._getLegendInfos()).toEqual([ + { showLegend: true, id: 'layer1', title: 'Layer1' } + ]); + }); + + it('should return empty array when no catalogs', () => { + instance._mapResourceInfo = { catalogs: [] }; + + expect(instance._getLegendInfos()).toEqual([]); + }); + + it('should accept custom mapResourceInfo argument', () => { + instance._mapResourceInfo = { catalogs: [] }; + const customResourceInfo = { + catalogs: [ + { + catalogType: 'layer', + title: 'CustomLayer', + id: 'customLayer' + } + ] + }; + + expect(instance._getLegendInfos(customResourceInfo)).toEqual([ + { showLegend: true, id: 'customLayer', title: 'CustomLayer' } + ]); + }); + + it('should handle nested group catalogs', () => { + instance._mapResourceInfo = { + catalogs: [ + { + catalogType: 'group', + children: [ + { + catalogType: 'group', + children: [ + { + catalogType: 'layer', + title: 'NestedLayer', + showLegend: true, + id: 'nestedLayer' + } + ] + } + ] + } + ] + }; + + expect(instance._getLegendInfos()).toEqual([ + { showLegend: true, id: 'nestedLayer', title: 'NestedLayer' } + ]); + }); + + it('should handle multiple nested groups', () => { + instance._mapResourceInfo = { + catalogs: [ + { + catalogType: 'group', + title: 'Group1', + children: [ + { + catalogType: 'group', + title: 'Group2', + children: [ + { + catalogType: 'layer', + title: 'DeepLayer', + showLegend: false, + id: 'deepLayer' + } + ] + } + ] + } + ] + }; + + expect(instance._getLegendInfos()).toEqual([ + { showLegend: false, id: 'deepLayer', title: 'DeepLayer' } + ]); + }); + }); + + describe('_getLegendInfoByCatalog', () => { + it('should skip non-layer and non-group catalogTypes', () => { + const res = []; + instance._getLegendInfoByCatalog({ + catalogType: 'other', + title: 'Other', + showLegend: true, + id: 'other' + }, res); + + expect(res).toEqual([]); + }); + + it('should process layer catalog correctly', () => { + const res = []; + instance._getLegendInfoByCatalog({ + catalogType: 'layer', + title: 'TestLayer', + showLegend: true, + id: 'testLayer' + }, res); + + expect(res).toEqual([ + { showLegend: true, id: 'testLayer', title: 'TestLayer' } + ]); + }); + + it('should default showLegend to true when not specified', () => { + const res = []; + instance._getLegendInfoByCatalog({ + catalogType: 'layer', + title: 'TestLayer', + id: 'testLayer' + }, res); + + expect(res).toEqual([ + { showLegend: true, id: 'testLayer', title: 'TestLayer' } + ]); + }); + + it('should handle group with no children', () => { + const res = []; + instance._getLegendInfoByCatalog({ + catalogType: 'group', + title: 'EmptyGroup', + children: [] + }, res); + + expect(res).toEqual([]); + }); + }); + + describe('getLegendInfos (WebMapV3)', () => { + it('should call _handler._getLegendInfos through WebMapBase', () => { + const webMapBase = { + _handler: null, + getLegendInfos: function() { + return (this._handler && this._handler._getLegendInfos()) || []; + } + }; + + const mockLegendInfos = [ + { showLegend: true, id: 'layer1', title: 'Layer1' } + ]; + webMapBase._handler = { + _getLegendInfos: jasmine.createSpy('_getLegendInfos').and.returnValue(mockLegendInfos) + }; + + const result = webMapBase.getLegendInfos(); + + expect(webMapBase._handler._getLegendInfos).toHaveBeenCalled(); + expect(result).toEqual(mockLegendInfos); + }); + + it('should return empty array when _handler is null', () => { + const webMapBase = { + _handler: null, + getLegendInfos: function() { + return (this._handler && this._handler._getLegendInfos()) || []; + } + }; + + const result = webMapBase.getLegendInfos(); + + expect(result).toEqual([]); + }); + }); +}); diff --git a/test/common/mapping/utils/AppreciableLayerBaseSpec.js b/test/common/mapping/utils/AppreciableLayerBaseSpec.js new file mode 100644 index 000000000..50a5575b1 --- /dev/null +++ b/test/common/mapping/utils/AppreciableLayerBaseSpec.js @@ -0,0 +1,121 @@ +import { AppreciableLayerBase } from '../../../../src/common/mapping/utils/AppreciableLayerBase'; + +describe('AppreciableLayerBase', () => { + let instance; + let mockMap; + + beforeEach(() => { + mockMap = { + style: { + fire: jasmine.createSpy('fire') + }, + getLayer: jasmine.createSpy('getLayer').and.returnValue({}), + setLayoutProperty: jasmine.createSpy('setLayoutProperty') + }; + + instance = new AppreciableLayerBase({ + map: mockMap, + layers: [] + }); + }); + + describe('setLayersVisible', () => { + it('should set layer visibility to visible', () => { + const layer = { + renderLayers: ['layer1'], + CLASS_NAME: 'TestLayer' + }; + + instance.setLayersVisible([layer], 'visible', true); + + expect(mockMap.setLayoutProperty).toHaveBeenCalledWith('layer1', 'visibility', 'visible'); + }); + + it('should set layer visibility to none', () => { + const layer = { + renderLayers: ['layer1'], + CLASS_NAME: 'TestLayer' + }; + + instance.setLayersVisible([layer], 'none', true); + + expect(mockMap.setLayoutProperty).toHaveBeenCalledWith('layer1', 'visibility', 'none'); + }); + + it('should handle layer with CLASS_INSTANCE', () => { + const mockShow = jasmine.createSpy('show'); + const mockHide = jasmine.createSpy('hide'); + const layer = { + renderLayers: ['layer1'], + CLASS_NAME: 'TestLayer', + CLASS_INSTANCE: { + show: mockShow, + hide: mockHide + } + }; + + instance.setLayersVisible([layer], 'visible', true); + + expect(mockShow).toHaveBeenCalled(); + expect(mockHide).not.toHaveBeenCalled(); + expect(mockMap.style.fire).toHaveBeenCalledWith('data', { dataType: 'style' }); + }); + + it('should handle layer with CLASS_INSTANCE and hide', () => { + const mockShow = jasmine.createSpy('show'); + const mockHide = jasmine.createSpy('hide'); + const layer = { + renderLayers: ['layer1'], + CLASS_NAME: 'TestLayer', + CLASS_INSTANCE: { + show: mockShow, + hide: mockHide + } + }; + + instance.setLayersVisible([layer], 'none', true); + + expect(mockHide).toHaveBeenCalled(); + expect(mockShow).not.toHaveBeenCalled(); + expect(mockMap.style.fire).toHaveBeenCalledWith('data', { dataType: 'style' }); + }); + + it('should skip layersVisibleMap when isSetVisible is false', () => { + const layer = { + renderLayers: ['layer1'], + CLASS_NAME: 'TestLayer' + }; + + instance.setLayersVisible([layer], 'visible', false); + + // isSetVisible=false 只跳过 layersVisibleMap 的设置,但 setLayoutProperty 仍会被调用 + expect(mockMap.setLayoutProperty).toHaveBeenCalledWith('layer1', 'visibility', 'visible'); + }); + + it('should handle multiple renderLayers', () => { + const layer = { + renderLayers: ['layer1', 'layer2', 'layer3'], + CLASS_NAME: 'TestLayer' + }; + + instance.setLayersVisible([layer], 'visible', true); + + expect(mockMap.setLayoutProperty).toHaveBeenCalledTimes(3); + expect(mockMap.setLayoutProperty).toHaveBeenCalledWith('layer1', 'visibility', 'visible'); + expect(mockMap.setLayoutProperty).toHaveBeenCalledWith('layer2', 'visibility', 'visible'); + expect(mockMap.setLayoutProperty).toHaveBeenCalledWith('layer3', 'visibility', 'visible'); + }); + + it('should skip L7Layer when getLayer returns falsy', () => { + mockMap.getLayer.and.returnValue(null); + const layer = { + renderLayers: ['l7layer1'], + CLASS_NAME: 'L7Layer' + }; + + instance.setLayersVisible([layer], 'visible', true); + + expect(mockMap.setLayoutProperty).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/test/common/mapping/utils/L7LayerUtilSpec.js b/test/common/mapping/utils/L7LayerUtilSpec.js index 8dcd86e34..11cbe5e01 100644 --- a/test/common/mapping/utils/L7LayerUtilSpec.js +++ b/test/common/mapping/utils/L7LayerUtilSpec.js @@ -35,7 +35,10 @@ describe('L7LayerUtil', () => { reRender() {} }; - const l7LayerUtil = L7LayerUtil({ featureFilter, expression, spec, L7Layer, L7 }); + const mockWebMapService = { + handleUrlWithCredentials: jasmine.createSpy('handleUrlWithCredentials').and.returnValue(true) + }; + const l7LayerUtil = L7LayerUtil({ featureFilter, expression, spec, L7Layer, L7 ,webMapService: mockWebMapService}); const mapstudioWebMap_L7LayersRes = JSON.parse(mapstudioWebMap_L7Layers); const scene = new mockL7.Scene(); @@ -185,7 +188,7 @@ describe('L7LayerUtil', () => { it('animate line layer', (done) => { spyOn(FetchRequest, 'get').and.callFake((url, _, options) => { - expect(options.withCredentials).toBeUndefined(); + expect(options.withCredentials).toBeTruthy(); expect(options.withoutFormatSuffix).toBeTruthy(); if (url.indexOf('/data-Building/rest/data/datasources/newBuilding/datasets/New_LINE/fields.json') > -1) { return Promise.resolve(new Response(RESTDATA_FIELDS_RES)); @@ -196,7 +199,7 @@ describe('L7LayerUtil', () => { return Promise.resolve(); }); spyOn(FetchRequest, 'post').and.callFake((url, _, options) => { - expect(options.withCredentials).toBeUndefined(); + expect(options.withCredentials).toBeTruthy(); expect(options.withoutFormatSuffix).toBeTruthy(); if (url.indexOf('/data-Building/rest/data/featureResults.geojson') > -1) { return Promise.resolve(new Response(RESTDATA_FEATURES_RES)); @@ -286,7 +289,8 @@ describe('L7LayerUtil', () => { it('add layer one error, one success', (done) => { spyOn(FetchRequest, 'get').and.callFake((url, _, options) => { - expect(options.withCredentials).toBeUndefined(); + console.log('get', url, options.withCredentials); + expect(options.withCredentials).toBeTruthy(); expect(options.withoutFormatSuffix).toBeTruthy(); if (url.indexOf('/data-Building/rest/data/datasources/newBuilding/datasets/New_LINE/fields.json') > -1) { return Promise.resolve(new Response(RESTDATA_FIELDS_RES)); @@ -297,7 +301,8 @@ describe('L7LayerUtil', () => { return Promise.resolve(); }); spyOn(FetchRequest, 'post').and.callFake((url, _, options) => { - expect(options.withCredentials).toBeUndefined(); + console.log('post', url, options.withCredentials); + expect(options.withCredentials).toBeTruthy(); expect(options.withoutFormatSuffix).toBeTruthy(); if (url.indexOf('/data-Building/rest/data/featureResults.geojson') > -1) { return Promise.reject('error test'); diff --git a/test/common/mapping/utils/SourceListModelV3Spec.js b/test/common/mapping/utils/SourceListModelV3Spec.js index 9831a3fc6..870929be4 100644 --- a/test/common/mapping/utils/SourceListModelV3Spec.js +++ b/test/common/mapping/utils/SourceListModelV3Spec.js @@ -1757,4 +1757,1184 @@ describe('SourceListV3', () => { expect(nextAppreciableLayers.some(item => item.title === baseLayerInfoCopy.layers[0].metadata.title)).toBeTruthy(); done(); }); + + it('getSelfLayerIds', (done) => { + const mapInfo = JSON.parse(apstudioWebMap_layerData); + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: JSON.parse(msProjectINfo_layerData), + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const selfLayerIds = sourceListModel.getSelfLayerIds(); + expect(Array.isArray(selfLayerIds)).toBeTruthy(); + expect(selfLayerIds.length).toBeGreaterThan(0); + selfLayerIds.forEach(id => { + expect(typeof id).toBe('string'); + }); + done(); + }); + + it('setBaseLayer with single layer', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'test-layer', + title: 'test-layer', + type: 'basic' + }, + { + visible: true, + id: 'base-layer', + title: 'base-layer', + type: 'basic' + } + ] + }, + sources: { + 'test-layer': { + type: 'raster', + tiles: ['http://localhost/test.png'] + }, + 'base-layer': { + type: 'raster', + tiles: ['http://localhost/base.png'] + } + }, + layers: [ + { + id: 'test-layer', + type: 'raster', + source: 'test-layer', + minzoom: 0, + maxzoom: 12 + }, + { + id: 'base-layer', + type: 'raster', + source: 'base-layer', + minzoom: 0, + maxzoom: 12 + } + ], + version: '3.0.0' + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const newBaseLayer = { + id: 'new-base', + title: 'new-base', + layers: [ + { + id: 'new-base-layer', + type: 'raster', + source: 'new-base-source', + minzoom: 0, + maxzoom: 12 + } + ], + sources: { + 'new-base-source': { + type: 'raster', + tiles: ['http://localhost/newbase.png'] + } + } + }; + sourceListModel.setBaseLayer(newBaseLayer); + const updatedLayers = sourceListModel.getLayers(); + expect(updatedLayers.some(layer => layer.id === 'new-base-layer')).toBeTruthy(); + expect(updatedLayers[0].id).toBe('new-base-layer'); + done(); + }); + + it('setBaseLayer with group layer', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'test-layer', + title: 'test-layer', + type: 'basic' + }, + { + visible: true, + id: 'base-layer', + title: 'base-layer', + type: 'basic' + } + ] + }, + sources: { + 'test-layer': { + type: 'raster', + tiles: ['http://localhost/test.png'] + }, + 'base-layer': { + type: 'raster', + tiles: ['http://localhost/base.png'] + } + }, + layers: [ + { + id: 'test-layer', + type: 'raster', + source: 'test-layer', + minzoom: 0, + maxzoom: 12 + }, + { + id: 'base-layer', + type: 'raster', + source: 'base-layer', + minzoom: 0, + maxzoom: 12 + } + ], + version: '3.0.0' + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const newBaseLayer = { + id: 'new-base-group', + title: 'new-base-group', + layers: [ + { + id: 'new-base-layer-1', + type: 'raster', + source: 'new-base-source-1', + minzoom: 0, + maxzoom: 12, + metadata: { title: 'layer-1' } + }, + { + id: 'new-base-layer-2', + type: 'raster', + source: 'new-base-source-2', + minzoom: 0, + maxzoom: 12, + metadata: { title: 'layer-2' } + } + ], + sources: { + 'new-base-source-1': { + type: 'raster', + tiles: ['http://localhost/newbase1.png'] + }, + 'new-base-source-2': { + type: 'raster', + tiles: ['http://localhost/newbase2.png'] + } + } + }; + sourceListModel.setBaseLayer(newBaseLayer); + const layerCatalog = sourceListModel.getLayerCatalog(); + const baseCatalog = layerCatalog[layerCatalog.length - 1]; + expect(baseCatalog.id).toBe('new-base-group'); + expect(baseCatalog.type).toBe('group'); + expect(baseCatalog.children.length).toBe(2); + expect(baseCatalog.children[0].title).toBe('layer-1'); + expect(baseCatalog.children[1].title).toBe('layer-2'); + done(); + }); + + it('_generateLayers with REST_DATA source', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'rest-data-layer', + title: 'REST_DATA Layer', + type: 'basic' + } + ] + }, + sources: { + 'rest-data-source': { + type: 'vector', + tiles: ['http://localhost:8090/iserver/services/data-test/rest/data/datasources/test/datasets/test_dataset/tileFeature.mvt'] + } + }, + layers: [ + { + id: 'rest-data-layer', + type: 'circle', + source: 'rest-data-source', + 'source-layer': 'test_dataset' + } + ], + version: '3.0.0' + }; + const mapResourceInfo = { + catalogs: [ + { + id: 'rest-data-layer', + msDatasetId: 'ms_test_dataset_123', + serviceLayerId: '0' + } + ], + datas: [ + { + sourceType: 'REST_DATA', + url: 'http://localhost:8090/iserver/services/data-test/rest/data/datasources/test', + datasets: [ + { + msDatasetId: 'ms_test_dataset_123', + datasetId: 'test_dataset', + datasetName: 'test_dataset' + } + ] + } + ] + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const restDataLayer = layers.find(layer => layer.id === 'rest-data-layer'); + expect(restDataLayer).toBeTruthy(); + expect(restDataLayer.dataSource.type).toBe('REST_DATA'); + expect(restDataLayer.dataSource.url).toBe('http://localhost:8090/iserver/services/data-test/rest/data'); + expect(restDataLayer.dataSource.dataSourceName).toBe('test:test_dataset'); + done(); + }); + + it('_generateLayers with REST_MAP source', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'rest-map-layer', + title: 'REST_MAP Layer', + type: 'basic' + } + ] + }, + sources: { + 'rest-map-source': { + type: 'vector', + tiles: ['http://localhost:8090/iserver/services/map-test/rest/maps/test_map/tileFeature.mvt'] + } + }, + layers: [ + { + id: 'rest-map-layer', + type: 'circle', + source: 'rest-map-source', + 'source-layer': 'test_layer' + } + ], + version: '3.0.0' + }; + map.addSource('rest-map-source', mapInfo.sources['rest-map-source']); + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const restMapLayer = layers.find(layer => layer.id === 'rest-map-layer'); + expect(restMapLayer).toBeTruthy(); + expect(restMapLayer.dataSource.type).toBe('REST_MAP'); + expect(restMapLayer.dataSource.url).toBe('http://localhost:8090/iserver/services/map-test/rest/maps'); + expect(restMapLayer.dataSource.mapName).toBe('test_map'); + done(); + }); + + it('_generateLayers with RESTJSR source', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'restjsr-layer', + title: 'RESTJSR Layer', + type: 'basic' + } + ] + }, + sources: { + 'restjsr-source': { + type: 'vector', + tiles: ['http://localhost:8090/restjsr/v1/test_map/tiles/{z}/{x}/{y}.mvt'] + } + }, + layers: [ + { + id: 'restjsr-layer', + type: 'circle', + source: 'restjsr-source', + 'source-layer': 'test_layer' + } + ], + version: '3.0.0' + }; + map.addSource('restjsr-source', mapInfo.sources['restjsr-source']); + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const restjsrLayer = layers.find(layer => layer.id === 'restjsr-layer'); + expect(restjsrLayer).toBeTruthy(); + expect(restjsrLayer.dataSource.type).toBe('RESTJSR'); + expect(restjsrLayer.dataSource.url).toBe('http://localhost:8090/restjsr/v1/vectortile/maps'); + expect(restjsrLayer.dataSource.mapName).toBe('test_map'); + done(); + }); + + it('_generateLayers with VECTOR_OTHER source', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'other-vector-layer', + title: 'OTHER Vector Layer', + type: 'basic' + } + ] + }, + sources: { + 'other-vector-source': { + type: 'vector', + tiles: ['http://localhost:8080/tiles/{z}/{x}/{y}.mvt'] + } + }, + layers: [ + { + id: 'other-vector-layer', + type: 'circle', + source: 'other-vector-source', + 'source-layer': 'layer_name' + } + ], + version: '3.0.0' + }; + map.addSource('other-vector-source', mapInfo.sources['other-vector-source']); + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const otherLayer = layers.find(layer => layer.id === 'other-vector-layer'); + expect(otherLayer).toBeTruthy(); + expect(otherLayer.dataSource.type).toBe('VECTOR_OTHER'); + expect(otherLayer.dataSource.url).toBe('http://localhost:8080/tiles/{z}/{x}/{y}.mvt'); + done(); + }); + + it('_generateLayers with serviceLayerId in dataSource', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'service-layer', + title: 'Service Layer', + type: 'basic' + } + ] + }, + sources: { + 'service-source': { + type: 'vector', + tiles: ['http://localhost:8090/iserver/services/data-test/rest/data/datasources/test/datasets/test_dataset/tileFeature.mvt'] + } + }, + layers: [ + { + id: 'service-layer', + type: 'circle', + source: 'service-source', + 'source-layer': 'test_dataset' + } + ], + version: '3.0.0' + }; + const mapResourceInfo = { + catalogs: [ + { + id: 'service-layer', + msDatasetId: 'ms_test_dataset_123', + serviceLayerId: '1.2' + } + ], + datas: [ + { + sourceType: 'REST_DATA', + url: 'http://localhost:8090/iserver/services/data-test/rest/data/datasources/test', + datasets: [ + { + msDatasetId: 'ms_test_dataset_123', + datasetId: 'test_dataset', + datasetName: 'test_dataset' + } + ] + } + ] + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const serviceLayer = layers.find(layer => layer.id === 'service-layer'); + expect(serviceLayer).toBeTruthy(); + expect(serviceLayer.dataSource.serviceLayerId).toBe('1.2'); + expect(serviceLayer.dataSource.type).toBe('REST_DATA'); + expect(serviceLayer.dataSource.url).toBe('http://localhost:8090/iserver/services/data-test/rest/data'); + expect(serviceLayer.dataSource.dataSourceName).toBe('test:test_dataset'); + done(); + }); + + it('_generateLayers without serviceLayerId in dataSource', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'no-service-layer', + title: 'No Service Layer', + type: 'basic' + } + ] + }, + sources: { + 'no-service-source': { + type: 'vector', + tiles: ['http://localhost:8090/iserver/services/data-test/rest/data/datasources/test/datasets/test_dataset/tileFeature.mvt'] + } + }, + layers: [ + { + id: 'no-service-layer', + type: 'circle', + source: 'no-service-source', + 'source-layer': 'test_dataset' + } + ], + version: '3.0.0' + }; + const mapResourceInfo = { + catalogs: [ + { + id: 'no-service-layer', + msDatasetId: 'ms_test_dataset_123' + } + ], + datas: [ + { + sourceType: 'REST_DATA', + url: 'http://localhost:8090/iserver/services/data-test/rest/data/datasources/test', + datasets: [ + { + msDatasetId: 'ms_test_dataset_123', + datasetId: 'test_dataset', + datasetName: 'test_dataset' + } + ] + } + ] + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const noServiceLayer = layers.find(layer => layer.id === 'no-service-layer'); + expect(noServiceLayer).toBeTruthy(); + expect(noServiceLayer.dataSource.serviceLayerId).toBeUndefined(); + expect(noServiceLayer.dataSource.type).toBe('REST_DATA'); + expect(noServiceLayer.dataSource.url).toBe('http://localhost:8090/iserver/services/data-test/rest/data'); + expect(noServiceLayer.dataSource.dataSourceName).toBe('test:test_dataset'); + done(); + }); + + it('_generateLayers with empty serviceLayerId', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'empty-service-layer', + title: 'Empty Service Layer', + type: 'basic' + } + ] + }, + sources: { + 'empty-service-source': { + type: 'vector', + tiles: ['http://localhost:8090/iserver/services/data-test/rest/data/datasources/test/datasets/test_dataset/tileFeature.mvt'] + } + }, + layers: [ + { + id: 'empty-service-layer', + type: 'circle', + source: 'empty-service-source', + 'source-layer': 'test_dataset' + } + ], + version: '3.0.0' + }; + const mapResourceInfo = { + catalogs: [ + { + id: 'empty-service-layer', + msDatasetId: 'ms_test_dataset_123', + serviceLayerId: '' + } + ], + datas: [ + { + sourceType: 'REST_DATA', + url: 'http://localhost:8090/iserver/services/data-test/rest/data/datasources/test', + datasets: [ + { + msDatasetId: 'ms_test_dataset_123', + datasetId: 'test_dataset', + datasetName: 'test_dataset' + } + ] + } + ] + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const emptyServiceLayer = layers.find(layer => layer.id === 'empty-service-layer'); + expect(emptyServiceLayer).toBeTruthy(); + expect(emptyServiceLayer.dataSource.serviceLayerId).toBe(''); + expect(emptyServiceLayer.dataSource.type).toBe('REST_DATA'); + done(); + }); + + it('_generateLayers with REST_MAP source and serviceLayerId', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'rest-map-service-layer', + title: 'REST_MAP Service Layer', + type: 'basic' + } + ] + }, + sources: { + 'rest-map-service-source': { + type: 'vector', + tiles: ['http://localhost:8090/iserver/services/map-test/rest/maps/test_map/tileFeature.mvt'] + } + }, + layers: [ + { + id: 'rest-map-service-layer', + type: 'circle', + source: 'rest-map-service-source', + 'source-layer': 'test_layer' + } + ], + version: '3.0.0' + }; + const mapResourceInfo = { + catalogs: [ + { + id: 'rest-map-service-layer', + serviceLayerId: '2' + } + ], + datas: [] + }; + map.addSource('rest-map-service-source', mapInfo.sources['rest-map-service-source']); + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const restMapLayer = layers.find(layer => layer.id === 'rest-map-service-layer'); + expect(restMapLayer).toBeTruthy(); + expect(restMapLayer.dataSource.type).toBe('REST_MAP'); + expect(restMapLayer.dataSource.url).toBe('http://localhost:8090/iserver/services/map-test/rest/maps'); + expect(restMapLayer.dataSource.mapName).toBe('test_map'); + expect(restMapLayer.dataSource.serviceLayerId).toBe('2'); + done(); + }); + + it('_generateLayers with RESTJSR source and serviceLayerId', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'restjsr-service-layer', + title: 'RESTJSR Service Layer', + type: 'basic' + } + ] + }, + sources: { + 'restjsr-service-source': { + type: 'vector', + tiles: ['http://localhost:8090/restjsr/v1/test_map/tiles/{z}/{x}/{y}.mvt'] + } + }, + layers: [ + { + id: 'restjsr-service-layer', + type: 'circle', + source: 'restjsr-service-source', + 'source-layer': 'test_layer' + } + ], + version: '3.0.0' + }; + const mapResourceInfo = { + catalogs: [ + { + id: 'restjsr-service-layer', + serviceLayerId: '3' + } + ], + datas: [] + }; + map.addSource('restjsr-service-source', mapInfo.sources['restjsr-service-source']); + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const restjsrLayer = layers.find(layer => layer.id === 'restjsr-service-layer'); + expect(restjsrLayer).toBeTruthy(); + expect(restjsrLayer.dataSource.type).toBe('RESTJSR'); + expect(restjsrLayer.dataSource.url).toBe('http://localhost:8090/restjsr/v1/vectortile/maps'); + expect(restjsrLayer.dataSource.mapName).toBe('test_map'); + expect(restjsrLayer.dataSource.serviceLayerId).toBe('3'); + done(); + }); + + it('_generateLayers with VECTOR_OTHER source and serviceLayerId', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'other-service-layer', + title: 'OTHER Service Layer', + type: 'basic' + } + ] + }, + sources: { + 'other-service-source': { + type: 'vector', + tiles: ['http://localhost:8080/tiles/{z}/{x}/{y}.mvt'] + } + }, + layers: [ + { + id: 'other-service-layer', + type: 'circle', + source: 'other-service-source', + 'source-layer': 'layer_name' + } + ], + version: '3.0.0' + }; + const mapResourceInfo = { + catalogs: [ + { + id: 'other-service-layer', + serviceLayerId: '4' + } + ], + datas: [] + }; + map.addSource('other-service-source', mapInfo.sources['other-service-source']); + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const otherLayer = layers.find(layer => layer.id === 'other-service-layer'); + expect(otherLayer).toBeTruthy(); + expect(otherLayer.dataSource.type).toBe('VECTOR_OTHER'); + expect(otherLayer.dataSource.url).toBe('http://localhost:8080/tiles/{z}/{x}/{y}.mvt'); + expect(otherLayer.dataSource.serviceLayerId).toBe('4'); + done(); + }); + + it('_generateLayers with chart type layer', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'chart-layer', + title: 'Chart Layer', + type: 'basic' + } + ] + }, + sources: { + 'chart-source': { + type: 'geojson', + data: { + type: 'FeatureCollection', + features: [] + } + } + }, + layers: [ + { + id: 'chart-layer', + type: 'chart', + source: 'chart-source' + } + ], + version: '3.0.0' + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(false); + const chartLayer = layers.find(layer => layer.id === 'chart-layer'); + expect(chartLayer).toBeTruthy(); + expect(chartLayer.metadata).toBeTruthy(); + expect(chartLayer.metadata.SM_Layer_Order).toBe('top'); + done(); + }); + + it('_generateLayers with legendList', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'legend-layer', + title: 'Legend Layer', + type: 'basic' + } + ] + }, + sources: { + 'legend-source': { + type: 'vector', + tiles: ['http://localhost/test.mvt'] + } + }, + layers: [ + { + id: 'legend-layer', + type: 'circle', + source: 'legend-source' + } + ], + version: '3.0.0' + }; + const legendList = [ + { layerId: 'legend-layer', themeField: 'field1' }, + { layerId: 'legend-layer', themeField: 'field2' }, + { layerId: 'legend-layer', themeField: 'field1' } + ]; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList, + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const layers = sourceListModel.getLayers(); + const legendLayer = layers.find(layer => layer.id === 'legend-layer'); + expect(legendLayer).toBeTruthy(); + expect(legendLayer.themeSetting).toBeTruthy(); + expect(legendLayer.themeSetting.themeField).toEqual(['field1', 'field2']); + done(); + }); + + it('_generateBaseLayerInfo', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'overlay-layer', + title: 'Overlay Layer', + type: 'basic' + }, + { + visible: true, + id: 'base-layer', + title: 'Base Layer', + type: 'basic' + } + ] + }, + sources: { + 'overlay-layer': { + type: 'vector', + tiles: ['http://localhost/overlay.mvt'] + }, + 'base-layer': { + type: 'raster', + tiles: ['http://localhost/base.png'] + } + }, + layers: [ + { + id: 'base-layer', + type: 'raster', + source: 'base-layer', + minzoom: 0, + maxzoom: 12 + }, + { + id: 'overlay-layer', + type: 'circle', + source: 'overlay-layer', + minzoom: 0, + maxzoom: 12 + } + ], + version: '3.0.0' + }; + map.addSource('overlay-layer', mapInfo.sources['overlay-layer']); + map.addSource('base-layer', mapInfo.sources['base-layer']); + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const baseLayerInfo = sourceListModel.baseLayerInfoOnMap; + expect(baseLayerInfo).toBeTruthy(); + expect(baseLayerInfo.id).toBe('__default__base-layer'); + expect(baseLayerInfo.title).toBe('Base Layer'); + expect(baseLayerInfo.layers.length).toBe(1); + expect(baseLayerInfo.layers[0].id).toBe('base-layer'); + expect(baseLayerInfo.sources['base-layer']).toBeTruthy(); + done(); + }); + + it('_getBaseLayerRenderLayers with children', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'overlay-layer', + title: 'Overlay Layer', + type: 'basic' + }, + { + visible: true, + id: 'base-group', + title: 'Base Group', + type: 'group', + children: [ + { + visible: true, + id: 'base-layer-1', + title: 'Base Layer 1', + type: 'basic' + }, + { + visible: true, + id: 'base-layer-2', + title: 'Base Layer 2', + type: 'basic' + } + ] + } + ] + }, + sources: { + 'overlay-layer': { + type: 'vector', + tiles: ['http://localhost/overlay.mvt'] + }, + 'base-layer-1': { + type: 'raster', + tiles: ['http://localhost/base1.png'] + }, + 'base-layer-2': { + type: 'raster', + tiles: ['http://localhost/base2.png'] + } + }, + layers: [ + { + id: 'base-layer-1', + type: 'raster', + source: 'base-layer-1', + minzoom: 0, + maxzoom: 12 + }, + { + id: 'base-layer-2', + type: 'raster', + source: 'base-layer-2', + minzoom: 0, + maxzoom: 12 + }, + { + id: 'overlay-layer', + type: 'circle', + source: 'overlay-layer', + minzoom: 0, + maxzoom: 12 + } + ], + version: '3.0.0' + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const baseLayerInfo = sourceListModel.baseLayerInfoOnMap; + expect(baseLayerInfo).toBeTruthy(); + expect(baseLayerInfo.layers.length).toBe(2); + expect(baseLayerInfo.layers.some(layer => layer.id === 'base-layer-1')).toBeTruthy(); + expect(baseLayerInfo.layers.some(layer => layer.id === 'base-layer-2')).toBeTruthy(); + done(); + }); + + it('_removeBaseLayerRenderLayers', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'overlay-layer', + title: 'Overlay Layer', + type: 'basic' + }, + { + visible: true, + id: 'base-layer', + title: 'Base Layer', + type: 'basic' + } + ] + }, + sources: { + 'overlay-layer': { + type: 'vector', + tiles: ['http://localhost/overlay.mvt'] + }, + 'base-layer': { + type: 'raster', + tiles: ['http://localhost/base.png'] + } + }, + layers: [ + { + id: 'base-layer', + type: 'raster', + source: 'base-layer', + minzoom: 0, + maxzoom: 12 + }, + { + id: 'overlay-layer', + type: 'circle', + source: 'overlay-layer', + minzoom: 0, + maxzoom: 12 + } + ], + version: '3.0.0' + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer, + getL7MarkerLayers: () => ({}) + } + }); + const initialLayers = sourceListModel.getLayers(); + expect(initialLayers.length).toBeGreaterThanOrEqual(2); + sourceListModel.changeBaseLayer({ + id: 'new-base', + title: 'New Base', + layers: [ + { + id: 'new-base-layer', + type: 'raster', + source: 'new-base-source', + minzoom: 0, + maxzoom: 12 + } + ], + sources: { + 'new-base-source': { + type: 'raster', + tiles: ['http://localhost/newbase.png'] + } + } + }); + const updatedLayers = sourceListModel.getLayers(); + expect(updatedLayers.some(layer => layer.id === 'base-layer')).toBeFalsy(); + expect(updatedLayers.some(layer => layer.id === 'new-base-layer')).toBeTruthy(); + expect(updatedLayers.some(layer => layer.id === 'overlay-layer')).toBeTruthy(); + done(); + }); + + it('_generateLayers with L7 layer', (done) => { + const mapInfo = { + metadata: { + layerCatalog: [ + { + visible: true, + id: 'l7-layer', + title: 'L7 Layer', + type: 'basic' + } + ] + }, + sources: {}, + layers: [ + { + id: 'l7-layer', + type: 'custom', + renderingMode: '3d', + overlay: true + } + ], + version: '3.0.0' + }; + const l7MarkerLayers = { + 'l7-layer': { + show: () => {}, + hide: () => {} + } + }; + const sourceListModel = new SourceListModelV3({ + map, + mapInfo, + mapResourceInfo: {}, + legendList: [], + l7LayerUtil: { + isL7Layer: () => true, + getL7MarkerLayers: () => l7MarkerLayers + } + }); + const layers = sourceListModel.getLayers(); + const l7Layer = layers.find(layer => layer.id === 'l7-layer'); + expect(l7Layer).toBeTruthy(); + expect(l7Layer.CLASS_NAME).toBe('L7Layer'); + expect(l7Layer.CLASS_INSTANCE).toBe(l7MarkerLayers['l7-layer']); + done(); + }); }); diff --git a/test/mapboxgl/mapping/WebMapV2Spec.js b/test/mapboxgl/mapping/WebMapV2Spec.js index ba66a0ce9..48cec2d89 100644 --- a/test/mapboxgl/mapping/WebMapV2Spec.js +++ b/test/mapboxgl/mapping/WebMapV2Spec.js @@ -1,6 +1,11 @@ import mapboxgl from 'mapbox-gl'; import mbglmap, { CRS, proj4, revertCRS } from '../../tool/mock_mapboxgl_map'; import { WebMap } from '../../../src/mapboxgl/mapping/WebMap'; +import { createWebMapV2Extending } from '../../../src/common/mapping/WebMapV2'; +import { createWebMapV2BaseExtending } from '../../../src/common/mapping/WebMapV2Base'; +import { createMapClassExtending } from '../../../src/common/mapping/MapBase'; +import { CRSManager } from '../../../src/mapboxgl/mapping/webmap/CRSManager'; +import { GraticuleLayer } from '../../../src/mapboxgl/overlay/GraticuleLayer'; import * as MapManagerUtil from '../../../src/mapboxgl/mapping/webmap/MapManager'; import { ArrayStatistic } from '../../../src/common/util/ArrayStatistic'; import { FetchRequest } from '../../../src/common/util/FetchRequest'; @@ -141,6 +146,20 @@ function DataFlowService(serviceUrl) { }; } +function createMapboxWebMapV2Factory() { + const crsManager = new CRSManager(); + return createWebMapV2Extending( + createWebMapV2BaseExtending(createMapClassExtending(mapboxgl.Evented), 'fire'), + { + MapManager: MapManagerUtil.default, + mapRepo: mapboxgl, + crsManager, + DataFlowService: DataFlowServiceUtil.DataFlowService, + GraticuleLayer + } + ); +} + describe('mapboxgl_WebMapV2', () => { var originalTimeout, testDiv; var server = 'http://fack:8190/iportal/'; @@ -336,7 +355,16 @@ describe('mapboxgl_WebMapV2', () => { }); afterEach(() => { if (datavizWebmap) { - datavizWebmap.clean(); + if (datavizWebmap._handler) { + if (datavizWebmap._handler._sendMapToUser) { + spyOn(datavizWebmap._handler, '_sendMapToUser').and.stub(); + } + datavizWebmap._handler.clean(false); + datavizWebmap._handler = null; + } + if (datavizWebmap.map) { + datavizWebmap.clean(); + } datavizWebmap.map = null; datavizWebmap = null; } @@ -1402,7 +1430,7 @@ it('add rangeLayer last end === fieldValue', (done) => { } ]; datavizWebmap.cleanLayers(); - expect(getSourceSpy).toHaveBeenCalledTimes(2); + expect(getSourceSpy).toHaveBeenCalledTimes(3); expect(removeSourceSpy).toHaveBeenCalledTimes(1); expect(datavizWebmap._cacheCleanLayers.length).toBe(0); done(); @@ -4617,4 +4645,34 @@ it('add rangeLayer last end === fieldValue', (done) => { done(); }); }); + + it('_getLabelFontFamily should collect labelStyle fontFamily', () => { + const WebMapV2 = createMapboxWebMapV2Factory(); + const webMapV2 = new WebMapV2('', commonOption, { crs: 'EPSG:3857' }); + const mapInfo = { + layers: [ + { labelStyle: { fontFamily: 'Arial' } }, + { labelStyle: { fontFamily: 'Microsoft YaHei' } } + ] + }; + expect(webMapV2._getLabelFontFamily(mapInfo)).toBe('sans-serif,Arial,Microsoft YaHei,supermapol-icons'); + }); + + it('initializeMap should call addLocalIdeographFontFamily when appending to existing map', async () => { + const WebMapV2 = createMapboxWebMapV2Factory(); + const webMapV2 = new WebMapV2('', commonOption, { crs: 'EPSG:3857' }); + spyOn(webMapV2, '_registerMapCRS').and.returnValue(Promise.resolve('EPSG:3857')); + spyOn(webMapV2, '_loadLayers'); + const mapInfo = { + layers: [{ labelStyle: { fontFamily: '微软雅黑' } }] + }; + const map = { + getCRS: () => ({ epsgCode: 'EPSG:3857' }), + addLocalIdeographFontFamily: jasmine.createSpy('addLocalIdeographFontFamily') + }; + await webMapV2.initializeMap(mapInfo, map); + expect(webMapV2._appendLayers).toBe(true); + expect(map.addLocalIdeographFontFamily).toHaveBeenCalledWith('sans-serif,微软雅黑,supermapol-icons'); + webMapV2.clean(false); + }); }); diff --git a/test/mapboxgl/mapping/WebMapV3Spec.js b/test/mapboxgl/mapping/WebMapV3Spec.js index 132e04c0b..9b26b11cd 100644 --- a/test/mapboxgl/mapping/WebMapV3Spec.js +++ b/test/mapboxgl/mapping/WebMapV3Spec.js @@ -18,12 +18,16 @@ describe('mapboxgl-webmap3.0', () => { var originalTimeout, testDiv; var id = 617580084; var mapstudioWebmap; - const l7LayerUtil = L7LayerUtil({ featureFilter, expression, spec, L7Layer, L7 }); + const mockWebMapService = { + handleUrlWithCredentials: jasmine.createSpy('handleUrlWithCredentials').and.returnValue(true) + }; + const l7LayerUtil = L7LayerUtil({ featureFilter, expression, spec, L7Layer, L7, webMapService: mockWebMapService }); const extendOptions = { MapManager: MapManagerUtil.default, mapRepo: mapboxgl, crsManager: new CRSManager(), - l7LayerUtil + l7LayerUtil, + webMapService: mockWebMapService }; const WebMapV3 = createWebMapV3Extending(createMapClassExtending(mapboxgl.Evented), extendOptions); beforeEach(() => { @@ -36,7 +40,7 @@ describe('mapboxgl-webmap3.0', () => { testDiv.style.height = '500px'; window.document.body.appendChild(testDiv); originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; - jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000; + jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; mapboxgl.Map.prototype.overlayLayersManager = {}; mbglmap.prototype.getL7Scene = mapboxgl.Map.prototype.getL7Scene; mapboxgl.CRS = CRS; @@ -172,7 +176,7 @@ describe('mapboxgl-webmap3.0', () => { if (url.indexOf('932266699.json') > -1) { return Promise.resolve(new Response(msProjectINfo_filters)); } - if (url.indexOf('/sprites') > -1) { + if (url.indexOf('/sprite') > -1) { return Promise.resolve(new Response(spriteJson)); } return Promise.resolve(); @@ -204,7 +208,7 @@ describe('mapboxgl-webmap3.0', () => { }); it('filters mapId is JSON', (done) => { spyOn(FetchRequest, 'get').and.callFake((url) => { - if (url.indexOf('/sprites') > -1) { + if (url.indexOf('/sprite') > -1) { return Promise.resolve(new Response(msSpriteInfo)); } return Promise.resolve(); @@ -790,7 +794,7 @@ describe('mapboxgl-webmap3.0', () => { ) ).toBeTruthy(); expect( - appreciableLayers.some((item) => item.id === 'CHINA_DARK' && !Object.keys(item.dataSource).length) + appreciableLayers.some((item) => item.id === 'CHINA_DARK' && !item.dataSource.type) ).toBeTruthy(); spyTest.calls.reset(); done(); @@ -8427,4 +8431,55 @@ describe('mapboxgl-webmap3.0', () => { done(); }); }); + + it('_getLabelFontFamily should collect text-font from layer layout', () => { + mapstudioWebmap = new WebMapV3({}, { server, target: 'map' }); + const mapInfo = { + layers: [ + { layout: { 'text-font': ['Arial Unicode MS Regular'] } }, + { layout: { 'text-font': ['Microsoft YaHei Regular'] } } + ] + }; + expect(mapstudioWebmap._getLabelFontFamily(mapInfo)).toBe( + 'sans-serif,Arial Unicode MS Regular,Microsoft YaHei Regular' + ); + }); + + it('initializeMap should call addLocalIdeographFontFamily when appending to existing map', () => { + mapstudioWebmap = new WebMapV3({}, { server, target: 'map' }); + spyOn(mapstudioWebmap, '_initLayers'); + const mapInfo = { + crs: 'EPSG:3857', + layers: [{ layout: { 'text-font': ['PingFang SC Regular'] } }] + }; + const map = { + getCRS: () => ({ epsgCode: 'EPSG:3857' }), + addLocalIdeographFontFamily: jasmine.createSpy('addLocalIdeographFontFamily'), + remove: jasmine.createSpy('remove') + }; + mapstudioWebmap.initializeMap(mapInfo, map); + expect(mapstudioWebmap._appendLayers).toBe(true); + expect(map.addLocalIdeographFontFamily).toHaveBeenCalledWith('sans-serif,PingFang SC Regular'); + }); + + it('_getSpriteData should use webMapService.handleWithCredentials for withCredentials', (done) => { + + const spriteUrl = 'http://example.com/web/maps/123/sprite.json'; + spyOn(FetchRequest, 'get').and.callFake((url, params, options) => { + if (url.indexOf('sprite.json') > -1) { + expect(mockWebMapService.handleUrlWithCredentials).toHaveBeenCalledWith(url); + expect(options.withCredentials).toBe(true); + return Promise.resolve(new Response(JSON.stringify({}))); + } + return Promise.resolve(new Response(JSON.stringify({}))); + }); + + mapstudioWebmap = new WebMapV3(id, { server, target: 'map' }); + mapstudioWebmap._getSpriteData(spriteUrl).then(() => { + expect(mockWebMapService.handleUrlWithCredentials).toHaveBeenCalled(); + done(); + }).catch((e) => { + done.fail(e); + }); + }); }); diff --git a/test/maplibregl/mapping/WebMapV2Spec.js b/test/maplibregl/mapping/WebMapV2Spec.js index 78e89354a..36842c808 100644 --- a/test/maplibregl/mapping/WebMapV2Spec.js +++ b/test/maplibregl/mapping/WebMapV2Spec.js @@ -1356,7 +1356,7 @@ describe('maplibregl_WebMapV2', () => { } ]; datavizWebmap.cleanLayers(); - expect(getSourceSpy).toHaveBeenCalledTimes(2); + expect(getSourceSpy).toHaveBeenCalledTimes(3); expect(removeSourceSpy).toHaveBeenCalledTimes(1); expect(datavizWebmap._cacheCleanLayers.length).toBe(0); done(); diff --git a/test/maplibregl/mapping/WebMapV3Spec.js b/test/maplibregl/mapping/WebMapV3Spec.js index 9628841fb..73cc37d2d 100644 --- a/test/maplibregl/mapping/WebMapV3Spec.js +++ b/test/maplibregl/mapping/WebMapV3Spec.js @@ -19,12 +19,16 @@ describe('maplibregl-webmap3.0', () => { var server = 'http://localhost:8190/iportal/'; var id = 617580084; var mapstudioWebmap; - const l7LayerUtil = L7LayerUtil({ featureFilter, expression, spec, L7Layer, L7 }); + const mockWebMapService = { + handleUrlWithCredentials: jasmine.createSpy('handleUrlWithCredentials').and.returnValue(true) + }; + const l7LayerUtil = L7LayerUtil({ featureFilter, expression, spec, L7Layer, L7, webMapService: mockWebMapService }); const extendOptions = { MapManager: MapManagerUtil.default, mapRepo: maplibregl, crsManager: new CRSManager(), - l7LayerUtil + l7LayerUtil, + webMapService: mockWebMapService }; const WebMapV3 = createWebMapV3Extending(createMapClassExtending(maplibregl.Evented), extendOptions); beforeEach(() => { @@ -716,7 +720,7 @@ describe('maplibregl-webmap3.0', () => { ) ).toBeTruthy(); expect( - appreciableLayers.some((item) => item.id === 'CHINA_DARK' && !Object.keys(item.dataSource).length) + appreciableLayers.some((item) => item.id === 'CHINA_DARK' && !item.dataSource.type) ).toBeTruthy(); spyTest.calls.reset(); done(); @@ -1619,4 +1623,24 @@ describe('maplibregl-webmap3.0', () => { }); }); }); + it('_getSpriteData should use webMapService.handleWithCredentials for withCredentials', (done) => { + + const spriteUrl = 'http://example.com/web/maps/123/sprite.json'; + spyOn(FetchRequest, 'get').and.callFake((url, params, options) => { + if (url.indexOf('sprite.json') > -1) { + expect(mockWebMapService.handleUrlWithCredentials).toHaveBeenCalledWith(url); + expect(options.withCredentials).toBe(true); + return Promise.resolve(new Response(JSON.stringify({}))); + } + return Promise.resolve(new Response(JSON.stringify({}))); + }); + + mapstudioWebmap = new WebMapV3(id, { server, target: 'map' }); + mapstudioWebmap._getSpriteData(spriteUrl).then(() => { + expect(mockWebMapService.handleUrlWithCredentials).toHaveBeenCalled(); + done(); + }).catch((e) => { + done.fail(e); + }); + }); }); diff --git a/test/resources/WebMapV3.js b/test/resources/WebMapV3.js index 0ea09aa35..9a94a28fc 100644 --- a/test/resources/WebMapV3.js +++ b/test/resources/WebMapV3.js @@ -5714,7 +5714,7 @@ var mapstudioWebMap_filters = JSON.stringify({ "minzoom": 0 } ], - "sprite": "http://fake:8190/iportal/web/maps/932266699/sprites/sprite", + "sprite": "http://localhost:9876/base/resources/data/sprite", "pitch": 0, "minzoom": 0 }); @@ -5743,7 +5743,7 @@ var msProjectINfo_filters = JSON.stringify({ "title": "郑州POI", "resolution": 0, "checkStatus": "SUCCESSFUL", - "projectInfo": "{\"images\":\"http://fake:8190/iportal/web/maps/932266699/sprites/sprite\",\"catalogs\":[{\"filter\":[\"all\",[\"==\",\"Ctype\",\"\"],[\"!=\",\"smpid\",\"\"]],\"visualization\":{\"renderer\":[{\"rotate\":{\"type\":\"simple\",\"value\":0},\"textLetterSpacing\":{\"type\":\"simple\",\"value\":0},\"textTranslate\":{\"type\":\"simple\",\"value\":[0,0]},\"color\":{\"type\":\"simple\",\"value\":\"#EE4D5A\"},\"symbolPlacement\":{\"type\":\"simple\",\"value\":\"point\"},\"textAnchor\":{\"type\":\"simple\",\"value\":\"center\"},\"translate\":{\"type\":\"simple\",\"value\":[0,0]},\"textRotate\":{\"type\":\"simple\",\"value\":0},\"textField\":{\"type\":\"simple\",\"value\":\"\"},\"textHaloBlur\":{\"type\":\"simple\",\"value\":2},\"transform\":{\"type\":\"simple\",\"value\":\"none\"},\"symbolsContent\":{\"field\":[\"smpid\"],\"defaultValue\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"values\":[{\"value\":{\"symbolId\":\"shape2\",\"style\":{\"layout\":{\"icon-image\":\"shape2\"}}},\"key\":1},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":10},{\"value\":{\"symbolId\":\"shape6\",\"style\":{\"layout\":{\"icon-image\":\"shape6\"}}},\"key\":100},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":101},{\"value\":{\"symbolId\":\"shape9\",\"style\":{\"layout\":{\"icon-image\":\"shape9\"}}},\"key\":102},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":103},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":104},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":105},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":106},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":107},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":108},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":109},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":11},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":110},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":111},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":112},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":113},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":114},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":115},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":116},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":117},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":118},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":119},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":12},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":120},{\"value\":{\"symbolId\":\"point-83030560\",\"style\":{\"layout\":{\"icon-image\":\"point-83030560\"}}},\"key\":121},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":122},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":123},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":124},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":125},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":126},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":127},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":128},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":129},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":13},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":130},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":131},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":132},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":133},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":134},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":135},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":136},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":137},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":138},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":139},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":14},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":140},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":141},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":142},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":143},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":144},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":145},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":146},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":147},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":148},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":149},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":15},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":150},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":151},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":152},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":153},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":154},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":155},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":156},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":157},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":158},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":159},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":16},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":160},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":161},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":162},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":163},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":164},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":165},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":166},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":167},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":168},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":169},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":17},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":170},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":171},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":172},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":173},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":174},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":175},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":176},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":177},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":178},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":179},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":18},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":180},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":181},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":182},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":183},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":184},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":185},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":186},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":187},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":188},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":189},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":19},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":190},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":191},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":192},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":193},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":194},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":195},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":196},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":197},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":198},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":199},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":2},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":20},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":200},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":201},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":202},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":203},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":204},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":205},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":206},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":207},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":208},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":209},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":21},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":210},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":211},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":212},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":213},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":214},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":215},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":216},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":217},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":218},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":219},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":22},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":220},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":221},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":222},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":223},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":224},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":225},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":226},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":227},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":228},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":229},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":23},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":230},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":231},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":232},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":233},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":234},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":235},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":236},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":237},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":238},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":239},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":24},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":240},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":241},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":242},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":243},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":244},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":245},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":246},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":247},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":248},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":249},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":25},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":250},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":251},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":252},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":253},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":254},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":255},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":256},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":257},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":258},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":259},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":26},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":260},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":261},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":262},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":263},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":264},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":265},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":266},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":267},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":268},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":269},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":27},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":270},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":271},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":272},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":273},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":274},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":275},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":276},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":277},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":278},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":279},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":28},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":280},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":281},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":282},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":283},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":284},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":285},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":286},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":287},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":288},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":289},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":29},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":290},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":291},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":292},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":293},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":294},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":295},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":296},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":297},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":298},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":299},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":3},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":30},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":300},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":301},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":302},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":303},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":304},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":305},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":306},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":307},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":308},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":309},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":31},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":310},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":311},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":312},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":313},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":314},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":315},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":316},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":317},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":318},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":319},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":32},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":320},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":321},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":322},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":323},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":324},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":325},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":326},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":327},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":328},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":329},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":33},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":330},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":331},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":332},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":333},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":334},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":335},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":336},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":337},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":338},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":339},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":34},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":340},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":341},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":342},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":343},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":344},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":345},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":346},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":347},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":348},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":349},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":35},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":350},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":351},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":352},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":353},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":354},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":355},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":356},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":357},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":358},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":359},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":36},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":360},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":361},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":362},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":363},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":364},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":365},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":366},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":367},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":368},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":369},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":37},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":370},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":371},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":372},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":373},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":374},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":375},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":376},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":377},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":378},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":379},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":38},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":380},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":381},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":382},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":383},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":384},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":385},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":386},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":387},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":388},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":389},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":39},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":390},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":391},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":392},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":393},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":394},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":395},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":396},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":397},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":398},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":399},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":4},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":40},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":400},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":401},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":402},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":403},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":404},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":405},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":406},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":407},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":408},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":409},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":41},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":410},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":411},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":412},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":413},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":414},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":415},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":416},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":417},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":418},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":419},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":42},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":420},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":421},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":422},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":423},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":424},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":425},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":426},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":427},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":428},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":429},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":43},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":430},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":431},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":432},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":433},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":434},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":435},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":436},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":437},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":438},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":439},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":44},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":440},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":441},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":442},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":443},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":444},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":445},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":446},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":447},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":448},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":449},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":45},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":450},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":451},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":452},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":453},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":454},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":455},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":456},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":457},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":458},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":459},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":46},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":460},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":461},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":462},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":463},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":464},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":465},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":466},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":467},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":468},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":469},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":47},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":470},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":471},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":472},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":473},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":474},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":475},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":476},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":477},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":478},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":479},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":48},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":480},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":481},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":482},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":483},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":484},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":485},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":486},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":487},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":488},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":489},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":49},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":490},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":491},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":492},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":493},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":494},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":495},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":496},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":497},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":498},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":499},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":5},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":50},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":500},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":501},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":502},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":503},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":504},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":505},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":506},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":507},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":508},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":509},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":51},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":510},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":511},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":512},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":513},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":514},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":515},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":516},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":517},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":518},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":519},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":52},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":520},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":521},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":522},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":523},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":524},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":525},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":526},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":527},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":528},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":529},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":53},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":530},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":531},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":532},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":533},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":534},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":535},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":536},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":537},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":538},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":539},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":54},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":540},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":541},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":542},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":543},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":544},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":545},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":546},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":547},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":548},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":549},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":55},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":550},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":551},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":552},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":553},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":554},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":555},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":556},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":557},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":558},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":559},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":56},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":560},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":561},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":562},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":563},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":564},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":565},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":566},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":567},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":568},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":569},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":57},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":570},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":571},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":572},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":573},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":574},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":575},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":576},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":577},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":578},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":579},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":58},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":580},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":581},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":582},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":583},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":584},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":585},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":586},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":587},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":588},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":589},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":59},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":590},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":591},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":592},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":593},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":594},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":595},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":596},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":597},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":598},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":599},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":6},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":60},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":600},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":601},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":602},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":603},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":604},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":605},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":606},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":607},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":608},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":609},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":61},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":610},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":611},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":612},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":613},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":614},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":615},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":616},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":617},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":618},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":619},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":62},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":620},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":621},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":622},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":623},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":624},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":625},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":626},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":627},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":628},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":629},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":63},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":630},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":631},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":632},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":633},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":634},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":635},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":636},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":637},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":638},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":639},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":64},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":640},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":641},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":642},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":643},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":644},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":645},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":646},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":647},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":648},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":649},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":65},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":650},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":651},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":652},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":653},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":654},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":655},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":656},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":657},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":658},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":659},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":66},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":660},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":661},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":662},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":663},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":664},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":665},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":666},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":667},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":668},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":669},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":67},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":670},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":671},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":672},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":673},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":674},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":675},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":676},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":677},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":678},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":679},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":68},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":680},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":681},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":682},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":683},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":684},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":685},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":686},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":687},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":688},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":689},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":69},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":690},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":691},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":692},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":693},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":694},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":695},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":696},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":697},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":698},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":699},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":7},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":70},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":700},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":701},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":702},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":703},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":704},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":705},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":706},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":707},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":708},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":709},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":71},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":710},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":711},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":712},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":713},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":714},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":715},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":716},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":717},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":718},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":719},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":72},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":720},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":721},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":722},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":723},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":724},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":725},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":726},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":727},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":728},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":729},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":73},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":730},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":731},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":732},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":733},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":734},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":735},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":736},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":737},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":738},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":739},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":74},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":740},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":741},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":742},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":743},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":744},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":745},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":746},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":75},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":76},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":77},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":78},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":79},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":8},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":80},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":81},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":82},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":83},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":84},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":85},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":86},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":87},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":88},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":89},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":9},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":90},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":91},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":92},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":93},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":94},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":95},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":96},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":97},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":98},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":99}],\"interpolateInfo\":{\"type\":\"custom\"},\"type\":\"unique\"},\"textTranslateAnchor\":{\"type\":\"simple\",\"value\":\"map\"},\"justify\":{\"type\":\"simple\",\"value\":\"center\"},\"ignorePlacement\":{\"type\":\"simple\",\"value\":false},\"textAllowOverlap\":{\"type\":\"simple\",\"value\":true},\"maxWidth\":{\"type\":\"simple\",\"value\":10},\"textSize\":{\"type\":\"simple\",\"value\":16},\"textHaloColor\":{\"type\":\"simple\",\"value\":\"#242424\"},\"textColor\":{\"type\":\"simple\",\"value\":\"#FFFFFF\"},\"size\":{\"type\":\"simple\",\"value\":8},\"allowOverlap\":{\"type\":\"simple\",\"value\":true},\"translateAnchor\":{\"type\":\"simple\",\"value\":\"map\"},\"anchor\":{\"type\":\"simple\",\"value\":\"center\"},\"textOpacity\":{\"type\":\"simple\",\"value\":1},\"textHaloWidth\":{\"type\":\"simple\",\"value\":1},\"lineHeight\":{\"type\":\"simple\",\"value\":1.2},\"textFont\":{\"type\":\"simple\",\"value\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"]},\"textIgnorePlacement\":{\"type\":\"simple\",\"value\":false},\"opacity\":{\"type\":\"simple\",\"value\":0.9}}]},\"visible\":true,\"catalogType\":\"layer\",\"msDatasetId\":\"ms_datasetId_1774244993624_23\",\"bounds\":[113.482306,34.635322,113.827295,34.91074],\"id\":\"layer_郑州POI_GBK_1774245011909_26\",\"popupInfo\":{\"elements\":[{\"fieldName\":\"smpid\",\"type\":\"FIELD\"},{\"fieldName\":\"EntityHandle\",\"type\":\"FIELD\"},{\"fieldName\":\"EntityType\",\"type\":\"FIELD\"},{\"fieldName\":\"Layer\",\"type\":\"FIELD\"},{\"fieldName\":\"LayerFroze\",\"type\":\"FIELD\"},{\"fieldName\":\"LayerLocked\",\"type\":\"FIELD\"},{\"fieldName\":\"LayerOn\",\"type\":\"FIELD\"},{\"fieldName\":\"Elevation\",\"type\":\"FIELD\"},{\"fieldName\":\"Thickness\",\"type\":\"FIELD\"},{\"fieldName\":\"ColorIndex\",\"type\":\"FIELD\"},{\"fieldName\":\"LineStyle\",\"type\":\"FIELD\"},{\"fieldName\":\"BlockName\",\"type\":\"FIELD\"},{\"fieldName\":\"BlockRotation\",\"type\":\"FIELD\"},{\"fieldName\":\"LineWidth\",\"type\":\"FIELD\"},{\"fieldName\":\"UserID\",\"type\":\"FIELD\"},{\"fieldName\":\"Name\",\"type\":\"FIELD\"},{\"fieldName\":\"Name_PY\",\"type\":\"FIELD\"},{\"fieldName\":\"Ctype\",\"type\":\"FIELD\"},{\"fieldName\":\"Ntype\",\"type\":\"FIELD\"},{\"fieldName\":\"Code\",\"type\":\"FIELD\"},{\"fieldName\":\"Address\",\"type\":\"FIELD\"},{\"fieldName\":\"Telephone\",\"type\":\"FIELD\"},{\"fieldName\":\"Picture\",\"type\":\"FIELD\"},{\"fieldName\":\"URL\",\"type\":\"FIELD\"},{\"fieldName\":\"Link\",\"type\":\"FIELD\"},{\"fieldName\":\"消防局名称\",\"type\":\"FIELD\"},{\"fieldName\":\"XZQ\",\"type\":\"FIELD\"},{\"fieldName\":\"X\",\"type\":\"FIELD\"},{\"fieldName\":\"Y\",\"type\":\"FIELD\"},{\"fieldName\":\"msgeometry\",\"type\":\"FIELD\"}],\"title\":\"郑州POI_GBK\"},\"title\":\"郑州POI_GBK\",\"layerSourceType\":\"Data\",\"zoomRange\":[0,24],\"layersContent\":[\"ms_郑州POI_GBK_1774245016129_27\",\"ms_郑州POI_GBK_1774245104313_105\"]}],\"datas\":[{\"sourceType\":\"STRUCTURE_DATA\",\"datasets\":[{\"datasetTitle\":\"郑州POI_GBK\",\"msDatasetId\":\"ms_datasetId_1774244993624_23\",\"datasetId\":\"6977061\",\"geometryField\":\"msgeometry\",\"projection\":\"EPSG:4326\"}],\"title\":\"郑州POI_GBK\"}],\"baseLayer\":{\"internetMapName\":\"OSM\",\"type\":\"INTERNET_MAP\"},\"version\":\"3.1.4\"}", + "projectInfo": "{\"images\":\"http://localhost:9876/base/resources/data/sprite\",\"catalogs\":[{\"filter\":[\"all\",[\"==\",\"Ctype\",\"\"],[\"!=\",\"smpid\",\"\"]],\"visualization\":{\"renderer\":[{\"rotate\":{\"type\":\"simple\",\"value\":0},\"textLetterSpacing\":{\"type\":\"simple\",\"value\":0},\"textTranslate\":{\"type\":\"simple\",\"value\":[0,0]},\"color\":{\"type\":\"simple\",\"value\":\"#EE4D5A\"},\"symbolPlacement\":{\"type\":\"simple\",\"value\":\"point\"},\"textAnchor\":{\"type\":\"simple\",\"value\":\"center\"},\"translate\":{\"type\":\"simple\",\"value\":[0,0]},\"textRotate\":{\"type\":\"simple\",\"value\":0},\"textField\":{\"type\":\"simple\",\"value\":\"\"},\"textHaloBlur\":{\"type\":\"simple\",\"value\":2},\"transform\":{\"type\":\"simple\",\"value\":\"none\"},\"symbolsContent\":{\"field\":[\"smpid\"],\"defaultValue\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"values\":[{\"value\":{\"symbolId\":\"shape2\",\"style\":{\"layout\":{\"icon-image\":\"shape2\"}}},\"key\":1},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":10},{\"value\":{\"symbolId\":\"shape6\",\"style\":{\"layout\":{\"icon-image\":\"shape6\"}}},\"key\":100},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":101},{\"value\":{\"symbolId\":\"shape9\",\"style\":{\"layout\":{\"icon-image\":\"shape9\"}}},\"key\":102},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":103},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":104},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":105},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":106},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":107},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":108},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":109},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":11},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":110},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":111},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":112},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":113},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":114},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":115},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":116},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":117},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":118},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":119},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":12},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":120},{\"value\":{\"symbolId\":\"point-83030560\",\"style\":{\"layout\":{\"icon-image\":\"point-83030560\"}}},\"key\":121},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":122},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":123},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":124},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":125},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":126},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":127},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":128},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":129},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":13},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":130},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":131},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":132},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":133},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":134},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":135},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":136},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":137},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":138},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":139},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":14},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":140},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":141},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":142},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":143},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":144},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":145},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":146},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":147},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":148},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":149},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":15},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":150},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":151},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":152},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":153},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":154},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":155},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":156},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":157},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":158},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":159},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":16},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":160},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":161},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":162},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":163},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":164},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":165},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":166},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":167},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":168},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":169},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":17},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":170},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":171},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":172},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":173},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":174},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":175},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":176},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":177},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":178},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":179},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":18},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":180},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":181},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":182},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":183},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":184},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":185},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":186},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":187},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":188},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":189},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":19},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":190},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":191},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":192},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":193},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":194},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":195},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":196},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":197},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":198},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":199},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":2},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":20},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":200},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":201},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":202},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":203},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":204},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":205},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":206},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":207},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":208},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":209},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":21},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":210},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":211},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":212},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":213},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":214},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":215},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":216},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":217},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":218},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":219},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":22},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":220},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":221},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":222},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":223},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":224},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":225},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":226},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":227},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":228},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":229},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":23},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":230},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":231},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":232},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":233},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":234},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":235},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":236},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":237},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":238},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":239},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":24},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":240},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":241},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":242},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":243},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":244},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":245},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":246},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":247},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":248},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":249},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":25},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":250},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":251},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":252},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":253},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":254},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":255},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":256},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":257},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":258},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":259},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":26},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":260},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":261},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":262},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":263},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":264},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":265},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":266},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":267},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":268},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":269},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":27},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":270},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":271},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":272},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":273},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":274},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":275},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":276},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":277},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":278},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":279},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":28},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":280},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":281},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":282},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":283},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":284},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":285},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":286},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":287},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":288},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":289},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":29},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":290},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":291},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":292},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":293},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":294},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":295},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":296},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":297},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":298},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":299},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":3},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":30},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":300},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":301},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":302},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":303},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":304},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":305},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":306},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":307},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":308},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":309},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":31},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":310},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":311},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":312},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":313},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":314},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":315},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":316},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":317},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":318},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":319},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":32},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":320},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":321},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":322},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":323},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":324},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":325},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":326},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":327},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":328},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":329},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":33},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":330},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":331},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":332},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":333},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":334},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":335},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":336},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":337},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":338},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":339},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":34},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":340},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":341},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":342},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":343},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":344},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":345},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":346},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":347},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":348},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":349},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":35},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":350},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":351},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":352},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":353},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":354},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":355},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":356},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":357},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":358},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":359},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":36},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":360},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":361},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":362},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":363},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":364},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":365},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":366},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":367},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":368},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":369},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":37},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":370},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":371},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":372},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":373},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":374},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":375},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":376},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":377},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":378},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":379},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":38},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":380},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":381},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":382},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":383},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":384},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":385},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":386},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":387},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":388},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":389},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":39},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":390},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":391},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":392},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":393},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":394},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":395},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":396},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":397},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":398},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":399},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":4},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":40},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":400},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":401},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":402},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":403},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":404},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":405},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":406},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":407},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":408},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":409},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":41},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":410},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":411},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":412},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":413},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":414},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":415},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":416},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":417},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":418},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":419},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":42},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":420},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":421},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":422},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":423},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":424},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":425},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":426},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":427},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":428},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":429},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":43},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":430},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":431},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":432},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":433},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":434},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":435},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":436},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":437},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":438},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":439},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":44},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":440},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":441},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":442},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":443},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":444},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":445},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":446},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":447},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":448},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":449},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":45},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":450},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":451},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":452},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":453},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":454},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":455},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":456},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":457},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":458},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":459},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":46},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":460},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":461},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":462},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":463},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":464},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":465},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":466},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":467},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":468},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":469},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":47},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":470},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":471},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":472},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":473},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":474},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":475},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":476},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":477},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":478},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":479},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":48},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":480},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":481},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":482},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":483},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":484},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":485},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":486},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":487},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":488},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":489},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":49},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":490},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":491},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":492},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":493},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":494},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":495},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":496},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":497},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":498},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":499},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":5},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":50},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":500},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":501},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":502},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":503},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":504},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":505},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":506},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":507},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":508},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":509},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":51},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":510},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":511},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":512},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":513},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":514},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":515},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":516},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":517},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":518},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":519},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":52},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":520},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":521},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":522},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":523},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":524},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":525},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":526},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":527},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":528},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":529},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":53},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":530},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":531},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":532},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":533},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":534},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":535},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":536},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":537},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":538},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":539},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":54},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":540},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":541},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":542},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":543},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":544},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":545},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":546},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":547},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":548},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":549},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":55},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":550},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":551},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":552},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":553},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":554},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":555},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":556},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":557},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":558},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":559},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":56},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":560},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":561},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":562},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":563},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":564},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":565},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":566},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":567},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":568},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":569},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":57},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":570},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":571},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":572},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":573},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":574},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":575},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":576},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":577},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":578},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":579},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":58},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":580},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":581},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":582},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":583},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":584},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":585},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":586},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":587},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":588},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":589},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":59},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":590},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":591},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":592},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":593},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":594},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":595},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":596},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":597},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":598},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":599},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":6},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":60},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":600},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":601},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":602},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":603},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":604},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":605},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":606},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":607},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":608},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":609},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":61},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":610},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":611},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":612},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":613},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":614},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":615},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":616},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":617},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":618},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":619},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":62},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":620},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":621},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":622},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":623},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":624},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":625},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":626},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":627},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":628},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":629},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":63},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":630},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":631},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":632},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":633},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":634},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":635},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":636},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":637},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":638},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":639},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":64},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":640},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":641},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":642},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":643},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":644},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":645},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":646},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":647},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":648},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":649},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":65},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":650},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":651},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":652},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":653},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":654},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":655},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":656},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":657},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":658},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":659},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":66},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":660},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":661},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":662},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":663},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":664},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":665},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":666},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":667},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":668},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":669},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":67},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":670},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":671},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":672},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":673},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":674},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":675},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":676},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":677},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":678},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":679},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":68},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":680},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":681},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":682},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":683},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":684},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":685},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":686},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":687},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":688},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":689},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":69},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":690},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":691},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":692},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":693},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":694},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":695},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":696},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":697},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":698},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":699},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":7},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":70},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":700},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":701},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":702},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":703},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":704},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":705},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":706},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":707},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":708},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":709},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":71},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":710},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":711},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":712},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":713},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":714},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":715},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":716},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":717},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":718},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":719},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":72},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":720},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":721},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":722},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":723},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":724},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":725},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":726},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":727},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":728},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":729},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":73},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":730},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":731},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":732},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":733},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":734},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":735},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":736},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":737},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":738},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":739},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":74},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":740},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":741},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":742},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":743},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":744},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":745},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":746},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":75},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":76},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":77},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":78},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":79},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":8},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":80},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":81},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":82},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":83},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":84},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":85},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":86},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":87},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":88},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":89},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":9},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":90},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":91},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":92},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":93},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":94},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":95},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":96},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":97},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":98},{\"value\":{\"symbolId\":\"circle\",\"style\":{\"layout\":{\"icon-image\":\"circle\"}}},\"key\":99}],\"interpolateInfo\":{\"type\":\"custom\"},\"type\":\"unique\"},\"textTranslateAnchor\":{\"type\":\"simple\",\"value\":\"map\"},\"justify\":{\"type\":\"simple\",\"value\":\"center\"},\"ignorePlacement\":{\"type\":\"simple\",\"value\":false},\"textAllowOverlap\":{\"type\":\"simple\",\"value\":true},\"maxWidth\":{\"type\":\"simple\",\"value\":10},\"textSize\":{\"type\":\"simple\",\"value\":16},\"textHaloColor\":{\"type\":\"simple\",\"value\":\"#242424\"},\"textColor\":{\"type\":\"simple\",\"value\":\"#FFFFFF\"},\"size\":{\"type\":\"simple\",\"value\":8},\"allowOverlap\":{\"type\":\"simple\",\"value\":true},\"translateAnchor\":{\"type\":\"simple\",\"value\":\"map\"},\"anchor\":{\"type\":\"simple\",\"value\":\"center\"},\"textOpacity\":{\"type\":\"simple\",\"value\":1},\"textHaloWidth\":{\"type\":\"simple\",\"value\":1},\"lineHeight\":{\"type\":\"simple\",\"value\":1.2},\"textFont\":{\"type\":\"simple\",\"value\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"]},\"textIgnorePlacement\":{\"type\":\"simple\",\"value\":false},\"opacity\":{\"type\":\"simple\",\"value\":0.9}}]},\"visible\":true,\"catalogType\":\"layer\",\"msDatasetId\":\"ms_datasetId_1774244993624_23\",\"bounds\":[113.482306,34.635322,113.827295,34.91074],\"id\":\"layer_郑州POI_GBK_1774245011909_26\",\"popupInfo\":{\"elements\":[{\"fieldName\":\"smpid\",\"type\":\"FIELD\"},{\"fieldName\":\"EntityHandle\",\"type\":\"FIELD\"},{\"fieldName\":\"EntityType\",\"type\":\"FIELD\"},{\"fieldName\":\"Layer\",\"type\":\"FIELD\"},{\"fieldName\":\"LayerFroze\",\"type\":\"FIELD\"},{\"fieldName\":\"LayerLocked\",\"type\":\"FIELD\"},{\"fieldName\":\"LayerOn\",\"type\":\"FIELD\"},{\"fieldName\":\"Elevation\",\"type\":\"FIELD\"},{\"fieldName\":\"Thickness\",\"type\":\"FIELD\"},{\"fieldName\":\"ColorIndex\",\"type\":\"FIELD\"},{\"fieldName\":\"LineStyle\",\"type\":\"FIELD\"},{\"fieldName\":\"BlockName\",\"type\":\"FIELD\"},{\"fieldName\":\"BlockRotation\",\"type\":\"FIELD\"},{\"fieldName\":\"LineWidth\",\"type\":\"FIELD\"},{\"fieldName\":\"UserID\",\"type\":\"FIELD\"},{\"fieldName\":\"Name\",\"type\":\"FIELD\"},{\"fieldName\":\"Name_PY\",\"type\":\"FIELD\"},{\"fieldName\":\"Ctype\",\"type\":\"FIELD\"},{\"fieldName\":\"Ntype\",\"type\":\"FIELD\"},{\"fieldName\":\"Code\",\"type\":\"FIELD\"},{\"fieldName\":\"Address\",\"type\":\"FIELD\"},{\"fieldName\":\"Telephone\",\"type\":\"FIELD\"},{\"fieldName\":\"Picture\",\"type\":\"FIELD\"},{\"fieldName\":\"URL\",\"type\":\"FIELD\"},{\"fieldName\":\"Link\",\"type\":\"FIELD\"},{\"fieldName\":\"消防局名称\",\"type\":\"FIELD\"},{\"fieldName\":\"XZQ\",\"type\":\"FIELD\"},{\"fieldName\":\"X\",\"type\":\"FIELD\"},{\"fieldName\":\"Y\",\"type\":\"FIELD\"},{\"fieldName\":\"msgeometry\",\"type\":\"FIELD\"}],\"title\":\"郑州POI_GBK\"},\"title\":\"郑州POI_GBK\",\"layerSourceType\":\"Data\",\"zoomRange\":[0,24],\"layersContent\":[\"ms_郑州POI_GBK_1774245016129_27\",\"ms_郑州POI_GBK_1774245104313_105\"]}],\"datas\":[{\"sourceType\":\"STRUCTURE_DATA\",\"datasets\":[{\"datasetTitle\":\"郑州POI_GBK\",\"msDatasetId\":\"ms_datasetId_1774244993624_23\",\"datasetId\":\"6977061\",\"geometryField\":\"msgeometry\",\"projection\":\"EPSG:4326\"}],\"title\":\"郑州POI_GBK\"}],\"baseLayer\":{\"internetMapName\":\"OSM\",\"type\":\"INTERNET_MAP\"},\"version\":\"3.1.4\"}", "visitCount": 73, "centerString": "{\"x\":113.5945719887909,\"y\":34.77314590347322,\"m\":null}", "epsgCode": 3857, diff --git a/test/test-main-common.js b/test/test-main-common.js index 68fdb81e2..07769f327 100644 --- a/test/test-main-common.js +++ b/test/test-main-common.js @@ -235,11 +235,16 @@ import './common/util/EncryptRequestSpec'; import './common/util/MapCalculateUtilSpec'; import './common/util/GeometryAnalysisSpec.js'; +import './common/mapping/utils/AppreciableLayerBaseSpec.js' import './common/mapping/utils/L7LayerUtilSpec'; +import './common/mapping/MapBaseSpec.js' import './common/mapping/utils/ColorUtilSpec.js'; import './common/mapping/utils/SourceListModelV2Spec.js'; import './common/mapping/utils/SourceListModelV3Spec.js'; import './common/mapping/utils/epsgDefineSpec.js'; import './common/mapping/utils/UtilSpec.js'; +import './common/mapping/WebMapBaseSpec.js'; import './common/mapping/WebMapServiceSpec'; -import './common/mapping/WebMapV2BaseSpec'; \ No newline at end of file +import './common/mapping/WebMapV2BaseSpec'; +import './common/mapping/WebMapV3Spec.js'; +import './common/mapping/WebMapV2Spec.js';