Browse Source

对外开放接口

bill 2 years ago
parent
commit
5a195e2f52
100 changed files with 72 additions and 208855 deletions
  1. BIN
      public/fonts/iconfont.5b17a60b.woff
  2. BIN
      public/fonts/iconfont.6e1be100.ttf
  3. BIN
      public/fonts/iconfont.b5ca73bb.woff2
  4. BIN
      public/img/coord.1f543010.gif
  5. BIN
      public/img/coord.f745fb29.gif
  6. BIN
      public/img/coord.f7adba3b.gif
  7. BIN
      public/img/data.726ce999.gif
  8. BIN
      public/img/data.982c79fa.gif
  9. BIN
      public/img/data.d1a1fd72.gif
  10. BIN
      public/img/download.36c03b8a.gif
  11. BIN
      public/img/download.7685a3dd.gif
  12. BIN
      public/img/download.a8aa1545.gif
  13. BIN
      public/img/flooer.5e52064b.png
  14. BIN
      public/img/floorpan.3f3ddeeb.gif
  15. BIN
      public/img/floorpan.91dc2a8e.gif
  16. BIN
      public/img/floorpan.f8157150.gif
  17. BIN
      public/img/hotspot.908e6fb5.gif
  18. BIN
      public/img/hotspot.966c5e02.gif
  19. BIN
      public/img/hotspot.ad026f17.gif
  20. BIN
      public/img/loading.bcdaea61.bcdaea61.jpg
  21. BIN
      public/img/measure.742a7e62.gif
  22. 16 0
      public/img/pic_kankan.5660fe60.svg
  23. BIN
      public/img/pic_laser@2x.b55efd87.png
  24. BIN
      public/img/query.8bc76bbb.gif
  25. BIN
      public/img/query.8d408bde.gif
  26. BIN
      public/img/query.c2acd83a.gif
  27. 1 0
      public/js/0.js
  28. 1 1
      public/js/10.js
  29. 1 1
      public/js/11.js
  30. 1 1
      public/js/12.js
  31. 1 1
      public/js/13.js
  32. 1 1
      public/js/14.js
  33. 1 1
      public/js/15.js
  34. 1 1
      public/js/16.js
  35. 1 1
      public/js/17.js
  36. 3 3
      public/js/18.js
  37. 1 1
      public/js/3.js
  38. 1 1
      public/js/4.js
  39. 1 1
      public/js/5.js
  40. 1 1
      public/js/6.js
  41. 1 1
      public/js/7.js
  42. 1 1
      public/js/8.js
  43. 1 1
      public/js/9.js
  44. 19 19
      public/js/chunk-vendors.js
  45. 9 1
      public/js/smart.js
  46. 4 1
      public/smart-laser.html
  47. 1 132646
      public/static/lib/potree/potree.js
  48. 1 1
      public/static/lib/potree/potree.js.map
  49. BIN
      public/static/lib/potree/resources/models/glb/87b3a367bc3e4273832cb4fa398782e5.glb
  50. BIN
      public/static/lib/potree/resources/models/glb/87ecd10fb0374ea6b3e0bf24c6459e3c.glb
  51. BIN
      public/static/lib/potree/resources/models/glb/ModernJPHouseSofa44105209.glb
  52. BIN
      public/static/lib/potree/resources/models/glb/ModernJPHouseSofa44216499.glb
  53. BIN
      public/static/lib/potree/resources/models/glb/coffeemat.glb
  54. BIN
      public/static/lib/potree/resources/textures/marker.png
  55. BIN
      public/static/lib/potree/resources/textures/rtk-f-n.png
  56. BIN
      public/static/lib/potree/resources/textures/rtk-f-s.png
  57. BIN
      public/static/lib/potree/resources/textures/rtk-y-n.png
  58. BIN
      public/static/lib/potree/resources/textures/rtk-y-s.png
  59. 1 319
      public/static/lib/potree/workers/2.0/DecoderWorker.js
  60. 1 2501
      public/static/lib/potree/workers/2.0/DecoderWorker_brotli.js
  61. 1 460
      public/static/lib/potree/workers/BinaryDecoderWorker.js
  62. 0 213
      public/static/lib/potree/workers/EptBinaryDecoderWorker.js
  63. 0 200
      public/static/lib/potree/workers/EptLaszipDecoderWorker.js
  64. 0 22376
      public/static/lib/potree/workers/EptZstandardDecoderWorker.js
  65. 0 344
      public/static/lib/potree/workers/LASDecoderWorker.js
  66. 0 49756
      public/static/lib/potree/workers/LASLAZWorker.js
  67. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/icon/lQLPDhrvVzvNvTswMLAOU-UNqYnnZQG1YPJUwLwA_48_48.png
  68. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face0_0_0.jpg
  69. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face0_0_1.jpg
  70. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face0_1_0.jpg
  71. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face0_1_1.jpg
  72. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face1_0_0.jpg
  73. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face1_0_1.jpg
  74. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face1_1_0.jpg
  75. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face1_1_1.jpg
  76. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face2_0_0.jpg
  77. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face2_0_1.jpg
  78. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face2_1_0.jpg
  79. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face2_1_1.jpg
  80. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face3_0_0.jpg
  81. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face3_0_1.jpg
  82. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face3_1_0.jpg
  83. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face3_1_1.jpg
  84. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face4_0_0.jpg
  85. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face4_0_1.jpg
  86. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face4_1_0.jpg
  87. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face4_1_1.jpg
  88. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face5_0_0.jpg
  89. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face5_0_1.jpg
  90. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face5_1_0.jpg
  91. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face5_1_1.jpg
  92. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_0_0.jpg
  93. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_0_1.jpg
  94. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_0_2.jpg
  95. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_0_3.jpg
  96. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_1_0.jpg
  97. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_1_1.jpg
  98. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_1_2.jpg
  99. BIN
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_1_3.jpg
  100. 0 0
      public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_2_0.jpg

