{"version":3,"file":"js/app.3bdc0db2.js","mappings":"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A,YACA,gCACA,aACA,sDACA,SACA,iBACA,8CACA,sEACA,SACA,+CACA,SACA,IACA,IACFtP,KAAK,MAEDuP,GAAe,CACjB,yBACA,uBACA,0BACA,4BACA,iCACA,2BACA,gCACA,0BACA,+BACA,2BACA,4BACA,oBACA,uBACA,4BACA,gBACA,qBACA,SACA,wCACA,IACA,wCACA,4CACA,oEACA,gEACA,wDACA,wCACA,IACA,qCACA,IACA,gHACA,sCACA,iDACA,qCACA,uDACA,qCACA,iDACA,qCACA,uDACA,qCACA,uCACA,sFACA,iDACA,qCACA,6CACA,gDACA,iCACA,kCACA,yBACA,0BACA,oCACA,IACA,cACA,IACA,2CACA,oDACA,cACA,sFACA,yFACA,2GACA,2GACA,kDACA,wCACA,WACA,wCACA,SACA,cACA,cACA,8CACA,iDACA,qCACA,4DACA,2BACA,uDACA,qCACA,6DACA,2BACA,iDACA,qCACA,4DACA,2BACA,uDACA,qCACA,6DACA,2BACA,yCACA,QACA,oDACA,SACA,mDACA,QACA,sDACA,SACA,IACA,IACFvP,KAAK,MAEDwP,GAAe,CACjB,0BACA,oBACA,uBACA,wCACA,IACA,wCACA,4CACA,oEACA,gEACA,wDACA,wCACA,IACA,qCACA,IACA,gHACA,sCACA,iDACA,qCACA,uDACA,qCACA,iDACA,qCACA,uDACA,qCACA,uCACA,sFACA,iDACA,qCACA,6CACA,gDACA,iCACA,kCACA,yBACA,0BACA,oCACA,IACA,cACA,IACA,oCACA,cACA,cACA,mDACA,iDACA,qCACA,4DACA,2BACA,uDACA,qCACA,6DACA,2BACA,iDACA,qCACA,4DACA,2BACA,uDACA,qCACA,6DACA,2BACA,yCACA,QACA,+DACA,SACA,mDACA,QACA,2DACA,SACA,yDACA,IACA,IACFxP,KAAK,MAEDyP,GAAiB,CACnB,sBACA,uBACA,2BACA,yBACA,0BACA,8BACA,qBACA,oBACA,uBACA,oBACA,wCACA,IACA,IACFzP,KAAK,MAED0P,GAAqB,CACvB,yBACA,uBA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","sources":["webpack://world-web-ui/./src/App.vue?e16c","webpack://world-web-ui/./src/helpers/security.ts","webpack://world-web-ui/./src/helpers/data.ts","webpack://world-web-ui/./src/stores/index.ts","webpack://world-web-ui/./src/components/Sidebar.vue?a845","webpack://world-web-ui/./src/components/TMPLabel.vue?66d9","webpack://world-web-ui/./src/components/TMPLabel.vue?942d","webpack://world-web-ui/./src/components/TMPLabel.vue","webpack://world-web-ui/./src/components/Sidebar.vue?dcb7","webpack://world-web-ui/./src/components/Sidebar.vue","webpack://world-web-ui/./src/App.vue?847a","webpack://world-web-ui/./src/App.vue","webpack://world-web-ui/./src/plugins/i18n.ts","webpack://world-web-ui/./src/pages/Index.vue","webpack://world-web-ui/./src/components/WorldMap.vue","webpack://world-web-ui/./src/assets/js/DistrictColors.js","webpack://world-web-ui/./src/assets/js/Base64.js","webpack://world-web-ui/./src/assets/js/PlotMap.js","webpack://world-web-ui/./src/assets/js/GIFMANAGER.js","webpack://world-web-ui/./src/assets/js/GenChunk.js","webpack://world-web-ui/./src/assets/js/OrbitControls.js","webpack://world-web-ui/./src/assets/js/ecomap.ts","webpack://world-web-ui/./src/assets/js/MapControls.js","webpack://world-web-ui/./src/components/WorldMap.vue?1f26","webpack://world-web-ui/./src/components/ServerInfo.vue?da16","webpack://world-web-ui/./src/helpers/time.ts","webpack://world-web-ui/./src/components/ServerInfo.vue?f141","webpack://world-web-ui/./src/components/ServerInfo.vue","webpack://world-web-ui/./src/pages/Index.vue?70a3","webpack://world-web-ui/./src/pages/Comparison.vue","webpack://world-web-ui/./src/pages/Comparison.vue?4956","webpack://world-web-ui/./src/pages/Election.vue?1a54","webpack://world-web-ui/./src/components/modals/AllVotesModal.vue?fb80","webpack://world-web-ui/./src/components/modals/AllVotesModal.vue?d373","webpack://world-web-ui/./src/components/modals/AllVotesModal.vue","webpack://world-web-ui/./src/components/modals/ElectionProcessModal.vue","webpack://world-web-ui/./src/components/modals/ElectionProcessModal.vue?3cba","webpack://world-web-ui/./src/pages/Election.vue?3d6a","webpack://world-web-ui/./src/pages/Election.vue","webpack://world-web-ui/./src/pages/Elections.vue?7527","webpack://world-web-ui/./src/pages/Elections.vue?4615","webpack://world-web-ui/./src/pages/Elections.vue","webpack://world-web-ui/./src/pages/Officials.vue?03f7","webpack://world-web-ui/./src/pages/Officials.vue?6780","webpack://world-web-ui/./src/pages/Officials.vue","webpack://world-web-ui/./src/pages/Profiling.vue","webpack://world-web-ui/./src/pages/Profiling.vue?b959","webpack://world-web-ui/./src/pages/Plugin.vue?1ee1","webpack://world-web-ui/./src/pages/Plugin.vue?ed98","webpack://world-web-ui/./src/pages/Plugin.vue","webpack://world-web-ui/./src/components/ThreeJSScene.vue","webpack://world-web-ui/./src/pages/Debug.vue","webpack://world-web-ui/./src/router/index.ts","webpack://world-web-ui/./src/plugins/WebGLPlugin.ts","webpack://world-web-ui/./src/main.ts","webpack://world-web-ui/./src/locales/ lazy ^\\.\\/.*\\.json$ namespace object","webpack://world-web-ui/webpack/bootstrap","webpack://world-web-ui/webpack/runtime/amd options","webpack://world-web-ui/webpack/runtime/chunk loaded","webpack://world-web-ui/webpack/runtime/compat get default export","webpack://world-web-ui/webpack/runtime/create fake namespace object","webpack://world-web-ui/webpack/runtime/define property getters","webpack://world-web-ui/webpack/runtime/ensure chunk","webpack://world-web-ui/webpack/runtime/get javascript chunk filename","webpack://world-web-ui/webpack/runtime/get mini-css chunk filename","webpack://world-web-ui/webpack/runtime/global","webpack://world-web-ui/webpack/runtime/harmony module decorator","webpack://world-web-ui/webpack/runtime/hasOwnProperty shorthand","webpack://world-web-ui/webpack/runtime/load script","webpack://world-web-ui/webpack/runtime/make namespace object","webpack://world-web-ui/webpack/runtime/publicPath","webpack://world-web-ui/webpack/runtime/jsonp chunk loading","webpack://world-web-ui/webpack/startup"],"sourcesContent":["import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"wrapper\" }\nconst _hoisted_2 = { id: \"page-wrapper\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_vue_progress_bar = _resolveComponent(\"vue-progress-bar\")!\n const _component_Sidebar = _resolveComponent(\"Sidebar\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_vue_progress_bar),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_Sidebar),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_router_view)\n ])\n ])\n ], 64))\n}","/**\r\n * Recursive method for clearing vars of any types from XSS attacks\r\n */\r\nexport function clearFromXSS(data: any): any {\r\n // Removing all \r\n","\r\n\r\n\r\n\r\n","\nimport * as THREE from 'three';\n\n\n// Now it's constructor and can't be called with old \"THREE.Texture.call(this\", therefore should be extended\nclass DistrictColors extends THREE.Texture {\n constructor(type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n var width = 256;\n var height = 1;\n\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n\n super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n\n this.ctxt = canvas.getContext('2d');\n this.ctxt.webkitImageSmoothingEnabled = false;\n\n this.magFilter = magFilter !== undefined ? magFilter : THREE.NearestFilter;\n this.minFilter = minFilter !== undefined ? minFilter : THREE.NearestFilter;\n\n this.zoneColor = \"#FFFFFF\";\n this.ctxt.fillStyle = this.zoneColor;\n this.ctxt.strokeStyle = this.zoneColor;\n this.ctxt.miterLimit = 0;\n this.ctxt.lineJoin = \"bevel\";\n this.erasing = false;\n\n\n this.generateMipmaps = false;\n this.Reset();\n this.lastData = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n }\n\n SetPixel(vec, color) {\n var id = this.ctxt.createImageData(1, 1);\n id.data[0] = color.r;\n id.data[1] = color.g;\n id.data[2] = color.b;\n id.data[3] = color.a;\n this.ctxt.putImageData(id, vec.x, vec.y);\n this.needsUpdate = true;\n }\n\n SetDistrictColorFromStyle(id, style) {\n this.ctxt.fillStyle = style;\n this.ctxt.fillRect(id, 0, 1, 1);\n this.needsUpdate = true;\n }\n\n Reset() {\n this.ctxt.fillStyle = \"#FF0000\";\n this.ctxt.fillRect(0, 0, this.image.width, this.image.height);\n this.ctxt.fillStyle = this.zoneColor;\n this.needsUpdate = true;\n }\n}\n\nexport default DistrictColors;\n","\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction placeHoldersCount(b64) {\n var len = b64.length;\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction toByteArray(b64) {\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n placeHolders = placeHoldersCount(b64);\n\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\n\nexport default { toByteArray, fromByteArray };\n","\nimport * as THREE from 'three';\nimport Base64 from './Base64';\n\n\n// Now it's constructor and can't be called with old \"THREE.Texture.call(this\", therefore should be extended\nclass PlotMap extends THREE.Texture {\n constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n //if ( type === undefined && format === THREE.DepthFormat ) type = THREE.UnsignedShortType;\n //if ( type === undefined && format === THREE.DepthStencilFormat ) type = THREE.UnsignedInt248Type;\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n\n super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n\n this.ctxt = canvas.getContext('2d');\n this.ctxt.webkitImageSmoothingEnabled = false;\n\n this.zoneColor = \"#000000\";\n this.ctxt.fillStyle = this.zoneColor;\n this.ctxt.strokeStyle = this.zoneColor;\n this.ctxt.miterLimit = 0;\n this.ctxt.lineJoin = \"bevel\";\n this.erasing = false;\n\n this.plotSize = 1;\n\n this.magFilter = magFilter !== undefined ? magFilter : THREE.NearestFilter;\n this.minFilter = minFilter !== undefined ? minFilter : THREE.NearestFilter;\n\n this.generateMipmaps = false;\n this.Reset();\n this.lastData = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n }\n\n SetColor(color) {\n this.zoneColor = color;\n this.ctxt.fillStyle = color;\n this.ctxt.strokeStyle = color;\n }\n\n SetPixel(vec, size = 1) {\n this.ctxt.fillRect(vec.x - size, vec.y - size, 1 + size * 2, 1 + size * 2);\n this.ctxt.beginPath();\n this.ctxt.moveTo(vec.x + 0.5, vec.y + 0.5);\n this.needsUpdate = true;\n }\n\n // canvas lineto uses anti-aliasing that sets incorrect district IDs... using Bresenham line drawing instead\n DrawLine(start, end, size = 1) {\n if (start.distanceTo(end) > this.image.width / 2) {\n // TODO: figure out the right direction and do some wrapping or draw 2 line segments\n this.SetPixel(end, size);\n } else {\n var vec = start.clone();\n var dx = Math.abs(end.x - vec.x);\n var dy = Math.abs(end.y - vec.y);\n var sx = (vec.x < end.x) ? 1 : -1;\n var sy = (vec.y < end.y) ? 1 : -1;\n var err = dx - dy;\n const tr = true;\n\n while (tr) {\n this.SetPixel(vec, size);\n\n if ((vec.x == end.x) && (vec.y == end.y)) break;\n var e2 = 2 * err;\n if (e2 > -dy) { err -= dy; vec.x += sx; }\n if (e2 < dx) { err += dx; vec.y += sy; }\n }\n }\n }\n\n SetRect(a, b) {\n this.mask[a.x + a.y * this.width / 5] = 255;\n var min = new THREE.Vector2((a.x < b.x) ? a.x : b.x, (a.y < b.y) ? a.y : b.y);\n var size = new THREE.Vector2(Math.abs(a.x - b.x), Math.abs(a.y - b.y));\n\n this.ctxt.fillRect(5 * min.x + 2.5, 5 * min.y + 2.5, size.x * 5, size.y * 5);\n this.needsUpdate = true;\n }\n\n SetEraseMode(x) {\n this.erasing = x;\n if (this.erasing) {\n this.ctxt.fillStyle = \"#000000\";\n this.ctxt.strokeStyle = \"#000000\";\n } else {\n this.ctxt.fillStyle = this.zoneColor;\n this.ctxt.strokeStyle = this.zoneColor;\n }\n }\n\n Reset() {\n this.ctxt.fillStyle = \"#000000\";\n this.ctxt.fillRect(0, 0, this.image.width, this.image.height);\n this.ctxt.fillStyle = this.zoneColor;\n this.needsUpdate = true;\n }\n\n AntiAntiAlias() {\n var data = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n for (var y = 0; y < data.data.length; y++) {\n data.data[y] = data.data[y] > 128 ? 255 : 0;\n }\n this.ctxt.putImageData(data, 0, 0);\n this.ctxt.needsUpdate = true;\n }\n\n GetArray() {\n var data = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n var mask = new Uint8Array(data.data.length / 4);\n //Packing to array w/ 1-byte per pixel\n for (var i = 0; i < mask.length; i++) {\n mask[i] = data.data[i * 4];\n }\n var tmp = Base64.fromByteArray(mask);\n return tmp;\n }\n\n LoadArray(b64MaskString) {\n // unpack to 1bpp array\n var mask = Base64.toByteArray(b64MaskString);\n var data = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n\n for (var i = 0; i < mask.length; i++) {\n data.data[(i * 4)] = mask[i];\n data.data[(i * 4) + 1] = mask[i];\n data.data[(i * 4) + 1] = mask[i];\n }\n this.ctxt.putImageData(data, 0, 0);\n this.needsUpdate = true;\n }\n\n ApplyDistrictColors(colorsArray) {\n var data = this.ctxt.getImageData(0, 0, this.image.width, this.image.height);\n for (var i = 0; i < data.data.length; i += 4) {\n var districtOffset = data.data[i] * 4;\n for (var j = 0; j < 4; j++)\n data.data[i + j] = colorsArray[districtOffset + j];\n }\n this.ctxt.putImageData(data, 0, 0);\n this.ctxt.needsUpdate = true;\n }\n\n LoadDistrictMap(districtData) {\n this.metadata = districtData.DistrictMetadata;\n var colorsArray = new Uint8Array(256 * 4);\n colorsArray[0] = 255; // 0 is white / \"no district\"\n colorsArray[1] = 255;\n colorsArray[2] = 255;\n colorsArray[3] = 255;\n for (var i = 0; i < districtData.DistrictMetadata.length; i++) {\n var id = districtData.DistrictMetadata[i].ID;\n colorsArray[id * 4] = districtData.DistrictMetadata[i].R;\n colorsArray[id * 4 + 1] = districtData.DistrictMetadata[i].G;\n colorsArray[id * 4 + 2] = districtData.DistrictMetadata[i].B;\n colorsArray[id * 4 + 3] = 255;\n }\n if (districtData.DistrictMap != undefined)\n this.LoadArray(districtData.DistrictMap);\n this.ApplyDistrictColors(colorsArray);\n }\n}\n\nexport default PlotMap;\n","\nvar GIFMANAGER = (function () {\n var my = {};\n my.gifStorage = {};\n my.gifTimes = {};\n\n my.giftextures = function (name, onFinish) {\n if (!my.gifStorage[name]) {\n //parseName = name;\n my.gifStorage[name] = [];\n my.gifTimes[name] = [];\n } else if (onFinish) {\n onFinish(name);\n }\n return my.gifStorage[name];\n };\n\n my.OnGifLoaded = null;\n\n return my;\n}());\n\n\nexport default GIFMANAGER;\n","\nimport * as THREE from 'three';\n\nfunction GenChunk(xSize, zSize, worldX, worldZ) {\n var geometry = new THREE.InstancedBufferGeometry();\n\n var v = new THREE.BufferAttribute(new Float32Array((xSize + 1) * (zSize + 1) * 4 * 4), 4);\n var t = new THREE.BufferAttribute(new Uint16Array(xSize * zSize * 18), 1);\n\n function p(x, z) {\n return 4 * ((xSize + 1) * z + x);\n }\n\n // z\n // ^ p p+1\n // |\n // | 3 2 7 6\n // |\n // | 0 1 4 5\n // +------------> x\n\n var i = 0;\n var ti = 0;\n var iUp = 0;\n for (var z = 0; z <= zSize; z++) {\n for (var x = 0; x <= xSize; x++) {\n //index = p(x, z);\n v.setXYZW(i, x * 100, 50, z * 100, 50);\n v.setXYZW(i + 1, x * 100 + 100, -50, z * 100, 50);\n v.setXYZW(i + 2, x * 100 + 100, -50, z * 100 + 100, -50);\n v.setXYZW(i + 3, x * 100, 50, z * 100 + 100, -50);\n\n if (x < xSize && z < zSize) {\n t.setXYZ(ti, i + 0, i + 2, i + 1);\n t.setXYZ(ti + 3, i + 0, i + 3, i + 2);\n\n //if (x < xSize) {\n t.setXYZ(ti + 6, i + 1, i + 2, i + 7);\n t.setXYZ(ti + 9, i + 1, i + 7, i + 4);\n //}\n\n //if (z + 1 < zSize) {\n iUp = p(x, z + 1);\n t.setXYZ(ti + 12, i + 2, i + 3, iUp);\n t.setXYZ(ti + 15, i + 2, iUp, iUp + 1);\n //}\n ti += 18;\n }\n i += 4;\n }\n }\n\n geometry.setIndex(t);\n geometry.setAttribute('position', v);\n\n let d = Math.round(worldX / xSize);\n let instances = d * d;\n let o = new THREE.InstancedBufferAttribute(new Float32Array(instances * 3), 3, true);\n i = 0;\n\n for (z = 0; z < d; z++) {\n for (x = 0; x < d; x++) {\n o.setXYZ(i++, (x * xSize * 100) - (worldX * 50), 0.001, (z * zSize * 100) - (worldZ * 50));\n }\n }\n\n geometry.setAttribute(\"translate\", o);\n // threejs isn't setting this for some reason and nothing renders w/o it\n geometry.instanceCount = instances;\n geometry.boundingSphere = new THREE.Sphere(new THREE.Vector3(0, 0, 0), worldX * 1000);\n\n return geometry;\n}\n\nexport default GenChunk;\n","/**\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n */\n\nimport * as THREE from 'three';\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one finger move\n// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish\n// Pan - right mouse, or arrow keys / touch: three finter swipe\n\nvar OrbitControls = function(object, domElement) {\n\n this.object = object;\n\n this.domElement = (domElement !== undefined) ? domElement : document;\n\n // Set to false to disable this control\n this.enabled = true;\n\n // \"target\" sets the location of focus, where the object orbits around\n this.target = new THREE.Vector3();\n\n // How far you can dolly in and out ( PerspectiveCamera only )\n this.minDistance = 0;\n this.maxDistance = Infinity;\n\n // How far you can zoom in and out ( OrthographicCamera only )\n this.minZoom = 0;\n this.maxZoom = Infinity;\n\n // How far you can orbit vertically, upper and lower limits.\n // Range is 0 to Math.PI radians.\n this.minPolarAngle = 0; // radians\n this.maxPolarAngle = Math.PI; // radians\n\n // How far you can orbit horizontally, upper and lower limits.\n // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\n this.minAzimuthAngle = -Infinity; // radians\n this.maxAzimuthAngle = Infinity; // radians\n\n // Set to true to enable damping (inertia)\n // If damping is enabled, you must call controls.update() in your animation loop\n this.enableDamping = false;\n this.dampingFactor = 0.25;\n\n // This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n // Set to false to disable zooming\n this.enableZoom = true;\n this.zoomSpeed = 1.0;\n\n // Set to false to disable rotating\n this.enableRotate = true;\n this.rotateSpeed = 1.0;\n\n // Set to false to disable panning\n this.enablePan = true;\n this.keyPanSpeed = 7.0; // pixels moved per arrow key push\n\n // Set to true to automatically rotate around the target\n // If auto-rotate is enabled, you must call controls.update() in your animation loop\n this.autoRotate = false;\n this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n // Set to false to disable use of the keys\n this.enableKeys = true;\n\n // The four arrow keys\n this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n // Mouse buttons\n this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT };\n\n // for reset\n this.target0 = this.target.clone();\n this.position0 = this.object.position.clone();\n this.zoom0 = this.object.zoom;\n\n //\n // public methods\n //\n\n this.getPolarAngle = function() {\n\n return spherical.phi;\n\n };\n\n this.getAzimuthalAngle = function() {\n\n return spherical.theta;\n\n };\n\n this.reset = function() {\n\n scope.target.copy(scope.target0);\n scope.object.position.copy(scope.position0);\n scope.object.zoom = scope.zoom0;\n\n scope.object.updateProjectionMatrix();\n scope.dispatchEvent(changeEvent);\n\n scope.update();\n\n state = STATE.NONE;\n\n };\n\n // this method is exposed, but perhaps it would be better if we can make it private...\n this.update = function() {\n\n var offset = new THREE.Vector3();\n\n // so camera.up is the orbit axis\n var quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0));\n var quatInverse = quat.clone().invert();\n\n var lastPosition = new THREE.Vector3();\n var lastQuaternion = new THREE.Quaternion();\n\n return function update() {\n\n var position = scope.object.position;\n\n offset.copy(position).sub(scope.target);\n\n // rotate offset to \"y-axis-is-up\" space\n offset.applyQuaternion(quat);\n\n // angle from z-axis around y-axis\n spherical.setFromVector3(offset);\n\n if (scope.autoRotate && state === STATE.NONE) {\n\n rotateLeft(getAutoRotationAngle());\n\n }\n\n spherical.theta += sphericalDelta.theta;\n spherical.phi += sphericalDelta.phi;\n\n // restrict theta to be between desired limits\n spherical.theta = Math.max(scope.minAzimuthAngle, Math.min(scope.maxAzimuthAngle, spherical.theta));\n\n // restrict phi to be between desired limits\n spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));\n\n spherical.makeSafe();\n\n\n spherical.radius *= scale;\n\n // restrict radius to be between desired limits\n spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius));\n\n // move target to panned location\n scope.target.add(panOffset);\n\n offset.setFromSpherical(spherical);\n\n // rotate offset back to \"camera-up-vector-is-up\" space\n offset.applyQuaternion(quatInverse);\n\n position.copy(scope.target).add(offset);\n\n scope.object.lookAt(scope.target);\n\n if (scope.enableDamping === true) {\n\n sphericalDelta.theta *= (1 - scope.dampingFactor);\n sphericalDelta.phi *= (1 - scope.dampingFactor);\n\n } else {\n\n sphericalDelta.set(0, 0, 0);\n\n }\n\n scale = 1;\n panOffset.set(0, 0, 0);\n\n // update condition is:\n // min(camera displacement, camera rotation in radians)^2 > EPS\n // using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n if (zoomChanged ||\n lastPosition.distanceToSquared(scope.object.position) > EPS ||\n 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {\n\n scope.dispatchEvent(changeEvent);\n\n lastPosition.copy(scope.object.position);\n lastQuaternion.copy(scope.object.quaternion);\n zoomChanged = false;\n\n return true;\n\n }\n\n return false;\n\n };\n\n }();\n\n this.dispose = function() {\n\n scope.domElement.removeEventListener('contextmenu', onContextMenu, false);\n scope.domElement.removeEventListener('mousedown', onMouseDown, false);\n scope.domElement.removeEventListener('wheel', onMouseWheel, false);\n\n scope.domElement.removeEventListener('touchstart', onTouchStart, false);\n scope.domElement.removeEventListener('touchend', onTouchEnd, false);\n scope.domElement.removeEventListener('touchmove', onTouchMove, false);\n\n document.removeEventListener('mousemove', onMouseMove, false);\n document.removeEventListener('mouseup', onMouseUp, false);\n\n window.removeEventListener('keydown', onKeyDown, false);\n\n //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n };\n\n //\n // internals\n //\n\n var scope = this;\n\n var changeEvent = { type: 'change' };\n var startEvent = { type: 'start' };\n var endEvent = { type: 'end' };\n\n var STATE = { NONE: -1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 };\n\n var state = STATE.NONE;\n\n var EPS = 0.000001;\n\n // current position in spherical coordinates\n var spherical = new THREE.Spherical();\n var sphericalDelta = new THREE.Spherical();\n\n var scale = 1;\n var panOffset = new THREE.Vector3();\n var zoomChanged = false;\n\n var rotateStart = new THREE.Vector2();\n var rotateEnd = new THREE.Vector2();\n var rotateDelta = new THREE.Vector2();\n\n var panStart = new THREE.Vector2();\n var panEnd = new THREE.Vector2();\n var panDelta = new THREE.Vector2();\n\n var dollyStart = new THREE.Vector2();\n var dollyEnd = new THREE.Vector2();\n var dollyDelta = new THREE.Vector2();\n\n function getAutoRotationAngle() {\n\n return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n }\n\n function getZoomScale() {\n\n return Math.pow(0.95, scope.zoomSpeed);\n\n }\n\n function rotateLeft(angle) {\n\n sphericalDelta.theta -= angle;\n\n }\n\n function rotateUp(angle) {\n\n sphericalDelta.phi -= angle;\n\n }\n\n var panLeft = function() {\n\n var v = new THREE.Vector3();\n\n return function panLeft(distance, objectMatrix) {\n\n v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix\n v.multiplyScalar(-distance);\n\n panOffset.add(v);\n\n };\n\n }();\n\n var panUp = function() {\n\n var v = new THREE.Vector3();\n\n return function panUp(distance, objectMatrix) {\n\n v.setFromMatrixColumn(objectMatrix, 1); // get Y column of objectMatrix\n v.multiplyScalar(distance);\n\n panOffset.add(v);\n\n };\n\n }();\n\n // deltaX and deltaY are in pixels; right and down are positive\n var pan = function() {\n\n var offset = new THREE.Vector3();\n\n return function pan(deltaX, deltaY) {\n\n var element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n if (scope.object instanceof THREE.PerspectiveCamera) {\n\n // perspective\n var position = scope.object.position;\n offset.copy(position).sub(scope.target);\n var targetDistance = offset.length();\n\n // half of the fov is center to top of screen\n targetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0);\n\n // we actually don't use screenWidth, since perspective camera is fixed to screen height\n panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);\n panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);\n\n } else if (scope.object instanceof THREE.OrthographicCamera) {\n\n // orthographic\n panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);\n panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);\n\n } else {\n\n // camera neither orthographic nor perspective\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');\n scope.enablePan = false;\n\n }\n\n };\n\n }();\n\n function dollyIn(dollyScale) {\n\n if (scope.object instanceof THREE.PerspectiveCamera) {\n\n scale /= dollyScale;\n\n } else if (scope.object instanceof THREE.OrthographicCamera) {\n\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n\n } else {\n\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n\n }\n\n }\n\n function dollyOut(dollyScale) {\n\n if (scope.object instanceof THREE.PerspectiveCamera) {\n\n scale *= dollyScale;\n\n } else if (scope.object instanceof THREE.OrthographicCamera) {\n\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n\n } else {\n\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n\n }\n\n }\n\n //\n // event callbacks - update the object state\n //\n\n function handleMouseDownRotate(event) {\n\n //console.log( 'handleMouseDownRotate' );\n\n rotateStart.set(event.clientX, event.clientY);\n\n }\n\n function handleMouseDownDolly(event) {\n\n //console.log( 'handleMouseDownDolly' );\n\n dollyStart.set(event.clientX, event.clientY);\n\n }\n\n function handleMouseDownPan(event) {\n\n //console.log( 'handleMouseDownPan' );\n\n panStart.set(event.clientX, event.clientY);\n\n }\n\n function handleMouseMoveRotate(event) {\n\n //console.log( 'handleMouseMoveRotate' );\n\n rotateEnd.set(event.clientX, event.clientY);\n rotateDelta.subVectors(rotateEnd, rotateStart);\n\n var element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n // rotating across whole screen goes 360 degrees around\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed);\n\n // rotating up and down along whole screen attempts to go 360, but limited to 180\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed);\n\n rotateStart.copy(rotateEnd);\n\n scope.update();\n\n }\n\n function handleMouseMoveDolly(event) {\n\n //console.log( 'handleMouseMoveDolly' );\n\n dollyEnd.set(event.clientX, event.clientY);\n\n dollyDelta.subVectors(dollyEnd, dollyStart);\n\n if (dollyDelta.y > 0) {\n\n dollyIn(getZoomScale());\n\n } else if (dollyDelta.y < 0) {\n\n dollyOut(getZoomScale());\n\n }\n\n dollyStart.copy(dollyEnd);\n\n scope.update();\n\n }\n\n function handleMouseMovePan(event) {\n\n //console.log( 'handleMouseMovePan' );\n\n panEnd.set(event.clientX, event.clientY);\n\n panDelta.subVectors(panEnd, panStart);\n\n pan(panDelta.x, panDelta.y);\n\n panStart.copy(panEnd);\n\n scope.update();\n\n }\n\n function handleMouseWheel(event) {\n if (event.deltaY < 0) {\n dollyOut(getZoomScale());\n } else if (event.deltaY > 0) {\n dollyIn(getZoomScale());\n }\n\n scope.update();\n }\n\n function handleKeyDown(event) {\n\n //console.log( 'handleKeyDown' );\n\n switch (event.keyCode) {\n\n case scope.keys.UP:\n pan(0, scope.keyPanSpeed);\n scope.update();\n break;\n\n case scope.keys.BOTTOM:\n pan(0, -scope.keyPanSpeed);\n scope.update();\n break;\n\n case scope.keys.LEFT:\n pan(scope.keyPanSpeed, 0);\n scope.update();\n break;\n\n case scope.keys.RIGHT:\n pan(-scope.keyPanSpeed, 0);\n scope.update();\n break;\n\n }\n\n }\n\n function handleTouchStartRotate(event) {\n\n //console.log( 'handleTouchStartRotate' );\n\n rotateStart.set(event.touches[0].pageX, event.touches[0].pageY);\n\n }\n\n function handleTouchStartDolly(event) {\n\n //console.log( 'handleTouchStartDolly' );\n\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n\n var distance = Math.sqrt(dx * dx + dy * dy);\n\n dollyStart.set(0, distance);\n\n }\n\n function handleTouchStartPan(event) {\n\n //console.log( 'handleTouchStartPan' );\n\n panStart.set(event.touches[0].pageX, event.touches[0].pageY);\n\n }\n\n function handleTouchMoveRotate(event) {\n\n //console.log( 'handleTouchMoveRotate' );\n\n rotateEnd.set(event.touches[0].pageX, event.touches[0].pageY);\n rotateDelta.subVectors(rotateEnd, rotateStart);\n\n var element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n // rotating across whole screen goes 360 degrees around\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed);\n\n // rotating up and down along whole screen attempts to go 360, but limited to 180\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed);\n\n rotateStart.copy(rotateEnd);\n\n scope.update();\n\n }\n\n function handleTouchMoveDolly(event) {\n\n //console.log( 'handleTouchMoveDolly' );\n\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n\n var distance = Math.sqrt(dx * dx + dy * dy);\n\n dollyEnd.set(0, distance);\n\n dollyDelta.subVectors(dollyEnd, dollyStart);\n\n if (dollyDelta.y > 0) {\n\n dollyOut(getZoomScale());\n\n } else if (dollyDelta.y < 0) {\n\n dollyIn(getZoomScale());\n\n }\n\n dollyStart.copy(dollyEnd);\n\n scope.update();\n\n }\n\n function handleTouchMovePan(event) {\n\n //console.log( 'handleTouchMovePan' );\n\n panEnd.set(event.touches[0].pageX, event.touches[0].pageY);\n\n panDelta.subVectors(panEnd, panStart);\n\n pan(panDelta.x, panDelta.y);\n\n panStart.copy(panEnd);\n\n scope.update();\n\n }\n\n //\n // event handlers - FSM: listen for events and reset state\n //\n\n function onMouseDown(event) {\n\n if (scope.enabled === false) return;\n\n event.preventDefault();\n\n if (event.button === scope.mouseButtons.ORBIT) {\n\n if (scope.enableRotate === false) return;\n\n handleMouseDownRotate(event);\n\n state = STATE.ROTATE;\n\n } else if (event.button === scope.mouseButtons.ZOOM) {\n\n if (scope.enableZoom === false) return;\n\n handleMouseDownDolly(event);\n\n state = STATE.DOLLY;\n\n } else if (event.button === scope.mouseButtons.PAN) {\n\n if (scope.enablePan === false) return;\n\n handleMouseDownPan(event);\n\n state = STATE.PAN;\n\n }\n\n if (state !== STATE.NONE) {\n\n document.addEventListener('mousemove', onMouseMove, false);\n document.addEventListener('mouseup', onMouseUp, false);\n\n scope.dispatchEvent(startEvent);\n\n }\n\n }\n\n function onMouseMove(event) {\n\n if (scope.enabled === false) return;\n\n event.preventDefault();\n\n if (state === STATE.ROTATE) {\n\n if (scope.enableRotate === false) return;\n\n handleMouseMoveRotate(event);\n\n } else if (state === STATE.DOLLY) {\n\n if (scope.enableZoom === false) return;\n\n handleMouseMoveDolly(event);\n\n } else if (state === STATE.PAN) {\n\n if (scope.enablePan === false) return;\n\n handleMouseMovePan(event);\n // if( typeof(causeeffect) !== 'undefined' && typeof(causeeffect.updateMapsInfo) !== 'undefined' ) {\n // \tif( causeeffect.updateMapsInfo_timeout != undefined ) clearTimeout(causeeffect.updateMapsInfo_timeout);\n // \tcauseeffect.updateMapsInfo_timeout = setTimeout(function(){causeeffect.updateMapsInfo()},1500);\n // }\n }\n }\n\n function onMouseUp() {\n\n if (scope.enabled === false) return;\n\n document.removeEventListener('mousemove', onMouseMove, false);\n document.removeEventListener('mouseup', onMouseUp, false);\n\n scope.dispatchEvent(endEvent);\n\n state = STATE.NONE;\n\n }\n\n function onMouseWheel(event) {\n\n if (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE)) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n handleMouseWheel(event);\n\n // if( typeof(causeeffect) !== 'undefined' && typeof(causeeffect.updateMapsInfo) !== 'undefined' ) {\n // \tif( causeeffect.updateMapsInfo_timeout != undefined ) clearTimeout(causeeffect.updateMapsInfo_timeout);\n // \tcauseeffect.updateMapsInfo_timeout = setTimeout(function(){causeeffect.updateMapsInfo()},1500);\n // }\n\n scope.dispatchEvent(startEvent); // not sure why these are here...\n scope.dispatchEvent(endEvent);\n\n }\n\n function onKeyDown(event) {\n\n if (scope.enabled === false || scope.enableKeys === false || scope.enablePan === false) return;\n\n handleKeyDown(event);\n\n }\n\n function onTouchStart(event) {\n\n if (scope.enabled === false) return;\n\n switch (event.touches.length) {\n\n case 1: // one-fingered touch: rotate\n\n if (scope.enableRotate === false) return;\n\n handleTouchStartRotate(event);\n\n state = STATE.TOUCH_ROTATE;\n\n break;\n\n case 2: // two-fingered touch: dolly\n\n if (scope.enableZoom === false) return;\n\n handleTouchStartDolly(event);\n\n state = STATE.TOUCH_DOLLY;\n\n break;\n\n case 3: // three-fingered touch: pan\n\n if (scope.enablePan === false) return;\n\n handleTouchStartPan(event);\n\n state = STATE.TOUCH_PAN;\n\n break;\n\n default:\n\n state = STATE.NONE;\n\n }\n\n if (state !== STATE.NONE) {\n\n scope.dispatchEvent(startEvent);\n\n }\n\n }\n\n function onTouchMove(event) {\n\n if (scope.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n switch (event.touches.length) {\n\n case 1: // one-fingered touch: rotate\n\n if (scope.enableRotate === false) return;\n if (state !== STATE.TOUCH_ROTATE) return; // is this needed?...\n\n handleTouchMoveRotate(event);\n\n break;\n\n case 2: // two-fingered touch: dolly\n\n if (scope.enableZoom === false) return;\n if (state !== STATE.TOUCH_DOLLY) return; // is this needed?...\n\n handleTouchMoveDolly(event);\n\n break;\n\n case 3: // three-fingered touch: pan\n\n if (scope.enablePan === false) return;\n if (state !== STATE.TOUCH_PAN) return; // is this needed?...\n\n handleTouchMovePan(event);\n\n break;\n\n default:\n\n state = STATE.NONE;\n\n }\n\n }\n\n function onTouchEnd() {\n if (scope.enabled === false) return;\n\n scope.dispatchEvent(endEvent);\n state = STATE.NONE;\n }\n\n function onContextMenu(event) {\n\n event.preventDefault();\n\n }\n\n //\n\n scope.domElement.addEventListener('contextmenu', onContextMenu, false);\n\n scope.domElement.addEventListener('mousedown', onMouseDown, false);\n scope.domElement.addEventListener('wheel', onMouseWheel, false);\n\n scope.domElement.addEventListener('touchstart', onTouchStart, false);\n scope.domElement.addEventListener('touchend', onTouchEnd, false);\n scope.domElement.addEventListener('touchmove', onTouchMove, false);\n\n window.addEventListener('keydown', onKeyDown, false);\n\n // force an update at start\n\n this.update();\n\n};\n\nOrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype);\nOrbitControls.prototype.constructor = OrbitControls;\n\nObject.defineProperties(OrbitControls.prototype, {\n\n center: {\n\n get: function() {\n\n console.warn('OrbitControls: .center has been renamed to .target');\n return this.target;\n\n }\n\n },\n\n // backward compatibility\n\n noZoom: {\n\n get: function() {\n\n console.warn('OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');\n return !this.enableZoom;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');\n this.enableZoom = !value;\n\n }\n\n },\n\n noRotate: {\n\n get: function() {\n\n console.warn('OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');\n return !this.enableRotate;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');\n this.enableRotate = !value;\n\n }\n\n },\n\n noPan: {\n\n get: function() {\n\n console.warn('OrbitControls: .noPan has been deprecated. Use .enablePan instead.');\n return !this.enablePan;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .noPan has been deprecated. Use .enablePan instead.');\n this.enablePan = !value;\n\n }\n\n },\n\n noKeys: {\n\n get: function() {\n\n console.warn('OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');\n return !this.enableKeys;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');\n this.enableKeys = !value;\n\n }\n\n },\n\n staticMoving: {\n\n get: function() {\n\n console.warn('OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');\n return !this.enableDamping;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');\n this.enableDamping = !value;\n\n }\n\n },\n\n dynamicDampingFactor: {\n\n get: function() {\n\n console.warn('OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');\n return this.dampingFactor;\n\n },\n\n set: function(value) {\n\n console.warn('OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');\n this.dampingFactor = value;\n\n }\n\n }\n\n});\n\nexport default OrbitControls;","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport * as THREE from 'three';\r\nimport DistrictColors from './DistrictColors';\r\nimport PlotMap from './PlotMap';\r\nimport axios from 'axios';\r\nimport GIFMANAGER from './GIFMANAGER'\r\nimport GenChunk from './GenChunk'\r\nimport OrbitControls from './OrbitControls'\r\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js'\r\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'\r\n\r\nconst waterAlpha = 0.6;\r\nconst waterAlphaInDistrictsMode = 0.3;\r\n\r\nconst rawFragmentShader = [\r\n \"precision highp float;\",\r\n \"precision highp int;\",\r\n \"uniform float time;\",\r\n \"uniform vec2 resolution;\",\r\n \"uniform sampler2D map;\",\r\n \"uniform sampler2D heat;\",\r\n \"uniform sampler2D features;\",\r\n \"uniform sampler2D terrain;\",\r\n \"#ifdef DRAWING\",\r\n \"uniform sampler2D drawmap;\",\r\n \"#endif\",\r\n \"uniform vec3 tint;\",\r\n \"varying vec2 vUv;\",\r\n \"varying vec3 vColor;\",\r\n \"void main(void) {\",\r\n \"#ifdef LOOKUP\",\r\n \" gl_FragColor = vec4(vUv, 0.0, vColor.r);\",\r\n \"#else\",\r\n \" vec3 mColor = texture2D(map, vUv).rgb;\",\r\n \"#ifdef HEATMAP\",\r\n \" float a = mColor.r > 0.2 ? 1.0 : (mColor.r + 0.8);\",\r\n \" vec2 uv = vec2(mColor.r, mColor.g);\",\r\n \" mColor = vColor - texture2D(heat, uv).rgb;\",\r\n \"#endif\",\r\n \"#ifdef FMAP\",\r\n \" #ifdef HEATMAP\",\r\n \" mColor = (mColor * a) + ((1.0 - a) * (vColor - (vec3(1, 1, 1) - texture2D(terrain, vUv).rgb)));\",\r\n \" #else\",\r\n \" mColor = vColor * mColor;\",\r\n \" #endif\",\r\n \" mColor = mColor * texture2D(features, vUv).rgb;\",\r\n \"#endif\",\r\n \"#ifdef DRAWING\",\r\n \" vec4 drawing = texture2D(drawmap, vUv);\",\r\n \" mColor = (drawing.r > 0.0) ? (vec3(1, 1, 1) - mColor) : mColor;\",\r\n \"#endif\",\r\n \" gl_FragColor = vec4(mColor * tint, 0.1);\",\r\n \"#endif\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst curvedVertex = [\r\n \"precision highp float;\",\r\n \"precision highp int;\",\r\n \"#define VERTEX_TEXTURES\",\r\n \"uniform mat4 modelMatrix;\",\r\n \"uniform mat4 projectionMatrix;\",\r\n \"uniform mat4 viewMatrix;\",\r\n \"uniform mat4 modelViewMatrix;\",\r\n \"uniform vec4 worldSize;\",\r\n \"uniform vec3 cameraPosition;\",\r\n \"attribute vec4 position;\",\r\n \"attribute vec3 translate;\",\r\n \"varying vec2 vUv;\",\r\n \"varying vec3 vColor;\",\r\n \"uniform sampler2D height;\",\r\n \"#ifdef LOOKUP\",\r\n \"uniform vec3 tint;\",\r\n \"#endif\",\r\n \"vec3 slerp(vec3 p0, vec3 p1, float t)\",\r\n \"{\",\r\n \" float cosHalfTheta = dot(p0, p1);\",\r\n \" float halfTheta = acos(cosHalfTheta);\",\r\n \" float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\",\r\n \" float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\",\r\n \" float ratioB = sin(t * halfTheta) / sinHalfTheta;\",\r\n \" return p0 * ratioA + p1 * ratioB;\",\r\n \"}\",\r\n \"vec4 curveVertexFixed(vec4 vertex)\",\r\n \"{\",\r\n \" float radius = worldSize.x / 3.14159; vec3 center = vec3(cameraPosition.x, -radius, cameraPosition.z);\",\r\n \" vec4 vv = modelMatrix * vertex;\",\r\n \" if (cameraPosition.x - vv.x > worldSize.x)\",\r\n \" vv.x = vv.x + worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x)\",\r\n \" vv.x = vv.x - worldSize.z;\",\r\n \" if (cameraPosition.z - vv.z > worldSize.y)\",\r\n \" vv.z = vv.z + worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y)\",\r\n \" vv.z = vv.z - worldSize.w;\",\r\n \" vec3 toVertex = vv.xyz - center;\",\r\n \" vec3 v1 = vec3(0, toVertex.y, 0); vec3 xz = vec3(toVertex.x, 0, toVertex.z);\",\r\n \" vec3 v2 = normalize(xz) * abs(toVertex.y);\",\r\n \" float d = length(toVertex.xz);\",\r\n \" float c = 2.0 * 3.14159 * abs(radius);\",\r\n \" float t = clamp(d / (c / 4.0), 0.0, 2.0);\",\r\n \" vec3 s = slerp(v1, v2, t);\",\r\n \" vec3 expected = center + s;\",\r\n \" vv.xyz = expected;\",\r\n \" vv = viewMatrix*vv;\",\r\n \" return projectionMatrix * vv;\",\r\n \"}\",\r\n \"void main()\",\r\n \"{\",\r\n \" vec3 pos = position.xyz + translate;\",\r\n \" vUv = (pos.xz + worldSize.xy) / worldSize.zw;\",\r\n \"#ifdef GRID\",\r\n \" pos.y = texture2D(height, fract(vUv + position.yw / worldSize.zw)).r * 25500.0;\",\r\n \" float y2 = texture2D(height, fract(vUv - position.yw / worldSize.zw)).r * 25500.0;\",\r\n \" float y3 = texture2D(height, fract(vUv - vec2(position.y, -position.w) / worldSize.zw)).r * 25500.0;\",\r\n \" float y4 = texture2D(height, fract(vUv - vec2(-position.y, position.w) / worldSize.zw)).r * 25500.0;\",\r\n \" if (y2 > pos.y || y3 > pos.y || y4 > pos.y)\",\r\n \" vColor = vec3(0.7, 0.7, 0.7);\",\r\n \" else\",\r\n \" vColor = vec3(1.0, 1.0, 1.0);\",\r\n \"#endif\",\r\n \"#ifdef FLAT\",\r\n \"#ifdef WRAP\",\r\n \" vec4 vv = modelMatrix * vec4(pos, 1.0);\",\r\n \" if (cameraPosition.x - vv.x > worldSize.x)\",\r\n \" vv.x = vv.x + worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x > worldSize.x * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x)\",\r\n \" vv.x = vv.x - worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" if (cameraPosition.z - vv.z > worldSize.y)\",\r\n \" vv.z = vv.z + worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z > worldSize.y * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y)\",\r\n \" vv.z = vv.z - worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" vec4 mvPosition = viewMatrix * vv;\",\r\n \"#else\",\r\n \" vec4 mvPosition = viewMatrix* vec4(pos, 1.0);\",\r\n \"#endif\",\r\n \" gl_Position = projectionMatrix * mvPosition;\",\r\n \"#else\",\r\n \" gl_Position = curveVertexFixed(vec4(pos, 1.0));\",\r\n \"#endif\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst vertexShader = [\r\n \"uniform vec4 worldSize;\",\r\n \"varying vec2 vUv;\",\r\n \"varying vec3 vColor;\",\r\n \"vec3 slerp(vec3 p0, vec3 p1, float t)\",\r\n \"{\",\r\n \" float cosHalfTheta = dot(p0, p1);\",\r\n \" float halfTheta = acos(cosHalfTheta);\",\r\n \" float sinHalfTheta = sqrt(1.0 - cosHalfTheta * cosHalfTheta);\",\r\n \" float ratioA = sin((1.0 - t) * halfTheta) / sinHalfTheta;\",\r\n \" float ratioB = sin(t * halfTheta) / sinHalfTheta;\",\r\n \" return p0 * ratioA + p1 * ratioB;\",\r\n \"}\",\r\n \"vec4 curveVertexFixed(vec4 vertex)\",\r\n \"{\",\r\n \" float radius = worldSize.x / 3.14159; vec3 center = vec3(cameraPosition.x, -radius, cameraPosition.z);\",\r\n \" vec4 vv = modelMatrix * vertex;\",\r\n \" if (cameraPosition.x - vv.x > worldSize.x)\",\r\n \" vv.x = vv.x + worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x)\",\r\n \" vv.x = vv.x - worldSize.z;\",\r\n \" if (cameraPosition.z - vv.z > worldSize.y)\",\r\n \" vv.z = vv.z + worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y)\",\r\n \" vv.z = vv.z - worldSize.w;\",\r\n \" vec3 toVertex = vv.xyz - center;\",\r\n \" vec3 v1 = vec3(0, toVertex.y, 0); vec3 xz = vec3(toVertex.x, 0, toVertex.z);\",\r\n \" vec3 v2 = normalize(xz) * abs(toVertex.y);\",\r\n \" float d = length(toVertex.xz);\",\r\n \" float c = 2.0 * 3.14159 * abs(radius);\",\r\n \" float t = clamp(d / (c / 4.0), 0.0, 2.0);\",\r\n \" vec3 s = slerp(v1, v2, t);\",\r\n \" vec3 expected = center + s;\",\r\n \" vv.xyz = expected;\",\r\n \" vv = viewMatrix*vv;\",\r\n \" return projectionMatrix * vv;\",\r\n \"}\",\r\n \"void main()\",\r\n \"{\",\r\n \" vColor = vec3(0.0, 0.0, 0.0);\",\r\n \"#ifdef FLAT\",\r\n \"#ifdef WRAP\",\r\n \" vec4 vv = modelMatrix * vec4(position, 1.0);\",\r\n \" if (cameraPosition.x - vv.x > worldSize.x)\",\r\n \" vv.x = vv.x + worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x > worldSize.x * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x)\",\r\n \" vv.x = vv.x - worldSize.z;\",\r\n \" else if (cameraPosition.x - vv.x < -worldSize.x * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" if (cameraPosition.z - vv.z > worldSize.y)\",\r\n \" vv.z = vv.z + worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z > worldSize.y * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y)\",\r\n \" vv.z = vv.z - worldSize.w;\",\r\n \" else if (cameraPosition.z - vv.z < -worldSize.y * 0.9)\",\r\n \" vv.y = -10000.0;\",\r\n \" vec4 mvPosition = viewMatrix * vv;\",\r\n \"#else\",\r\n \" vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\",\r\n \"#endif\",\r\n \" gl_Position = projectionMatrix * mvPosition;\",\r\n \"#else\",\r\n \" gl_Position = curveVertexFixed(vec4(position, 1.0));\",\r\n \"#endif\",\r\n \" vUv = (position.xz + worldSize.xy) / worldSize.zw;\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst fragmentShader = [\r\n \"uniform float time;\",\r\n \"uniform float alpha;\",\r\n \"uniform vec2 resolution;\",\r\n \"uniform sampler2D map;\",\r\n \"uniform sampler2D heat;\",\r\n \"uniform sampler2D features;\",\r\n \"uniform vec3 tint;\",\r\n \"varying vec2 vUv;\",\r\n \"varying vec3 vColor;\",\r\n \"void main(void) {\",\r\n \" gl_FragColor = vec4(tint, alpha);\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst worldLayerFragment = [\r\n \"precision highp float;\",\r\n \"precision highp int;\",\r\n \"uniform float time;\",\r\n \"uniform vec2 resolution;\",\r\n \"uniform sampler2D renderTex;\",\r\n \"uniform sampler2D map;\",\r\n \"uniform sampler2D heat;\",\r\n \"uniform sampler2D features;\",\r\n \"uniform sampler2D terrain;\",\r\n \"uniform vec3 waterColor;\",\r\n \"#ifdef DRAWING\",\r\n \"uniform sampler2D drawmap;\",\r\n \"#endif\",\r\n \"uniform vec3 tint;\",\r\n \"varying vec2 vUv;\",\r\n \"void main(void) {\",\r\n \" vec4 inputData = texture2D(renderTex, vUv);\",\r\n \" vec2 uv = inputData.xy;\",\r\n \" float underWater = inputData.z;\",\r\n \" vec3 vColor = inputData.www ;\",\r\n \" vec3 mColor = texture2D(map, uv).rgb;\",\r\n \"#ifdef DRAWING\",\r\n \" vec4 drawing = texture2D(drawmap, uv);\",\r\n \" drawing = texture2D(heat, vec2(drawing.r, 0));\",\r\n \" mColor = vColor - (vec3(1, 1, 1) - drawing.rgb);\",\r\n \" #ifdef FMAP\",\r\n \" mColor = mColor * texture2D(features, uv).rgb;\",\r\n \" #endif\",\r\n \" vec3 c = mix(mColor * tint, vec3(0.0, 0.0, 0.1), underWater * 1);\",\r\n \"#else\",\r\n \" #ifdef HEATMAP\",\r\n \" float a = mColor.r > 0.2 ? 1.0 : (mColor.r + 0.8);\",\r\n \" vec2 uv2 = vec2(mColor.r, mColor.g);\",\r\n \" #endif\",\r\n \" #ifdef FMAP\",\r\n \" #ifdef HEATMAP\",\r\n \" mColor = vColor - texture2D(heat, uv2).rgb;\",\r\n \" mColor = (mColor * a) + ((1.0 - a) * (vColor - (vec3(1, 1, 1) - texture2D(terrain, uv).rgb)));\",\r\n \" #else\",\r\n \" mColor = vColor * mColor;\",\r\n \" #endif\",\r\n \" mColor = mColor * texture2D(features, uv).rgb;\",\r\n \" #else\",\r\n \" mColor = vColor * texture2D(heat, uv2).rgb;\",\r\n \" #ifdef HEATMAP\",\r\n \" underWater *= 1;\",\r\n \" #endif\",\r\n \" #endif\",\r\n \" vec3 c = mix(mColor * tint, waterColor, underWater);\",\r\n \"#endif\",\r\n \" gl_FragColor = vec4(c, step(0.5, inputData.w));\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\nconst worldLayerVertex = [\r\n \"precision highp float;\",\r\n \"uniform mat4 projectionMatrix;\",\r\n \"uniform mat4 modelViewMatrix;\",\r\n \"attribute vec2 uv;\",\r\n \"attribute vec3 position;\",\r\n \"varying vec2 vUv;\",\r\n \"void main()\",\r\n \"{\",\r\n \" vUv = uv;\",\r\n \" gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\r\n \"}\",\r\n \"\"\r\n].join('\\n');\r\n\r\n\r\nclass EcoMap {\r\n initialized = false;\r\n zoning = false;\r\n zoomSetsDrawSize = false;\r\n drawSize = 1;\r\n get drawZone() {\r\n return this.zoning;\r\n };\r\n set drawZone(x) {\r\n this.setZoning(x);\r\n };\r\n get eraseMode() {\r\n return this.drawMap ? this.drawMap.erasing : false;\r\n };\r\n set eraseMode(x) {\r\n if (this.drawMap) { this.drawMap.SetEraseMode(x); }\r\n };\r\n editView?: Element | any;\r\n\r\n scenes: Array = [];\r\n views: JQuery = $();\r\n canvas?: HTMLCanvasElement;\r\n renderer?: THREE.WebGLRenderer;\r\n heatMap = new THREE.TextureLoader().load('/images/heatmapinvert.png');\r\n featureMap?: THREE.Texture;\r\n drawMap?: PlotMap;\r\n districtMap: Array = [];\r\n proposedDistrictMap?: PlotMap;\r\n districtColorLookup = new DistrictColors();\r\n\r\n waterMat?: THREE.ShaderMaterial;\r\n clock: THREE.Clock = new THREE.Clock(true);\r\n terrainMap?: THREE.Texture;\r\n worldWidth = 200;\r\n worldDepth = 200;\r\n worldHalfWidth = this.worldWidth / 2;\r\n worldHalfDepth = this.worldDepth / 2;\r\n heightMap?: THREE.Texture;\r\n heightHistoryLoaded = false;\r\n terrainHistoryLoaded = false;\r\n\r\n geometry?: THREE.InstancedBufferGeometry;\r\n geometry2?: THREE.PlaneGeometry;\r\n data: Float32Array = new Float32Array();\r\n\r\n readonly flatShaderDefines = { GRID: true, FLAT: true, WRAP: true, FMAP: true };\r\n readonly curveShaderDefines = { GRID: true, FMAP: true };\r\n readonly waterFlatShaderDefines = { FLAT: true, WRAP: true };\r\n readonly waterCurveShaderDefines = {};\r\n sharedRenderTarget;\r\n sharedFirstView;\r\n\r\n mouseX: number = 0;\r\n mouseY: number = 0;\r\n pos: THREE.Vector2 = new THREE.Vector2(0.0, 0.0);\r\n mouseHitWorld = false;\r\n plots;\r\n plotLookup = {};\r\n plotNameLookup: Array = [];\r\n\r\n debugKeyX = false;\r\n debugKeyZ = false;\r\n mouseState = 0;\r\n dragStart: THREE.Vector2 = new THREE.Vector2(0.0, 0.0);\r\n dragPos: THREE.Vector2 = new THREE.Vector2(0.0, 0.0);\r\n\r\n public lastMouseScene?: THREE.Scene;\r\n\r\n public layerNames = [[\"Camas\", \"Camas\"], [\"Elk\", \"Elk\"]];\r\n public waterLevel = -1;\r\n public serverTime = 10000.0;\r\n\r\n public editViewNum = 0; //think this should usually be the last?\r\n\r\n public layerGroups: Array = [];\r\n\r\n public districtSuffix: string = \"\";\r\n\r\n zoneString?: string;\r\n\r\n serverUrl?: string;\r\n\r\n\r\n async init() {\r\n this.serverUrl = (window as any).serverUrl;\r\n\r\n this.terrainMap = new THREE.TextureLoader().load(`${this.serverUrl}/Layers/TerrainLatest.gif`);\r\n this.terrainMap.generateMipmaps = false;\r\n this.terrainMap.magFilter = THREE.NearestFilter;\r\n this.terrainMap.minFilter = THREE.NearestFilter;\r\n this.terrainMap.flipY = false;\r\n\r\n this.heatMap.generateMipmaps = false;\r\n this.heatMap.magFilter = THREE.LinearFilter;\r\n this.heatMap.minFilter = THREE.LinearFilter;\r\n\r\n await this.setupLayers();\r\n new THREE.TextureLoader().load(`${this.serverUrl}/Layers/HeightMapLatest.gif`, texture => {\r\n this.views = $('.view-map:visible');\r\n this.heightMap = texture;\r\n this.heightMap.generateMipmaps = false;\r\n this.heightMap.flipY = false;\r\n this.heightMap.minFilter = THREE.NearestFilter;\r\n\r\n if (this.views.length && this.waterLevel >= 0) this.finishInit(texture);\r\n });\r\n\r\n document.addEventListener('mousemove', (arg) => this.onDocumentMouseMove(arg), false);\r\n window.addEventListener('keydown', (arg) => this.onKeyDown(arg), false);\r\n };\r\n\r\n protected finishInit(hmap) {\r\n this.canvas = document.getElementById('c');\r\n\r\n this.renderer = new THREE.WebGLRenderer({ canvas: this.canvas, antialias: true, alpha: true });\r\n this.renderer.setClearColor(0xffffff, 0);\r\n this.renderer.setPixelRatio(window.devicePixelRatio);\r\n\r\n this.worldWidth = hmap.image.width;\r\n this.worldDepth = hmap.image.height;\r\n this.worldHalfWidth = this.worldWidth / 2;\r\n this.worldHalfDepth = this.worldDepth / 2;\r\n this.data = this.generateHeight(hmap);\r\n\r\n this.setupPlots();\r\n this.drawMap = new PlotMap(this.worldWidth / 5, this.worldDepth / 5);\r\n\r\n if (this.zoneString) {\r\n //TODO: enable map viewing\r\n this.drawMap.LoadArray(this.zoneString);\r\n }\r\n\r\n this.geometry = GenChunk(40, 40, this.worldWidth, this.worldDepth);\r\n this.geometry2 = new THREE.PlaneGeometry(this.worldWidth * 100, this.worldDepth * 100, 100, 100);\r\n this.geometry2.rotateX(-Math.PI / 2);\r\n\r\n this.initialized = true;\r\n\r\n for (let n = 0; n < this.views.length; n++) {\r\n this.addView(this.views[n]);\r\n }\r\n\r\n this.animate();\r\n }\r\n\r\n\r\n addView(view: Element | any) {\r\n view.forceUpdate = false;\r\n\r\n if (!view.settings) view.settings = {};\r\n if (undefined === view.settings.layerSelected) view.settings.layerSelected = \"Terrain\";\r\n if (undefined === view.settings.frameNum) view.settings.frameNum = -1;\r\n if (undefined === view.settings.heightFrameNum) view.settings.heightFrameNum = -1;\r\n if (undefined === view.settings.terrainFrameNum) view.settings.terrainFrameNum = -1;\r\n if (undefined === view.settings.timeStart) view.settings.timeStart = 0.0;\r\n if (undefined === view.settings.timeEnd) view.settings.timeEnd = this.serverTime;\r\n if (undefined === view.settings.playSpeed) view.settings.playSpeed = 0.5;\r\n if (undefined === view.settings.currentTime) view.settings.currentTime = this.serverTime;\r\n if (undefined === view.settings.flat) view.settings.flat = false;\r\n if (undefined === view.settings.pause) view.settings.pause = true;\r\n if (view.OnTimeUpdated) view.OnTimeUpdated(view.settings.currentTime);\r\n\r\n if (!this.initialized) this.finishInit(this.heightMap);\r\n\r\n const rect = view.getBoundingClientRect();\r\n\r\n if (view.settings.shareCamera) {\r\n if (this.sharedRenderTarget === undefined) {\r\n var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat, type: THREE.FloatType };\r\n this.sharedRenderTarget = new THREE.WebGLRenderTarget(rect.width, rect.height, pars);\r\n this.sharedFirstView = view;\r\n }\r\n view.depthRenderTarget = this.sharedRenderTarget;\r\n } else {\r\n pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat, type: THREE.FloatType };\r\n view.depthRenderTarget = new THREE.WebGLRenderTarget(rect.width, rect.height, pars);\r\n }\r\n\r\n const scene = new THREE.Scene();\r\n //scene.fog = new THREE.FogExp2( 0xffffff, 0.00005 );\r\n\r\n const uniforms2 = {\r\n tint: { value: new THREE.Color(1.0, 1.0, 1.0) },\r\n waterColor: { value: new THREE.Color(0.0, 0.3, 0.7) },\r\n time: { value: 1.0 },\r\n worldSize: { value: new THREE.Vector4(this.worldHalfWidth * 100, this.worldHalfDepth * 100, this.worldWidth * 100, this.worldDepth * 100) },\r\n heat: { value: this.heatMap },\r\n features: { value: this.featureMap },\r\n drawmap: { value: this.drawMap },\r\n terrain: { value: this.terrainMap },\r\n map: { value: null },\r\n height: { value: this.heightMap },\r\n renderTex: { value: view.depthRenderTarget.texture },\r\n };\r\n\r\n view.positionLookupShader = new THREE.RawShaderMaterial({\r\n defines: view.settings.flat ? { GRID: true, FLAT: true, WRAP: true, LOOKUP: true } : { GRID: true, LOOKUP: true },\r\n uniforms: uniforms2,\r\n vertexShader: curvedVertex,\r\n fragmentShader: rawFragmentShader\r\n });\r\n\r\n const layerShader = new THREE.RawShaderMaterial({\r\n defines: view.settings.flat ? this.flatShaderDefines : this.curveShaderDefines,\r\n uniforms: uniforms2,\r\n vertexShader: worldLayerVertex,\r\n fragmentShader: worldLayerFragment\r\n });\r\n\r\n layerShader.transparent = true;\r\n //layerShader.opacity = 0.5;\r\n layerShader.blending = THREE.NormalBlending;\r\n\r\n view.mainMat = layerShader;\r\n if (this.zoneString)\r\n view.mainMat.defines.DRAWING = true;\r\n\r\n if (view.settings.gradient !== undefined) {\r\n delete view.mainMat.defines.FMAP;\r\n let gradient = new THREE.TextureLoader().load(view.settings.gradient, function (texture) {\r\n gradient = texture;\r\n gradient.generateMipmaps = false;\r\n gradient.magFilter = THREE.LinearFilter;\r\n gradient.minFilter = THREE.LinearFilter;\r\n view.mainMat.uniforms.heat.value = gradient;\r\n view.mainMat.needsUpdate = true;\r\n });\r\n }\r\n\r\n if (view.settings.noWater !== undefined && view.settings.noWater) {\r\n view.mainMat.uniforms.waterColor.value = new THREE.Color(0.0, 0.0, 0.1);\r\n }\r\n\r\n this.setLayer(view.settings.layerSelected, view);\r\n\r\n const renderLayer = new ShaderPass(layerShader);\r\n renderLayer.renderToScreen = true;\r\n\r\n const mesh = new THREE.Mesh(this.geometry, view.positionLookupShader); //material);\r\n\r\n const waterUniforms = {\r\n tint: { value: new THREE.Color(0.0, 0.0, 1.0) },\r\n time: { value: 1.0 },\r\n worldSize: { value: new THREE.Vector4(this.worldHalfWidth * 100, this.worldHalfDepth * 100, this.worldWidth * 100, this.worldDepth * 100) },\r\n heat: { value: null },\r\n features: { value: null },\r\n terrain: { value: null },\r\n map: { value: null },\r\n alpha: { value: waterAlpha }\r\n };\r\n\r\n this.waterMat = new THREE.ShaderMaterial({\r\n defines: view.settings.flat ? this.waterFlatShaderDefines : this.waterCurveShaderDefines,\r\n uniforms: waterUniforms,\r\n vertexShader: vertexShader,\r\n fragmentShader: fragmentShader,\r\n vertexColors: true,\r\n blending: THREE.AdditiveBlending,\r\n transparent: true,\r\n });\r\n\r\n view.waterMat = this.waterMat;\r\n\r\n view.toggle3D = function () {\r\n view.settings.flat = !view.settings.flat;\r\n [view.mainMat, view.waterMat, view.positionLookupShader].forEach(mat => {\r\n if (view.settings.flat) {\r\n mat.defines.FLAT = true;\r\n mat.defines.WRAP = true;\r\n } else {\r\n delete mat.defines.FLAT;\r\n delete mat.defines.WRAP;\r\n }\r\n\r\n mat.needsUpdate = true;\r\n });\r\n };\r\n\r\n const plane = new THREE.Mesh(this.geometry2, this.waterMat);\r\n plane.translateY((this.waterLevel * 100.0)); //.1 from getY scaling, 100 from block size, 10 to put it on top\r\n\r\n //var box = new THREE.BoxBufferGeometry(500, 9000, 500, 10, 1, 10);\r\n //var boxMesh = new THREE.Mesh(box, waterMat);\r\n //scene.add(boxMesh);\r\n //scene.userData.selectBox = boxMesh;\r\n\r\n scene.add(plane);\r\n\r\n mesh.layers.set(2); // terrain layer\r\n scene.add(mesh);\r\n\r\n const ambientLight = new THREE.AmbientLight(0xcccccc);\r\n scene.add(ambientLight);\r\n\r\n const directionalLight = new THREE.DirectionalLight(0xffffff, 2);\r\n directionalLight.position.set(1, 1, 0.5).normalize();\r\n scene.add(directionalLight);\r\n\r\n scene.userData.view = view;\r\n let camera;\r\n\r\n if (view.camera)\r\n scene.userData.camera = view.camera;\r\n else {\r\n camera = new THREE.PerspectiveCamera(45, rect.width / rect.height, 1000, 400000);\r\n camera.position.y = this.getY(this.worldHalfWidth, this.worldHalfDepth) * 100 + 10000;\r\n scene.userData.camera = camera;\r\n view.camera = camera;\r\n }\r\n\r\n camera = scene.userData.camera;\r\n camera.layers.enable(2);\r\n // camera.zoom = .8; // zoom was too close for this new ver.\r\n\r\n //var renderPass = new THREE.RenderPass( scene, camera );\r\n\r\n //var copyPass = new ShaderPass(THREE.CopyShader);\r\n //copyPass.renderToScreen = true;\r\n\r\n view.composer = new EffectComposer(this.renderer!);\r\n //view.composer.addPass(renderPass);\r\n //view.composer.addPass(copyPass);\r\n view.composer.addPass(renderLayer);\r\n\r\n const controls = new OrbitControls(camera, view);\r\n controls.enableRotate = false;\r\n controls.mouseButtons = { ORBIT: THREE.MOUSE.RIGHT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.LEFT };\r\n controls.maxDistance = this.waterLevel * 100 + this.worldWidth * 95;\r\n controls.minDistance = this.waterLevel * 110;\r\n view.camera.position.y = (controls.maxDistance + controls.minDistance) / 2;\r\n\r\n if (view.settings.camPos) {\r\n camera.position.copy(view.settings.camPos);\r\n controls.target.copy(view.settings.camPos); // prevent orbiting around zero\r\n controls.target.y = 0;\r\n }\r\n\r\n scene.userData.controls = controls;\r\n view.settings.camPos = camera.position;\r\n\r\n scene.userData.lastCamPosition = new THREE.Vector3(0, 0, 0);\r\n scene.userData.lastRenderPosition = new THREE.Vector3(0, -100000, 0);\r\n scene.userData.frameNum = 0;\r\n\r\n this.scenes.push(scene);\r\n\r\n if (this.editView == null) this.editView = view;\r\n }\r\n\r\n removeView(view) {\r\n if (this.scenes.length == 1 && this.scenes[0].userData.view == view)\r\n this.scenes = [];\r\n else {\r\n for (let i = 0; i < this.scenes.length; i++) {\r\n if (this.scenes[i].userData.view == view || this.scenes[i].userData.view.id == view) {\r\n this.scenes[i].userData.controls.dispose();\r\n this.scenes[i].userData.camera = null;\r\n delete this.scenes[i];\r\n this.scenes.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeDeadViews() {\r\n for (let i = 0; i < this.scenes.length; i++) {\r\n if (!$.contains(document.body, this.scenes[i].userData.view)) {\r\n this.scenes[i].userData.controls.dispose();\r\n this.scenes[i].userData.camera = null;\r\n delete this.scenes[i];\r\n this.scenes.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n }\r\n\r\n private generateHeight(hmap): Float32Array {\r\n var canvas = document.createElement('canvas');\r\n canvas.width = hmap.image.width;\r\n canvas.height = hmap.image.height;\r\n var context = canvas.getContext('2d');\r\n\r\n var size = hmap.image.width * hmap.image.height;\r\n var data = new Float32Array(size);\r\n\r\n if (!context) return data;\r\n context.drawImage(hmap.image, 0, 0);\r\n var imgd = context.getImageData(0, 0, hmap.image.width, hmap.image.height);\r\n var pix = imgd.data;\r\n\r\n var j = 0;\r\n for (var i = 0, n = pix.length; i < n; i += 4) {\r\n data[j++] = pix[i];\r\n }\r\n\r\n return data;\r\n }\r\n\r\n private getY(x, z): number {\r\n x = (x + this.worldWidth) % this.worldWidth;\r\n z = (z + this.worldWidth) % this.worldWidth;\r\n return (this.data[x + z * this.worldWidth] * 0.1) | 0;\r\n }\r\n\r\n // 4 tiles in game = 1 tile here\r\n private getWorldPos(position): THREE.Vector2 {\r\n return new THREE.Vector2(\r\n Math.round((this.worldHalfWidth + position.x / 100)),\r\n Math.round((this.worldHalfWidth - position.z / 100))\r\n );\r\n }\r\n\r\n private updateSize() {\r\n if (this.canvas) {\r\n const width = this.canvas.clientWidth;\r\n const height = this.canvas.clientHeight;\r\n\r\n if (this.canvas.width !== width || this.canvas.height != height) {\r\n this.renderer!.setSize(width, height, false);\r\n }\r\n }\r\n }\r\n\r\n private animate() {\r\n this.render();\r\n requestAnimationFrame(() => this.animate());\r\n }\r\n\r\n private onDocumentMouseMove(event: MouseEvent) {\r\n this.mouseX = event.clientX;\r\n this.mouseY = event.clientY;\r\n //if(scenes.length < 1) return;\r\n //var rect = scenes[0].userData.view.getBoundingClientRect();\r\n //scenes[0].userData.view.OnInfoUpdated((mouseX - rect.left) + \" , \" + (mouseY - rect.top));\r\n }\r\n\r\n private GetFrameNum(name, frameNum, view): Number {\r\n if (GIFMANAGER.gifTimes[name] != undefined && GIFMANAGER.gifTimes[name].length > 0) {\r\n const currentTime = view.settings.currentTime;\r\n const myTimes = GIFMANAGER.gifTimes[name];\r\n const maxFrame = myTimes.length;\r\n\r\n if (frameNum < 0) frameNum = maxFrame - 1;\r\n\r\n while (frameNum < maxFrame - 1 && currentTime > myTimes[frameNum]) frameNum++;\r\n while (frameNum > 0 && currentTime < myTimes[frameNum]) frameNum--;\r\n } else if (GIFMANAGER.gifTimes[name] != undefined) {\r\n return 0;\r\n }\r\n\r\n return frameNum;\r\n }\r\n\r\n\r\n\r\n render() {\r\n this.updateSize();\r\n\r\n if (!this.renderer) return;\r\n\r\n this.renderer.setClearColor(0xffffff, 0);\r\n this.renderer.setScissorTest(false);\r\n this.renderer.clear();\r\n\r\n // sometimes the render gets called for one more frame after the map is destroyed, better to cancel\r\n if (this.canvas == null) return;\r\n\r\n const myRect = this.canvas.getBoundingClientRect();\r\n\r\n let deltaTime = this.clock.getDelta();\r\n if (deltaTime > 5) deltaTime = 1.0; // probably debugging\r\n\r\n this.scenes.forEach((scene) => {\r\n\r\n if (!this.renderer) return;\r\n\r\n\r\n var view = scene.userData.view;\r\n var s = view.settings;\r\n\r\n if (s.shareCamera && this.sharedFirstView != view) {\r\n s.currentTime = this.sharedFirstView.settings.currentTime;\r\n s.pause = this.sharedFirstView.settings.pause;\r\n s.playSpeed = this.sharedFirstView.settings.playSpeed;\r\n }\r\n\r\n // wait until unpaused to load history data\r\n if (!s.pause && GIFMANAGER.gifStorage[\"HeightMap\"] === undefined) {\r\n GIFMANAGER.giftextures(\"HeightMap\", () => {\r\n this.heightHistoryLoaded = true;\r\n GIFMANAGER.giftextures(\"Terrain\", () => {\r\n this.terrainHistoryLoaded = true;\r\n });\r\n });\r\n }\r\n\r\n var rect = view.getBoundingClientRect();\r\n var cam = scene.userData.camera;\r\n\r\n // check if it's offscreen. If so skip it\r\n if (rect.bottom < 0 || rect.top > this.renderer.domElement.clientHeight ||\r\n rect.right < 0 || rect.left > this.renderer.domElement.clientWidth) {\r\n return; // it's off screen\r\n }\r\n\r\n //textures are still not loaded\r\n // if (view.loading) return;\r\n\r\n // set the viewport\r\n var width = rect.right - rect.left + 20;\r\n var height = rect.bottom - rect.top + 70;\r\n var left = rect.left - myRect.left;\r\n var top = -rect.top;\r\n\r\n // Now we should set canvas size first\r\n var miniMapEl = document.getElementById('main-map');\r\n if (!miniMapEl) return;\r\n const clientWidth = miniMapEl.clientWidth;\r\n const clientHeight = miniMapEl.clientHeight;\r\n this.renderer.setSize(clientWidth, clientHeight);\r\n this.renderer.setViewport(left - 10, top + 20, width, height);\r\n this.renderer.setScissor(left, top, width, height);\r\n\r\n if (view.lastWidth != width || view.lastHeight != height) {\r\n cam.aspect = width / height;\r\n cam.updateProjectionMatrix();\r\n view.forceUpdate = true;\r\n }\r\n\r\n view.lastWidth = width;\r\n view.lastHeight = height;\r\n\r\n if (isNaN(s.currentTime)) s.currentTime = 0.0;\r\n\r\n var materialChanged = false, heightChanged = false;\r\n var lastTime = s.currentTime, prevFrameNum = s.frameNum, prevHeightFrameNum = s.heightFrameNum, prevTerrainFrameNum = s.terrainFrameNum;\r\n\r\n if (!s.pause && s.playSpeed != 0.0) {\r\n s.currentTime += ((view.loading ? 0.2 : s.playSpeed) * 86400) * deltaTime;\r\n }\r\n\r\n if (s.currentTime > s.timeEnd) {\r\n s.currentTime = s.timeStart;\r\n } else if (s.currentTime < s.timeStart) {\r\n s.currentTime = s.timeEnd;\r\n }\r\n\r\n if (lastTime != s.currentTime || view.forceUpdate) {\r\n if (view.timeText)\r\n view.timeText.innerText = s.currentTime / 3600.0;\r\n if (view.OnTimeUpdated)\r\n view.OnTimeUpdated(s.currentTime);\r\n\r\n s.frameNum = this.GetFrameNum(s.layerSelected, s.frameNum, view);\r\n if (this.heightHistoryLoaded)\r\n s.heightFrameNum = this.GetFrameNum(\"HeightMap\", s.heightFrameNum, view);\r\n if (this.terrainHistoryLoaded)\r\n s.terrainFrameNum = this.GetFrameNum(\"Terrain\", s.terrainFrameNum, view);\r\n\r\n if (s.currentTime != this.serverTime && GIFMANAGER.gifStorage[s.layerSelected] == undefined) {\r\n this.setLayer(s.layerSelected, view);\r\n }\r\n\r\n //Terrain have special handling\r\n if (s.layerSelected != \"Terrain\" && GIFMANAGER.gifStorage[s.layerSelected] && prevFrameNum != s.frameNum) {\r\n view.mainMat.uniforms.map.value = GIFMANAGER.giftextures(s.layerSelected)[s.frameNum];\r\n materialChanged = true;\r\n }\r\n\r\n if (this.heightHistoryLoaded && prevHeightFrameNum != s.heightFrameNum) {\r\n view.mainMat.uniforms.height.value = GIFMANAGER.giftextures(\"HeightMap\")[s.heightFrameNum];\r\n materialChanged = true;\r\n heightChanged = true;\r\n }\r\n\r\n if (s.layerSelected != \"Terrain\" && this.terrainHistoryLoaded && prevTerrainFrameNum != s.terrainFrameNum) {\r\n view.mainMat.uniforms.terrain.value = GIFMANAGER.giftextures(\"Terrain\")[s.terrainFrameNum];\r\n materialChanged = true;\r\n }\r\n\r\n if (materialChanged)\r\n view.mainMat.needsUpdate = true;\r\n }\r\n\r\n var mouseViewX = this.mouseX - rect.left;\r\n var mouseViewY = rect.height - (this.mouseY - rect.top);\r\n\r\n this.pos = this.getWorldPos(s.camPos);\r\n\r\n if ((mouseViewX > 0 && mouseViewY > 0 && mouseViewX < rect.width && mouseViewY < rect.height) || view.firstRender === undefined || heightChanged || view.forceUpdate) {\r\n view.forceUpdate = false;\r\n\r\n //TODO: switch to UInt8 and pack/unpack 16-bit ints\r\n var read = new Float32Array(4);\r\n this.renderer.readRenderTargetPixels(view.depthRenderTarget, mouseViewX, mouseViewY, 1, 1, read);\r\n this.mouseHitWorld = read[3] >= 0.7; // AO is 0.7-1.0\r\n\r\n if (this.mouseHitWorld) {\r\n this.pos.x = Math.floor(read[0] * this.worldWidth);\r\n this.pos.y = this.worldDepth - Math.floor(read[1] * this.worldDepth);\r\n }\r\n\r\n if (cam.position.distanceTo(scene.userData.lastRenderPosition) > 0.5) { //should remain valid until camera moves\r\n //scene.overrideMaterial = view.positionLookupShader;\r\n //cam.layers.disable(0); // disable default stuff, only show terrain\r\n this.renderer.setClearColor(0x000000, 0);\r\n this.renderer.clear(view.depthRenderTarget);\r\n this.renderer.setRenderTarget(view.depthRenderTarget);\r\n this.renderer.render(scene, cam);\r\n this.renderer.setRenderTarget(null);\r\n this.renderer.clear();\r\n\r\n if (!this.debugKeyX) {\r\n scene.overrideMaterial = null;\r\n //cam.layers.enable(0);\r\n }\r\n\r\n scene.userData.lastRenderPosition.copy(cam.position);\r\n\r\n if (view.settings.shareCamera) {\r\n this.scenes.forEach(function (s) {\r\n if (s.userData.view.settings.shareCamera) {\r\n s.userData.lastRenderPosition.copy(cam.position);\r\n s.userData.camera.position.copy(cam.position);\r\n }\r\n });\r\n }\r\n }\r\n this.lastMouseScene = scene;\r\n view.firstRender = false;\r\n }\r\n\r\n if (view.OnPositionUpdated) {\r\n if (this.pos != view.worldPos) {\r\n view.OnPositionUpdated(this.pos);\r\n view.worldPos = this.pos;\r\n if (view.OnInfoUpdated) {\r\n var lookup = this.getPlotNum(this.pos.x, this.pos.y);\r\n var plotName = \"\\n\";\r\n if (this.plotLookup[lookup] !== undefined)\r\n plotName = this.plotNameLookup[this.plotLookup[lookup]];\r\n if (view.plotName != plotName) {\r\n view.OnInfoUpdated(plotName);\r\n view.plotName = plotName;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //if (debugKeyZ) {\r\n //cam.layers.disable(0);\r\n //} else {\r\n //cam.layers.enable(0);\r\n //}\r\n\r\n this.renderer.setClearColor(0x3c3c3c, 1); // Map Background Color\r\n this.renderer.setScissorTest(true);\r\n\r\n //if (debugKeyX) {\r\n //renderer.render(scene, cam);\r\n //} else {\r\n view.composer.passes[0].uniforms.renderTex.value = view.depthRenderTarget.texture;\r\n view.composer.setSize(width, height);\r\n view.composer.render(0.1);\r\n //}\r\n\r\n //if(++frameNum == GIFMANAGER.giftextures.length) frameNum = 0;\r\n scene.userData.lastCamPosition.copy(cam.position);\r\n scene.userData.controls.update();\r\n\r\n\r\n // shader magically wraps 1 tile around map, need to keep camera within bounds\r\n if (cam.position.x > this.worldHalfWidth * 100)\r\n cam.position.x -= this.worldWidth * 100;\r\n else if (cam.position.x < -this.worldHalfWidth * 100)\r\n cam.position.x += this.worldWidth * 100;\r\n if (cam.position.z > this.worldHalfDepth * 100)\r\n cam.position.z -= this.worldDepth * 100;\r\n else if (cam.position.z < -this.worldHalfDepth * 100)\r\n cam.position.z += this.worldDepth * 100;\r\n\r\n // ssaoPass.uniforms[ 'cameraNear' ].value = cam.near;\r\n // ssaoPass.uniforms[ 'cameraFar' ].value = cam.far;\r\n scene.userData.controls.target.copy(cam.position); // fix target to prevent insanity\r\n scene.userData.controls.target.y = 0;\r\n\r\n\r\n if (view.cameraText) {\r\n view.cameraText.innerText = JSON.stringify(s);\r\n }\r\n if (scene.userData.view.mapdata) {\r\n view.mapdata.value = JSON.stringify(s);\r\n }\r\n });\r\n }\r\n\r\n\r\n private async setupLayers() {\r\n const { data } = await axios.get('/map/map.json');\r\n if (!data) return console.log('No layers to display');\r\n\r\n this.layerNames = data.LayerNames;\r\n this.layerGroups = [];\r\n this.layerNames.forEach(x => {\r\n var category = this.layerGroups.find(y => y.category == x[2]);\r\n\r\n if (category == null) {\r\n category = { category: x[2], layers: [] };\r\n this.layerGroups.push(category);\r\n }\r\n\r\n category.layers.push(x);\r\n });\r\n\r\n this.layerGroups.sort((x, y) => x.category > y.category ? 1 : x.category == y.category ? 0 : -1);\r\n this.fillLayerSelects();\r\n\r\n this.waterLevel = data.WaterLevel;\r\n this.serverTime = data.WorldTime;\r\n this.districtSuffix = data.DistrictSuffix;\r\n this.plots = data.Plots;\r\n\r\n if (this.heightMap !== undefined) this.finishInit(this.heightMap);\r\n }\r\n\r\n\r\n\r\n setZoning(enabled) {\r\n //TODO: setup/disable drawing\r\n this.zoning = enabled;\r\n if (this.zoning) {\r\n this.editView.addEventListener('mousedown', this.onMouseDown, false);\r\n this.editView.mainMat.defines.DRAWING = true;\r\n this.editView.mainMat.uniforms.heat.value = this.districtColorLookup;\r\n this.editView.mainMat.needsUpdate = true;\r\n //document.getElementById('map-zonemap').appendChild(drawmap.image);\r\n } else {\r\n this.drawMap!.Reset();\r\n delete this.editView.mainMat.defines.DRAWING;\r\n this.editView.mainMat.needsUpdate = true;\r\n this.editView.mainMat.uniforms.heat.value = this.heatMap;\r\n this.editView.removeEventListener('mousedown', this.onMouseDown, false);\r\n //document.getElementById('map-zonemap').removeChild(drawmap.image);\r\n }\r\n };\r\n\r\n\r\n private onMouseDown(event) {\r\n if (event.button === THREE.MOUSE.RIGHT && this.mouseHitWorld) {\r\n this.mouseState = 1;\r\n this.dragStart = new THREE.Vector2(Math.floor(this.pos.x / 5), Math.floor(this.pos.y / 5));\r\n if (this.zoomSetsDrawSize)\r\n this.drawSize = Math.floor(10 * this.editView.camera.position.y / (this.worldWidth * 90));\r\n this.drawMap!.SetPixel(this.dragStart, this.drawSize);\r\n document.addEventListener('mousemove', this.onMouseMove, false);\r\n document.addEventListener('mouseup', this.onMouseUp, false);\r\n }\r\n }\r\n\r\n private onMouseMove() {\r\n if (this.mouseState === 1 && this.mouseHitWorld) {\r\n this.dragPos = new THREE.Vector2(Math.floor(this.pos.x / 5), Math.floor(this.pos.y / 5));\r\n if (this.dragStart != this.dragPos) {\r\n this.drawMap!.DrawLine(this.dragStart, this.dragPos, this.drawSize);\r\n this.dragStart = this.dragPos;\r\n }\r\n }\r\n }\r\n\r\n private onMouseUp() {\r\n if (this.mouseState !== 0) {\r\n this.mouseState = 0;\r\n document.removeEventListener('mousemove', this.onMouseMove, false);\r\n document.removeEventListener('mouseup', this.onMouseUp, false);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n private onKeyDown(event) {\r\n if (event.keyCode == 88) { // x\r\n this.debugKeyX = !this.debugKeyX;\r\n }\r\n if (event.keyCode == 90) { // x\r\n this.debugKeyZ = !this.debugKeyZ;\r\n }\r\n }\r\n\r\n GetZone() {\r\n if (this.drawZone)\r\n return this.drawMap!.GetArray();\r\n else\r\n return \"\";\r\n }\r\n\r\n SetZone(b64string) {\r\n if (this.initialized)\r\n this.drawMap!.LoadArray(b64string);\r\n else\r\n this.zoneString = b64string;\r\n }\r\n\r\n LoadProposedDistricts(districtData) {\r\n if (this.proposedDistrictMap === undefined)\r\n this.proposedDistrictMap = new PlotMap(this.worldWidth / 5, this.worldDepth / 5);\r\n if (this.proposedDistrictMap.metadata !== undefined)\r\n return;\r\n this.proposedDistrictMap.LoadDistrictMap(districtData);\r\n var select = $('.map-layer-select');\r\n var option = $('').attr(\"value\", \"ProposedDistricts\").text(\"ProposedDistricts\");\r\n $(select).prepend(option);\r\n }\r\n\r\n paintDistrict(id) {\r\n this.drawMap!.SetColor(\"rgb(\" + id + \",\" + id + \",\" + id + \")\");\r\n };\r\n\r\n setDistrictColor(id, color) {\r\n this.districtColorLookup.SetDistrictColorFromStyle(id, color);\r\n };\r\n\r\n private setupPlots() {\r\n var tcanvas = document.createElement('canvas');\r\n tcanvas.width = this.worldWidth;\r\n tcanvas.height = this.worldDepth;\r\n var tctx = tcanvas.getContext('2d');\r\n if (tctx == null) return;\r\n //tctx.drawImage( tmpCanvas, 0, 0, tmpCanvas.width, tmpCanvas.height );\r\n tctx.fillStyle = \"#FFFFFF\";\r\n tctx.fillRect(0, 0, tcanvas.width, tcanvas.height);\r\n tctx.fillStyle = \"#BBBBBB\";\r\n tctx.strokeStyle = \"#555555\";\r\n tctx.lineWidth = 2;\r\n // tctx.shadowColor = \"#333333\";\r\n // tctx.shadowBlur = 1;\r\n\r\n var i = 0;\r\n for (var prop in this.plots) {\r\n this.plotNameLookup[i] = prop;\r\n for (var p in this.plots[prop]) {\r\n var v = this.plots[prop][p];\r\n tctx.fillRect(v.x, v.y, 5, 5);\r\n //tctx.strokeRect(v.x,v.y,5,5);\r\n this.plotLookup[this.getPlotNum(v.x, v.y)] = i;\r\n }\r\n i++;\r\n }\r\n\r\n this.featureMap = new THREE.Texture(tcanvas);\r\n this.featureMap.minFilter = THREE.NearestFilter;\r\n this.featureMap.magFilter = THREE.NearestFilter;\r\n //texture.wrapS = THREE.RepeatWrapping;\r\n //texture.wrapT = THREE.RepeatWrapping;\r\n this.featureMap.needsUpdate = true;\r\n this.featureMap.flipY = true;\r\n }\r\n\r\n private getPlotNum(x, y) {\r\n return Math.floor(x / 5) + ((Math.floor(y / 5) * this.worldWidth) / 5);\r\n }\r\n\r\n\r\n\r\n async setLayer(layerName, viewRef = undefined) {\r\n const view = viewRef ? viewRef : this.scenes[this.scenes.length - 1].userData.view;\r\n view.settings.layerSelected = layerName;\r\n view.forceUpdate = true;\r\n\r\n //If nothing is selected let's show terrain\r\n layerName = layerName == \"\" ? \"Terrain\" : layerName;\r\n var layerInfo = this.layerNames.find(x => x[0] == layerName);\r\n var layerCategory = layerInfo ? layerInfo[2] : \"\";\r\n\r\n //It's difficult to see district's coloring under water with default settings, so let's make water more transporent\r\n if (view.waterMat) {\r\n view.waterMat.uniforms.alpha.value = layerCategory == this.districtSuffix ? waterAlphaInDistrictsMode : waterAlpha;\r\n }\r\n\r\n if (view.mainMat) {\r\n if (layerName == \"Terrain\") {\r\n view.mainMat.uniforms.map.value = this.terrainMap;\r\n delete view.mainMat.defines.HEATMAP;\r\n } else if (layerCategory == this.districtSuffix) {\r\n const districtMapName = layerName.toString().substring(layerName);\r\n\r\n if (this.districtMap[districtMapName] === undefined) {\r\n this.districtMap[districtMapName] = new PlotMap(this.worldWidth / 5, this.worldDepth / 5);\r\n\r\n const { data: districtData } = await axios.get(`/laws/districtmap/${districtMapName}`);\r\n this.districtMap[districtMapName].LoadDistrictMap(districtData);\r\n }\r\n\r\n view.mainMat.uniforms.map.value = this.districtMap[districtMapName];\r\n //delete view.mainMat.defines.HEATMAP;\r\n } else if (layerName == \"ProposedDistricts\") {\r\n if (this.proposedDistrictMap === undefined) {\r\n this.proposedDistrictMap = new PlotMap(this.worldWidth / 5, this.worldDepth / 5);\r\n }\r\n\r\n view.mainMat.uniforms.map.value = this.proposedDistrictMap;\r\n delete view.mainMat.defines.HEATMAP;\r\n } else {\r\n view.mainMat.defines.HEATMAP = true;\r\n\r\n if (GIFMANAGER.gifStorage[layerName] === undefined) {\r\n view.settings.frameNum = -1;\r\n view.loading = true;\r\n if (view.OnInfoUpdated) view.OnInfoUpdated(\"Loading Layer...\");\r\n\r\n if (view.settings.currentTime == this.serverTime && view.settings.pause) {\r\n new THREE.TextureLoader().load(`${this.serverUrl}/Layers/${layerName}Latest.gif`, texture => {\r\n texture.generateMipmaps = false;\r\n texture.flipY = false;\r\n texture.magFilter = THREE.LinearFilter;\r\n texture.minFilter = THREE.LinearFilter;\r\n texture.wrapS = THREE.RepeatWrapping;\r\n texture.wrapT = THREE.RepeatWrapping;\r\n view.mainMat.uniforms.map.value = texture;\r\n view.loading = false;\r\n if (view.OnInfoUpdated) view.OnInfoUpdated(\"\");\r\n });\r\n } else {\r\n view.settings.currentTime = 0;\r\n GIFMANAGER.giftextures(layerName, function (name) {\r\n //scenes[this.editViewNum].userData.view.settings.layerSelected = name;\r\n if (name == view.settings.layerSelected) {\r\n view.loading = false;\r\n if (view.OnInfoUpdated) view.OnInfoUpdated(\"\");\r\n }\r\n }); //start fetching the texture\r\n }\r\n }\r\n }\r\n view.mainMat.needsUpdate = true;\r\n }\r\n };\r\n\r\n fillLayerSelects(sell = false) {\r\n const sel = sell ? $(sell + ' .map-layer-select') : $('.map-layer-select');\r\n\r\n $.each(sel, (key, select) => {\r\n $.each(this.layerGroups, (key, value) => {\r\n const group = $('').attr(\"label\", value.category);\r\n\r\n $.each(value.layers, function (key, value) {\r\n const option = $('').attr(\"value\", value[0]).text(value[1]);\r\n\r\n if ($(select).attr('data-val') == value) {\r\n option.attr(\"selected\", \"true\");\r\n }\r\n\r\n $(group).append(option);\r\n });\r\n\r\n $(select).append(group);\r\n });\r\n });\r\n };\r\n\r\n private screenToWorldPos(view, viewX, viewY) {\r\n var read = new Float32Array(4);\r\n this.renderer!.readRenderTargetPixels(view.depthRenderTarget, viewX, viewY, 1, 1, read);\r\n var hitWorld = read[3] >= 0.7; // AO is 0.7-1.0\r\n if (hitWorld)\r\n return new THREE.Vector2(Math.floor(read[0] * this.worldWidth), this.worldDepth - Math.floor(read[1] * this.worldDepth));\r\n return null;\r\n }\r\n\r\n getWorldArea(view, borderSize) {\r\n var result = {\r\n min: this.screenToWorldPos(view, borderSize, borderSize),\r\n max: this.screenToWorldPos(view, view.lastWidth - borderSize, view.lastHeight - borderSize)\r\n };\r\n if (result.min == null || result.max == null) {\r\n result.min = new THREE.Vector2(0, 0);\r\n result.max = new THREE.Vector2(this.worldWidth - 1, this.worldDepth - 1);\r\n }\r\n return result;\r\n };\r\n\r\n}\r\n\r\nvar ecoMap = new EcoMap();\r\n\r\nexport default ecoMap;\r\n","import $ from 'jquery';\nimport 'jquery-ui-dist/jquery-ui';\nimport MiniMap from './ecomap';\nimport Base64 from './Base64';\n\nexport const MapControls = function() {\n\tlet mainMap = '';\n\tlet positionText = '';\n\n\tfunction initSlider(selector) {\n\t\tconst values = [0, 1000];\n\n\t\t$(selector).slider({\n\t\t\trange: true,\n\t\t\tmin: values[0],\n\t\t\tmax: values[1],\n\t\t\tvalues: values,\n\t\t\tslide: function (event, ui) {\n\t\t\t\t// start range\n\t\t\t\tmainMap.settings.timeStart = (ui.values[0] / values[1]) * MiniMap.serverTime;\n\t\t\t\tupdateText();\n\n\t\t\t\t// end reang\n\t\t\t\tmainMap.settings.timeEnd = (ui.values[1] / values[1]) * MiniMap.serverTime;\n\t\t\t\tupdateText()\n\t\t\t}\n\t\t});\n\t}\n\n\tconst secondsToString = function (seconds, br) {\n\t\tvar date = new Date(null);\n\t\tdate.setSeconds(seconds);\n\n\t\ttry {\n\t\t\tdate = date.toISOString().substr(11, 5);\n\t\t} catch (e) {\n\t\t\tdate = '';\n\t\t}\n\n\t\t//+1 so day can't be 0\n\t\tif (br == 'br') {\n\t\t\treturn Math.ceil((1 + seconds) / 86400) + \"
\" + date;\n\t\t} else {\n\t\t\treturn Math.ceil((1 + seconds) / 86400) + \", \" + date;\n\t\t}\n\t};\n\n\tvar updateText = function () {\n\t\t$(\".range-controls-time-span-1\").html(secondsToString(mainMap.settings.timeStart, 'br'));\n\t\t$(\".range-controls-time-span-2\").html(secondsToString(mainMap.settings.timeEnd, 'br'));\n\t\t$(\".speed-button\").html(mainMap.settings.playSpeed);\n\t};\n\n\tthis.bindEvents = function () {\n\t\tmainMap = document.getElementById(\"main-map\");\n\t\tpositionText = document.getElementById(\"map-position-text\");\n\t\tconst infoText = document.getElementById(\"map-info-text\");\n\t\tif (!mainMap) return;\n\n\t\t// $(window).load(function () {\n\t\t// \t//\t$('.ui-slider-handle:first').css({'margin-left': '0'})\n\t\t// \t//\t$('.ui-slider-handle:last').css({'margin-left': '-34px'})\n\t\t// });\n\n\t\tinitSlider(\"#slider-range\");\n\n\t\t$(\"#speed-button\").click(function () {\n\t\t\tif ($('#button1').css('display') == 'none' && $('#map-play-speed').css('display') == 'block') {\n\t\t\t\t$(\"#district-control-draw , #district-control-erase , #map-draw-size\").show();\n\t\t\t} else {\n\t\t\t\t$(\"#district-control-draw , #district-control-erase , #map-draw-size\").hide();\n\t\t\t}\n\n\t\t\t$('#map-play-speed').fadeToggle();\n\t\t});\n\n\t\t$(\"#map-play-speed\").on('input', function () {\n\t\t\tmainMap.settings.playSpeed = (this.value / this.max).toFixed(2);\n\t\t\tupdateText();\n\t\t});\n\n\t\t$(\"#button1\").click(function () {\n\t\t\t$('#map-play-speed').hide();\n\t\t\t$('#map-draw-size').fadeToggle();\n\t\t});\n\n\t\t$(\"#map-draw-size\").on('input', function () {\n\t\t\tMiniMap.drawSize = this.value;\n\t\t\tupdateText();\n\t\t});\n\t\t\n\t\t$(\"#map-toggle-2d\").click(function () {\n\t\t\tif ($(this).data('type') == 2) {\n\t\t\t\t$(this).val('3D');\n\t\t\t\t$(this).data('type', 3);\n\t\t\t} else if ($(this).data('type') == 3) {\n\t\t\t\t$(this).val('2D');\n\t\t\t\t$(this).data('type', 2);\n\t\t\t}\n\n\t\t\tmainMap.toggle3D();\n\t\t});\n\n\t\t$(\"#map-toggle-play\").click(function () {\n\t\t\tlet newState = !mainMap.settings.pause;\n\t\t\t$(this).html(newState ? '' : '');\n\t\t\tmainMap.settings.pause = newState;\n\t\t});\n\n\t\tmainMap.OnTimeUpdated = function (seconds) {\n\t\t\tupdateText();\n\t\t\t$(\"#map-progress-bar\").val(MiniMap.serverTime > 0 ? seconds / MiniMap.serverTime : 0);\n\t\t\t$('.progress-day').html(secondsToString(mainMap.settings.currentTime));\n\t\t};\n\n\t\tif (infoText) {\n\t\t\tmainMap.OnInfoUpdated = function (text) {\n\t\t\t\tinfoText.innerText = text;\n\t\t\t}\n\t\t}\n\n\t\tmainMap.OnPositionUpdated = function (pos) {\n\t\t\tpositionText.innerText = pos.x + \", \" + pos.y;\n\t\t};\n\n\t\t$('.add-map-button').click(function (e) {\n\t\t\t$('.fancy-add-map').click();\n\t\t\t$(this).hide();\n\t\t\t$('.remove-map-button').show();\n\t\t\te.preventDefault();\n\t\t});\n\n\t\t$(document).on('click', '.fancy-add-map', function () {\n\t\t\t$(\"#map-control-wrapper\").show();\n\t\t\t$(\"#main-map\").slideDown();\n\n\t\t\tlet elem = $(\".map-layer-select\");\n\t\t\telem = elem.offset();\n\n\t\t\t$('html, body').animate({scrollTop: elem.top - 200});\n\n\t\t\tlet view = document.getElementById(\"main-map\");\n\n\t\t\tif (view.settings === undefined) {\n\t\t\t\tview.mapdata = document.getElementById(\"map-data\");\n\t\t\t\tMiniMap.addView(view);\n\t\t\t\tMiniMap.fillLayerSelects();\n\t\t\t}\n\n\t\t\t$(this).hide();\n\n\t\t\t//composer.fadeIn();\n\t\t\t// $('.remove-map').css({'display': 'inline-block', 'margin-right': '17px'}).fadeIn();\n\t\t});\n\n\t\t$(document).on('click', '.fancy-add-district', function () {\n\t\t\t$(\"#map-control-wrapper\").show();\n\t\t\t$(\"#main-map\").show();\n\t\t\t$(\"#district-control-draw\").show();\n\t\t\t$(\"#district-control-erase\").show();\n\t\t\t$(\".map-layer-main\").hide();\n\t\t\t$(\".progress-day\").hide();\n\t\t\t$(\".map-tooltip\").css('top', '10px');\n\t\t\t$(\"#map-draw-size\").css('left', '239px');\n\t\t\t$(\".progress-day\").hide();\n\t\t\t$(\"#speed-button\").hide();\n\t\t\t$(\".range-controls-wrapper\").hide();\n\t\t\t$(\".play-button-wrapper\").hide();\n\n\t\t\tvar mapinfo = localStorage.getItem(\"mapinfo\");\n\t\t\tvar mapdrav = localStorage.getItem(\"mapdrav\");\n\t\t\t//var view = document.getElementById(\"main-map\");\n\n\t\t\tif (mapinfo == null) {\n\t\t\t\tmapinfo = \"{}\";\n\t\t\t}\n\t\t\tif (mapdrav == null) {\n\t\t\t\tmapdrav = \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\";\n\t\t\t}\n\n\t\t\tconst view = document.getElementById(\"main-map\");\n\n\t\t\tif (view.settings === undefined) {\n\t\t\t\tview.mapdata = document.getElementById(\"map-data\");\n\t\t\t\tMiniMap.addView(view);\n\t\t\t\tMiniMap.fillLayerSelects();\n\t\t\t\tMiniMap.SetZone(mapdrav)\n\t\t\t}\n\n\t\t\t$(this).attr(\"class\", \"eco-button fancy-remove-district\").attr(\"value\", \"Remove Districts\");\n\t\t\t$(\".district-controls-wrapper\").show();\n\t\t\t$(\".fancy-add-map\").hide();\n\n\t\t\t//composer.fadeIn();\n\t\t\t// $('.remove-map').css({'display': 'inline-block', 'margin-right': '17px'}).fadeIn();\n\n\t\t\tMiniMap.drawZone = true;\n\t\t\t$('.map-tooltip').css('display', 'block');\n\t\t\t$(\"#district-control-erase\").show();\n\t\t\t$(\"#district-control-draw\").hide();\n\t\t\tdocument.getElementById('button1').style.display = 'none';\n\t\t\tdocument.getElementById('button2').style.display = '';\n\t\t\t$('#map-play-speed').hide();\n\t\t\t$('#map-draw-size').fadeToggle();\n\n\t\t\t// DISTRICTS NOTES -- when the server provides existing district info we should do something similar to this\n\t\t\t// for each existing district (also when adding new districts)\n\t\t\t// also run MINIMAP.SetZone(zoneString);\n\t\t\tvar districts = $('.district-item');\n\n\t\t\tfor (var i = 0; i < districts.length; i++) {\n\t\t\t\tvar district = districts[i];\n\t\t\t\tvar id = districts[i].getAttribute(\"data-id\");\n\t\t\t\tvar color = $(district).css(\"background-color\");\n\t\t\t\tMiniMap.setDistrictColor(id, color);\n\t\t\t}\n\t\t});\n\n\t\t$(document).on('click', '.fancy-remove-district', function () {\n\t\t\t$(\".district-item\").remove();\n\t\t\t$(this).attr(\"class\", \"eco-button fancy-add-district\").attr(\"value\", \"Add District\");\n\t\t\t$(\".district-controls-wrapper\").hide();\n\n\t\t\t$(\".map-layer-main\").show();\n\t\t\t$(\".map-controls-wrapper\").show();\n\t\t\t$(\"#district-control-draw\").hide();\n\t\t\t$(\"#district-control-erase\").hide();\n\t\t\t$(\".map-layer-main\").show();\n\t\t\t$(\".progress-day\").show();\n\t\t\t$(\".map-tooltip\").css('top', '60px');\n\t\t\t$(\"#map-draw-size\").css('left', '-98px');\n\t\t\t$(\".progress-day\").show();\n\t\t\t$(\"#speed-button\").show();\n\t\t\t$(\".range-controls-wrapper\").show();\n\t\t\t$(\".play-button-wrapper\").show();\n\n\t\t\tMiniMap.drawZone = false;\n\t\t\t$('.map-tooltip').css('display', 'none');\n\t\t\t//$(\"#district-control-erase\").hide();\n\t\t\t//$(\"#district-control-draw\").show();\n\t\t\tdocument.getElementById('button2').style.display = 'none';\n\t\t\tdocument.getElementById('button1').style.display = '';\n\t\t\t$('#map-draw-size').hide();\n\t\t});\n\n\t\t$('.remove-map-button').click(function (e) {\n\t\t\t$('.remove-map').click();\n\t\t\t$(this).hide();\n\t\t\t$('.add-map-button').show();\n\t\t\te.preventDefault();\n\t\t});\n\n\t\t/* Removing map */\n\t\t$(document).on('click', '.remove-map', function () {\n\t\t\t$(this).hide();\n\n\t\t\t$('.fancy-add-map').html('Add Map').attr('data-action', 'add');\n\n\t\t\t//$('#graph-data').val('');\n\n\t\t\t$(\"#map-control-wrapper\").slideUp();\n\t\t\t$(\"#main-map\").slideUp();\n\n\t\t\t// $('.fancy-add-map').show();\n\t\t})\n\t}\n};\n\n$(document).ready(function () {\n\tvar mapcontrol = new MapControls();\n\tmapcontrol.bindEvents();\n});\n\n$(document).ready(function () {\n\n\t$(\"#button1\").click(function () {\n\t\t$(\"#district-control-erase\").show();\n\t\t$(\"#district-control-draw\").hide();\n\t});\n\n\t$(\"#button2\").click(function () {\n\t\t$(\"#map-draw-size\").hide();\n\t\t$(\"#district-control-erase\").hide();\n\t\t$(\"#district-control-draw\").hide();\n\t});\n\n\t$('#district-control-erase').click(function () {\n\t\t$(this).hide();\n\t\t$(\"#district-control-draw\").show();\n\n\t\tMiniMap.eraseMode = true;\n\t});\n\n\t$('#district-control-draw').click(function () {\n\t\t$(this).hide();\n\t\t$('#district-control-erase').show();\n\t\tMiniMap.eraseMode = false;\n\t});\n});\n\n// function SwitchButtons(buttonId) {\n// \tvar hideBtn, showBtn, menuToggle;\n// \tif (buttonId == 'button1') {\n// \t\tmenuToggle = 'menu2';\n// \t\tshowBtn = 'button2';\n// \t\thideBtn = 'button1';\n// \t\tMINIMAP.drawZone = true;\n// \t\t$('.map-tooltip').css('display', 'block');\n// \t\t$('.fancy-add-district').attr(\"class\", \"eco-button fancy-remove-district\").attr(\"value\", \"Remove Districts\");\n// \t\t$(\".district-controls-wrapper\").show();\n// \t} else {\n// \t\tmenuToggle = 'menu3';\n// \t\tshowBtn = 'button1';\n// \t\thideBtn = 'button2';\n// \t\tMINIMAP.drawZone = false;\n// \t\t$('.map-tooltip').css('display', 'none');\n// \t\t$(\".fancy-remove-district\").attr(\"class\", \"eco-button fancy-add-district\").attr(\"value\", \"Add District\");\n// \t\t$(\".district-controls-wrapper\").hide();\n// \t}\n// \t//I don't have your menus, so this is commented out. just uncomment for your usage\n// \t// document.getElementById(menuToggle).toggle(); //step 1: toggle menu\n// \tdocument.getElementById(hideBtn).style.display = 'none'; //step 2 :additional feature hide button\n// \tdocument.getElementById(showBtn).style.display = ''; //step 3:additional feature show button\n// }\n\n$(document).ready(function () {\n\t// if (window.currentPage == \"addlaw\") {\n\t// \tvar cp = ColorPicker(document.getElementById('flexi-color-slide'), document.getElementById('flexi-color-picker'),\n\t// \t\tfunction (hex, hsv, rgb, mousePicker, mouseSlide) {\n\t// \t\t\t$(\".district-item.active\").css({\"background-color\": hex});\n\t// \t\t\tvar districtId = $(\".district-item.active\")[0].getAttribute(\"data-id\");\n\t// \t\t\tMINIMAP.setDistrictColor(districtId, hex);\n\t// \t\t\t// might as well make this one the active painting district\n\t// \t\t\tMINIMAP.paintDistrict(districtId);\n\t//\n\t// \t\t\tvar mapinfo = {}\n\t// \t\t\t$('.district-item').each(function () {\n\t// \t\t\t\tvar item = {}\n\t// \t\t\t\tvar id = $(this).attr('data-id')\n\t// \t\t\t\tvar bg = $(this).css('background-color')\n\t// \t\t\t\tvar val = $(this).find('.district-name-input').val()\n\t// \t\t\t\titem['bg'] = bg;\n\t// \t\t\t\titem['val'] = val;\n\t// \t\t\t\titem['id'] = id;\n\t// \t\t\t\tmapinfo[id] = item;\n\t// \t\t\t})\n\t// \t\t\tlocalStorage.setItem('mapdrav', MINIMAP.GetZone());\n\t// \t\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t//\n\t// \t\t});\n\t// \twindow.mapColorPicker = cp;\n\t// }\n\n\t$(document).on(\"click\", \".district-item\", function (event) {\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {};\n\t\t\tvar id = $(this).attr('data-id');\n\t\t\tvar bg = $(this).css('background-color');\n\t\t\tvar val = $(this).find('.district-name-input').val();\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\n\t\tif (window.currentPage == \"addlaw\") {\n\t\t\tevent.stopPropagation();\n\t\t\tif ($(this).hasClass(\"active\")) {\n\t\t\t\t$(this).removeClass(\"active\");\n\t\t\t\t$(\".flexi-color-picker-wrapper\").hide();\n\t\t\t} else {\n\t\t\t\t$(\".district-item.active\").removeClass(\"active\");\n\t\t\t\t$(this).addClass(\"active\");\n\t\t\t\t$(\".flexi-color-picker-wrapper\").css({\"top\": $(this).position().top + 10}).show();\n\n\t\t\t\tvar color = $(this).css(\"background-color\").split(\")\")[0].split(\"(\")[1].split(\", \");\n\t\t\t\tvar rgb = {\n\t\t\t\t\tr: color[0],\n\t\t\t\t\tg: color[1],\n\t\t\t\t\tb: color[2]\n\t\t\t\t};\n\n\t\t\t\twindow.mapColorPicker.setRgb(rgb);\n\t\t\t}\n\t\t\t//$('.district-item').css(\"border-color\", \"black\");\n\t\t\t// $(\".district-item[data-id=2]\").position()\n\t\t}\n\t});\n\n\t$(document).on(\"click\", \".remove_district_item\", function () {\n\t\tvar id = $(this).parent().attr(\"data-id\");\n\t\t\n\n\t\tvar arr = Base64.toByteArray(MiniMap.GetZone());\n\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tif (arr[i] == id) {\n\t\t\t\tarr[i] = 0;\n\t\t\t}\n\t\t}\n\n\t\tvar newZone = Base64.fromByteArray(arr);\n\t\tMiniMap.SetZone(newZone);\n\n\t\tvar districts = $('.district-item');\n\n\t\tfor (i = 0; i < districts.length; i++) {\n\t\t\tvar district = districts[i];\n\t\t\tid = districts[i].getAttribute(\"data-id\");\n\t\t\tvar color = $(district).css(\"background-color\");\n\t\t\tMiniMap.setDistrictColor(id, color);\n\t\t}\n\n\t\t$(this).parent().remove();\n\t\tMiniMap.paintDistrict(0);\n\t\tif ($(\".district-item\").length == 1) $(\".remove_district_item\").remove();\n\t});\n\n\t$(document).on(\"click\", \".add-new-district-button\", function () {\n\t\tvar id = 1;\n\t\tvar districts = $(\".district-item\");\n\t\tvar title = localStorage.getItem(\"title\");\n\n\t\tif (title == '' || typeof title == 'undefined') {\n\t\t\ttitle = 'title';\n\t\t}\n\n\t\tfor (var i = 0; i < districts.length; i++) id = (id <= parseInt($(districts[i]).attr(\"data-id\"))) ? parseInt($(districts[i]).attr(\"data-id\")) + 1 : id;\n\t\t// var hex = \"#\"+parseInt(Math.random()*16581375).toString(16);\n\t\tvar colors = [\"rgb(33, 149, 172)\", \"rgb(191, 68, 119)\", \"rgb(153, 164, 255)\", \"rgb(69, 193, 37)\", \"rgb(232, 156, 55)\", \"rgb(188, 9, 47)\", \"rgb(179, 158, 245)\", \"rgb(126, 71, 193)\", \"rgb(161, 54, 4)\", \"rgb(134, 76, 163)\", \"rgb(231, 69, 61)\", \"rgb(229, 169, 117)\", \"rgb(49, 148, 178)\", \"rgb(65, 53, 228)\", \"rgb(126, 189, 136)\", \"rgb(255, 221, 119)\", \"rgb(77, 106, 175)\", \"rgb(99, 178, 184)\", \"rgb(187, 0, 17)\", \"rgb(128, 175, 118)\", \"rgb(211, 106, 211)\", \"rgb(93, 190, 63)\", \"rgb(49, 23, 156)\", \"rgb(40, 139, 221)\", \"rgb(170, 85, 238)\", \"rgb(154, 131, 190)\", \"rgb(238, 17, 68)\", \"rgb(33, 104, 147)\", \"rgb(226, 223, 95)\", \"rgb(54, 175, 187)\", \"rgb(108, 169, 253)\", \"rgb(186, 174, 86)\", \"rgb(221, 170, 68)\", \"rgb(101, 46, 60)\", \"rgb(137, 191, 62)\", \"rgb(131, 31, 61)\", \"rgb(239, 145, 233)\", \"rgb(222, 80, 62)\", \"rgb(221, 97, 206)\", \"rgb(188, 87, 215)\"];\n\t\tvar hex = colors[parseInt(Math.random() * 40)];\n\t\t$(\".district-item.active\").removeClass(\"active\");\n\t\t$(this).before('
');\n\t\twindow.mapColorPicker.setHex(hex);\n\t\t$('.district-item[data-id=' + id + ']').removeClass(\"active\");\n\n\t\tif ($(\".district-item\").length == 1) {\n\t\t\t$(\".remove_district_item\").remove();\n\t\t} else if ($(\".district-item\").length == 2) {\n\t\t\t$($(\".district-item\")[0]).prepend('');\n\t\t}\n\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t});\n\n\t$(document).on(\"click\", \".district-item .district-name-input, .district-item .district-button, .district-item .remove_district_item\", (e) => {\n\t\te.stopPropagation();\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone())\n\t});\n\n\t$(document).on(\"click\", \".flexi-color-picker-wrapper\", (e) => {\n\t\te.stopPropagation();\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone())\n\t});\n\n\t$(document).on(\"click\", \".district-item .district-name-input, .district-item .district-button\", function (event) {\n\t\tevent.stopPropagation();\n\t\tvar districtId = this.parentNode.getAttribute(\"data-id\");\n\t\tMiniMap.paintDistrict(districtId);\n\t\tvar mapinfo = {}\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t});\n\n\t$(\".view-map\").on(\"mouseup\", function () {\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t\tvar mapinfo = {};\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t});\n\n\t$(document).on(\"click\", \".district-button\", function () {\n\t\t$(this).parent().trigger(\"click\");\n\t\tvar mapinfo = {}\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t})\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t\tlocalStorage.setItem('mapdrav', MiniMap.GetZone());\n\t});\n\n\t$(document).on(\"keyup\", \".district-name-input\", function () {\n\t\tvar mapinfo = {}\n\n\t\t$('.district-item').each(function () {\n\t\t\tvar item = {}\n\t\t\tvar id = $(this).attr('data-id')\n\t\t\tvar bg = $(this).css('background-color')\n\t\t\tvar val = $(this).find('.district-name-input').val()\n\t\t\titem['bg'] = bg;\n\t\t\titem['val'] = val;\n\t\t\titem['id'] = id;\n\t\t\tmapinfo[id] = item;\n\t\t});\n\n\t\tlocalStorage.setItem('mapinfo', JSON.stringify(mapinfo));\n\t});\n\n\t$(window).click(function () {\n\t\t$(\".district-item.active\").removeClass(\"active\");\n\t\t$(\".flexi-color-picker-wrapper\").hide();\n\t});\n});\n","import { render } from \"./WorldMap.vue?vue&type=template&id=b800f04a\"\nimport script from \"./WorldMap.vue?vue&type=script&lang=js\"\nexport * from \"./WorldMap.vue?vue&type=script&lang=js\"\n\nimport \"./WorldMap.vue?vue&type=style&index=0&id=b800f04a&lang=css\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"frontpage-info-wrapper\" }\nconst _hoisted_2 = { class: \"frontpage-info\" }\nconst _hoisted_3 = { class: \"localize\" }\nconst _hoisted_4 = { class: \"text-highlight\" }\nconst _hoisted_5 = { class: \"localize\" }\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = { class: \"localize\" }\nconst _hoisted_8 = [\"innerHTML\"]\nconst _hoisted_9 = { class: \"localize\" }\nconst _hoisted_10 = { class: \"text-highlight\" }\nconst _hoisted_11 = { class: \"localize\" }\nconst _hoisted_12 = { class: \"text-highlight\" }\nconst _hoisted_13 = { class: \"localize\" }\nconst _hoisted_14 = { class: \"text-highlight\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_3, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Online Players\")), 1)\n ]),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.serverInfo.OnlinePlayers) + \" / \" + _toDisplayString(this.serverInfo.TotalPlayers), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_5, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Time\")), 1)\n ]),\n _createElementVNode(\"span\", {\n class: \"text-highlight\",\n innerHTML: _ctx.time\n }, null, 8, _hoisted_6)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_7, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Meteor Impact\")), 1)\n ]),\n _createElementVNode(\"span\", {\n class: \"text-highlight\",\n innerHTML: _ctx.meteorImpact\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_9, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Plants\")), 1)\n ]),\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.serverInfo.Plants), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_11, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"Laws\")), 1)\n ]),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.serverInfo.Laws), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"span\", _hoisted_13, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.$t(\"World Size\")), 1)\n ]),\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.serverInfo.WorldSize), 1)\n ])\n ], 512), [\n [_vShow, _ctx.serverInfo.TimeSinceStart]\n ])\n ]))\n}","// converts seconds into days, hours, minutes\r\nexport function sec2time(seconds: number) {\r\n\r\n let result = '';\r\n let days = Math.floor(seconds / 86400);\r\n let hours = Math.floor((seconds - (86400 * days)) / 3600);\r\n let middle = (86400 * days) + (3600 * hours);\r\n let minutes = Math.floor((seconds - middle) / 60);\r\n\r\n if (days) {\r\n result += days + ' ' + ((days == 1) ? 'day ' : 'days ');\r\n }\r\n\r\n if (hours) {\r\n result += hours + ' ' + ((hours == 1) ? 'hr ' : ' hrs ');\r\n }\r\n\r\n if (minutes) {\r\n result += minutes + ' ' + ((minutes == 1) ? 'min ' : 'mins ');\r\n }\r\n\r\n if (!days && !hours && !minutes) {\r\n result = Math.floor(seconds) + ' secs';\r\n }\r\n\r\n return result;\r\n};\r\n\r\n// converts seconds into days, hours, minutes\r\nexport function sec2worldTime(secondsStr: string | number) {\r\n const seconds = parseFloat(String(secondsStr));\r\n const days = Math.floor(seconds / 86400);\r\n\r\n //getting hours\r\n const hours = Math.floor((seconds - (86400 * days)) / 3600);\r\n\r\n const hoursStr = (hours <= 9) ? '0' + hours : hours;\r\n\r\n const middle = (86400 * days) + (3600 * hours);\r\n\r\n //getting minutes\r\n const minutes = Math.floor((seconds - middle) / 60);\r\n const minutesStr = (minutes <= 9) ? '0' + minutes : minutes;\r\n\r\n //constructing the return text. Days + 1 so it's start with 1\r\n return 'Day ' + (days + 1) + ' , ' + hoursStr + ':' + minutesStr;\r\n};\r\n","\r\n import { defineComponent } from \"vue\";\r\n import { useMainStore } from '@/stores';\r\n import { sec2time, sec2worldTime } from \"@/helpers/time\";\r\n import { definitions } from \"@/types/EcoWebServer\"\r\n\r\n type ServerInfo = definitions[\"Eco.Shared.Networking.ServerInfo\"];\r\n\r\n export default defineComponent({\r\n setup() {\r\n const store = useMainStore();\r\n\r\n return { store };\r\n },\r\n computed: {\r\n serverInfo(): ServerInfo {\r\n return this.store.serverInfo;\r\n },\r\n time(): string {\r\n return sec2worldTime(this.serverInfo.TimeSinceStart!);\r\n },\r\n meteorImpact(): string {\r\n var untilImpact = this.serverInfo.TimeLeft ?? 0;\r\n if (untilImpact <= 0)\r\n {\r\n if (!this.serverInfo.HasMeteor)\r\n return this.$t(\"No Meteor\");\r\n else\r\n return this.$t(\"The meteor was destroyed\");\r\n }\r\n else\r\n return sec2time(untilImpact);\r\n },\r\n }\r\n });\r\n","import { render } from \"./ServerInfo.vue?vue&type=template&id=ef18f3d6&ts=true\"\nimport script from \"./ServerInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./ServerInfo.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./Index.vue?vue&type=template&id=d204350c\"\nimport script from \"./Index.vue?vue&type=script&lang=js\"\nexport * from \"./Index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n","import { render } from \"./Comparison.vue?vue&type=template&id=7ddb5aeb\"\nimport script from \"./Comparison.vue?vue&type=script&lang=js\"\nexport * from \"./Comparison.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock, vModelText as _vModelText, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8468a734\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"container-fluid\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = { class: \"elections-wrapper col-md-12\" }\nconst _hoisted_4 = {\n key: 0,\n id: \"election-wrapper\"\n}\nconst _hoisted_5 = {\n class: \"section-wrapper\",\n style: {\"width\":\"100%\"}\n}\nconst _hoisted_6 = { class: \"election-name\" }\nconst _hoisted_7 = { class: \"election-name\" }\nconst _hoisted_8 = { class: \"name-box\" }\nconst _hoisted_9 = { class: \"election-info section-info-wrapper\" }\nconst _hoisted_10 = {\n key: 0,\n class: \"election-info section-info-wrapper\"\n}\nconst _hoisted_11 = { class: \"row\" }\nconst _hoisted_12 = {\n key: 0,\n id: \"position-for-winner-table\",\n class: \"col-md-4\"\n}\nconst _hoisted_13 = { class: \"election-info-tbl flat-table table\" }\nconst _hoisted_14 = { class: \"table-top-left election-rule\" }\nconst _hoisted_15 = { class: \"table-top-left election-rule-description\" }\nconst _hoisted_16 = [\"title\"]\nconst _hoisted_17 = { class: \"table-left election-rule-description change-to\" }\nconst _hoisted_18 = { class: \"change-to\" }\nconst _hoisted_19 = {\n key: 1,\n class: \"election-heading col-md-5\"\n}\nconst _hoisted_20 = { class: \"election-action-on-complete\" }\nconst _hoisted_21 = {\n class: \"panel-group\",\n id: \"accordion\"\n}\nconst _hoisted_22 = { class: \"panel-heading\" }\nconst _hoisted_23 = { class: \"panel-title\" }\nconst _hoisted_24 = [\"href\"]\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"caret pull-right\" }, null, -1))\nconst _hoisted_26 = [\"id\"]\nconst _hoisted_27 = { class: \"panel-body\" }\nconst _hoisted_28 = {\n class: \"election-info-tbl flat-table table\",\n style: {\"table-layout\":\"fixed\",\"width\":\"100%\"}\n}\nconst _hoisted_29 = {\n key: 0,\n class: \"collapsible\"\n}\nconst _hoisted_30 = { class: \"table-top-left election-rule\" }\nconst _hoisted_31 = { class: \"table-top-left election-rule-description\" }\nconst _hoisted_32 = {\n key: 0,\n class: \"table-top-left election-rule-description\"\n}\nconst _hoisted_33 = [\"title\"]\nconst _hoisted_34 = { class: \"table-left change-to\" }\nconst _hoisted_35 = { class: \"change-to\" }\nconst _hoisted_36 = {\n key: 0,\n class: \"table-left current\"\n}\nconst _hoisted_37 = { class: \"current\" }\nconst _hoisted_38 = {\n key: 1,\n style: {\"display\":\"table-row-group\"}\n}\nconst _hoisted_39 = { class: \"table-top\" }\nconst _hoisted_40 = {\n class: \"table-top-left\",\n style: {\"text-align\":\"left\"}\n}\nconst _hoisted_41 = {\n key: 2,\n style: {\"display\":\"table-row-group\"}\n}\nconst _hoisted_42 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"tr\", { class: \"table-top\" }, [\n /*#__PURE__*/_createElementVNode(\"td\", { class: \"table-top-left\" }, \"No Data\")\n], -1))\nconst _hoisted_43 = [\n _hoisted_42\n]\nconst _hoisted_44 = {\n key: 2,\n id: \"candidates-results-wrapper\",\n class: \"col-md-5\"\n}\nconst _hoisted_45 = {\n class: \"candidates-wrapper section-wrapper\",\n id: \"choise-election-wrapper\"\n}\nconst _hoisted_46 = {\n id: \"choice-election-vote-wrapper\",\n class: \"voting-wrapper\"\n}\nconst _hoisted_47 = {\n key: 0,\n class: \"vote\"\n}\nconst _hoisted_48 = {\n class: \"add-self-wrapper\",\n style: {\"position\":\"relative\"}\n}\nconst _hoisted_49 = {\n key: 0,\n class: \"btn-group btn-group-toggle bool-choice-controls vote-item vote-button\",\n \"data-toggle\": \"buttons\"\n}\nconst _hoisted_50 = [\"onClick\"]\nconst _hoisted_51 = [\"value\"]\nconst _hoisted_52 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"⇅\", -1))\nconst _hoisted_53 = [\"data-id\"]\nconst _hoisted_54 = { class: \"candidate-name-title\" }\nconst _hoisted_55 = { class: \"candidate-speech\" }\nconst _hoisted_56 = {\n key: 0,\n id: \"ranked-election-vote-wrapper\",\n class: \"voting-wrapper\"\n}\nconst _hoisted_57 = {\n id: \"section-title\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n \"data-original-title\": \"Click and drag the candidates to put them in your order of preference. If your first choice\\r\\n doesn't have enough votes to win, your second choice will be used, etc.\"\n}\nconst _hoisted_58 = {\n style: {\"width\":\"100%\"},\n class: \"localize\"\n}\nconst _hoisted_59 = {\n key: 0,\n class: \"vote\"\n}\nconst _hoisted_60 = {\n class: \"add-self-wrapper\",\n style: {\"position\":\"relative\"}\n}\nconst _hoisted_61 = {\n key: 0,\n class: \"vote-drag-box\"\n}\nconst _hoisted_62 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"⇅\", -1))\nconst _hoisted_63 = { class: \"choice\" }\nconst _hoisted_64 = [\"data-id\"]\nconst _hoisted_65 = { class: \"candidate-name-title\" }\nconst _hoisted_66 = { class: \"candidate-speech\" }\nconst _hoisted_67 = { class: \"localize\" }\nconst _hoisted_68 = { class: \"voted-wrapper col-md-8\" }\nconst _hoisted_69 = {\n key: 0,\n class: \"votes-per-round multi-choice-election\"\n}\nconst _hoisted_70 = {\n key: 0,\n class: \"no-votes\"\n}\nconst _hoisted_71 = { class: \"localize\" }\nconst _hoisted_72 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_73 = {\n key: 1,\n class: \"flat-table table\",\n style: {\"text-align\":\"center\"}\n}\nconst _hoisted_74 = { class: \"title-heading\" }\nconst _hoisted_75 = { class: \"th\" }\nconst _hoisted_76 = { class: \"localize\" }\nconst _hoisted_77 = { class: \"table-top\" }\nconst _hoisted_78 = { class: \"table-top-left\" }\nconst _hoisted_79 = { class: \"localize\" }\nconst _hoisted_80 = { class: \"localize\" }\nconst _hoisted_81 = [\"innerHTML\"]\nconst _hoisted_82 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_83 = { key: 0 }\nconst _hoisted_84 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_85 = { key: 1 }\nconst _hoisted_86 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_87 = { class: \"table-bottom\" }\nconst _hoisted_88 = { class: \"localize\" }\nconst _hoisted_89 = {\n key: 1,\n id: \"votingResultsChart\",\n class: \"votes-per-round\"\n}\nconst _hoisted_90 = { class: \"election-info-wrapper col-md-8\" }\nconst _hoisted_91 = {\n id: \"election-info-results-wrapper\",\n class: \"election-info section-info-wrapper\"\n}\nconst _hoisted_92 = { key: 0 }\nconst _hoisted_93 = { class: \"localize\" }\nconst _hoisted_94 = /*#__PURE__*/_createTextVNode(\"  \")\nconst _hoisted_95 = [\"innerHTML\"]\nconst _hoisted_96 = { class: \"localize\" }\nconst _hoisted_97 = { key: 1 }\nconst _hoisted_98 = { class: \"localize\" }\nconst _hoisted_99 = /*#__PURE__*/_createTextVNode(\"  \")\nconst _hoisted_100 = [\"innerHTML\"]\nconst _hoisted_101 = { class: \"localize\" }\nconst _hoisted_102 = { key: 2 }\nconst _hoisted_103 = { class: \"localize\" }\nconst _hoisted_104 = /*#__PURE__*/_createTextVNode(\"  \")\nconst _hoisted_105 = [\"innerHTML\"]\nconst _hoisted_106 = { key: 3 }\nconst _hoisted_107 = {\n key: 0,\n class: \"localize\"\n}\nconst _hoisted_108 = {\n key: 1,\n class: \"localize\"\n}\nconst _hoisted_109 = { class: \"localize\" }\nconst _hoisted_110 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_111 = { key: 4 }\nconst _hoisted_112 = {\n key: 0,\n class: \"localize\"\n}\nconst _hoisted_113 = {\n key: 1,\n class: \"localize\"\n}\nconst _hoisted_114 = { class: \"localize\" }\nconst _hoisted_115 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_116 = { key: 5 }\nconst _hoisted_117 = {\n key: 0,\n class: \"localize\"\n}\nconst _hoisted_118 = {\n key: 1,\n class: \"localize\"\n}\nconst _hoisted_119 = { class: \"localize\" }\nconst _hoisted_120 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_121 = { key: 6 }\nconst _hoisted_122 = /*#__PURE__*/_createTextVNode(\" This election is conducted with Instant Runoff Voting. This means that if a citizen's first choice candidate doesn't have enough votes to win, their vote goes instead to their second choice candidate, then third choice, and so on. This table shows each round of removal and how many votes each candidate has. For more info, see \")\nconst _hoisted_123 = {\n href: \"https://en.wikipedia.org/wiki/Instant%E2%80%90runoff_voting\",\n target: \"_blank\",\n class: \"localize\"\n}\nconst _hoisted_124 = { class: \"localize\" }\nconst _hoisted_125 = /*#__PURE__*/_createTextVNode(\". \")\nconst _hoisted_126 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"input\", {\n type: \"hidden\",\n id: \"candidate-names\"\n}, null, -1))\nconst _hoisted_127 = { class: \"election-discussion section-wrapper\" }\nconst _hoisted_128 = { class: \"section-wrapper-2\" }\nconst _hoisted_129 = {\n key: 0,\n class: \"discussion-user\"\n}\nconst _hoisted_130 = { class: \"law-discussion-wrapper\" }\nconst _hoisted_131 = { class: \"law-discussion-user\" }\nconst _hoisted_132 = [\"innerHTML\"]\nconst _hoisted_133 = {\n key: 0,\n class: \"law-discussion-comment\"\n}\nconst _hoisted_134 = { key: 1 }\nconst _hoisted_135 = [\"placeholder\"]\nconst _hoisted_136 = { class: \"add-comment-buttons\" }\nconst _hoisted_137 = [\"disabled\"]\nconst _hoisted_138 = { class: \"localize\" }\nconst _hoisted_139 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n id: \"law-add-graph\",\n style: {\"display\":\"inline-block\"}\n}, [\n /*#__PURE__*/_createElementVNode(\"input\", {\n type: \"hidden\",\n id: \"graph-data\",\n value: \"\"\n })\n], -1))\nconst _hoisted_140 = {\n class: \"edit-comment-buttons\",\n style: {\"display\":\"none\"}\n}\nconst _hoisted_141 = {\n id: \"cancel-edit\",\n class: \"eco-button\"\n}\nconst _hoisted_142 = { class: \"localize\" }\nconst _hoisted_143 = [\"disabled\"]\nconst _hoisted_144 = { class: \"localize\" }\nconst _hoisted_145 = {\n class: \"row\",\n style: {\"clear\":\"both\",\"margin-right\":\"0\"}\n}\nconst _hoisted_146 = {\n key: 0,\n class: \"comment-graph\",\n id: \"graph_composer\",\n style: {\"height\":\"536px\"},\n src: \"/graph_composer/index.html\"\n}\nconst _hoisted_147 = {\n key: 1,\n class: \"map-wrapper-1 col-xl-4\",\n id: \"map-control-wrapper\"\n}\nconst _hoisted_148 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n id: \"graphContainer\",\n class: \"election-wrapper-right col-xl-8 col-lg-12\"\n}, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_TMPLabel = _resolveComponent(\"TMPLabel\")!\n const _component_draggable = _resolveComponent(\"draggable\")!\n const _component_ElectionProcessModal = _resolveComponent(\"ElectionProcessModal\")!\n const _component_AllVotesModal = _resolveComponent(\"AllVotesModal\")!\n const _component_WorldMap = _resolveComponent(\"WorldMap\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.election.Name)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"h2\", null, [\n _createElementVNode(\"span\", _hoisted_8, [\n _createVNode(_component_TMPLabel, {\n class: \"election-name-title\",\n text: _ctx.election.Name\n }, null, 8, [\"text\"])\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_9, [\n _createVNode(_component_TMPLabel, {\n class: \"election-name-description\",\n text: _ctx.election.ElectionDescription,\n onTmpLinkClick: _ctx.handleTMPLinkClick\n }, null, 8, [\"text\", \"onTmpLinkClick\"])\n ]),\n (_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, [\n _createVNode(_component_TMPLabel, {\n class: \"election-name-description\",\n text: _ctx.election.Results.Result,\n onTmpLinkClick: _ctx.handleTMPLinkClick\n }, null, 8, [\"text\", \"onTmpLinkClick\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_ctx.election.PositionForWinner)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"table\", _hoisted_13, [\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.PositionForWinner.Table.slice(0, 1), (row, i) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `candidateHead${i}`,\n class: \"table-top\"\n }, [\n _createElementVNode(\"td\", _hoisted_14, _toDisplayString(row[0]), 1),\n _createElementVNode(\"td\", _hoisted_15, _toDisplayString(row[2]), 1)\n ]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.PositionForWinner.Table.slice(1), (row, i) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `candidateRow${i}`,\n class: \"table-middle\"\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left election-rule\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n title: row[1]\n }, _toDisplayString(row[0]), 9, _hoisted_16),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(row[2]), 1)\n ])\n ]))\n }), 128))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.election.Provisions?.length ?? 0 > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Provisions, (provision, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `provision${i}`,\n class: \"panel panel-default\"\n }, [\n _createElementVNode(\"div\", _hoisted_22, [\n _createElementVNode(\"h4\", _hoisted_23, [\n _createElementVNode(\"a\", {\n \"data-toggle\": \"collapse\",\n \"data-parent\": \"#accordion\",\n href: `#provisionBody${i}`\n }, [\n _createVNode(_component_TMPLabel, {\n text: provision.ActionOnCompleteTableHeader || `Provision #${i + 1}`\n }, null, 8, [\"text\"]),\n _hoisted_25\n ], 8, _hoisted_24)\n ])\n ]),\n _createElementVNode(\"div\", {\n id: `provisionBody${i}`,\n class: _normalizeClass(`panel-collapse collapse ${!i ? 'in' : ''}`)\n }, [\n _createElementVNode(\"div\", _hoisted_27, [\n _createElementVNode(\"table\", _hoisted_28, [\n (provision.ActionOnCompleteTable)\n ? (_openBlock(), _createElementBlock(\"tbody\", _hoisted_29, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(provision.ActionOnCompleteTable.slice(0, 1), (row, j) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `actionHead${j}`,\n class: \"table-top\"\n }, [\n _createElementVNode(\"td\", _hoisted_30, _toDisplayString(row[0]), 1),\n _createElementVNode(\"td\", _hoisted_31, _toDisplayString(row[2]), 1),\n (row[3] !== undefined)\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_32, _toDisplayString(row[3]), 1))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(provision.ActionOnCompleteTable.slice(1), (row, j) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `action${j}`,\n class: \"table-middle\"\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left election-rule\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n title: row[1]\n }, _toDisplayString(row[0]), 9, _hoisted_33),\n _createElementVNode(\"td\", _hoisted_34, [\n _createElementVNode(\"span\", _hoisted_35, _toDisplayString(row[2]), 1)\n ]),\n (row[3] !== undefined)\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_36, [\n _createElementVNode(\"span\", _hoisted_37, _toDisplayString(row[3]), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n : (provision.ActionOnCompleteFullDescription)\n ? (_openBlock(), _createElementBlock(\"tbody\", _hoisted_38, [\n _createElementVNode(\"tr\", _hoisted_39, [\n _createElementVNode(\"td\", _hoisted_40, [\n _createVNode(_component_TMPLabel, {\n text: provision.ActionOnCompleteFullDescription\n }, null, 8, [\"text\"])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"tbody\", _hoisted_41, _hoisted_43))\n ])\n ])\n ], 10, _hoisted_26)\n ]))\n }), 128))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_44, [\n _createElementVNode(\"div\", _hoisted_45, [\n _createElementVNode(\"div\", _hoisted_46, [\n (_ctx.store.username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_47, [\n _createElementVNode(\"div\", _hoisted_48, [\n (_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_49, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Choices, (choice, i) => {\n return (_openBlock(), _createElementBlock(\"label\", {\n key: `choice${i}`,\n onClick: _withModifiers(($event: any) => (_ctx.vote(choice.Id)), [\"prevent\"]),\n class: \"btn btn-success form-check-label bool-choice-control eco-button\"\n }, [\n _createElementVNode(\"input\", {\n class: \"form-check-input boolean-choice-input\",\n type: \"radio\",\n name: \"options\",\n value: choice.Name\n }, null, 8, _hoisted_51),\n _createTextVNode(\" \" + _toDisplayString(choice.Name), 1)\n ], 8, _hoisted_50))\n }), 128))\n ]))\n : (_openBlock(), _createBlock(_component_draggable, {\n key: 1,\n modelValue: _ctx.candidates,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.candidates) = $event)),\n \"item-key\": \"Id\",\n group: { name: 'candidates' }\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.candidates, (candidate, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `candidate${i}`,\n class: \"vote-item grab\"\n }, [\n _hoisted_52,\n _createElementVNode(\"p\", {\n \"data-id\": candidate.Id,\n class: \"candidate-name\"\n }, [\n _createElementVNode(\"span\", _hoisted_54, _toDisplayString(candidate.Name), 1),\n _createElementVNode(\"span\", _hoisted_55, _toDisplayString(candidate.Speech), 1)\n ], 8, _hoisted_53)\n ]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (!_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_56, [\n _createElementVNode(\"div\", _hoisted_57, [\n _createElementVNode(\"p\", _hoisted_58, _toDisplayString(_ctx.$t(\"Candidates Ranked\")), 1)\n ]),\n (_ctx.store.username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_59, [\n _createElementVNode(\"div\", _hoisted_60, [\n _createVNode(_component_draggable, {\n modelValue: _ctx.rankedCandidates,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.rankedCandidates) = $event)),\n \"item-key\": \"Id\",\n \"ghost-class\": \"vote-drag-box\",\n filter: \".vote-drag-box\",\n group: { name: 'candidates' },\n onAdd: _cache[2] || (_cache[2] = ($event: any) => (_ctx.changed = true)),\n onSort: _cache[3] || (_cache[3] = ($event: any) => (_ctx.changed = true))\n }, {\n default: _withCtx(() => [\n (!_ctx.rankedCandidates.length)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_61, \"Drag candidates here to vote\"))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.rankedCandidates, (candidate, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `rankedCandidate${i}`,\n class: \"vote-item grab\"\n }, [\n _hoisted_62,\n _createElementVNode(\"div\", _hoisted_63, [\n _createElementVNode(\"span\", null, _toDisplayString(++i), 1)\n ]),\n candidate\n ? (_openBlock(), _createElementBlock(\"p\", {\n key: 0,\n \"data-id\": candidate.Id,\n class: \"candidate-name\"\n }, [\n _createElementVNode(\"span\", _hoisted_65, _toDisplayString(candidate.Name), 1),\n _createElementVNode(\"span\", _hoisted_66, _toDisplayString(candidate.Speech), 1)\n ], 8, _hoisted_64))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n (_ctx.rankedCandidates.length && _ctx.changed)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"eco-button vote-button\",\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.vote && _ctx.vote(...args)))\n }, [\n _createElementVNode(\"span\", _hoisted_67, _toDisplayString(_ctx.$t(\"Submit Vote\")), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_68, [\n (!_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_69, [\n (!_ctx.election.TotalVotes)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_70, [\n _createElementVNode(\"span\", _hoisted_71, _toDisplayString(_ctx.$t(\"No one has voted yet\")), 1),\n _hoisted_72\n ]))\n : (_ctx.rounds.length)\n ? (_openBlock(), _createElementBlock(\"table\", _hoisted_73, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", _hoisted_74, [\n _createElementVNode(\"td\", _hoisted_75, [\n _createElementVNode(\"span\", _hoisted_76, _toDisplayString(_ctx.$t(\"Votes per round\")), 1)\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", _hoisted_77, [\n _createElementVNode(\"td\", _hoisted_78, [\n _createElementVNode(\"span\", _hoisted_79, _toDisplayString(_ctx.$t(\"Candidates\")), 1)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.rounds, (round, i) => {\n return (_openBlock(), _createElementBlock(\"td\", {\n key: `roundHead${i}`\n }, [\n _createElementVNode(\"span\", _hoisted_80, _toDisplayString(_ctx.$t(\"Round\")), 1),\n _createTextVNode(\" \" + _toDisplayString(++i), 1)\n ]))\n }), 128))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Results?.ChoiceRanks, (candidate, i) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `candVote${i}`,\n class: \"table-middle table-alternating-color-1\",\n \"data-candidate\": \"48\"\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left\",\n innerHTML: candidate.MarkedUpNameString\n }, null, 8, _hoisted_81),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(candidate.VotesPerRound, (vote, j) => {\n return (_openBlock(), _createElementBlock(\"td\", {\n key: `roundVote${j}`,\n class: \"round-vote\"\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(\"UserVotes\")) + \": \" + _toDisplayString(vote.UserVotes), 1),\n _hoisted_82,\n (vote.TwitchVotes!)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_83, _toDisplayString(_ctx.$t(\"TwitchVotes\")) + \": \" + _toDisplayString(Math.round(vote.TwitchVotes* 100) / 100), 1))\n : _createCommentVNode(\"\", true),\n _hoisted_84,\n (vote.Total)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_85, _toDisplayString(_ctx.$t(\"Total\")) + \": \" + _toDisplayString(Math.round(vote.Total * 100) / 100), 1))\n : _createCommentVNode(\"\", true),\n _hoisted_86\n ]))\n }), 128))\n ]))\n }), 128)),\n _createElementVNode(\"tr\", _hoisted_87, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_88, _toDisplayString(_ctx.$t(\"Total\")), 1)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(_ctx.totalAllVotes), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.election.BooleanElection && _ctx.election.TotalVotes)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_89))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_90, [\n _createElementVNode(\"ul\", _hoisted_91, [\n (_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_92, [\n _createElementVNode(\"span\", _hoisted_93, _toDisplayString(_ctx.$t(\"Ended\")), 1),\n _hoisted_94,\n _createElementVNode(\"span\", { innerHTML: _ctx.timeEndAgo }, null, 8, _hoisted_95),\n _createElementVNode(\"span\", _hoisted_96, _toDisplayString(_ctx.$t(\"ago\")), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"li\", _hoisted_97, [\n _createElementVNode(\"span\", _hoisted_98, _toDisplayString(_ctx.$t(\"Since\")), 1),\n _hoisted_99,\n _createElementVNode(\"span\", { innerHTML: _ctx.timeStartAgo }, null, 8, _hoisted_100),\n _createElementVNode(\"span\", _hoisted_101, _toDisplayString(_ctx.$t(\"ago\")), 1)\n ])),\n (!_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_102, [\n _createElementVNode(\"span\", _hoisted_103, _toDisplayString(_ctx.$t(\"Voting will end in\")), 1),\n _hoisted_104,\n _createElementVNode(\"span\", { innerHTML: _ctx.timeToElectionEnd }, null, 8, _hoisted_105)\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_106, [\n _createTextVNode(_toDisplayString(_ctx.totalAllVotes) + \" \", 1),\n (_ctx.totalAllVotes == 1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_107, _toDisplayString(_ctx.$t(\"Vote\")), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_108, _toDisplayString(_ctx.$t(\"Votes\")), 1)),\n _createElementVNode(\"span\", _hoisted_109, \" \" + _toDisplayString(_ctx.$t(\"Total\")), 1),\n _hoisted_110\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished && _ctx.totalTwitchVotes > 0)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_111, [\n _createTextVNode(_toDisplayString(_ctx.totalUserVotes) + \" \", 1),\n (_ctx.totalUserVotes == 1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_112, _toDisplayString(_ctx.$t(\"Vote\")), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_113, _toDisplayString(_ctx.$t(\"UserVotes\")), 1)),\n _createElementVNode(\"span\", _hoisted_114, \" \" + _toDisplayString(_ctx.$t(\"Total\")), 1),\n _hoisted_115\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished && _ctx.totalTwitchVotes > 0)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_116, [\n _createTextVNode(_toDisplayString(_ctx.totalTwitchVotes) + \" \", 1),\n (_ctx.totalTwitchVotes== 1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_117, _toDisplayString(_ctx.$t(\"Vote\")), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_118, _toDisplayString(_ctx.$t(\"TwitchVotes\")), 1)),\n _createElementVNode(\"span\", _hoisted_119, \" \" + _toDisplayString(_ctx.$t(\"Total\")), 1),\n _hoisted_120\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_121, [\n _hoisted_122,\n _createElementVNode(\"a\", _hoisted_123, _toDisplayString(_ctx.$t(\"Instant Runoff Voting\")), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"li\", null, [\n _createVNode(_component_ElectionProcessModal, {\n modelValue: _ctx.showElectionProcessModal,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.showElectionProcessModal) = $event)),\n election: _ctx.election\n }, null, 8, [\"modelValue\", \"election\"]),\n _createElementVNode(\"span\", _hoisted_124, _toDisplayString(_ctx.$t(\"This election is conducted using the rules of \")), 1),\n _createElementVNode(\"a\", {\n href: \"#\",\n class: \"election-process-info\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.showElectionProcessModal = true)),\n style: {\"text-decoration\":\"none\"}\n }, _toDisplayString(_ctx.election.ElectionProcess.Name), 1),\n _hoisted_125\n ]),\n _createElementVNode(\"li\", null, [\n _createVNode(_component_AllVotesModal, {\n modelValue: _ctx.showAllVotes,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.showAllVotes) = $event)),\n election: _ctx.election,\n votes: _ctx.userVotesData\n }, null, 8, [\"modelValue\", \"election\", \"votes\"]),\n _createElementVNode(\"span\", {\n class: \"view-all-votes localize\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.showAllVotes = true))\n }, _toDisplayString(_ctx.$t(\"View All Votes\")), 1)\n ])\n ])\n ]),\n _hoisted_126\n ]),\n _createElementVNode(\"div\", _hoisted_127, [\n _createElementVNode(\"div\", _hoisted_128, [\n (_ctx.election.Comments.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_129, [\n _createElementVNode(\"div\", _hoisted_130, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Comments, (comment, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `comment${i}`,\n class: \"comment-section1\"\n }, [\n _createElementVNode(\"div\", _hoisted_131, [\n _createTextVNode(_toDisplayString(comment.Username) + \" \", 1),\n _createElementVNode(\"span\", {\n class: \"law-discussion-time\",\n innerHTML: `Posted on ${_ctx.sec2worldTime(comment.Timestamp)}`\n }, null, 8, _hoisted_132)\n ]),\n (comment.Text)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_133, _toDisplayString(comment.Text), 1))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.election.Finished)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_134, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: \"comment\",\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.commentText) = $event)),\n class: \"election-comment form-control localize\",\n placeholder: _ctx.$t('Enter your response')\n }, null, 8, _hoisted_135), [\n [_vModelText, _ctx.commentText]\n ]),\n _createElementVNode(\"div\", _hoisted_136, [\n _createElementVNode(\"button\", {\n id: \"addGraph\",\n class: \"fa fa-bar-chart comment-button add-graph-button\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.showGraphComposer=!_ctx.showGraphComposer))\n }),\n _createElementVNode(\"button\", {\n class: \"fa fa-globe comment-button add-map-button\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.showWorldMap=!_ctx.showWorldMap))\n }),\n _createElementVNode(\"button\", {\n id: \"pushComment\",\n disabled: !this.commentText,\n onClick: _cache[12] || (_cache[12] = \n//@ts-ignore\n(...args) => (_ctx.comment && _ctx.comment(...args))),\n class: \"eco-button\"\n }, [\n _createElementVNode(\"span\", _hoisted_138, _toDisplayString(_ctx.$t(\"Submit\")), 1)\n ], 8, _hoisted_137),\n _hoisted_139\n ]),\n _createElementVNode(\"div\", _hoisted_140, [\n _createElementVNode(\"button\", _hoisted_141, [\n _createElementVNode(\"span\", _hoisted_142, _toDisplayString(_ctx.$t(\"Cancel\")), 1)\n ]),\n _createElementVNode(\"button\", {\n id: \"submit\",\n disabled: !this.commentText,\n onClick: _cache[13] || (_cache[13] = \n//@ts-ignore\n(...args) => (_ctx.comment && _ctx.comment(...args))),\n class: \"eco-button\",\n style: {\"display\":\"block\"}\n }, [\n _createElementVNode(\"span\", _hoisted_144, _toDisplayString(_ctx.$t(\"Submit\")), 1)\n ], 8, _hoisted_143)\n ]),\n _createElementVNode(\"div\", _hoisted_145, [\n (_ctx.showGraphComposer)\n ? (_openBlock(), _createElementBlock(\"iframe\", _hoisted_146))\n : _createCommentVNode(\"\", true),\n (_ctx.showWorldMap)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_147, [\n _createVNode(_component_WorldMap)\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_148\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n}","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, mergeProps as _mergeProps, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f400a67\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"modal__content\" }\nconst _hoisted_2 = { class: \"fancy-all-votes\" }\nconst _hoisted_3 = { class: \"current-rankings\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"flat-table table\"\n}\nconst _hoisted_5 = {\n class: \"th\",\n colspan: \"5\"\n}\nconst _hoisted_6 = {\n key: 0,\n class: \"localize\"\n}\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = {\n class: \"table-key\",\n colspan: \"12\"\n}\nconst _hoisted_9 = { class: \"localize\" }\nconst _hoisted_10 = { class: \"table-top table-top-left table-key\" }\nconst _hoisted_11 = { class: \"localize\" }\nconst _hoisted_12 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n\n return (_openBlock(), _createBlock(_component_vue_final_modal, _mergeProps(_ctx.$attrs, {\n classes: \"modal-container\",\n \"content-class\": \"modal-content\",\n \"click-to-close\": true,\n \"esc-to-close\": true\n }), {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.election && _ctx.election.Name)\n ? (_openBlock(), _createElementBlock(\"table\", _hoisted_4, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", _hoisted_5, [\n (_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString(_ctx.$t(\"All Votes\")), 1))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (!_ctx.election.BooleanElection)\n ? (_openBlock(), _createElementBlock(\"tr\", _hoisted_7, [\n _createElementVNode(\"td\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t(\"Candidates Ranked\")), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t(\"Voters\")), 1)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.election.Choices, (choice, i) => {\n return (_openBlock(), _createElementBlock(\"td\", {\n key: `choiceRow${i}`,\n class: \"table-top\"\n }, _toDisplayString(choice.Name), 1))\n }), 128))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.votes, (vote, i) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `userVote${i}`,\n class: \"table-middle table-alternating-color-2\"\n }, [\n _createElementVNode(\"td\", null, _toDisplayString(vote.Voter), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(this.getUserVotes(vote), (choice, v) => {\n return (_openBlock(), _createElementBlock(\"td\", {\n key: `userChoice${v}`,\n class: \"rank\"\n }, [\n (choice > -1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, _toDisplayString(_ctx.election.BooleanElection ? \"✓\" : choice), 1))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _: 1\n }, 16))\n}","\r\n import { defineComponent } from \"vue\";\r\n import { definitions } from \"@/types/EcoWebServer\";\r\n\r\n type RunoffVoteV1 = definitions[\"Eco.WebServer.DataTransferObjects.V1.RunoffVoteV1\"];\r\n\r\n export default defineComponent({\r\n name: 'AllVotesModal',\r\n inheritAttrs: false,\r\n props: {\r\n election: {\r\n type: Object,\r\n required: true,\r\n },\r\n votes: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n methods: {\r\n // Returns an array of rank values matching the user's vote choices\r\n getUserVotes(vote: RunoffVoteV1): Array {\r\n let choices: Array = [];\r\n if (this.election && this.votes) {\r\n for (let c = 0; c < this.election.Choices.length; ++c) {\r\n const option = this.election.Choices[c];\r\n let rankIndex = vote.RankedVotes!.indexOf(option.Id);\r\n if (this.election.BooleanElection) {\r\n choices.push(rankIndex == 0 ? 1 : -1);\r\n } else {\r\n choices.push(rankIndex > -1 ? rankIndex + 1 : rankIndex);\r\n }\r\n }\r\n }\r\n return choices;\r\n }\r\n }\r\n });\r\n","import { render } from \"./AllVotesModal.vue?vue&type=template&id=4f400a67&scoped=true&ts=true\"\nimport script from \"./AllVotesModal.vue?vue&type=script&lang=ts\"\nexport * from \"./AllVotesModal.vue?vue&type=script&lang=ts\"\n\nimport \"./AllVotesModal.vue?vue&type=style&index=0&id=4f400a67&scoped=true&lang=css\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4f400a67\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./ElectionProcessModal.vue?vue&type=template&id=16d0e3c1&scoped=true\"\nimport script from \"./ElectionProcessModal.vue?vue&type=script&lang=js\"\nexport * from \"./ElectionProcessModal.vue?vue&type=script&lang=js\"\n\nimport \"./ElectionProcessModal.vue?vue&type=style&index=0&id=16d0e3c1&scoped=true&lang=css\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-16d0e3c1\"]])\n\nexport default __exports__","\r\nimport 'bootstrap';\r\nimport { defineComponent } from 'vue';\r\nimport { default as axios, AxiosError } from 'axios';\r\nimport Highcharts from 'highcharts';\r\nimport { VueDraggableNext } from 'vue-draggable-next'\r\nimport { decode } from '@/helpers/data';\r\nimport { sec2time, sec2worldTime } from '@/helpers/time';\r\nimport 'bootstrap';\r\n\r\nimport { useMainStore } from '@/stores';\r\nimport { definitions } from \"@/types/EcoWebServer\";\r\n\r\nimport WorldMap from '@/components/WorldMap.vue';\r\nimport TMPLabel from \"@/components/TMPLabel.vue\";\r\n\r\nimport AllVotesModal from '@/components/modals/AllVotesModal.vue';\r\nimport ElectionProcessModal from '@/components/modals/ElectionProcessModal.vue';\r\n\r\ntype GameServerElectionV1 = definitions[\"Eco.WebServer.DataTransferObjects.V1.GameServerElectionV1\"];\r\ntype RunoffVoteV1 = definitions[\"Eco.WebServer.DataTransferObjects.V1.RunoffVoteV1\"];\r\ntype ElectionChoiceID = definitions[\"Eco.Gameplay.Civics.ElectionChoiceID\"];\r\ntype RoundsForChoice = definitions[\"Eco.Gameplay.Civics.Elections.RoundsForChoice\"];\r\ntype VoteCounts = definitions[\"Eco.Gameplay.Civics.Elections.VoteCounts\"];\r\n\r\ninterface Candidate {\r\n Id: number;\r\n Name: string;\r\n Votes: number;\r\n Speech: string;\r\n}\r\n\r\nexport default defineComponent({\r\n components: {\r\n WorldMap,\r\n draggable: VueDraggableNext,\r\n TMPLabel,\r\n AllVotesModal,\r\n ElectionProcessModal,\r\n },\r\n setup() {\r\n const store = useMainStore();\r\n\r\n return { store };\r\n },\r\n data() {\r\n return {\r\n election: {} as GameServerElectionV1,\r\n votes: [] as Array,\r\n candidates: [] as Array,\r\n rankedCandidates: [] as Array,\r\n test: [{ name: 'test' }],\r\n timeAtStart: Date.now() / 1000,\r\n commentText: '',\r\n changed: false,\r\n showAllVotes: false,\r\n showElectionProcessModal: false,\r\n userVotes: [] as Array,\r\n userVotesData: [] as Array,\r\n showGraphComposer: false,\r\n showWorldMap: false\r\n }\r\n },\r\n computed: {\r\n id(): string {\r\n return this.$route.params.id;\r\n },\r\n timeEndAgo(): string {\r\n return sec2time(this.election.TimeEndAgo!);\r\n },\r\n timeStartAgo(): string {\r\n return sec2time(this.election.TimeStartAgo!);\r\n },\r\n timeToElectionEnd(): string {\r\n return sec2time(Math.max(0, -this.election.TimeEndAgo! - this.secondsFromStart));\r\n },\r\n secondsFromStart(): number {\r\n return Date.now() / 1000 - this.timeAtStart;\r\n },\r\n username(): string | null {\r\n return this.store.username;\r\n },\r\n rounds(): VoteCounts[] {\r\n const ranks = this.election.Results!.ChoiceRanks!;\r\n if (!ranks.length || !ranks[0].VotesPerRound) return [];\r\n return ranks[0].VotesPerRound;\r\n },\r\n totalTwitchVotes(): any {\r\n let totalVote: any = 0;\r\n if(this.election.Results && this.election.Results.ChoiceRanks) {\r\n this.election.Results.ChoiceRanks.forEach(votes => {\r\n if(votes.VotesPerRound) {\r\n totalVote += votes.VotesPerRound[0].TwitchVotes\r\n }\r\n });\r\n }\r\n return Math.round(totalVote * 100) / 100;\r\n },\r\n totalUserVotes(): any {\r\n let totalVote: any = 0;\r\n if (this.election.Results && this.election.Results.ChoiceRanks) {\r\n this.election.Results.ChoiceRanks.forEach(votes => {\r\n if (votes.VotesPerRound) {\r\n totalVote += votes.VotesPerRound[0].UserVotes\r\n }\r\n });\r\n }\r\n return Math.round(totalVote * 100) / 100;\r\n },\r\n totalAllVotes(): number | null {\r\n let totalVote: any = 0;\r\n if (this.election.Results && this.election.Results.ChoiceRanks) {\r\n this.election.Results.ChoiceRanks.forEach(votes => {\r\n if (votes.VotesPerRound) {\r\n totalVote += votes.VotesPerRound[0].Total\r\n }\r\n\r\n });\r\n }\r\n return Math.round(totalVote * 100) / 100;\r\n },\r\n\r\n },\r\n watch: {\r\n id() {\r\n this.fetch();\r\n },\r\n },\r\n mounted() {\r\n this.fetch();\r\n },\r\n methods: {\r\n handleTMPLinkClick(event) {\r\n if (event.tmpLinkMethod == \"click:ShowAllVotes\") {\r\n this.showAllVotes = true;\r\n }\r\n },\r\n darkenHexColor(hexColor, amount = 20) {\r\n // Remove the '#' symbol if present\r\n hexColor = hexColor.replace('#', '');\r\n\r\n // Convert hex color to RGB format\r\n const r = parseInt(hexColor.substr(0, 2), 16);\r\n const g = parseInt(hexColor.substr(2, 2), 16);\r\n const b = parseInt(hexColor.substr(4, 2), 16);\r\n\r\n // Calculate darker RGB values\r\n const darkR = Math.max(r - amount, 0);\r\n const darkG = Math.max(g - amount, 0);\r\n const darkB = Math.max(b - amount, 0);\r\n\r\n // Convert the darker RGB values back to hex format\r\n const darkHex = (\r\n (darkR < 16 ? '0' : '') + darkR.toString(16) +\r\n (darkG < 16 ? '0' : '') + darkG.toString(16) +\r\n (darkB < 16 ? '0' : '') + darkB.toString(16)\r\n );\r\n\r\n return `#${darkHex}`;\r\n },\r\n getColorForCandidate(candidateName) {\r\n if (candidateName === 'Yes') {\r\n return '#00FF00'; // Green\r\n } else if (candidateName === 'No') {\r\n return '#FF0000'; // Red\r\n } else {\r\n // Generate a random unique color\r\n const randomColor = Math.floor(Math.random()*16777215).toString(16);\r\n return `#${randomColor}`;\r\n }\r\n },\r\n drawPieChartIfRequired() {\r\n // Check if a pie chart is required. If not, return\r\n if (!this.election.BooleanElection || !this.election.TotalVotes) {\r\n return;\r\n }\r\n\r\n // Create a dictionary to store the combined votes using the choice ranks and candidates\r\n const getChoices: any = this.election.Results?.ChoiceRanks;\r\n const combinedVotes: any = {};\r\n\r\n // Combine the elements based on matching IDs\r\n this.candidates.forEach(candidate => {\r\n const matchingChoice = getChoices.find(choice => choice.ChoiceID.Id === candidate.Id);\r\n\r\n if (matchingChoice) {\r\n const color = this.getColorForCandidate(candidate.Name);\r\n combinedVotes[candidate.Id] = {\r\n candidate: candidate,\r\n choice: matchingChoice,\r\n color: color\r\n };\r\n }\r\n });\r\n\r\n // Calculate our chart datasets for passing to Highcharts\r\n const percentData: any = [];\r\n const voteData: any = [];\r\n\r\n // Iterate through our combined votes and populate our various chart datasets\r\n for (let choiceId in combinedVotes)\r\n {\r\n const voteInfo = combinedVotes[choiceId];\r\n const candidateName = voteInfo.candidate.Name;\r\n const color = voteInfo.color;\r\n\r\n const choiceVotes = voteInfo.choice.VotesPerRound[0];\r\n const userVotes = choiceVotes.UserVotes;\r\n const twitchVotes = choiceVotes.TwitchVotes;\r\n const totalVotes = choiceVotes.Total;\r\n const percent = Math.round((totalVotes / this.election.TotalVotes!) * 100);\r\n\r\n percentData.push({\r\n name: `${candidateName}: ${percent}%`,\r\n y: percent,\r\n color: color\r\n });\r\n\r\n voteData.push({\r\n name: `User Votes`,\r\n y: userVotes,\r\n color: this.darkenHexColor(color, 40)\r\n });\r\n\r\n voteData.push({\r\n name: `Twitch Votes`,\r\n y: twitchVotes,\r\n color: this.darkenHexColor(color, 40)\r\n });\r\n }\r\n\r\n // Render the pie chart with the computed data sets\r\n setTimeout(() => {\r\n // @ts-ignore\r\n Highcharts.chart('votingResultsChart', {\r\n chart: {\r\n type: 'pie',\r\n style: { fontFamily: 'Abel' },\r\n spacingBottom: 0,\r\n spacingTop: 0,\r\n spacingLeft: 0,\r\n spacingRight: 0,\r\n marginBottom: 0,\r\n marginTop: 0,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n width: 500,\r\n height: 500,\r\n backgroundColor: 'transparent',\r\n },\r\n title: '',\r\n credits: {\r\n enabled: false\r\n },\r\n plotOptions: {\r\n pie: {\r\n shadow: false,\r\n center: ['50%', '50%']\r\n }\r\n },\r\n series: [{\r\n name: 'Choice',\r\n data: voteData,\r\n size: '40%',\r\n dataLabels: {\r\n color: '#ffffff',\r\n distance: -50,\r\n style: {\r\n fontSize: 14\r\n }\r\n },\r\n tooltip: {\r\n valueSuffix: 'Votes'\r\n },\r\n }, {\r\n name: 'Votes',\r\n data: percentData,\r\n size: '50%',\r\n innerSize: '75%',\r\n id: 'Votes',\r\n tooltip: {\r\n valueSuffix: '%'\r\n },\r\n }],\r\n responsive: {\r\n rules: [{\r\n condition: {\r\n maxWidth: 400\r\n },\r\n chartOptions: {\r\n series: [{}, {\r\n id: 'Votes',\r\n dataLabels: {\r\n enabled: false\r\n }\r\n }]\r\n }\r\n }]\r\n }\r\n });\r\n }, 500);\r\n },\r\n async fetch() {\r\n if (!this.id) return;\r\n\r\n try\r\n {\r\n this.election = (await axios.get(`/elections/${this.id}`)).data;\r\n\r\n let { data }: { data: Array } = await axios.get(`/elections/votes?Id=${this.id}`);\r\n this.userVotesData = data;\r\n this.userVotes = [];\r\n\r\n // Identify our ranked votes\r\n data.forEach((votes, i) => {\r\n if (votes.Voter == this.store.username)\r\n this.userVotes = votes.RankedVotes ?? [];\r\n });\r\n\r\n const choices: Record = {};\r\n this.candidates = [];\r\n\r\n const choiceRanks: Record = {};\r\n this.election.Results!.ChoiceRanks!.forEach((choice, i) => {\r\n choiceRanks[choice.ChoiceID!.Id!] = choice;\r\n });\r\n\r\n this.election.Choices!.forEach((choice, i) => {\r\n\r\n var voteCount = choiceRanks[choice.Id!].FirstRoundVotes!;\r\n var speech = decode(choice.Speech!);\r\n\r\n var newChoice = { Id: choice.Id!, Name: choice.Name!, Votes: voteCount, Speech: speech };\r\n choices[choice.Id!] = newChoice;\r\n\r\n if (this.election.BooleanElection || !this.userVotes.includes(choice.Id!)) {\r\n this.candidates.push(newChoice);\r\n }\r\n });\r\n\r\n this.rankedCandidates = this.userVotes.map(id => choices[id]);\r\n this.drawPieChartIfRequired();\r\n }\r\n catch (ex) {\r\n console.log(ex);\r\n this.$router.replace(\"/elections\");\r\n }\r\n },\r\n async vote(choiceId: number) {\r\n\r\n if (!this.store.username)\r\n return;\r\n\r\n let votes: Array = this.election.BooleanElection ? [choiceId] : this.rankedCandidates.map(candidate => candidate.Id);\r\n\r\n const vote: RunoffVoteV1 = {\r\n Voter: this.store.username,\r\n ElectionID: parseInt(this.id),\r\n RankedVotes: votes,\r\n };\r\n\r\n try {\r\n await axios.post('/elections/vote', vote);\r\n\r\n this.$swal('Success', 'Your vote has been counted', 'success');\r\n this.fetch();\r\n } catch (e) {\r\n if (e instanceof AxiosError) {\r\n if (e.response?.status == 401) {\r\n // ideally this shouldn't happen\r\n this.$swal('Oops..', \"You must be logged in to do that\", 'error');\r\n } else {\r\n this.$swal('Oops..', e.response?.data.Message, 'error');\r\n }\r\n } else {\r\n this.$swal('Oops..', 'Unknown error trying to vote', 'error');\r\n }\r\n }\r\n },\r\n async comment() {\r\n if (!this.store.username) {\r\n return this.$swal('Forbidden', 'To add comment you need to access from the game server', 'error');\r\n }\r\n\r\n if (!this.commentText.trim()) return;\r\n\r\n try {\r\n await axios.post(`/elections/addcomment?electionId=${this.id}`, {\r\n Username: this.username,\r\n Text: this.commentText\r\n });\r\n\r\n this.commentText = '';\r\n this.fetch();\r\n } catch (e) {\r\n if (e instanceof AxiosError) {\r\n if (e.response?.status == 401) {\r\n // ideally this shouldn't happen\r\n this.$swal('Oops..', \"You must be logged in to do that\", 'error');\r\n } else {\r\n this.$swal('Oops..', e.response?.data?.Message ?? e.toJSON(), 'error');\r\n }\r\n }\r\n }\r\n },\r\n sec2worldTime\r\n }\r\n});\r\n\r\n","import { render } from \"./Election.vue?vue&type=template&id=8468a734&scoped=true&ts=true\"\nimport script from \"./Election.vue?vue&type=script&lang=ts\"\nexport * from \"./Election.vue?vue&type=script&lang=ts\"\n\nimport \"./Election.vue?vue&type=style&index=0&id=8468a734&scoped=true&lang=scss\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8468a734\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"canvas\", { id: \"c\" }, null, -1)\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"h4\", {\n id: \"status\",\n class: \"error\"\n}, null, -1)\nconst _hoisted_3 = { class: \"container-fluid page-dashboard\" }\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = { class: \"elections-wrapper col-lg-12\" }\nconst _hoisted_6 = {\n id: \"elections-page-instructions-wrapper\",\n class: \"section-wrapper\"\n}\nconst _hoisted_7 = { id: \"section-title\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1)\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = {\n key: 0,\n id: \"section-title\"\n}\nconst _hoisted_11 = {\n id: \"menu-running-elections\",\n class: \"running-elections-wrapper collapse in\",\n \"aria-expanded\": \"true\"\n}\nconst _hoisted_12 = {\n key: 0,\n class: \"fa fa-exclamation-circle\",\n style: {\"color\":\"red\"},\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"right\",\n title: \"You have not voted on this issue.\"\n}\nconst _hoisted_13 = {\n key: 1,\n id: \"section-title\"\n}\nconst _hoisted_14 = {\n id: \"menu-previous-elections\",\n class: \"previous-elections-wrapper collapse in\",\n \"aria-expanded\": \"true\"\n}\nconst _hoisted_15 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_TMPLabel = _resolveComponent(\"TMPLabel\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _hoisted_1,\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t(\"Eco Elections\")), 1)\n ]),\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t(\"Select an election from the menu\")), 1)\n ]),\n _hoisted_8,\n (_ctx.store.electionsLoaded && (_ctx.store.elections.past.length || _ctx.store.elections.running.length))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n (_ctx.store.elections.running.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t(\"Running Elections\")), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"ul\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.store.elections.running, (election) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: `election${election.Id}`\n }, [\n _createVNode(_component_router_link, {\n to: `/election/${election.Id}`,\n class: \"running-election\",\n \"data-guid\": election.Id\n }, {\n default: _withCtx(() => [\n _createVNode(_component_TMPLabel, {\n text: election.Name\n }, null, 8, [\"text\"]),\n (election.PendingVote)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_12))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"to\", \"data-guid\"])\n ]))\n }), 128))\n ]),\n (_ctx.store.elections.past.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t(\"Previous Elections\")), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"ul\", _hoisted_14, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.store.elections.past, (election) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: `election${election.Id}`\n }, [\n _createVNode(_component_router_link, {\n to: `/election/${election.Id}`,\n class: \"previous-election\",\n \"data-guid\": election.Id\n }, {\n default: _withCtx(() => [\n _createVNode(_component_TMPLabel, {\n text: election.Name\n }, null, 8, [\"text\"])\n ]),\n _: 2\n }, 1032, [\"to\", \"data-guid\"])\n ]))\n }), 128))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t(\"There have been no elections yet\")), 1)\n ]))\n ])\n ])\n ])\n ]))\n}","\r\n import { defineComponent } from \"vue\";\r\n import TMPLabel from \"../components/TMPLabel.vue\";\r\n import { useMainStore } from \"../stores\";\r\n\r\n export default defineComponent({\r\n setup() {\r\n const store = useMainStore();\r\n\r\n return { store };\r\n },\r\n components: {\r\n TMPLabel\r\n },\r\n mounted() {\r\n this.store.fetchElections();\r\n },\r\n });\r\n","import { render } from \"./Elections.vue?vue&type=template&id=0a5d627a&ts=true\"\nimport script from \"./Elections.vue?vue&type=script&lang=ts\"\nexport * from \"./Elections.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Teleport as _Teleport, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"container-fluid\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = { class: \"elections-wrapper col-lg-12\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"div\", {\n id: \"election-name-wrapper\",\n class: \"election-name\",\n style: {}\n}, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"election-name\" }, [\n /*#__PURE__*/_createElementVNode(\"h2\", null, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"name-box\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"election-name-title\" }, \"Elected Officials\")\n ])\n ])\n ])\n], -1)\nconst _hoisted_5 = {\n id: \"elections-page-instructions-wrapper\",\n class: \"section-wrapper\"\n}\nconst _hoisted_6 = { class: \"section-wrapper-2\" }\nconst _hoisted_7 = { class: \"elected-titles\" }\nconst _hoisted_8 = {\n id: \"#elected-officials-table\",\n class: \"flat-table table\",\n style: {\"text-align\":\"center\",\"min-width\":\"500px\"}\n}\nconst _hoisted_9 = { class: \"title-heading\" }\nconst _hoisted_10 = {\n class: \"th\",\n colspan: \"3\"\n}\nconst _hoisted_11 = { class: \"localize\" }\nconst _hoisted_12 = { id: \"elected-titles-list\" }\nconst _hoisted_13 = { class: \"table-top\" }\nconst _hoisted_14 = { class: \"table-top-left\" }\nconst _hoisted_15 = { class: \"localize\" }\nconst _hoisted_16 = { class: \"table-top-left\" }\nconst _hoisted_17 = { class: \"localize\" }\nconst _hoisted_18 = [\"title\"]\nconst _hoisted_19 = [\"title-id\", \"onClick\"]\nconst _hoisted_20 = { class: \"table-left\" }\nconst _hoisted_21 = {\n id: \"titlesModal\",\n class: \"modal fade in\",\n role: \"dialog\"\n}\nconst _hoisted_22 = { class: \"modal-dialog modal-xl modal-dialog-centered\" }\nconst _hoisted_23 = { class: \"fancy-election-title\" }\nconst _hoisted_24 = { id: \"election-title-modal-table-placeholder\" }\nconst _hoisted_25 = {\n key: 0,\n class: \"flat-table table\",\n style: {\"width\":\"100%\"}\n}\nconst _hoisted_26 = { class: \"title-heading\" }\nconst _hoisted_27 = {\n colspan: \"3\",\n class: \"th\"\n}\nconst _hoisted_28 = [\"title\"]\nconst _hoisted_29 = { class: \"table-left election-rule-description\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"table\", _hoisted_8, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", _hoisted_9, [\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t(\"Elected Officials\")), 1)\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", _hoisted_12, [\n _createElementVNode(\"tr\", _hoisted_13, [\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t(\"Title\")), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t(\"Title Holders\")), 1)\n ])\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.titles, (title) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n class: \"table-middle\",\n key: `title${title.Id}`\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n title: title.Name\n }, [\n _createElementVNode(\"a\", {\n href: \"#\",\n class: \"title-name\",\n \"title-id\": title.Id,\n onClick: ($event: any) => (_ctx.table = title),\n \"data-toggle\": \"modal\",\n \"data-target\": \"#titlesModal\"\n }, _toDisplayString(title.Name), 9, _hoisted_19)\n ], 8, _hoisted_18),\n _createElementVNode(\"td\", _hoisted_20, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(title.OccupantNames, (occupant) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `occupant${occupant}`\n }, [\n _createElementVNode(\"em\", null, _toDisplayString(occupant), 1)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\n ])\n ])\n ])\n ])\n ])\n ])\n ])\n ]),\n (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"div\", _hoisted_22, [\n _createElementVNode(\"div\", _hoisted_23, [\n _createElementVNode(\"div\", _hoisted_24, [\n (_ctx.table.Id)\n ? (_openBlock(), _createElementBlock(\"table\", _hoisted_25, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", _hoisted_26, [\n _createElementVNode(\"td\", _hoisted_27, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.table.Name), 1)\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.table.Table.slice(1), (rows) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `row${rows}`,\n class: \"table-middle\"\n }, [\n _createElementVNode(\"td\", {\n class: \"table-left election-rule\",\n \"data-toggle\": \"tooltip\",\n \"data-container\": \"body\",\n \"data-placement\": \"left\",\n title: rows[1]\n }, _toDisplayString(rows[0]), 9, _hoisted_28),\n _createElementVNode(\"td\", _hoisted_29, _toDisplayString(rows[2]), 1)\n ]))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ])\n ]))\n ], 64))\n}","\r\n import { defineComponent } from 'vue';\r\n import { useMainStore } from '../stores';\r\n\r\n export default defineComponent({\r\n setup() {\r\n const store = useMainStore();\r\n\r\n return { store };\r\n },\r\n data() {\r\n return {\r\n table: {}\r\n }\r\n },\r\n computed: {\r\n titles() {\r\n return this.store.elections.titles;\r\n }\r\n }\r\n });\r\n","import { render } from \"./Officials.vue?vue&type=template&id=0037547d&ts=true\"\nimport script from \"./Officials.vue?vue&type=script&lang=ts\"\nexport * from \"./Officials.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n","import { render } from \"./Profiling.vue?vue&type=template&id=1845e13f\"\nimport script from \"./Profiling.vue?vue&type=script&lang=js\"\nexport * from \"./Profiling.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9a7e2a58\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"plugin-page\" }\nconst _hoisted_2 = [\"src\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"iframe\", {\n src: `/plugins/${_ctx.plugin?.PluginIndexUrl}`\n }, null, 8, _hoisted_2)\n ]))\n}","\r\n import { defineComponent } from \"vue\";\r\n import { useMainStore } from \"../stores\";\r\n\r\n export default defineComponent({\r\n setup() {\r\n const store = useMainStore();\r\n return { store };\r\n },\r\n computed: {\r\n pluginTypeName(): string { /* Retrieves our plugin identifier from the route slug */\r\n return this.$route.params.plugin;\r\n },\r\n plugin(): any { /* Returns our plugin instance currently stored in session */\r\n return this.store.webPlugins.find(this.findWebPlugin);\r\n }\r\n },\r\n mounted() {\r\n this.store.fetchWebPlugins(); // Retrieve and store our web plugins on page load.\r\n },\r\n methods: {\r\n findWebPlugin(plugin) { /* Helper function to check if a plugin instance matches our plugin identifier retrieved from the route */\r\n return plugin.TypeName == this.pluginTypeName;\r\n }\r\n }\r\n });\r\n","import { render } from \"./Plugin.vue?vue&type=template&id=9a7e2a58&scoped=true&ts=true\"\nimport script from \"./Plugin.vue?vue&type=script&lang=ts\"\nexport * from \"./Plugin.vue?vue&type=script&lang=ts\"\n\nimport \"./Plugin.vue?vue&type=style&index=0&id=9a7e2a58&scoped=true&lang=css\"\n\nimport exportComponent from \"E:\\\\SLG\\\\ECO GAME\\\\Eco\\\\Server\\\\WebClient\\\\Sources\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9a7e2a58\"]])\n\nexport default __exports__","\r\n\r\n","\r\n import { defineComponent } from 'vue';\r\n import { default as axios, AxiosError } from 'axios';\r\n \r\n export default defineComponent({\r\n components: {\r\n },\r\n methods: {\r\n async generateTestData() {\r\n try {\r\n await axios.post(`elections/generatetestdata`);\r\n this.$swal('Success', 'generated data', 'success');\r\n }\r\n catch (e) {\r\n if (e instanceof AxiosError) {\r\n this.$swal('Oops..', e.response?.data.Message, 'error');\r\n } else {\r\n this.$swal('Oops..', (e).toJSON(), 'error');\r\n }\r\n }\r\n },\r\n async finishElection() {\r\n try {\r\n await axios.post(`elections/finishelection`);\r\n this.$swal('Success', 'generated data', 'success');\r\n }\r\n catch (e) {\r\n if (e instanceof AxiosError) {\r\n this.$swal('Oops..', e.response?.data.Message, 'error');\r\n } else {\r\n this.$swal('Oops..', (e).toJSON(), 'error');\r\n }\r\n }\r\n }\r\n }\r\n });\r\n","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\r\nimport { getLocale, setI18nLanguage, loadLocaleMessages, SUPPORT_LOCALES } from '../plugins/i18n';\r\nimport { I18n } from 'vue-i18n';\r\n\r\nimport Index from \"../pages/Index.vue\";\r\nimport Comparison from \"../pages/Comparison.vue\";\r\nimport Election from \"../pages/Election.vue\";\r\nimport Elections from \"../pages/Elections.vue\";\r\nimport Officials from \"../pages/Officials.vue\";\r\nimport Profiling from \"../pages/Profiling.vue\";\r\nimport Plugin from \"../pages/Plugin.vue\";\r\nimport RenderTest from \"../pages/RenderTest.vue\";\r\nimport Debug from \"../pages/Debug.vue\";\r\n\r\nexport function setupRouter(i18n: I18n) {\r\n\r\n // setup routes\r\n const routes: Array = [\r\n { path: \"/\", component: Index },\r\n { path: \"/comparison\", component: Comparison },\r\n { path: \"/elections\", component: Elections },\r\n { path: \"/election/:id\", component: Election },\r\n { path: \"/elections\", redirect: \"/election\"}, // Legacy redirect\r\n { path: \"/officials\", component: Officials },\r\n { path: \"/profiling-results\", component: Profiling },\r\n { path: \"/plugin/:plugin\", component: Plugin },\r\n ];\r\n\r\n // create router instance\r\n const router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n });\r\n\r\n // development only routes, due to tree shaking will get compiled out in prod\r\n if (process.env.NODE_ENV === 'development') {\r\n router.addRoute({ path: \"/render-test\", component: RenderTest });\r\n router.addRoute({ path: \"/debug\", component: Debug });\r\n }\r\n\r\n // navigation guards\r\n router.beforeEach(async () => {\r\n // load locale messages\r\n var serverLocale = getLocale(i18n);\r\n var newLocale = localStorage.getItem('lang');\r\n\r\n if (newLocale && newLocale != serverLocale && SUPPORT_LOCALES.includes(newLocale)) {\r\n serverLocale = newLocale;\r\n }\r\n\r\n if (!i18n.global.availableLocales.includes(serverLocale)) {\r\n await loadLocaleMessages(i18n, serverLocale);\r\n }\r\n\r\n // set i18n language\r\n setI18nLanguage(i18n, serverLocale);\r\n });\r\n\r\n return router;\r\n};\r\n","// plugin to provide info on if WebGL is available\r\nimport { Plugin, App } from 'vue'\r\n\r\nfunction isWebGLAvailable(): boolean {\r\n try {\r\n const canvas = document.createElement('canvas');\r\n return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));\r\n } catch (e) {\r\n return false;\r\n }\r\n}\r\n\r\nconst WebGLPlugin: Plugin = {\r\n install: (app: App, options: any) => {\r\n app.config.globalProperties.WebGLIsAvailable = isWebGLAvailable();\r\n\r\n app.provide('webgl', options)\r\n }\r\n};\r\n\r\nexport default WebGLPlugin;\r\n","import { createApp, markRaw } from 'vue';\r\nimport { createPinia } from 'pinia';\r\nimport App from './App.vue';\r\nimport axios from 'axios';\r\nimport { setupRouter } from './router';\r\nimport { setupI18n } from './plugins/i18n'\r\nimport VueFinalModal from \"vue-final-modal\";\r\nimport VueAxios from 'vue-axios';\r\nimport VueSweetalert2 from 'vue-sweetalert2';\r\nimport VueProgressBar from \"@aacassandra/vue3-progressbar\";\r\nimport HighchartsVue from 'highcharts-vue'\r\nimport WebGLPlugin from './plugins/WebGLPlugin';\r\n\r\nimport 'sweetalert2/dist/sweetalert2.min.css';\r\n\r\nconst i18n = setupI18n();\r\nconst router = setupRouter(i18n);\r\nconst app = createApp(App);\r\n\r\n\r\nconst pinia = createPinia();\r\npinia.use(({ store }) => {\r\n store.$router = markRaw(router);\r\n //store.$Progress = markRaw(router);\r\n store.globalProperties = app.config.globalProperties;\r\n})\r\n\r\napp.use(pinia);\r\napp.use(router);\r\napp.use(i18n);\r\napp.use(VueFinalModal);\r\napp.use(WebGLPlugin);\r\napp.use(VueAxios, axios);\r\napp.use(VueSweetalert2);\r\napp.use(VueProgressBar, {\r\n color: '#5fa044',\r\n failedColor: '#872e30'\r\n});\r\n\r\n// cast because types are wrong https://github.com/highcharts/highcharts-vue/issues/219\r\n//app.use(HighchartsVue);\r\n\r\napp.mount('#app');\r\n","var map = {\n\t\"./cs.json\": [\n\t\t9789,\n\t\t789\n\t],\n\t\"./da.json\": [\n\t\t5638,\n\t\t638\n\t],\n\t\"./de.json\": [\n\t\t9929,\n\t\t929\n\t],\n\t\"./el.json\": [\n\t\t7498,\n\t\t498\n\t],\n\t\"./en-US.json\": [\n\t\t9594\n\t],\n\t\"./es-ES.json\": [\n\t\t3840,\n\t\t840\n\t],\n\t\"./es.json\": [\n\t\t8563,\n\t\t563\n\t],\n\t\"./fr.json\": [\n\t\t844,\n\t\t844\n\t],\n\t\"./hu.json\": [\n\t\t4626,\n\t\t626\n\t],\n\t\"./is.json\": [\n\t\t2188,\n\t\t188\n\t],\n\t\"./it.json\": [\n\t\t504,\n\t\t504\n\t],\n\t\"./ja.json\": [\n\t\t8566,\n\t\t566\n\t],\n\t\"./ko.json\": [\n\t\t7697,\n\t\t697\n\t],\n\t\"./nl.json\": [\n\t\t3055,\n\t\t55\n\t],\n\t\"./no.json\": [\n\t\t438,\n\t\t438\n\t],\n\t\"./pl.json\": [\n\t\t5143,\n\t\t560\n\t],\n\t\"./pt-BR.json\": [\n\t\t6837,\n\t\t837\n\t],\n\t\"./pt-PT.json\": [\n\t\t2176,\n\t\t176\n\t],\n\t\"./ro.json\": [\n\t\t4691,\n\t\t691\n\t],\n\t\"./ru.json\": [\n\t\t9672,\n\t\t672\n\t],\n\t\"./sv-SE.json\": [\n\t\t9385,\n\t\t385\n\t],\n\t\"./uk.json\": [\n\t\t1754,\n\t\t754\n\t],\n\t\"./zh-CN.json\": [\n\t\t9890,\n\t\t890\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 7535;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"55\":\"0ffca347\",\"176\":\"c68f7b36\",\"188\":\"d7e7b4df\",\"385\":\"cdee1f5b\",\"438\":\"64b229d1\",\"498\":\"418dc808\",\"504\":\"65c58097\",\"560\":\"59602fb1\",\"563\":\"1ee2e4ba\",\"566\":\"814c52c1\",\"626\":\"ee44b62c\",\"638\":\"b40ad925\",\"672\":\"f0451a2c\",\"691\":\"c348884f\",\"697\":\"270737db\",\"754\":\"c9874166\",\"789\":\"2dff7643\",\"837\":\"24cfadbd\",\"840\":\"2693bd54\",\"844\":\"abbcc62a\",\"890\":\"626c5a1e\",\"929\":\"9d98946d\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"world-web-ui:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkworld_web_ui\"] = self[\"webpackChunkworld_web_ui\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(9339); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_hoisted_1","id","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","_component_vue_progress_bar","_resolveComponent","_component_Sidebar","_component_router_view","_openBlock","_createElementBlock","_Fragment","_createVNode","_createElementVNode","clearFromXSS","data","pattern","replace","Array","isArray","map","key","clearComments","elections","election","comment","Comments","Text","text","trim","matchJson","test","onlyDigits","length","JSON","parse","e","indexOf","idsToKeys","arr","item","Id","decode","string","i","charCodeAt","isTokenValid","worldTicketData","localStorage","getItem","worldTicket","expiration","now","Date","getTime","parseInt","removeItem","Swal","title","icon","confirmButtonText","useMainStore","defineStore","state","username","all","running","past","titles","serverInfo","Description","Version","JoinUrl","profiling","webPlugins","electionsLoaded","actions","auth","params","URLSearchParams","location","search","get","setItem","stringify","this","$router","path","pathname","axios","config","globalProperties","$Progress","start","headers","fetchServerInfo","res","baseURL","window","serverUrl","fetchElections","runningRaw","pastRaw","titlesRaw","val","fetchProfilingResults","fetchWebPlugins","_withScopeId","n","_pushScopeId","_popScopeId","class","role","style","_hoisted_3","_hoisted_4","_hoisted_5","target","href","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_createTextVNode","_hoisted_47","_hoisted_48","_component_router_link","_component_TMPLabel","store","_createCommentVNode","_normalizeClass","highlight","to","default","_withCtx","_toDisplayString","$t","_","_renderList","webPlugin","TypeName","FontAwesomeIcon","MenuTitle","Name","PendingVote","onClick","args","copyToClipboard","ref","innerHTML","processedText","handleClick","defineComponent","props","type","String","required","stripTags","Boolean","computed","str","transform","openTag","content","isWrappedBy","Tag","attributes","value","methods","event","clickedElement","parentElement","classList","contains","tmpData","getAttribute","tmpDataParts","split","tmpLinkMethod","tmpLinkParams","slice","eventData","$emit","__exports__","setup","components","TMPLabel","mounted","$route","unsecuredCopyToClipboard","textArea","document","createElement","body","appendChild","focus","select","execCommand","err","removeChild","joinUrl","success","isSecureContext","navigator","clipboard","writeText","$swal","name","Sidebar","beforeCreate","response","finish","lang","error","fail","Promise","reject","SUPPORT_LOCALES","getLocale","i18n","global","locale","toString","setupI18n","options","fallbackLocale","messages","enUS","createI18n","setI18nLanguage","querySelector","setAttribute","loadLocaleMessages","setLocaleMessage","nextTick","src","_component_WorldMap","showCompare","_component_ServerInfo","max","min","step","DistrictColors","THREE","constructor","mapping","wrapS","wrapT","magFilter","minFilter","anisotropy","format","width","height","canvas","super","ctxt","getContext","webkitImageSmoothingEnabled","undefined","zoneColor","fillStyle","strokeStyle","miterLimit","lineJoin","erasing","generateMipmaps","Reset","lastData","getImageData","image","SetPixel","vec","color","createImageData","r","g","b","a","putImageData","x","y","needsUpdate","SetDistrictColorFromStyle","fillRect","lookup","revLookup","Arr","Uint8Array","code","len","placeHoldersCount","b64","Error","toByteArray","j","l","tmp","placeHolders","L","tripletToBase64","num","encodeChunk","uint8","end","output","push","join","fromByteArray","extraBytes","parts","maxChunkLength","len2","PlotMap","plotSize","SetColor","size","beginPath","moveTo","DrawLine","distanceTo","clone","dx","Math","abs","dy","sx","sy","tr","e2","SetRect","mask","SetEraseMode","AntiAntiAlias","GetArray","Base64","LoadArray","b64MaskString","ApplyDistrictColors","colorsArray","districtOffset","LoadDistrictMap","districtData","metadata","DistrictMetadata","ID","R","G","B","DistrictMap","GIFMANAGER","my","onFinish","gifStorage","gifTimes","GenChunk","xSize","zSize","worldX","worldZ","geometry","v","Float32Array","t","Uint16Array","p","z","ti","iUp","setXYZW","setXYZ","setIndex","d","round","instances","o","instanceCount","boundingSphere","OrbitControls","object","domElement","enabled","minDistance","maxDistance","Infinity","minZoom","maxZoom","minPolarAngle","maxPolarAngle","PI","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","keyPanSpeed","autoRotate","autoRotateSpeed","enableKeys","keys","LEFT","UP","RIGHT","BOTTOM","mouseButtons","ORBIT","ZOOM","PAN","target0","position0","position","zoom0","zoom","getPolarAngle","spherical","phi","getAzimuthalAngle","theta","reset","scope","copy","updateProjectionMatrix","dispatchEvent","changeEvent","update","STATE","NONE","offset","quat","setFromUnitVectors","up","quatInverse","invert","lastPosition","lastQuaternion","sub","applyQuaternion","setFromVector3","rotateLeft","getAutoRotationAngle","sphericalDelta","makeSafe","radius","scale","add","panOffset","setFromSpherical","lookAt","set","zoomChanged","distanceToSquared","EPS","dot","quaternion","dispose","removeEventListener","onContextMenu","onMouseDown","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","onMouseMove","onMouseUp","onKeyDown","startEvent","endEvent","ROTATE","DOLLY","TOUCH_ROTATE","TOUCH_DOLLY","TOUCH_PAN","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","getZoomScale","pow","angle","rotateUp","panLeft","distance","objectMatrix","setFromMatrixColumn","multiplyScalar","panUp","pan","deltaX","deltaY","element","targetDistance","tan","fov","clientHeight","matrix","right","left","clientWidth","top","bottom","console","warn","dollyIn","dollyScale","dollyOut","handleMouseDownRotate","clientX","clientY","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","subVectors","handleMouseMoveDolly","handleMouseMovePan","handleMouseWheel","handleKeyDown","keyCode","handleTouchStartRotate","touches","pageX","pageY","handleTouchStartDolly","sqrt","handleTouchStartPan","handleTouchMoveRotate","handleTouchMoveDolly","handleTouchMovePan","preventDefault","button","addEventListener","stopPropagation","prototype","Object","create","defineProperties","center","noZoom","noRotate","noPan","noKeys","staticMoving","dynamicDampingFactor","waterAlpha","waterAlphaInDistrictsMode","rawFragmentShader","curvedVertex","vertexShader","fragmentShader","worldLayerFragment","worldLayerVertex","EcoMap","$","load","worldWidth","worldDepth","GRID","FLAT","WRAP","FMAP","drawZone","zoning","setZoning","eraseMode","drawMap","init","terrainMap","flipY","heatMap","setupLayers","texture","views","heightMap","waterLevel","finishInit","arg","onDocumentMouseMove","hmap","getElementById","renderer","antialias","alpha","setClearColor","setPixelRatio","devicePixelRatio","worldHalfWidth","worldHalfDepth","generateHeight","setupPlots","zoneString","geometry2","rotateX","initialized","addView","animate","view","forceUpdate","settings","layerSelected","frameNum","heightFrameNum","terrainFrameNum","timeStart","timeEnd","serverTime","playSpeed","currentTime","flat","pause","OnTimeUpdated","rect","getBoundingClientRect","shareCamera","sharedRenderTarget","pars","sharedFirstView","depthRenderTarget","scene","uniforms2","tint","waterColor","time","worldSize","heat","features","featureMap","drawmap","terrain","renderTex","positionLookupShader","defines","LOOKUP","uniforms","layerShader","flatShaderDefines","curveShaderDefines","transparent","blending","mainMat","DRAWING","gradient","noWater","setLayer","renderLayer","ShaderPass","renderToScreen","mesh","waterUniforms","waterMat","waterFlatShaderDefines","waterCurveShaderDefines","vertexColors","toggle3D","forEach","mat","plane","translateY","layers","ambientLight","directionalLight","camera","normalize","userData","getY","enable","composer","EffectComposer","addPass","controls","camPos","lastCamPosition","lastRenderPosition","scenes","editView","removeView","splice","removeDeadViews","context","drawImage","imgd","pix","getWorldPos","updateSize","setSize","requestAnimationFrame","mouseX","mouseY","GetFrameNum","myTimes","maxFrame","setScissorTest","clear","myRect","deltaTime","clock","getDelta","s","heightHistoryLoaded","terrainHistoryLoaded","cam","miniMapEl","setViewport","setScissor","lastWidth","lastHeight","aspect","isNaN","materialChanged","heightChanged","lastTime","prevFrameNum","prevHeightFrameNum","prevTerrainFrameNum","loading","timeText","innerText","mouseViewX","mouseViewY","pos","firstRender","read","readRenderTargetPixels","mouseHitWorld","floor","setRenderTarget","debugKeyX","overrideMaterial","lastMouseScene","OnPositionUpdated","worldPos","OnInfoUpdated","getPlotNum","plotName","plotLookup","plotNameLookup","passes","cameraText","mapdata","log","layerNames","LayerNames","layerGroups","category","find","sort","fillLayerSelects","WaterLevel","WorldTime","districtSuffix","DistrictSuffix","plots","Plots","districtColorLookup","mouseState","dragStart","zoomSetsDrawSize","drawSize","dragPos","debugKeyZ","GetZone","SetZone","b64string","LoadProposedDistricts","proposedDistrictMap","option","attr","prepend","paintDistrict","setDistrictColor","tcanvas","tctx","lineWidth","prop","layerName","viewRef","layerInfo","layerCategory","HEATMAP","districtMapName","substring","districtMap","sell","sel","group","append","screenToWorldPos","viewX","viewY","hitWorld","getWorldArea","borderSize","result","ecoMap","MapControls","mainMap","positionText","initSlider","selector","values","slider","range","slide","ui","MiniMap","updateText","secondsToString","seconds","br","date","setSeconds","toISOString","substr","ceil","html","bindEvents","infoText","click","css","show","hide","fadeToggle","on","toFixed","newState","slideDown","elem","scrollTop","mapinfo","mapdrav","display","districts","district","remove","slideUp","ready","mapcontrol","each","bg","currentPage","hasClass","removeClass","addClass","rgb","mapColorPicker","setRgb","parent","newZone","colors","hex","random","before","setHex","districtId","parentNode","trigger","inject","WebGLIsAvailable","isSingle","change","mapView","nextElementSibling","className","_withDirectives","OnlinePlayers","TotalPlayers","meteorImpact","Plants","Laws","WorldSize","_vShow","TimeSinceStart","sec2time","days","hours","middle","minutes","sec2worldTime","secondsStr","parseFloat","hoursStr","minutesStr","untilImpact","TimeLeft","_a","HasMeteor","WorldMap","ServerInfo","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_95","_hoisted_96","_hoisted_97","_hoisted_98","_hoisted_99","_hoisted_100","_hoisted_101","_hoisted_102","_hoisted_103","_hoisted_104","_hoisted_105","_hoisted_106","_hoisted_107","_hoisted_108","_hoisted_109","_hoisted_110","_hoisted_111","_hoisted_112","_hoisted_113","_hoisted_114","_hoisted_115","_hoisted_116","_hoisted_117","_hoisted_118","_hoisted_119","_hoisted_120","_hoisted_121","_hoisted_122","_hoisted_123","_hoisted_124","_hoisted_125","_hoisted_126","_hoisted_127","_hoisted_128","_hoisted_129","_hoisted_130","_hoisted_131","_hoisted_132","_hoisted_133","_hoisted_134","_hoisted_135","_hoisted_136","_hoisted_137","_hoisted_138","_hoisted_139","_hoisted_140","_hoisted_141","_hoisted_142","_hoisted_143","_hoisted_144","_hoisted_145","_hoisted_146","_hoisted_147","_hoisted_148","_component_draggable","_component_ElectionProcessModal","_component_AllVotesModal","ElectionDescription","onTmpLinkClick","handleTMPLinkClick","Finished","Results","Result","PositionForWinner","Table","row","Provisions","_b","provision","ActionOnCompleteTableHeader","ActionOnCompleteTable","ActionOnCompleteFullDescription","BooleanElection","Choices","choice","_withModifiers","$event","vote","_createBlock","modelValue","candidates","candidate","Speech","rankedCandidates","filter","onAdd","changed","onSort","TotalVotes","rounds","_c","ChoiceRanks","MarkedUpNameString","VotesPerRound","UserVotes","TwitchVotes","Total","totalAllVotes","timeEndAgo","timeStartAgo","timeToElectionEnd","totalTwitchVotes","totalUserVotes","showElectionProcessModal","ElectionProcess","showAllVotes","votes","userVotesData","Username","Timestamp","commentText","placeholder","_vModelText","showGraphComposer","showWorldMap","disabled","colspan","_component_vue_final_modal","_mergeProps","$attrs","classes","Voter","getUserVotes","inheritAttrs","choices","c","rankIndex","RankedVotes","State","draggable","VueDraggableNext","AllVotesModal","ElectionProcessModal","timeAtStart","userVotes","TimeEndAgo","TimeStartAgo","secondsFromStart","ranks","totalVote","watch","fetch","darkenHexColor","hexColor","amount","darkR","darkG","darkB","darkHex","getColorForCandidate","candidateName","randomColor","drawPieChartIfRequired","getChoices","combinedVotes","matchingChoice","ChoiceID","percentData","voteData","choiceId","voteInfo","choiceVotes","twitchVotes","totalVotes","percent","setTimeout","Highcharts","chart","fontFamily","spacingBottom","spacingTop","spacingLeft","spacingRight","marginBottom","marginTop","marginLeft","marginRight","backgroundColor","credits","plotOptions","pie","shadow","series","dataLabels","fontSize","tooltip","valueSuffix","innerSize","responsive","rules","condition","maxWidth","chartOptions","choiceRanks","voteCount","FirstRoundVotes","speech","newChoice","Votes","includes","ex","ElectionID","AxiosError","status","Message","_d","toJSON","table","OccupantNames","occupant","_Teleport","rows","Size","CreatedAt","getFullResultUrl","encodedName","encodeURIComponent","url","URL","searchParams","authtoken","authtokentype","formatDate","toLocaleString","plugin","PluginIndexUrl","pluginTypeName","findWebPlugin","$refs","innerWidth","innerHeight","material","cube","rotation","generateTestData","finishElection","setupRouter","routes","component","Index","Comparison","Elections","Election","redirect","Officials","Profiling","Plugin","router","createRouter","history","createWebHistory","beforeEach","__awaiter","serverLocale","newLocale","availableLocales","isWebGLAvailable","WebGLRenderingContext","WebGLPlugin","install","app","provide","createApp","App","pinia","createPinia","use","markRaw","VueFinalModal","VueAxios","VueSweetalert2","VueProgressBar","failedColor","mount","webpackAsyncContext","req","__webpack_require__","resolve","then","ids","module","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","amdO","deferred","O","chunkIds","fn","priority","notFulfilled","fulfilled","every","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","__proto__","mode","ns","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","reduce","promises","u","miniCssF","globalThis","Function","hmd","children","hasOwnProperty","inProgress","dataWebpackPrefix","done","script","needAttach","scripts","getElementsByTagName","charset","timeout","nc","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","bind","head","Symbol","toStringTag","installedChunks","installedChunkData","promise","loadingEnded","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}