BIN
public/fonts/iconfont.5b17a60b.woff


BIN
public/fonts/iconfont.6e1be100.ttf


BIN
public/fonts/iconfont.b5ca73bb.woff2


BIN
public/img/coord.1f543010.gif


BIN
public/img/coord.f745fb29.gif


BIN
public/img/coord.f7adba3b.gif


BIN
public/img/data.726ce999.gif


BIN
public/img/data.982c79fa.gif


BIN
public/img/data.d1a1fd72.gif


BIN
public/img/download.36c03b8a.gif


BIN
public/img/download.7685a3dd.gif


BIN
public/img/download.a8aa1545.gif


BIN
public/img/flooer.5e52064b.png


BIN
public/img/floorpan.3f3ddeeb.gif


BIN
public/img/floorpan.91dc2a8e.gif


BIN
public/img/floorpan.f8157150.gif


BIN
public/img/hotspot.908e6fb5.gif


BIN
public/img/hotspot.966c5e02.gif


BIN
public/img/hotspot.ad026f17.gif


BIN
public/img/loading.bcdaea61.bcdaea61.jpg


BIN
public/img/measure.742a7e62.gif


File diff suppressed because it is too large
+ 16 - 0
public/img/pic_kankan.5660fe60.svg


BIN
public/img/pic_laser@2x.b55efd87.png


BIN
public/img/query.8bc76bbb.gif


BIN
public/img/query.8d408bde.gif


BIN
public/img/query.c2acd83a.gif


File diff suppressed because it is too large
+ 1 - 0
public/js/0.js


+ 1 - 1
public/js/10.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[10],{399:function(n,p,o){n.exports=o.p+"img/data_revise_n.fbcdb99b.svg"}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[10],{329:function(n,p,o){n.exports=o.p+"img/data_revise_n.fbcdb99b.svg"}}]);

+ 1 - 1
public/js/11.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[11],{400:function(n,p,w){n.exports=w.p+"img/dianwei.a4f6219e.svg"}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[11],{330:function(n,p,w){n.exports=w.p+"img/dianwei.a4f6219e.svg"}}]);

+ 1 - 1
public/js/12.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[12],{401:function(p,n,o){p.exports=o.p+"img/m-r.471aa7f5.svg"}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[12],{331:function(p,n,o){p.exports=o.p+"img/m-r.471aa7f5.svg"}}]);

+ 1 - 1
public/js/13.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[13],{402:function(p,n,o){p.exports=o.p+"img/point-s.69e5b4b6.svg"}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[13],{332:function(p,n,o){p.exports=o.p+"img/point-s.69e5b4b6.svg"}}]);

+ 1 - 1
public/js/14.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[14],{403:function(p,s,n){p.exports=n.p+"img/state_gps.cc832e05.svg"}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[14],{333:function(p,s,n){p.exports=n.p+"img/state_gps.cc832e05.svg"}}]);

+ 1 - 1
public/js/15.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[15],{404:function(o,p,w){o.exports=w.p+"img/weitiao.f217d1d9.svg"}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[15],{334:function(o,p,w){o.exports=w.p+"img/weitiao.f217d1d9.svg"}}]);

+ 1 - 1
public/js/16.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[16],{405:function(o,n,p){o.exports=p.p+"img/zoom_n.33ea3c1f.svg"}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[16],{335:function(o,n,p){o.exports=p.p+"img/zoom_n.33ea3c1f.svg"}}]);

File diff suppressed because it is too large
+ 1 - 1
public/js/17.js


File diff suppressed because it is too large
+ 3 - 3
public/js/18.js


File diff suppressed because it is too large
+ 1 - 1
public/js/3.js


File diff suppressed because it is too large
+ 1 - 1
public/js/4.js


File diff suppressed because it is too large
+ 1 - 1
public/js/5.js


File diff suppressed because it is too large
+ 1 - 1
public/js/6.js


File diff suppressed because it is too large
+ 1 - 1
public/js/7.js


+ 1 - 1
public/js/8.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[8],{397:function(n,o,p){n.exports=p.p+"img/a-connect-dis.27190505.svg"}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[8],{327:function(n,o,p){n.exports=p.p+"img/a-connect-dis.27190505.svg"}}]);

+ 1 - 1
public/js/9.js

@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[9],{398:function(n,o,p){n.exports=p.p+"img/a-connect.6b6a01e1.svg"}}]);
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[9],{328:function(n,o,p){n.exports=p.p+"img/a-connect.6b6a01e1.svg"}}]);

File diff suppressed because it is too large
+ 19 - 19
public/js/chunk-vendors.js


File diff suppressed because it is too large
+ 9 - 1
public/js/smart.js


File diff suppressed because it is too large
+ 4 - 1
public/smart-laser.html


File diff suppressed because it is too large
+ 1 - 132646
public/static/lib/potree/potree.js


File diff suppressed because it is too large
+ 1 - 1
public/static/lib/potree/potree.js.map


BIN
public/static/lib/potree/resources/models/glb/87b3a367bc3e4273832cb4fa398782e5.glb


BIN
public/static/lib/potree/resources/models/glb/87ecd10fb0374ea6b3e0bf24c6459e3c.glb


BIN
public/static/lib/potree/resources/models/glb/ModernJPHouseSofa44105209.glb


BIN
public/static/lib/potree/resources/models/glb/ModernJPHouseSofa44216499.glb


BIN
public/static/lib/potree/resources/models/glb/coffeemat.glb


BIN
public/static/lib/potree/resources/textures/marker.png


BIN
public/static/lib/potree/resources/textures/rtk-f-n.png


BIN
public/static/lib/potree/resources/textures/rtk-f-s.png


BIN
public/static/lib/potree/resources/textures/rtk-y-n.png


BIN
public/static/lib/potree/resources/textures/rtk-y-s.png


File diff suppressed because it is too large
+ 1 - 319
public/static/lib/potree/workers/2.0/DecoderWorker.js


File diff suppressed because it is too large
+ 1 - 2501
public/static/lib/potree/workers/2.0/DecoderWorker_brotli.js


File diff suppressed because it is too large
+ 1 - 460
public/static/lib/potree/workers/BinaryDecoderWorker.js


+ 0 - 213
public/static/lib/potree/workers/EptBinaryDecoderWorker.js

@@ -1,213 +0,0 @@
-function parseEpt(event) {
-	let buffer = event.data.buffer;
-	let view = new DataView(buffer);
-	let schema = event.data.schema;
-	let scale = event.data.scale;
-	let offset = event.data.offset;
-	let mins = event.data.mins;
-
-	let dimensions = schema.reduce((p, c) => {
-		p[c.name] = c;
-		return p;
-	}, { });
-
-	let dimOffset = (name) => {
-		let offset = 0;
-		for (var i = 0; i < schema.length; ++i) {
-			if (schema[i].name == name) return offset;
-			offset += schema[i].size;
-		}
-		return undefined;
-	};
-
-	let getExtractor = (name) => {
-		let offset = dimOffset(name);
-		let type = dimensions[name].type;
-		let size = dimensions[name].size;
-
-		if (type == 'signed') switch (size) {
-			case 1: return (p) => view.getInt8(p + offset);
-			case 2: return (p) => view.getInt16(p + offset, true);
-			case 4: return (p) => view.getInt32(p + offset, true);
-			case 8: return (p) => view.getInt64(p + offset, true);
-		}
-		if (type == 'unsigned') switch (size) {
-			case 1: return (p) => view.getUint8(p + offset);
-			case 2: return (p) => view.getUint16(p + offset, true);
-			case 4: return (p) => view.getUint32(p + offset, true);
-			case 8: return (p) => view.getUint64(p + offset, true);
-		}
-		if (type == 'float') switch (size) {
-			case 4: return (p) => view.getFloat32(p + offset, true);
-			case 8: return (p) => view.getFloat64(p + offset, true);
-		}
-
-		let str = JSON.stringify(dimensions[name]);
-		throw new Error(`Invalid dimension specification for ${name}: ${str}`);
-	};
-
-	let pointSize = schema.reduce((p, c) => p + c.size, 0);
-	let numPoints = buffer.byteLength / pointSize;
-
-	let xyzBuffer, rgbBuffer, intensityBuffer, classificationBuffer,
-		returnNumberBuffer, numberOfReturnsBuffer, pointSourceIdBuffer;
-	let xyz, rgb, intensity, classification, returnNumber, numberOfReturns,
-		pointSourceId;
-	let xyzExtractor, rgbExtractor, intensityExtractor, classificationExtractor,
-		returnNumberExtractor, numberOfReturnsExtractor, pointSourceIdExtractor;
-	let twoByteColor = false;
-
-	if (dimensions['X'] && dimensions['Y'] && dimensions['Z']) {
-		xyzBuffer = new ArrayBuffer(numPoints * 4 * 3);
-		xyz = new Float32Array(xyzBuffer);
-		xyzExtractor = [
-			getExtractor('X'),
-			getExtractor('Y'),
-			getExtractor('Z')
-		];
-	}
-
-	if (dimensions['Red'] && dimensions['Green'] && dimensions['Blue']) {
-		rgbBuffer = new ArrayBuffer(numPoints * 4);
-		rgb = new Uint8Array(rgbBuffer);
-		rgbExtractor = [
-			getExtractor('Red'),
-			getExtractor('Green'),
-			getExtractor('Blue')
-		];
-
-		let r, g, b, pos;
-		for (let i = 0; i < numPoints && !twoByteColor; ++i) {
-			pos = i * pointSize;
-			r = rgbExtractor[0](pos);
-			g = rgbExtractor[1](pos);
-			b = rgbExtractor[2](pos);
-			if (r > 255 || g > 255 || b > 255) twoByteColor = true;
-		}
-	}
-
-	if (dimensions['Intensity']) {
-		intensityBuffer = new ArrayBuffer(numPoints * 4);
-		intensity = new Float32Array(intensityBuffer);
-		intensityExtractor = getExtractor('Intensity');
-	}
-
-	if (dimensions['Classification']) {
-		classificationBuffer = new ArrayBuffer(numPoints);
-		classification = new Uint8Array(classificationBuffer);
-		classificationExtractor = getExtractor('Classification');
-	}
-
-	if (dimensions['ReturnNumber']) {
-		returnNumberBuffer = new ArrayBuffer(numPoints);
-		returnNumber = new Uint8Array(returnNumberBuffer);
-		returnNumberExtractor = getExtractor('ReturnNumber');
-	}
-
-	if (dimensions['NumberOfReturns']) {
-		numberOfReturnsBuffer = new ArrayBuffer(numPoints);
-		numberOfReturns = new Uint8Array(numberOfReturnsBuffer);
-		numberOfReturnsExtractor = getExtractor('NumberOfReturns');
-	}
-
-	if (dimensions['PointSourceId']) {
-		pointSourceIdBuffer = new ArrayBuffer(numPoints * 2);
-		pointSourceId = new Uint16Array(pointSourceIdBuffer);
-		pointSourceIdExtractor = getExtractor('PointSourceId');
-	}
-
-	let mean = [0, 0, 0];
-	let bounds = {
-		min: [Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE],
-		max: [-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE],
-	};
-
-	let x, y, z, r, g, b;
-	for (let i = 0; i < numPoints; ++i) {
-		let pos = i * pointSize;
-		if (xyz) {
-			x = xyzExtractor[0](pos) * scale.x + offset.x - mins[0];
-			y = xyzExtractor[1](pos) * scale.y + offset.y - mins[1];
-			z = xyzExtractor[2](pos) * scale.z + offset.z - mins[2];
-
-			mean[0] += x / numPoints;
-			mean[1] += y / numPoints;
-			mean[2] += z / numPoints;
-
-			bounds.min[0] = Math.min(bounds.min[0], x);
-			bounds.min[1] = Math.min(bounds.min[1], y);
-			bounds.min[2] = Math.min(bounds.min[2], z);
-
-			bounds.max[0] = Math.max(bounds.max[0], x);
-			bounds.max[1] = Math.max(bounds.max[1], y);
-			bounds.max[2] = Math.max(bounds.max[2], z);
-
-			xyz[3 * i + 0] = x;
-			xyz[3 * i + 1] = y;
-			xyz[3 * i + 2] = z;
-		}
-
-		if (rgb) {
-			r = rgbExtractor[0](pos);
-			g = rgbExtractor[1](pos);
-			b = rgbExtractor[2](pos);
-
-			if (twoByteColor) {
-				r /= 256;
-				g /= 256;
-				b /= 256;
-			}
-
-			rgb[4 * i + 0] = r;
-			rgb[4 * i + 1] = g;
-			rgb[4 * i + 2] = b;
-		}
-
-		if (intensity) intensity[i] = intensityExtractor(pos);
-		if (classification) classification[i] = classificationExtractor(pos);
-		if (returnNumber) returnNumber[i] = returnNumberExtractor(pos);
-		if (numberOfReturns) numberOfReturns[i] = numberOfReturnsExtractor(pos);
-		if (pointSourceId) pointSourceId[i] = pointSourceIdExtractor(pos);
-	}
-
-	let indicesBuffer = new ArrayBuffer(numPoints * 4);
-	let indices = new Uint32Array(indicesBuffer);
-	for (let i = 0; i < numPoints; ++i) {
-		indices[i] = i;
-	}
-
-	let message = {
-		numPoints: numPoints,
-		tightBoundingBox: bounds,
-		mean: mean,
-
-		position: xyzBuffer,
-		color: rgbBuffer,
-		intensity: intensityBuffer,
-		classification: classificationBuffer,
-		returnNumber: returnNumberBuffer,
-		numberOfReturns: numberOfReturnsBuffer,
-		pointSourceId: pointSourceIdBuffer,
-		indices: indicesBuffer
-	};
-
-	let transferables = [
-		message.position,
-		message.color,
-		message.intensity,
-		message.classification,
-		message.returnNumber,
-		message.numberOfReturns,
-		message.pointSourceId,
-		message.indices
-	].filter((v) => v);
-
-	postMessage(message, transferables);
-}
-
-
-// importScripts('/libs/ept/ParseBuffer.js');
-onmessage = function(event) {
-	parseEpt(event);
-}
-

+ 0 - 200
public/static/lib/potree/workers/EptLaszipDecoderWorker.js

@@ -1,200 +0,0 @@
-function readUsingDataView(event) {
-	performance.mark("laslaz-start");
-
-	let buffer = event.data.buffer;
-	let numPoints = event.data.numPoints;
-	let pointSize = event.data.pointSize;
-	let pointFormat = event.data.pointFormatID;
-
-	// gps time byte offsets from LAS specification
-	let gpsOffsets = [null, 20, null, 20, 20, 20, 22, 22, 22, 22, 22] 
-	let gpsOffset = gpsOffsets[pointFormat];
-
-	let scale = event.data.scale;
-	let offset = event.data.offset;
-
-	let sourceUint8 = new Uint8Array(buffer);
-	let sourceView = new DataView(buffer);
-
-	let tightBoundingBox = {
-		min: [
-			Number.POSITIVE_INFINITY,
-			Number.POSITIVE_INFINITY,
-			Number.POSITIVE_INFINITY
-		],
-		max: [
-			Number.NEGATIVE_INFINITY,
-			Number.NEGATIVE_INFINITY,
-			Number.NEGATIVE_INFINITY
-		]
-	};
-
-	let mean = [0, 0, 0];
-
-	let pBuff = new ArrayBuffer(numPoints * 3 * 4);
-	let cBuff = new ArrayBuffer(numPoints * 4);
-	let iBuff = new ArrayBuffer(numPoints * 4);
-	let clBuff = new ArrayBuffer(numPoints);
-	let rnBuff = new ArrayBuffer(numPoints);
-	let nrBuff = new ArrayBuffer(numPoints);
-	let psBuff = new ArrayBuffer(numPoints * 2);
-	let gpsBuff64 = new ArrayBuffer(numPoints * 8);
-	let gpsBuff32 = new ArrayBuffer(numPoints * 4);
-
-	let positions = new Float32Array(pBuff);
-	let colors = new Uint8Array(cBuff);
-	let intensities = new Float32Array(iBuff);
-	let classifications = new Uint8Array(clBuff);
-	let returnNumbers = new Uint8Array(rnBuff);
-	let numberOfReturns = new Uint8Array(nrBuff);
-	let pointSourceIDs = new Uint16Array(psBuff);
-	let gpsTime64 = new Float64Array(gpsBuff64)
-	let gpsTime32 = new Float32Array(gpsBuff32)
-
-	// Point format 3 contains an 8-byte GpsTime before RGB values, so make
-	// sure we have the correct color offset.
-	let hasColor = pointFormat == 2 || pointFormat == 3;
-	let co = pointFormat == 2 ? 20 : 28;
-
-	// TODO This should be cached per-resource since this is an expensive check.
-	let twoByteColor = false;
-	if (hasColor) {
-		let r, g, b, pos;
-		for (let i = 0; i < numPoints && !twoByteColor; ++i) {
-			pos = i * pointSize;
-			r = sourceView.getUint16(pos + co, true)
-			g = sourceView.getUint16(pos + co + 2, true)
-			b = sourceView.getUint16(pos + co + 4, true)
-			if (r > 255 || g > 255 || b > 255) twoByteColor = true;
-		}
-	}
-
-	for (let i = 0; i < numPoints; i++) {
-		// POSITION
-		let ux = sourceView.getInt32(i * pointSize + 0, true);
-		let uy = sourceView.getInt32(i * pointSize + 4, true);
-		let uz = sourceView.getInt32(i * pointSize + 8, true);
-
-		x = ux * scale[0] + offset[0] - event.data.mins[0];
-		y = uy * scale[1] + offset[1] - event.data.mins[1];
-		z = uz * scale[2] + offset[2] - event.data.mins[2];
-
-		positions[3 * i + 0] = x;
-		positions[3 * i + 1] = y;
-		positions[3 * i + 2] = z;
-
-		mean[0] += x / numPoints;
-		mean[1] += y / numPoints;
-		mean[2] += z / numPoints;
-
-		tightBoundingBox.min[0] = Math.min(tightBoundingBox.min[0], x);
-		tightBoundingBox.min[1] = Math.min(tightBoundingBox.min[1], y);
-		tightBoundingBox.min[2] = Math.min(tightBoundingBox.min[2], z);
-
-		tightBoundingBox.max[0] = Math.max(tightBoundingBox.max[0], x);
-		tightBoundingBox.max[1] = Math.max(tightBoundingBox.max[1], y);
-		tightBoundingBox.max[2] = Math.max(tightBoundingBox.max[2], z);
-
-		// INTENSITY
-		let intensity = sourceView.getUint16(i * pointSize + 12, true);
-		intensities[i] = intensity;
-
-		// RETURN NUMBER, stored in the first 3 bits - 00000111
-		// number of returns stored in next 3 bits	 - 00111000
-		let returnNumberAndNumberOfReturns = sourceView.getUint8(i * pointSize + 14, true);
-		let returnNumber = returnNumberAndNumberOfReturns & 0b0111;
-		let numberOfReturn = (returnNumberAndNumberOfReturns & 0b00111000) >> 3;
-		returnNumbers[i] = returnNumber;
-		numberOfReturns[i] = numberOfReturn;
-
-		// CLASSIFICATION
-		let classification = sourceView.getUint8(i * pointSize + 15, true);
-		classifications[i] = classification;
-
-		// POINT SOURCE ID
-		let pointSourceID = sourceView.getUint16(i * pointSize + 18, true);
-		pointSourceIDs[i] = pointSourceID;
-
-		// COLOR, if available
-		if (hasColor) {
-			let r = sourceView.getUint16(i * pointSize + co, true)
-			let g = sourceView.getUint16(i * pointSize + co + 2, true)
-			let b = sourceView.getUint16(i * pointSize + co + 4, true)
-
-			if (twoByteColor) {
-				r /= 256;
-				g /= 256;
-				b /= 256;
-			}
-
-			colors[4 * i + 0] = r;
-			colors[4 * i + 1] = g;
-			colors[4 * i + 2] = b;
-			colors[4 * i + 3] = 255;
-		}
-	}
-
-	let min = Infinity
-	let max = -Infinity
-
-	for (let i = 0; i < numPoints; i++) {
-		min = Math.min(min, gpsTime64[i])
-		max = Math.max(max, gpsTime64[i])
-	}
-
-	for (let i = 0; i < numPoints; i++) {
-		gpsTime32[i] = gpsTime64[i] = min
-	}
-
-	let indices = new ArrayBuffer(numPoints * 4);
-	let iIndices = new Uint32Array(indices);
-	for (let i = 0; i < numPoints; i++) {
-		iIndices[i] = i;
-	}
-
-	performance.mark("laslaz-end");
-
-	//{ // print timings
-	//	  performance.measure("laslaz", "laslaz-start", "laslaz-end");
-	//	  let measure = performance.getEntriesByType("measure")[0];
-	//	  let dpp = 1000 * measure.duration / numPoints;
-	//	  let debugMessage = `${measure.duration.toFixed(3)} ms, ${numPoints} points, ${dpp.toFixed(3)} µs / point`;
-	//	  console.log(debugMessage);
-	//}
-	performance.clearMarks();
-	performance.clearMeasures();
-
-	let message = {
-		mean: mean,
-		position: pBuff,
-		color: cBuff,
-		intensity: iBuff,
-		classification: clBuff,
-		returnNumber: rnBuff,
-		numberOfReturns: nrBuff,
-		pointSourceID: psBuff,
-		tightBoundingBox: tightBoundingBox,
-		indices: indices,
-		gpsTime: gpsBuff32,
-		gpsMeta: { offset: min, range: max-min }
-	};
-
-	let transferables = [
-		message.position,
-		message.color,
-		message.intensity,
-		message.classification,
-		message.returnNumber,
-		message.numberOfReturns,
-		message.pointSourceID,
-		message.indices,
-		message.gpsTime
-	];
-
-	postMessage(message, transferables);
-};
-
-
-
-onmessage = readUsingDataView;
-

File diff suppressed because it is too large
+ 0 - 22376
public/static/lib/potree/workers/EptZstandardDecoderWorker.js


+ 0 - 344
public/static/lib/potree/workers/LASDecoderWorker.js

@@ -1,344 +0,0 @@
-
-function readUsingTempArrays(event) {
-
-	performance.mark("laslaz-start");
-
-	let buffer = event.data.buffer;
-	let numPoints = event.data.numPoints;
-	let sourcePointSize = event.data.pointSize;
-	let pointFormatID = event.data.pointFormatID;
-	let scale = event.data.scale;
-	let offset = event.data.offset;
-
-	let temp = new ArrayBuffer(4);
-	let tempUint8 = new Uint8Array(temp);
-	let tempUint16 = new Uint16Array(temp);
-	let tempInt32 = new Int32Array(temp);
-	let sourceUint8 = new Uint8Array(buffer);
-
-	let tightBoundingBox = {
-		min: [ Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY ],
-		max: [ Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY ]
-	};
-
-	let mean = [0, 0, 0];
-
-	let pBuff = new ArrayBuffer(numPoints * 3 * 4);
-	let cBuff = new ArrayBuffer(numPoints * 4);
-	let iBuff = new ArrayBuffer(numPoints * 4);
-	let clBuff = new ArrayBuffer(numPoints);
-	let rnBuff = new ArrayBuffer(numPoints);
-	let nrBuff = new ArrayBuffer(numPoints);
-	let psBuff = new ArrayBuffer(numPoints * 2);
-
-	let positions = new Float32Array(pBuff);
-	let colors = new Uint8Array(cBuff);
-	let intensities = new Float32Array(iBuff);
-	let classifications = new Uint8Array(clBuff);
-	let returnNumbers = new Uint8Array(rnBuff);
-	let numberOfReturns = new Uint8Array(nrBuff);
-	let pointSourceIDs = new Uint16Array(psBuff);
-
-	for (let i = 0; i < numPoints; i++) {
-		// POSITION
-		tempUint8[0] = sourceUint8[i * sourcePointSize + 0];
-		tempUint8[1] = sourceUint8[i * sourcePointSize + 1];
-		tempUint8[2] = sourceUint8[i * sourcePointSize + 2];
-		tempUint8[3] = sourceUint8[i * sourcePointSize + 3];
-		let x = tempInt32[0];
-
-		tempUint8[0] = sourceUint8[i * sourcePointSize + 4];
-		tempUint8[1] = sourceUint8[i * sourcePointSize + 5];
-		tempUint8[2] = sourceUint8[i * sourcePointSize + 6];
-		tempUint8[3] = sourceUint8[i * sourcePointSize + 7];
-		let y = tempInt32[0];
-
-		tempUint8[0] = sourceUint8[i * sourcePointSize + 8];
-		tempUint8[1] = sourceUint8[i * sourcePointSize + 9];
-		tempUint8[2] = sourceUint8[i * sourcePointSize + 10];
-		tempUint8[3] = sourceUint8[i * sourcePointSize + 11];
-		let z = tempInt32[0];
-
-		x = x * scale[0] + offset[0] - event.data.mins[0];
-		y = y * scale[1] + offset[1] - event.data.mins[1];
-		z = z * scale[2] + offset[2] - event.data.mins[2];
-
-		positions[3 * i + 0] = x;
-		positions[3 * i + 1] = y;
-		positions[3 * i + 2] = z;
-
-		mean[0] += x / numPoints;
-		mean[1] += y / numPoints;
-		mean[2] += z / numPoints;
-
-		tightBoundingBox.min[0] = Math.min(tightBoundingBox.min[0], x);
-		tightBoundingBox.min[1] = Math.min(tightBoundingBox.min[1], y);
-		tightBoundingBox.min[2] = Math.min(tightBoundingBox.min[2], z);
-
-		tightBoundingBox.max[0] = Math.max(tightBoundingBox.max[0], x);
-		tightBoundingBox.max[1] = Math.max(tightBoundingBox.max[1], y);
-		tightBoundingBox.max[2] = Math.max(tightBoundingBox.max[2], z);
-
-		// INTENSITY
-		tempUint8[0] = sourceUint8[i * sourcePointSize + 12];
-		tempUint8[1] = sourceUint8[i * sourcePointSize + 13];
-		let intensity = tempUint16[0];
-		intensities[i] = intensity;
-
-		// RETURN NUMBER, stored in the first 3 bits - 00000111
-		let returnNumber = sourceUint8[i * sourcePointSize + 14] & 0b111;
-		returnNumbers[i] = returnNumber;
-
-		// NUMBER OF RETURNS, stored in 00111000
-		numberOfReturns[i] = (sourceUint8[i * pointSize + 14] & 0b111000) >> 3;
-
-		debugger;
-
-		// CLASSIFICATION
-		let classification = sourceUint8[i * sourcePointSize + 15];
-		classifications[i] = classification;
-
-		// POINT SOURCE ID
-		tempUint8[0] = sourceUint8[i * sourcePointSize + 18];
-		tempUint8[1] = sourceUint8[i * sourcePointSize + 19];
-		let pointSourceID = tempUint16[0];
-		pointSourceIDs[i] = pointSourceID;
-
-		// COLOR, if available
-		if (pointFormatID === 2) {
-			tempUint8[0] = sourceUint8[i * sourcePointSize + 20];
-			tempUint8[1] = sourceUint8[i * sourcePointSize + 21];
-			let r = tempUint16[0];
-
-			tempUint8[0] = sourceUint8[i * sourcePointSize + 22];
-			tempUint8[1] = sourceUint8[i * sourcePointSize + 23];
-			let g = tempUint16[0];
-
-			tempUint8[0] = sourceUint8[i * sourcePointSize + 24];
-			tempUint8[1] = sourceUint8[i * sourcePointSize + 25];
-			let b = tempUint16[0];
-
-			r = r / 256;
-			g = g / 256;
-			b = b / 256;
-			colors[4 * i + 0] = r;
-			colors[4 * i + 1] = g;
-			colors[4 * i + 2] = b;
-
-		}
-	}
-
-	let indices = new ArrayBuffer(numPoints * 4);
-	let iIndices = new Uint32Array(indices);
-	for (let i = 0; i < numPoints; i++) {
-		iIndices[i] = i;
-	}
-
-	performance.mark("laslaz-end");
-	performance.measure("laslaz", "laslaz-start", "laslaz-end");
-
-	let measure = performance.getEntriesByType("measure")[0];
-	let dpp = 1000 * measure.duration / numPoints;
-	let debugMessage = `${measure.duration.toFixed(3)} ms, ${numPoints} points, ${dpp.toFixed(3)} micros / point`;
-	console.log(debugMessage);
-
-	performance.clearMarks();
-	performance.clearMeasures();
-
-	let message = {
-		mean: mean,
-		position: pBuff,
-		color: cBuff,
-		intensity: iBuff,
-		classification: clBuff,
-		returnNumber: rnBuff,
-		numberOfReturns: nrBuff,
-		pointSourceID: psBuff,
-		tightBoundingBox: tightBoundingBox,
-		indices: indices
-	};
-
-	let transferables = [
-		message.position,
-		message.color,
-		message.intensity,
-		message.classification,
-		message.returnNumber,
-		message.numberOfReturns,
-		message.pointSourceID,
-		message.indices];
-
-	debugger;
-
-	postMessage(message, transferables);
-};
-
-
-function readUsingDataView(event) {
-
-	performance.mark("laslaz-start");
-
-	let buffer = event.data.buffer;
-	let numPoints = event.data.numPoints;
-	let sourcePointSize = event.data.pointSize;
-	let pointFormatID = event.data.pointFormatID;
-	let scale = event.data.scale;
-	let offset = event.data.offset;
-
-	let sourceView = new DataView(buffer);
-
-	let tightBoundingBox = {
-		min: [Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE],
-		max: [-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE]
-	};
-
-	let mean = [0, 0, 0];
-
-	let pBuff = new ArrayBuffer(numPoints * 3 * 4);
-	let cBuff = new ArrayBuffer(numPoints * 4);
-	let iBuff = new ArrayBuffer(numPoints * 4);
-	let clBuff = new ArrayBuffer(numPoints);
-	let rnBuff = new ArrayBuffer(numPoints);
-	let nrBuff = new ArrayBuffer(numPoints);
-	let psBuff = new ArrayBuffer(numPoints * 2);
-
-	let positions = new Float32Array(pBuff);
-	let colors = new Uint8Array(cBuff);
-	let intensities = new Float32Array(iBuff);
-	let classifications = new Uint8Array(clBuff);
-	let returnNumbers = new Uint8Array(rnBuff);
-	let numberOfReturns = new Uint8Array(nrBuff);
-	let pointSourceIDs = new Uint16Array(psBuff);
-	
-	const rangeIntensity = [Infinity, -Infinity];
-	const rangeClassification = [Infinity, -Infinity];
-	const rangeReturnNumber = [Infinity, -Infinity];
-	const rangeNumberOfReturns = [Infinity, -Infinity];
-	const rangeSourceID = [Infinity, -Infinity];
-
-	for (let i = 0; i < numPoints; i++) {
-		// POSITION
-		let ux = sourceView.getInt32(i * sourcePointSize + 0, true);
-		let uy = sourceView.getInt32(i * sourcePointSize + 4, true);
-		let uz = sourceView.getInt32(i * sourcePointSize + 8, true);
-
-		x = ux * scale[0] + offset[0] - event.data.mins[0];
-		y = uy * scale[1] + offset[1] - event.data.mins[1];
-		z = uz * scale[2] + offset[2] - event.data.mins[2];
-
-		positions[3 * i + 0] = x;
-		positions[3 * i + 1] = y;
-		positions[3 * i + 2] = z;
-
-		mean[0] += x / numPoints;
-		mean[1] += y / numPoints;
-		mean[2] += z / numPoints;
-
-		tightBoundingBox.min[0] = Math.min(tightBoundingBox.min[0], x);
-		tightBoundingBox.min[1] = Math.min(tightBoundingBox.min[1], y);
-		tightBoundingBox.min[2] = Math.min(tightBoundingBox.min[2], z);
-
-		tightBoundingBox.max[0] = Math.max(tightBoundingBox.max[0], x);
-		tightBoundingBox.max[1] = Math.max(tightBoundingBox.max[1], y);
-		tightBoundingBox.max[2] = Math.max(tightBoundingBox.max[2], z);
-
-		// INTENSITY
-		let intensity = sourceView.getUint16(i * sourcePointSize + 12, true);
-		intensities[i] = intensity;
-		rangeIntensity[0] = Math.min(rangeIntensity[0], intensity);
-		rangeIntensity[1] = Math.max(rangeIntensity[1], intensity);
-
-		// RETURN NUMBER, stored in the first 3 bits - 00000111
-		// number of returns stored in next 3 bits   - 00111000
-		let returnNumberAndNumberOfReturns = sourceView.getUint8(i * sourcePointSize + 14, true);
-		let returnNumber = returnNumberAndNumberOfReturns & 0b0111;
-		let numberOfReturn = (returnNumberAndNumberOfReturns & 0b00111000) >> 3;
-		returnNumbers[i] = returnNumber;
-		numberOfReturns[i] = numberOfReturn;
-		rangeReturnNumber[0] = Math.min(rangeReturnNumber[0], returnNumber);
-		rangeReturnNumber[1] = Math.max(rangeReturnNumber[1], returnNumber);
-		rangeNumberOfReturns[0] = Math.min(rangeNumberOfReturns[0], numberOfReturn);
-		rangeNumberOfReturns[1] = Math.max(rangeNumberOfReturns[1], numberOfReturn);
-
-		// CLASSIFICATION
-		let classification = sourceView.getUint8(i * sourcePointSize + 15, true);
-		classifications[i] = classification;
-		rangeClassification[0] = Math.min(rangeClassification[0], classification);
-		rangeClassification[1] = Math.max(rangeClassification[1], classification);
-
-		// POINT SOURCE ID
-		let pointSourceID = sourceView.getUint16(i * sourcePointSize + 18, true);
-		pointSourceIDs[i] = pointSourceID;
-		rangeSourceID[0] = Math.min(rangeSourceID[0], pointSourceID);
-		rangeSourceID[1] = Math.max(rangeSourceID[1], pointSourceID);
-
-		// COLOR, if available
-		if (pointFormatID === 2) {
-			let r = sourceView.getUint16(i * sourcePointSize + 20, true) / 256;
-			let g = sourceView.getUint16(i * sourcePointSize + 22, true) / 256;
-			let b = sourceView.getUint16(i * sourcePointSize + 24, true) / 256;
-
-			colors[4 * i + 0] = r;
-			colors[4 * i + 1] = g;
-			colors[4 * i + 2] = b;
-			colors[4 * i + 3] = 255;
-		}
-	}
-
-	let indices = new ArrayBuffer(numPoints * 4);
-	let iIndices = new Uint32Array(indices);
-	for (let i = 0; i < numPoints; i++) {
-		iIndices[i] = i;
-	}
-
-	performance.mark("laslaz-end");
-
-	//{ // print timings
-	//	performance.measure("laslaz", "laslaz-start", "laslaz-end");
-	//	let measure = performance.getEntriesByType("measure")[0];
-	//	let dpp = 1000 * measure.duration / numPoints;
-	//	let debugMessage = `${measure.duration.toFixed(3)} ms, ${numPoints} points, ${dpp.toFixed(3)} µs / point`;
-	//	console.log(debugMessage);
-	//}
-	performance.clearMarks();
-	performance.clearMeasures();
-
-	const ranges = {
-		"intensity": rangeIntensity,
-		"classification": rangeClassification,
-		"return number": rangeReturnNumber,
-		"number of returns": rangeNumberOfReturns,
-		"source id": rangeSourceID,
-	};
-
-	let message = {
-		mean: mean,
-		position: pBuff,
-		color: cBuff,
-		intensity: iBuff,
-		classification: clBuff,
-		returnNumber: rnBuff,
-		numberOfReturns: nrBuff,
-		pointSourceID: psBuff,
-		tightBoundingBox: tightBoundingBox,
-		indices: indices,
-		ranges: ranges,
-	};
-
-	let transferables = [
-		message.position,
-		message.color,
-		message.intensity,
-		message.classification,
-		message.returnNumber,
-		message.numberOfReturns,
-		message.pointSourceID,
-		message.indices];
-
-	postMessage(message, transferables);
-};
-
-
-
-onmessage = readUsingDataView;
-//onmessage = readUsingTempArrays;

File diff suppressed because it is too large
+ 0 - 49756
public/static/lib/potree/workers/LASLAZWorker.js


BIN
public/static/test-offline/SS-t-4pMXagRDjk/icon/lQLPDhrvVzvNvTswMLAOU-UNqYnnZQG1YPJUwLwA_48_48.png


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face0_0_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face0_0_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face0_1_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face0_1_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face1_0_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face1_0_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face1_1_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face1_1_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face2_0_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face2_0_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face2_1_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face2_1_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face3_0_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face3_0_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face3_1_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face3_1_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face4_0_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face4_0_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face4_1_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face4_1_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face5_0_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face5_0_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face5_1_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/1k_face5_1_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_0_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_0_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_0_2.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_0_3.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_1_0.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_1_1.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_1_2.jpg


BIN
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_1_3.jpg


+ 0 - 0
public/static/test-offline/SS-t-4pMXagRDjk/images/imagesSS-t-4pMXagRDjk/tiles/0/2k_face0_2_0.jpg


Some files were not shown because too many files changed in this diff