@maptalks/transform-control 0.124.2 → 0.124.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"transform-control.es.js","sources":["../src/common/models.js","../../gl/dist/transcoders.js","../src/common/Util.js","../src/helper/TranslateHelper.js","../src/helper/RotationHelper.js","../src/helper/ScalingHelper.js","../src/helper/PlaneHelper.js","../src/helper/XyzScaleHelper.js","../src/helper/TransformHelper.js","../src/TransformTarget.js","../src/TransformControl.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\nconst yuanhuan41 = {\n 'accessors': [\n {\n 'name': 'Բ��_1_0_positions',\n 'componentType': 5126,\n 'count': 39,\n 'min': [\n 0,\n 0,\n 0\n ],\n 'max': [\n 5.489999771118164,\n 0,\n 5.488900184631348\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': 'Բ��_1_0_normals',\n 'componentType': 5126,\n 'count': 39,\n 'min': [\n 0,\n -0.999939501285553,\n -1\n ],\n 'max': [\n 0.13969914615154266,\n 1,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': 'Բ��_1_0_indices',\n 'componentType': 5123,\n 'count': 105,\n 'min': [\n 0\n ],\n 'max': [\n 38\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'yh41',\n 'byteLength': 1148,\n 'uri': 'data:application/octet-stream;base64,8tKXQAAAAACoNU09FK6vQAAAAAB1Ako/FK6vQAAAAAAAAACATfOAQAAAAAACmkg+K4dWQAAAAAAIrNw+WvUtQAAAAABbsT8/X5gIQAAAAACMSpI/OUWbQAAAAAD0/VQ/LbKHQAAAAAD0/XQ/W0JqQAAAAAC6SZQ/dLXNPwAAAACfq80/H4VHQAAAAAB0JLc/ZognQAAAAAA1XuI/YVSSPwAAAAAukAhABaMKQAAAAAB4nApABcU/PwAAAACF6y1Aw2TiPwAAAACRfidASS63PwAAAABKe0dAJLncPgAAAACze1ZAj1OUPwAAAADjNmpAAppIPgAAAADu64BAnRF1PwAAAAD8qYdAqDVNPQAAAADBypdAgQRVPwAAAAAIPZtAAAAAAAAAAAASpa9AAwlKPwAAAAASpa9AJJd/PAAAAAASpa9AAwlKPwAAAAASpa9AAAAAAAAAAAASpa9Asp1vPQAAAAASpa9AJLn8PQAAAAASpa9AqoJRPgAAAAASpa9ARwOYPgAAAAASpa9AHhbKPgAAAAASpa9A2hv8PgAAAAASpa9A5q4VPwAAAAASpa9A+n4qPwAAAAASpa9AQxw7PwAAAAASpa9AwhdGPwAAAAASpa9AAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAJ5X/OwL+fz8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/Kzs0PAn8f78AAACApLK/PA7uf78AAACAeJkZPefRfz8AAACA+ZldPQSgf78AAACA6XSTPelVfz8AAACALLO3PdT3fr8AAACAfkjZPR2Ofr8AAACANf32Paohfj8AAACAeUYHPqDBfT8AAACASw0PPlt9fb8AAACAAAABAAIAAwABAAAABAABAAMABQABAAQABgAHAAUABwABAAUABgAIAAcABgAJAAgACgAJAAYACgALAAkACgAMAAsADQAMAAoADQAOAAwADwAOAA0ADwAQAA4ADwARABAAEgARAA8AEgATABEAFAATABIAFAAVABMAFgAVABQAFgAXABUAGAAXABYAGAAZABcAGgAbABwAHQAbABoAHgAbAB0AHwAbAB4AIAAbAB8AIQAbACAAIgAbACEAIwAbACIAJAAbACMAJQAbACQAJgAbACUAAAA='\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 468,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 468,\n 'byteOffset': 468,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 212,\n 'byteOffset': 936,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat_002',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.588,\n 0.588,\n 0.588,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.99\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': 'Բ��_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': 'Բ��',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst yuanpan = {\n 'accessors': [\n {\n 'name': 'Circle001_1_0_positions',\n 'componentType': 5126,\n 'count': 28,\n 'min': [\n -1.9510999917984009,\n 0,\n -1.9510999917984009\n ],\n 'max': [\n 1.9510999917984009,\n 0,\n 1.9510999917984009\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': 'Circle001_1_0_normals',\n 'componentType': 5126,\n 'count': 28,\n 'min': [\n 0,\n 1,\n 0\n ],\n 'max': [\n 0,\n 1,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': 'Circle001_1_0_indices',\n 'componentType': 5123,\n 'count': 78,\n 'min': [\n 0\n ],\n 'max': [\n 27\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'yuanpan',\n 'byteLength': 828,\n 'uri': 'data:application/octet-stream;base64,S+rkvgAAAADRIvM/AAAAAAAAAAClvfk/S+rkPgAAAADRIvM/0SLzvwAAAABL6uQ+MlXgvwAAAACsi1s/c9fCvwAAAACvJZw/pb35vwAAAAAAAAAA0SLzvwAAAABL6uS+MlXgvwAAAACsi1u/c9fCvwAAAACvJZy/ryWcvwAAAABz18K/rItbvwAAAAAyVeC/S+rkvgAAAADRIvO/AAAAgAAAAAClvfm/S+rkPgAAAADRIvO/rItbPwAAAAAyVeC/ryWcPwAAAABz18K/c9fCPwAAAACvJZy/MlXgPwAAAACsi1u/0SLzPwAAAABL6uS+pb35PwAAAAAAAACA0SLzPwAAAABL6uQ+MlXgPwAAAACsi1s/c9fCPwAAAACvJZw/ryWcvwAAAABz18I/ryWcPwAAAABz18I/rItbvwAAAAAyVeA/rItbPwAAAAAyVeA/AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAABAAIAAwAEAAUABgADAAUABwAGAAUACAAHAAUACQAIAAUACgAJAAUACwAKAAUADAALAAUADQAMAAUADgANAAUADwAOAAUAEAAPAAUAEQAQAAUAEgARAAUAEwASAAUAFAATAAUAFQAUAAUAFgAVAAUAFwAWAAUAFwAFABgAGQAXABgAGQAYABoAGwAZABoAAgAbABoAAAACABoA'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 336,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 336,\n 'byteOffset': 336,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 156,\n 'byteOffset': 672,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'wire_008110135',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.0314,\n 0.4314,\n 0.5294,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.968\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': 'Circle001_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': 'Circle001',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst zzhou = {\n 'accessors': [\n {\n 'name': 'Cube.001-Mesh_0_positions',\n 'componentType': 5126,\n 'count': 45,\n 'min': [\n -0.2711470127105713,\n -5.473427772521973,\n -0.2711470127105713\n ],\n 'max': [\n 0.2711470127105713,\n 0.46298399567604065,\n 0.2711470127105713\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': 'Cube.001-Mesh_0_normals',\n 'componentType': 5126,\n 'count': 45,\n 'min': [\n -1,\n -1,\n -1\n ],\n 'max': [\n 1,\n 1,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': 'Cube.001-Mesh_0_texcoords',\n 'componentType': 5126,\n 'count': 45,\n 'min': [\n 0.125,\n 0\n ],\n 'max': [\n 0.875,\n 1\n ],\n 'type': 'VEC2',\n 'bufferView': 2,\n 'byteOffset': 0\n },\n {\n 'name': 'Cube.001-Mesh_0_indices',\n 'componentType': 5123,\n 'count': 72,\n 'min': [\n 0\n ],\n 'max': [\n 44\n ],\n 'type': 'SCALAR',\n 'bufferView': 3,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'Z',\n 'byteLength': 1584,\n 'uri': 'data:application/octet-stream;base64,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'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 540,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 540,\n 'byteOffset': 540,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 360,\n 'byteOffset': 1080,\n 'byteStride': 8,\n 'target': 34962\n },\n {\n 'name': 'bufferView_3',\n 'buffer': 0,\n 'byteLength': 144,\n 'byteOffset': 1440,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'Material.001',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.8,\n 0.8,\n 0.8,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.676000006\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': 'Cube.001-Mesh',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1,\n 'TEXCOORD_0': 2\n },\n 'indices': 3,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': 'Cube.001',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst jiantou = {\n 'accessors': [\n {\n 'name': '��ͷ_1_0_positions',\n 'componentType': 5126,\n 'count': 7,\n 'min': [\n -0.47690001130104065,\n -0.8044000267982483,\n 0\n ],\n 'max': [\n 0.47780001163482666,\n 0,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': '��ͷ_1_0_normals',\n 'componentType': 5126,\n 'count': 7,\n 'min': [\n 0,\n 0,\n 1\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': '��ͷ_1_0_indices',\n 'componentType': 5123,\n 'count': 15,\n 'min': [\n 0\n ],\n 'max': [\n 6\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'jiantou',\n 'byteLength': 200,\n 'uri': 'data:application/octet-stream;base64,bxIDOintTb8AAAAAH/RsvsKGp74AAAAAPSz0vsKGp74AAAAANs17PsKGp74AAAAANKL0PsKGp74AAAAANs17PgAAAAAAAAAAH/RsvgAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAADAAEAAAAEAAMAAQAFAAYAAQADAAUAAAA='\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 84,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 84,\n 'byteOffset': 84,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 32,\n 'byteOffset': 168,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat_003',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.588,\n 0.588,\n 0.588,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.99\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': '��ͷ_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': '��ͷ',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst xuanzhuan = {\n 'accessors': [\n {\n 'name': '��ת001_1_0_positions',\n 'componentType': 5126,\n 'count': 369,\n 'min': [\n -6.572299957275391,\n -7.298999786376953,\n 0\n ],\n 'max': [\n 6.5742998123168945,\n 7.298299789428711,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': '��ת001_1_0_normals',\n 'componentType': 5126,\n 'count': 369,\n 'min': [\n 0,\n -1,\n 0\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': '��ת001_1_0_indices',\n 'componentType': 5123,\n 'count': 1089,\n 'min': [\n 0\n ],\n 'max': [\n 368\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': '旋转-新',\n 'byteLength': 11036,\n 'uri': 'data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAwABAAAAAwAEAAEAAwAFAAQAAwAGAAUAAwAHAAYAAwAIAAcAAwAJAAgAAwAKAAkAAwALAAoAAwAMAAsADQAMAAMADQAOAAwADQAPAA4ADQAQAA8ADQARABAADQASABEADQATABIADQAUABMADQAVABQADQAWABUADQAXABYADQAYABcADQAZABgADQAaABkADQAbABoAHAAbAA0AHAAdABsAHAAeAB0AHAAfAB4AHAAgAB8AHAAhACAAHAAiACEAHAAjACIAHAAkACMAHAAlACQAHAAmACUAHAAnACYAHAAoACcAHAApACgAHAAqACkAHAArACoAHAAsACsAHAAtACwAHAAuAC0AHAAvAC4AHAAwAC8AHAAxADAAHAAyADEAHAAzADIAHAA0ADMAHAA1ADQAHAA2ADUAHAA3ADYAHAA4ADcAHAA5ADgAHAA6ADkAHAA7ADoAHAA8ADsAHAA9ADwAHAA+AD0AHAA/AD4AHABAAD8AQABBAD8AQQBCAD8AQgBDAD8AHABAAEQAHABEAEUAHABGAEUARgBHAEUARgBIAEcARgBJAEgARgBKAEkARgBLAEoARgBMAEsAHABNAEYAHABOAE0AHABPAE4AHABQAE8AHABRAFAAHABSAFEAUgBTAFEAUgBUAFMAUgBVAFQAUgBWAFUAUgBXAFYAUgBYAFcAHABZAFIAHABaAFkAHABbAFoAHABcAFsAHABdAFwAHABeAF0AHABfAF4AHABgAF8AHABhAGAAHABiAGEAHABjAGIAHABjAGQAZABlAGMAZQBmAGMAHABnAGQAaABpAGoAawBpAGgAbABpAGsAbQBpAGwAbgBpAG0AbwBpAG4AcABpAG8AcQBpAHAAcgBpAHEAcwBpAHIAdABnABwAdAB1AGcAdAB2AHUAdwB4AHkAdwB5AHoAegB5AHsAegB7AHwAfAB7AH0AfAB9AH4AfgB9AH8AfgB/AIAAgQCCAIMAgQCDAIQAhACDAIUAhACFAIYAhgCFAIcAhgCHAIgAiACHAIkAiACJAIoAiwCMAI0AiwCNAI4AjwCKAJAAigCJAJAAkQCSAJMAkQCTAJQAlACTAJUAlACVAJYAlgCVAJcAlgCXAJgAgAB/AIIAgACCAIEAmACXAJkAmACZAJoAmgCZAJsAmgCbAJwAnACbAJ0AnACdAJ4AngCdAHYAngB2AHQAnwB4AHcAoAB4AJ8AoAChAHgAogChAKAAowCkAKUAowCmAKQAowCnAKYAowCoAKcAowCpAKgAowCqAKkAowCrAKoAowCsAKsAowCtAKwAowCuAK0AowCvAK4AowCiAK8AowChAKIAsAChAKMAsQChALAAsgChALEAswChALIAtAChALMAtQChALQAtgChALUAtwChALYAuAChALcAuQChALgAugChALkAuwChALoAvAChALsAvQChALwAvgChAL0AvwChAL4AwAChAL8AwQChAMAAwgChAMEAwwChAMIAxAChAMMAxQChAMQAxgChAMUAxwChAMYAyAChAMcAyQChAMgAygChAMkAywChAMoAzAChAMsAzQChAMwAzgChAM0AzwChAM4A0AChAM8A0QChANAA0gChANEA0wChANIA1AChANMA1QChANQA1gChANUA1wChANYA2AChANcA2QChANgA2gChANkA2wChANoA3AChANsA3QChANwA3gChAN0A3wChAN4A4AChAN8A4QChAOAA4gChAOEA4wChAOIA5AChAOMA5QChAOQA5gChAOUA5wChAOYA6AChAOcA6QChAOgA6gChAOkA6wChAOoA7AChAOsA7QChAOwA7gChAO0A7wChAO4A8AChAO8A8QChAO8A8gChAPEA8wChAPIA9AChAPMA9QChAPQA9gChAPUA9gD3AKEA+AD3APYA+QD3APgA+gD3APkA+wD3APoA/AD3APsA/QD3APwA/gD3AP0A/wD3AP4AAAH3AP8AAQH3AAABAgH3AAEBAwH3AAIBBAH3AAMBBQH3AAQBBgH3AAUBBgEHAfcACAEHAQYBCQEHAQgBCgEHAQkBCwEHAQoBDAEHAQsBDQEHAQwBDgEHAQ0BDwEHAQ4BEAEHAQ8BEQESARMBFAESAREBFAEVARIBFgEVARQBFgEXARUBGAEXARYBGAEZARcBGgEbARgBGwEcARgBHAEZARgBHAEdARkBHQEeARkBHwEeAR0BGgEgARsBIQEeAR8BGgEiASABIwEiARoBIQEkAR4BJQEkASEBIwEmASIBJwEkASUBIwEoASYBKQEoASMBJwEqASQBKwEqAScBKQEsASgBLQEsASkBKwEuASoBLwEuASsBLQEwASwBMQEuAS8BLQEyATABjgCNADMBjgAzATQBNQE2ATcBNQE3ATgBOAE3ATkBOAE5AToBOwE8AT0BOwE9AT4BPwFAAUEBPwFBAUIBPgE9AUMBPgFDAUQBRQFGAUABRQFAAT8BRwFIAZIARwGSAJEASQFKAUYBSQFGAUUBRAFDAUsBRAFLAUwBOgE5AUoBOgFKAUkBTAFLAU0BTAFNAU4BTgFNAU8BTgFPAVABQgFBAVEBQgFRAVIBUgFRAS4BUgEuATEBNAEzATwBNAE8ATsBUwFUATYBUwE2ATUBUAFPATIBUAEyAS0BiwBVAYwAVgFUAVMBiwBXAVUBWAFUAVYBWAFZAVQBWgFXAYsAWgFbAVcBXAFZAVgBXAFdAVkBXgFbAVoBXgFfAVsBYAFdAVwBXgFhAV8BYgFdAWABYgFjAV0BZAFhAV4BZAFlAWEBZgFjAWIBZAFnAWUBZwFjAWYBZAFjAWcBZAFoAWMBaQFoAWQBaQFqAWgBawFqAWkBawFsAWoBbQFsAWsBbQFuAWwBbwFwAUgBbwFIAUcBAAA='\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 4428,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 4428,\n 'byteOffset': 4428,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 2180,\n 'byteOffset': 8856,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.5,\n 0.5,\n 0.5,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 1\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': '��ת001_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': '��ת001',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst yuanhuan411 = {\n 'accessors': [\n {\n 'name': '����СȦ_1_0_positions',\n 'componentType': 5126,\n 'count': 28,\n 'min': [\n 0.026000000536441803,\n -4.6834001541137695,\n 0\n ],\n 'max': [\n 4.696700096130371,\n -0.014800000004470348,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': '����СȦ_1_0_normals',\n 'componentType': 5126,\n 'count': 28,\n 'min': [\n 0,\n 0,\n 1\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': '����СȦ_1_0_indices',\n 'componentType': 5123,\n 'count': 78,\n 'min': [\n 0\n ],\n 'max': [\n 27\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'yuanhuan411',\n 'byteLength': 828,\n 'uri': 'data:application/octet-stream;base64,ufwXQLN7Mr8AAAAAObRAQLFQK78AAAAA1ediQMWP8b4AAAAAGQQ6QCv2174AAAAAqFdeQHUCWr4AAAAA7FGCQL6fmr0AAAAAHHyDQDLmrr4AAAAAXkuWQJf/kL4AAAAAXkuWQLN7crwAAAAAMCrxP2RdhL8AAAAA/BgDQJeQn78AAAAADeARQAg9i78AAAAAukkIQISeXb8AAAAAZaogQH/Zbb8AAAAA7Q3ePr4wOcAAAAAA5IMuP9/gP8AAAAAAJQZxPwrXH8AAAAAAPZs1P6UsF8AAAAAAdy2hP0VHAsAAAAAAb/CFP5eQ778AAAAA0ES4P32utr8AAAAAAprQPyL9zr8AAAAAi/1lPqqCXcAAAAAA9dv3PtcSYsAAAAAADi2yPZvmgcAAAAAAYTK1PssQg8AAAAAA9P3UPGrelcAAAAAA4liXPmrelcAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMAAwACAAQABQAGAAcABQAHAAgABAACAAYABAAGAAUACQAKAAsACQALAAwAAAANAAEADgAPABAADgAQABEAEQAQABIAEQASABMAFAAVAAoAFAAKAAkADAALAA0ADAANAAAAFgAXAA8AFgAPAA4AGAAZABcAGAAXABYAGgAZABgAGgAbABkAEwASABUAEwAVABQA'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 336,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 336,\n 'byteOffset': 336,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 156,\n 'byteOffset': 672,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.588,\n 0.588,\n 0.588,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.99\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': '����СȦ_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': '����СȦ',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst plane = {\n 'accessors': [\n {\n 'name': 'Rectangle001_1_0_positions',\n 'componentType': 5126,\n 'count': 4,\n 'min': [\n -5,\n -5,\n 0\n ],\n 'max': [\n 5,\n 5,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': 'Rectangle001_1_0_normals',\n 'componentType': 5126,\n 'count': 4,\n 'min': [\n 0,\n 0,\n 1\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': 'Rectangle001_1_0_indices',\n 'componentType': 5123,\n 'count': 6,\n 'min': [\n 0\n ],\n 'max': [\n 3\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'plane',\n 'byteLength': 108,\n 'uri': 'data:application/octet-stream;base64,AACgQAAAoEAAAAAAAACgwAAAoEAAAAAAAACgwAAAoMAAAAAAAACgQAAAoMAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAgADAAAA'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 48,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 48,\n 'byteOffset': 48,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 12,\n 'byteOffset': 96,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'wire_225198087',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.8824,\n 0.7765,\n 0.3412,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.968\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': 'Rectangle001_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': 'Rectangle001',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst yuanhuan = {\n 'accessors': [\n {\n 'name': '����С��_1_0_positions',\n 'componentType': 5126,\n 'count': 104,\n 'min': [\n -5.407599925994873,\n -5.404099941253662,\n 0\n ],\n 'max': [\n 5.405200004577637,\n 5.406300067901611,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': '����С��_1_0_normals',\n 'componentType': 5126,\n 'count': 104,\n 'min': [\n 0,\n 0,\n 1\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': '����С��_1_0_indices',\n 'componentType': 5123,\n 'count': 288,\n 'min': [\n 0\n ],\n 'max': [\n 103\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': '缩放圈-新',\n 'byteLength': 3072,\n 'uri': 'data:application/octet-stream;base64,KVyjQLbzPT4AAAAAZvesQLbzPT4AAAAAhsmqQC7/YT8AAAAAZ0ShQDC7Vz8AAAAA+u2lwGKhxr8AAAAArK2cwLpJvL8AAAAAEFihwB04V78AAAAAXdyqwE7RYb8AAAAAat6lQEaUxj8AAAAAApqcQG+BvD8AAAAAB18EQFOWlcAAAAAA+u0LQLBynsAAAAAARPoxQNSalMAAAAAAJzEoQIxKjMAAAAAAQBNVQFyPiMAAAAAAIEFJQMDsgMAAAAAA0950QK36dMAAAAAAejZnQFRSZ8AAAAAAXdyAQBBYScAAAAAA+n6IQI0oVcAAAAAAcoqUQAMJMsAAAAAAKjqMQIlBKMAAAAAAXdyAQFdbSUAAAAAA+n6IQDsBVUAAAAAA0950QBTQdEAAAAAAejZnQA5PZ0AAAAAA+n6IwI0oVcAAAAAAwOyAwBBYScAAAAAAXkuMwIlBKMAAAAAA0ZGUwAMJMsAAAAAA5j+8P9ejnMAAAAAAkDFXP65HocAAAAAA1JrGPz7opcAAAAAA/7I7PvhTo8AAAAAA/7I7PmPurMAAAAAAM8RhP/vLqsAAAAAADwutwLbzPT4AAAAA0m+jwLbzPT4AAAAAEFihwDC7Vz8AAAAAXdyqwC7/YT8AAAAArK2cwG+BvD8AAAAA+u2lwEaUxj8AAAAADXGewN/gC0AAAAAAa5qVwIV8BEAAAAAAXkuMwAFNKEAAAAAA0ZGUwD7oMUAAAAAAlIeVQIV8BEAAAAAAlWWeQN/gC0AAAAAAcoqUQD7oMUAAAAAAKjqMQAFNKEAAAAAAQBNVQBB6iEAAAAAAIEFJQKfogEAAAAAAW9N0wK36dMAAAAAAsVBnwFRSZ8AAAAAAlWWeQM/3C8AAAAAAlIeVQNxoBMAAAAAA+n6IwDsBVUAAAAAAwOyAwFdbSUAAAAAAsVBnwA5PZ0AAAAAAW9N0wBTQdEAAAAAAd74LwLBynsAAAAAAkxi8v9ejnMAAAAAAwFsEwFOWlcAAAAAARpRWv65HocAAAAAAayvGvz7opcAAAAAA2c43vvhTo8AAAAAA2c43vmPurMAAAAAAt9Fgv/vLqsAAAAAAt9Fgv7fRqkAAAAAAayvGvybkpUAAAAAAd74LwAponkAAAAAA2c43vv5lo0AAAAAA2c43vmkArUAAAAAARpRWvzxOoUAAAAAAkxi8v9ejnEAAAAAAOdYxwHKKlEAAAAAAwFsEwDqSlUAAAAAA+zoowNBEjEAAAAAAJlNJwKfogEAAAAAAUPxUwBB6iEAAAAAAat6lQGKhxr8AAAAAApqcQLpJvL8AAAAAhsmqQE7RYb8AAAAAZ0ShQB04V78AAAAAZvesQP+yO74AAAAAKVyjQP+yO74AAAAAM8RhP7fRqkAAAAAA/7I7PmkArUAAAAAA/7I7Pv5lo0AAAAAA+u0LQAponkAAAAAA1JrGPybkpUAAAAAAkDFXPzxOoUAAAAAA5j+8P9ejnEAAAAAARPoxQHKKlEAAAAAAB18EQDqSlUAAAAAAJzEoQNBEjEAAAAAA+zoowIxKjMAAAAAAOdYxwNSalMAAAAAAUPxUwFyPiMAAAAAAJlNJwMDsgMAAAAAAa5qVwNxoBMAAAAAADXGewM/3C8AAAAAA0m+jwP+yO74AAAAADwutwP+yO74AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMABAAFAAYABAAGAAcAAwACAAgAAwAIAAkACgALAAwACgAMAA0ADQAMAA4ADQAOAA8ADwAOABAADwAQABEAEgATABQAEgAUABUAFgAXABgAFgAYABkAGgAbABwAGgAcAB0AHgALAAoAHwALAB4AHwAgAAsAIQAgAB8AIgAjACAAIgAgACEAJAAlACYAJAAmACcAJwAmACgAJwAoACkAKgArACwAKgAsAC0ALgAvADAALgAwADEAGQAYADIAGQAyADMANAA1ABsANAAbABoAFQAUADYAFQA2ADcAOAA5ADoAOAA6ADsAPAA9AD4APAA/AD0AQAA/ADwAQABBAD8AQgBBAEAAQgBAAEMARABFAEYARABGAEcARABHAEgARgBJAEcARgBKAEkASwBKAEYASwBMAEoASwBNAEwACQAIAC8ACQAvAC4ALQAsADkALQA5ADgAOwA6AE4AOwBOAE8ATwBOAE0ATwBNAEsAKQAoACsAKQArACoANwA2AFAANwBQAFEAUQBQAFIAUQBSAFMAUwBSAFQAUwBUAFUAVgBXAFgAVgBYAFkAVgBZAFoAWwBZAFgAXABZAFsAXABdAFkAXgBdAFwAXwBdAF4APAA+AGAAPABgAGEAMQAwABcAMQAXABYAYgBjADUAYgA1ADQAYQBgAGMAYQBjAGIAMwAyAF0AMwBdAF8AHQAcAGQAHQBkAGUAZQBkAAUAZQAFAAQAZgBnAAcAZgAHAAYAEQAQABMAEQATABIA'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 1248,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 1248,\n 'byteOffset': 1248,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 576,\n 'byteOffset': 2496,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat_001',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.5,\n 0.5,\n 0.5,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 1\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': '����С��_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': '����С��',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst xyzScale = {\n \"asset\" : {\n \"generator\" : \"Khronos glTF Blender I/O v1.6.16\",\n \"version\" : \"2.0\"\n },\n \"scene\" : 0,\n \"scenes\" : [\n {\n \"name\" : \"Scene\",\n \"nodes\" : [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n ]\n }\n ],\n \"nodes\" : [\n {\n \"mesh\" : 0,\n \"name\" : \"Cube\",\n \"scale\" : [\n 0.7008190751075745,\n 0.014999999664723873,\n 0.014999999664723873\n ]\n },\n {\n \"mesh\" : 1,\n \"name\" : \"Cube.001\",\n \"scale\" : [\n 0.10000000149011612,\n 0.10000000149011612,\n 0.10000000149011612\n ]\n },\n {\n \"mesh\" : 2,\n \"name\" : \"Cube.004\",\n \"rotation\" : [\n 0,\n -0.7071068286895752,\n 0,\n 0.7071068286895752\n ],\n \"scale\" : [\n 0.7008190751075745,\n 0.014999999664723873,\n 0.014999999664723873\n ]\n },\n {\n \"mesh\" : 3,\n \"name\" : \"Cube.003\",\n \"rotation\" : [\n 0,\n -0.7071068286895752,\n 0,\n 0.7071068286895752\n ],\n \"scale\" : [\n 0.10000000149011612,\n 0.10000000149011612,\n 0.10000000149011612\n ]\n },\n {\n \"mesh\" : 4,\n \"name\" : \"Cube.006\",\n \"rotation\" : [\n 0,\n 0,\n 0.7071068286895752,\n 0.7071068286895752\n ],\n \"scale\" : [\n 0.7008190751075745,\n 0.014999999664723873,\n 0.014999999664723873\n ]\n },\n {\n \"mesh\" : 5,\n \"name\" : \"Cube.005\",\n \"rotation\" : [\n 0,\n 0,\n 0.7071068286895752,\n 0.7071068286895752\n ],\n \"scale\" : [\n 0.10000000149011612,\n 0.10000000149011612,\n 0.10000000149011612\n ]\n },\n {\n \"mesh\" : 6,\n \"name\" : \"Cube.002\",\n \"scale\" : [\n 0.10000000149011612,\n 0.10000000149011612,\n 0.10000000149011612\n ]\n },\n ],\n \"materials\" : [\n {\n \"doubleSided\" : true,\n \"name\" : \"Material\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.6938720345497131,\n 0.020288480445742607,\n 0.011612260714173317,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.001\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.6938720345497131,\n 0.020288480445742607,\n 0.011612260714173317,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.002\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.626582869887352,\n 0.626582869887352,\n 0.626582869887352,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.006\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.11193240433931351,\n 0.5583405494689941,\n 0.033104799687862396,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.005\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.11193240433931351,\n 0.5583405494689941,\n 0.033104799687862396,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.010\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.004391402006149292,\n 0.21223078668117523,\n 0.5209956169128418,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.009\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.004391402006149292,\n 0.21223078668117523,\n 0.5209956169128418,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n }\n ],\n \"meshes\" : [\n {\n \"name\" : \"Cube\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 0,\n \"NORMAL\" : 1,\n \"TEXCOORD_0\" : 2\n },\n \"indices\" : 3,\n \"material\" : 0\n }\n ]\n },\n {\n \"name\" : \"Cube.001\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 4,\n \"NORMAL\" : 5,\n \"TEXCOORD_0\" : 6\n },\n \"indices\" : 3,\n \"material\" : 1\n }\n ]\n },\n {\n \"name\" : \"Cube.006\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 10,\n \"NORMAL\" : 11,\n \"TEXCOORD_0\" : 12\n },\n \"indices\" : 3,\n \"material\" : 3\n }\n ]\n },\n {\n \"name\" : \"Cube.005\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 13,\n \"NORMAL\" : 14,\n \"TEXCOORD_0\" : 15\n },\n \"indices\" : 3,\n \"material\" : 4\n }\n ]\n },\n {\n \"name\" : \"Cube.010\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 16,\n \"NORMAL\" : 17,\n \"TEXCOORD_0\" : 18\n },\n \"indices\" : 3,\n \"material\" : 5\n }\n ]\n },\n {\n \"name\" : \"Cube.009\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 19,\n \"NORMAL\" : 20,\n \"TEXCOORD_0\" : 21\n },\n \"indices\" : 3,\n \"material\" : 6\n }\n ]\n },\n {\n \"name\" : \"Cube.002\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 7,\n \"NORMAL\" : 8,\n \"TEXCOORD_0\" : 9\n },\n \"indices\" : 3,\n \"material\" : 2\n }\n ]\n }\n ],\n \"accessors\" : [\n {\n \"bufferView\" : 0,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 2.0003609657287598,\n 1,\n 1\n ],\n \"min\" : [\n 0.0003610849380493164,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 1,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 2,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 3,\n \"componentType\" : 5123,\n \"count\" : 36,\n \"type\" : \"SCALAR\"\n },\n {\n \"bufferView\" : 4,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 14.549108505249023,\n 1,\n 1\n ],\n \"min\" : [\n 12.549108505249023,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 5,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 6,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 7,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 1,\n 1,\n 1\n ],\n \"min\" : [\n -1,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 8,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 9,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 10,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 2.0003609657287598,\n 1,\n 1\n ],\n \"min\" : [\n 0.0003610849380493164,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 11,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 12,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 13,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 14.549108505249023,\n 1,\n 1\n ],\n \"min\" : [\n 12.549108505249023,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 14,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 15,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 16,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 2.0003609657287598,\n 1,\n 1\n ],\n \"min\" : [\n 0.0003610849380493164,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 17,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 18,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 19,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 14.549108505249023,\n 1,\n 1\n ],\n \"min\" : [\n 12.549108505249023,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 20,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 21,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n }\n ],\n \"bufferViews\" : [\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 0\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 288\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 576\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 72,\n \"byteOffset\" : 768\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 840\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 1128\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 1416\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 1608\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 1896\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 2184\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 2376\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 2664\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 2952\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 3144\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 3432\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 3720\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 3912\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 4200\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 4488\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 4680\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 4968\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 5256\n }\n ],\n \"buffers\" : [\n {\n \"byteLength\" : 5448,\n \"uri\" : \"data:application/octet-stream;base64,6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAQAOABQAAQAUAAcACgAGABMACgATABcAFQASAAwAFQAMAA8AEAADAAkAEAAJABYABQACAAgABQAIAAsAEQANAAAAEQAAAAQAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA\"\n }\n ]\n}\n\n\nconst partsModels = {\n yuanhuan,\n yuanhuan41,\n yuanhuan411,\n yuanpan,\n zzhou,\n jiantou,\n xuanzhuan,\n plane,\n xyzScale\n};\n\nexport default partsModels;\n","/*!\n * @maptalks/gl v0.124.2\n * LICENSE : UNLICENSED\n * (c) 2016-2026 maptalks.com\n */\nconst n = function() {\n if (\"undefined\" != typeof globalThis) return globalThis;\n if (\"undefined\" != typeof self) return self;\n if (\"undefined\" != typeof window) return window;\n if (\"undefined\" != typeof global) return global;\n throw new Error(\"unable to locate global object\");\n}, t = n(), e = t.gl_trans__coders = t.gl_trans__coders || {};\n\nfunction r(n) {\n return e[n];\n}\n\nfunction _(n, t) {\n e[n] = t;\n}\n\nfunction o() {\n return n().maptalks_gltf_loader;\n}\n\nfunction l(t) {\n n().maptalks_gltf_loader_bundle = t;\n}\n\ne.inject = function(e) {\n const r = e.toString(), _ = r.indexOf(\"{\") + 1, o = r.substring(0, _), l = t.gl_trans__coders = t.gl_trans__coders || {};\n let s = `${o}\\n const _____getGlobal = ${n.toString()};\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};`;\n for (const n in l) \"inject\" !== n && \"getTranscoder\" !== n && \"registerTranscoder\" !== n && (s += 'tran_____scoders[\"' + n + '\"] =' + l[n].toString() + \"\\n;\");\n return s += \"\\n(\" + n().maptalks_gltf_loader_bundle.toString() + \")({});\\n\", s += \"\\n\" + r.substring(o.length), \n s;\n}, e.registerTranscoder = _, e.getTranscoder = r;\n\nexport { e as default, o as getGLTFLoaderBundle, r as getTranscoder, l as registerGLTFLoaderBundle, _ as registerTranscoder };\n","import { mat4, reshader, quat, vec3 } from '@maptalks/gl';\nimport partsModels from './models';\nimport * as maptalks from 'maptalks';\nimport { getGLTFLoaderBundle } from '@maptalks/gl/dist/transcoders';\n\nconst gltfloader = getGLTFLoaderBundle();\nconst point = [];\nfunction createGLTFMesh(modelName) {\n const loader = new gltfloader.GLTFLoader('', JSON.parse(JSON.stringify(partsModels[modelName])));//避免tc在移除后,再添加新的,内置的gltf受影响\n return loader.load().then(gltf => {\n return gltf;\n });\n}\n\nexport function prepareMesh(modelName, translate, rotation, scale, color, pickingId) {\n const meshes = [];\n const rotate = quat.fromEuler([], rotation[0], rotation[1], rotation[2]);\n const modelMatrix = mat4.fromRotationTranslationScale([], rotate, translate, scale);\n const promise = createGLTFMesh(modelName);\n promise.then(data => {\n const gltfPack = reshader.GLTFHelper.exportGLTFPack(data);\n const geometries = gltfPack.getMeshesInfo();\n geometries.forEach((g, i) => {\n const material = new reshader.Material({ color: color || g.materialInfo.baseColorFactor });\n const mesh = new reshader.Mesh(g.geometry, material);\n mesh.setUniform('uPickingId', pickingId + i);\n const defines = mesh.getDefines();\n defines.HAS_PICKING_ID = 2;\n mesh.setDefines(defines);\n mesh.translate = translate;\n mesh.rotation = rotation;\n mesh.scaling = scale;\n mat4.multiply(mesh.localTransform, modelMatrix, g.nodeMatrix);\n mesh.originTransform = mat4.copy([], mesh.localTransform);\n mesh.originColor = color || g.materialInfo.baseColorFactor;\n meshes.push(mesh);\n });\n if (pickingId > 100) {\n meshes[0].properties['relatedMeshes'] = meshes.slice(1, 2);\n meshes[1].properties['relatedMeshes'] = meshes.slice(0, 1);\n meshes[2].properties['relatedMeshes'] = meshes.slice(3, 4);\n meshes[3].properties['relatedMeshes'] = meshes.slice(2, 3);\n meshes[4].properties['relatedMeshes'] = meshes.slice(5, 6);\n meshes[5].properties['relatedMeshes'] = meshes.slice(4, 5);\n meshes[6].properties['relatedMeshes'] = meshes.slice(0, 6);\n }\n });\n return meshes;\n}\n\nfunction containerPointToPoint(map, containerPoint, targetRes, altitude) {\n if (altitude) {\n const res = targetRes / map['_getResolution']();\n const w2 = map.width / 2, h2 = map.height / 2;\n point[0] = (containerPoint.x - w2) / w2;\n point[1] = containerPoint.y / h2 - 1;\n point[3] = altitude * res;\n const inverseMat = mat4.invert([], map.projViewMatrix);\n vec3.transformMat4(point, point, inverseMat);\n const glScale = map.getGLScale();\n vec3.set(point, point[0] / glScale, point[1] / glScale, point[2] / glScale);\n vec3.scale(point, point, 1 / res);\n return new maptalks.Point(point[0], point[1]);\n } else {\n const coordExtend = map.containerPointToCoordinate(containerPoint);\n return map.coordinateToPointAtRes(coordExtend, targetRes);\n }\n}\n\nfunction pointToContainerPoint(map, point, res, altitude) {\n return map['_pointAtResToContainerPoint'](point, res, altitude);\n}\n\nfunction getAbsoluteValue(value, s) {\n return Math.abs(value) * Math.sign(s);\n}\n\nexport function calFixedScale(target, map) {\n const coordinate = target.getCoordinates();\n const coordPoint = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n const trans = [coordPoint.x, coordPoint.y, 0];\n const currentTrans = getTranslationPoint(map, target.getTranslation());\n vec3.add(trans, trans, currentTrans);\n const containerPoint = pointToContainerPoint(map, new maptalks.Point(trans[0], trans[1]), map.getGLRes());\n containerPoint.x += 85;\n const worldCoordExtend = containerPointToPoint(map, containerPoint, map.getGLRes());\n const currentLength = Math.sqrt(Math.pow(worldCoordExtend.x - trans[0], 2) + Math.pow(worldCoordExtend.y - trans[1], 2));\n const fixedScale = currentLength / 5.272881136101205;\n return fixedScale;\n}\n\nexport function containerPointToWorldPoint(point, map) {\n const coordinate = map.containerPointToCoordinate(new maptalks.Point(point.x, point.y));\n return map.coordinateToPointAtRes(coordinate, map.getGLRes());\n}\n\nexport function getTranslationPoint(map, translation) {\n if (!map) {\n return translation;\n }\n const point = map.distanceToPointAtRes(translation[0], translation[1], map.getGLRes());\n const z = map.altitudeToPoint(translation[2], map.getGLRes());\n return vec3.set([], getAbsoluteValue(point.x, translation[0]), getAbsoluteValue(point.y, translation[1]), getAbsoluteValue(z, translation[2]));\n}\n","import { prepareMesh } from '../common/Util.js';\n\nexport default class TranslateHelper {\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const scale = 340 / 177;\n const right = prepareMesh('jiantou', [1.2 * scale, 0, 0], [0, 0, 90], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 7);\n const bottom = prepareMesh('jiantou', [0, 1.2 * scale, 0], [0, 0, 180], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 8);\n const left = prepareMesh('jiantou', [-1.2 * scale, 0, 0], [0, 0, 270], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 9);\n const up = prepareMesh('jiantou', [0, -1.2 * scale, 0], [0, 0, 0], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 10);\n meshes.push(right, bottom, left, up);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { prepareMesh } from '../common/Util.js';\n\nexport default class RotationHelper {\n\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const scale = 340 / 177;\n const mesh = prepareMesh('xuanzhuan', [0, 0, 0], [180, 0, 0], [0.5 * scale, 0.5 * scale, 0.5 * scale], [50 / 255, 130 / 255, 184 / 255, 0.8], 11);\n meshes.push(mesh);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { prepareMesh } from '../common/Util.js';\nexport default class ScalingHelper {\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const scale = 340 / 177;\n const mesh = prepareMesh('yuanhuan', [0, 0, 0], [0, 0, 0], [0.5 * scale, 0.5 * scale, 0.5 * scale], [149 / 255, 179 / 255, 199 / 255, 0.5], 12);\n meshes.push(mesh);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { prepareMesh } from '../common/Util.js';\n\nexport default class PlaneHelper {\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const mesh = prepareMesh('plane', [0, 0, 0], [0, 0, 0], [10, 10, 10], [1, 0, 0, 0.5], 16);\n meshes.push(mesh);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { prepareMesh } from '../common/Util.js';\n\nexport default class XyzScaleHelper {\n\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const mesh = prepareMesh('xyzScale', [0, 0, 0], [0, 0, 0], [2, 2, 2], null, 113);\n meshes.push(mesh);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { mat4, vec3, quat } from '@maptalks/gl';\nimport TranslateHelper from './TranslateHelper';\nimport RotationHelper from './RotationHelper';\nimport ScalingHelper from './ScalingHelper';\nimport PlaneHelper from './PlaneHelper';\nimport { prepareMesh, calFixedScale, getTranslationPoint } from '../common/Util.js';\nimport XyzScaleHelper from './XyzScaleHelper';\n\nconst VEC3 = [], TRANS = [], MAT4 = [], QUAT = [], SCALE = [], ratio = [177 / 170, 177 / 170, 177 / 170], ROTATION = [];\nconst scaleChangePickingIds = [1, 2, 3, 4, 12];\n\nexport default class TransformHelper {\n constructor() {\n this.translate = new TranslateHelper();\n this.rotation = new RotationHelper();\n this.scaling = new ScalingHelper();\n this.planeHelper = new PlaneHelper();\n this.xyzScaleHelper = new XyzScaleHelper();\n this._meshes = this._prepareMeshes();\n this._rotateClockwise = true;\n }\n\n _prepareMeshes() {\n const meshes = {};\n meshes['translate'] = this.translate.getMeshes();\n meshes['rotation'] = this.rotation.getMeshes();\n meshes['scaling'] = this.scaling.getMeshes();\n meshes['planeHelper'] = this.planeHelper.getMeshes();\n meshes['xyzScale'] = this.xyzScaleHelper.getMeshes();\n const scale = 340 / 177;\n const wn = prepareMesh('yuanhuan41', [-2.745 * scale, 2.745 * scale, 0], [90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [149 / 255, 179 / 255, 199 / 255, 0.6], 1);//缩放\n const en = prepareMesh('yuanhuan41', [2.745 * scale, 2.745 * scale, 0], [-90, 0, 180], [scale * 0.5, scale * 0.5, scale * 0.5], [50 / 255, 130 / 255, 184 / 255, 0.5], 2);\n const es = prepareMesh('yuanhuan41', [2.745 * scale, -2.745 * scale, 0], [90, 0, 180], [scale * 0.5, scale * 0.5, scale * 0.5], [149 / 255, 179 / 255, 199 / 255, 0.6], 3);//缩放\n const ws = prepareMesh('yuanhuan41', [-2.745 * scale, -2.745 * scale, 0], [-90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [50 / 255, 130 / 255, 184 / 255, 0.5], 4);\n const yuanpan = prepareMesh('yuanpan', [0, 0, 0], [90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [89 / 255, 206 / 255, 147 / 255, 0.5], 5);\n const zzhou = prepareMesh('zzhou', [0, 0, 6.5], [90, 0, 0], [1, 1, 1], [14 / 255, 127 / 255, 191 / 255, 1], 6);\n meshes['translate'].push(wn, en, es, ws, yuanpan, zzhou);\n return meshes;\n }\n\n updateMatrix(map, target, angle, scalar, deltaTrans) {\n const coordinate = target.getCoordinates();\n const p = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n const z = target._getPointZ();\n vec3.set(TRANS, p.x, p.y, z);\n const deltaTranslate = vec3.copy(VEC3, deltaTrans);\n const currentTrans = getTranslationPoint(map, target.getTranslation()); //由于gltfmarker中translation单位改成了米,不能直接这样加,需要转换一下\n vec3.add(TRANS, TRANS, currentTrans);\n vec3.add(TRANS, TRANS, deltaTranslate);\n for (const name in this._meshes) {\n for (let i = 0; i < this._meshes[name].length; i++) {\n const m = this._meshes[name][i];\n for (let j = 0; j < m.length; j++) {\n const mesh = m[j];\n const pickingId = mesh.getUniform('uPickingId');\n const translate = vec3.copy(VEC3, mesh.translate);\n let rotation = vec3.copy(ROTATION, mesh.rotation);\n const scaling = mesh.scaling;\n if (pickingId === 11) {\n if (this._rotateClockwise) {\n rotation[2] += angle;\n mesh.rotation[2] += angle;\n } else if (!this._rotateClockwise) {\n rotation[2] += angle;\n mesh.rotation[2] += angle;\n rotation[0] = 360;\n rotation[2] -= 90;\n }\n }\n if (pickingId > 100 && target.getTargets().length === 1) {\n rotation = target.getTargets()[0].getRotation();\n }\n if (scaleChangePickingIds.indexOf(pickingId) > -1) {\n if (pickingId !== 12) {\n scaling[0] += scalar;\n scaling[1] += scalar;\n scaling[2] += scalar;\n } else {\n const translateMesh = this._meshes['translate'][4][0];\n scaling[0] = translateMesh.scaling[0] * 1.2;\n scaling[1] = translateMesh.scaling[0] * 1.2;\n scaling[2] = translateMesh.scaling[0] * 1.2;\n }\n }\n let fixedScale = calFixedScale(target, map);\n fixedScale = vec3.set(MAT4, fixedScale, fixedScale, fixedScale);\n vec3.multiply(translate, translate, fixedScale);\n vec3.multiply(fixedScale, fixedScale, scaling);\n if (pickingId === 1 || pickingId === 2 || pickingId === 3 || pickingId === 4) {\n const tmpScale = vec3.multiply(SCALE, scaling, ratio);\n vec3.multiply(translate, translate, tmpScale);\n }\n const rotate = quat.fromEuler(QUAT, rotation[0], rotation[1], rotation[2]);\n vec3.add(translate, translate, TRANS);\n if (name === 'xyzScale') {\n const sm = mat4.fromRotationTranslationScale([], rotate, translate, fixedScale);\n mat4.multiply(mesh.localTransform, sm, mesh.originTransform);\n } else {\n mat4.fromRotationTranslationScale(mesh.localTransform, rotate, translate, fixedScale);\n }\n }\n }\n }\n }\n\n getMeshes(mode) {\n const meshes = {};\n if (!mode) {\n return meshes;\n }\n if (mode === 'xyzScale') {\n meshes[mode] = this._meshes[mode];\n } else {\n meshes['translate'] = this._meshes.translate;\n if (mode !== 'translate') {\n meshes[mode] = this._meshes[mode];\n }\n }\n return meshes;\n }\n\n _setRotateClockwise(clockwise) {\n this._rotateClockwise = clockwise;\n }\n\n dispose() {\n for (const name in this._meshes) {\n for (let i = 0; i < this._meshes[name].length; i++) {\n const m = this._meshes[name][i];\n for (let j = 0; j < m.length; j++) {\n const mesh = m[j];\n mesh.geometry.dispose();\n mesh.dispose();\n }\n }\n }\n }\n}\n","import { Coordinate, Point } from \"maptalks\";\nimport { vec3, mat4, quat } from '@maptalks/gl';\n\nconst EMPTY_VEC = [], EMPTY_QUAT = [], EMPTY_MAT = [], TEMP_POINT = new Point(0, 0), TEMP_VEC_1 = [], TEMP_VEC_2 = [], TEMP_SCALE = [], EMPTY_TRANS = [0, 0, 0];\nexport default class TransformTarget {\n constructor() {\n this._targetList = [];\n this._translating = [0, 0, 0];\n this._scaling = [1, 1, 1];\n this._rotation = [0, 0, 0];\n }\n\n _add(target) {\n if (Array.isArray(target)) {\n target.forEach(t => {\n this._add(t);\n });\n } else {\n target.on('remove', this._onRemoveTarget, this);\n target._originTRS = {\n coordinate: target.getCoordinates(),\n translation: target.getTranslation(),\n rotation: target.getRotation(),\n scale: target.getScale()\n };\n this._targetList.push(target);\n }\n }\n\n _clear() {\n this._targetList.forEach(t => {\n t.off('remove', this._onRemoveTarget, this);\n });\n this._targetList = [];\n }\n\n _updateTRS(task, deltaTranslate, deltaRotation, deltaScale, limitScale, map, transformcontrol) {\n for (let i = 0; i < this._targetList.length; i++) {\n const target = this._targetList[i];\n const currentRotation = target.getRotation();\n const currentScaling = target.getScale();\n const targetCoordinate = this._calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate);\n let tempScale = null;\n //放大时,拉伸的空间可无限大,但是缩小时,是向圈内缩放,空间有限,需要增加缩小的倍数\n if (deltaScale >= 0) {\n tempScale = deltaScale;\n } else {\n tempScale = deltaScale * (this.options && this.options.scaleStrength || 1.0);\n }\n const targetScale = vec3.add(TEMP_SCALE, vec3.set(EMPTY_VEC, tempScale * currentScaling[0], tempScale * currentScaling[1], tempScale * currentScaling[2]), currentScaling);\n const minScale = Math.min(...targetScale);\n //minScale可能会出现<=0的情况,所以minScale只作为判断是否要限定scale的依据,计算的逻辑则用当前target的scale去计算,当前target的scale可以保证>=0.01\n if (Math.abs(minScale) < limitScale) {//scale有可能是负,例如翻转的情况\n const currentMinScale = Math.abs(minScale);\n targetScale[0] = targetScale[0] * (limitScale / currentMinScale);\n targetScale[1] = targetScale[1] * (limitScale / currentMinScale);\n targetScale[2] = targetScale[2] * (limitScale / currentMinScale);\n }\n const targetRotation = vec3.add(currentRotation, deltaRotation, currentRotation);\n target.setCoordinates(targetCoordinate);\n this._scaleXYZ(task, targetScale, currentScaling);\n const currentTrans = target.getTranslation();\n target.setTRS(currentTrans, targetRotation, targetScale);\n }\n vec3.set(TEMP_SCALE, deltaScale, deltaScale, deltaScale);\n vec3.add(this._rotation, deltaRotation, this._rotation);\n vec3.add(this._scaling, TEMP_SCALE, this._scaling);\n vec3.add(this._translating, deltaTranslate, this._translating);\n if (task.indexOf('translate') > -1) {\n transformcontrol.fire('positionchange', { action: task, type: 'positionchange', transformtarget: this._targetList, center: this.getCoordinates(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\n } else {\n transformcontrol.fire('transforming', { action: task, type: 'transforming', transformtarget: this._targetList, center: this._targetList[0].getTransformOrigin(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\n }\n }\n\n _calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate) {\n const center = target.getCenter();\n const originCenter = target.getTransformOrigin();\n const glRes = map.getGLRes();\n const pCenter = map.coordinateToPointAtRes(center, glRes, TEMP_POINT);\n pCenter.z = map.altitudeToPoint(center.z, glRes);\n vec3.set(TEMP_VEC_1, pCenter.x, pCenter.y, pCenter.z || 0);\n const pOriginCenter = map.coordinateToPointAtRes(originCenter, glRes, TEMP_POINT);\n pOriginCenter.z = map.altitudeToPoint(originCenter.z, glRes);\n vec3.set(TEMP_VEC_2, pOriginCenter.x , pOriginCenter.y, pOriginCenter.z || 0);\n const point = vec3.sub(EMPTY_VEC, TEMP_VEC_1, TEMP_VEC_2);\n const rotation = quat.fromEuler(EMPTY_QUAT, 0, 0, deltaRotation[2]);\n vec3.set(TEMP_SCALE, deltaScale + 1, deltaScale + 1, deltaScale + 1);\n const trsMatrix = mat4.fromRotationTranslationScale(EMPTY_MAT, rotation, deltaTranslate, TEMP_SCALE);\n vec3.transformMat4(point, point, trsMatrix);\n vec3.add(point, point, TEMP_VEC_2);\n TEMP_POINT.set(point[0], point[1]);\n const newCenter = map.pointAtResToCoordinate(TEMP_POINT, glRes);\n newCenter.z = point[2] / map.altitudeToPoint(1, glRes);\n return newCenter;\n }\n\n _scaleXYZ(task, targetScale, currentScaling) {\n if (task === 'x-scale') {\n targetScale[1] = currentScaling[1];\n targetScale[2] = currentScaling[2];\n } if (task === 'y-scale') {\n targetScale[0] = currentScaling[0];\n targetScale[2] = currentScaling[2];\n } if (task === 'z-scale') {\n targetScale[0] = currentScaling[0];\n targetScale[1] = currentScaling[1];\n }\n return targetScale;\n }\n\n _reset() {\n this._targetList.forEach(target => {\n if (target._originTRS) {\n const { coordinate, translation, rotation, scale } = target._originTRS;\n target.setCoordinates(coordinate);\n target.setTRS(translation, rotation, scale);\n }\n });\n }\n\n getScale() {\n return this._scaling;\n }\n\n getTranslation() {\n if (this._targetList.length === 1) {\n return this._targetList[0].getTranslation() || EMPTY_TRANS;\n }\n return EMPTY_TRANS;\n }\n\n getRotation() {\n return this._rotation;\n }\n\n _getLayer() {\n if (this._targetList[0]) {\n return this._targetList[0].getLayer();\n }\n return null;\n }\n\n getCoordinates() {\n let cx = 0, cy = 0, cz = 0\n const len = this._targetList.length;\n if (!len) {\n return null;\n }\n for (let i = 0; i < len; i++) {\n const center = this._targetList[i].getCenter();\n cx += center.x;\n cy += center.y;\n cz += center.z || 0;\n }\n cx = cx / len;\n cy = cy / len;\n cz = cz / len;\n const newCenter = new Coordinate(cx, cy, cz);\n for (let i = 0; i < len; i++) {\n this._targetList[i].setTransformOrigin(newCenter);\n }\n return newCenter;\n }\n\n _onRemoveTarget(e) {\n const target = e.target;\n const index = this._targetList.indexOf(target);\n if (index > -1) {\n delete target._originTRS;\n this._targetList.splice(index, 1);\n }\n }\n\n getTargets() {\n return this._targetList;\n }\n\n _getPointZ() {\n let pz = 0\n const len = this._targetList.length;\n for (let i = 0; i < len; i++) {\n const pointZ = this._targetList[i].getPointZ();\n pz += pointZ;\n }\n pz = pz / len;\n return pz;\n }\n\n _isVisible() {\n for (let i = 0; i < this._targetList.length; i++) {\n if (this._targetList[i].isVisible()) {\n return true;\n }\n }\n return false;\n }\n}\n","import { mat4, quat, vec3, vec2, reshader, GroupGLLayer } from '@maptalks/gl';\nimport { Handlerable, Eventable, Class, Point, Coordinate, INTERNAL_LAYER_PREFIX } from 'maptalks';\nimport TransformHelper from './helper/TransformHelper';\nimport { calFixedScale, getTranslationPoint } from './common/Util';\nimport vert from './common/helper.vert';\nimport frag from './common/helper.frag';\nimport TransformTarget from './TransformTarget';\nimport { GLTFLayer, GLTFMarker } from '@maptalks/gltf-layer';\n\nconst translatePickingIds = [5, 6, 7, 8, 9, 10];\nconst translatePickingIds0 = [5, 7, 8, 9, 10];\nconst rotatePickingIds = [2, 4, 11];\nconst scalePickingIds = [1, 3, 12];\nconst noChangeColorPickingIds = [12, 16];\nconst defaultHuanPickingIds = [1, 2, 3, 4];\nconst scaleChnagePickingIds = [1, 2, 3, 4, 12];\nconst limitScale = 0.01;\nconst QUAT = [], SCALE = [], TRANS = [], EMPTY_VEC = [], CENTER = [], START = [], END = [];\nconst options = {\n scaleStrength: 2.0\n};\n\nexport default class TransformControl extends Eventable(Handlerable(Class)) {\n constructor(options = {}) {\n super(options);\n this.options = options;\n this.mouseAction = 'moving';\n this._mode = this.options.mode || 'translate';\n this._enabled = true;\n this.TransformHelper = new TransformHelper();\n this._target = new TransformTarget();\n this.helperScene = new reshader.Scene([]);\n this.addToMapCount = 0;\n this._createHelperLayer();\n }\n\n setCoordinates(coordinate) {\n this._helper.setCoordinates(coordinate);\n this.transform(this._helper);\n }\n\n enable() {\n this._enabled = true;\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n return this;\n }\n\n disable() {\n this._enabled = false;\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n if (this.map) {\n this.map.resetCursor();\n }\n return this;\n }\n\n setMode(mode) {\n this._mode = mode;\n this._resetScale();\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n this.fire('modechange', { mode, type: 'modechange' });\n }\n\n getMode() {\n return this._mode;\n }\n\n isEnable() {\n return this._enabled;\n }\n\n _setMode(pickingId) {\n if (translatePickingIds.indexOf(pickingId) > -1) {\n this._mode = 'translate';\n } else if (rotatePickingIds.indexOf(pickingId) > -1) {\n this._mode = 'rotation';\n } else if (scalePickingIds.indexOf(pickingId) > -1) {\n this._mode = 'scaling';\n } else if (this._mode !== 'xyzScale') {\n this._mode = 'translate';\n }\n }\n\n _getMode() {\n return this._mode;\n }\n\n addTo(map) {\n if (this.map) {\n this._removeEvents();\n console.warn('transform control has been added to a map, it suggest remove from the map before');\n return;\n }\n this.addToMapCount++;\n this.map = map;\n const gllayer = map.getLayers(layer => layer instanceof GroupGLLayer)[0];\n if (gllayer) {\n this._helperlayer.addTo(gllayer);\n } else {\n this._helperlayer.addTo(this.map);\n }\n this.container = map.getContainer();\n map.on('dom:mousemove', this._mouseMoveHandle, this);\n map.on('dom:mousedown', this._mousedownHandle, this);\n map.on('dom:mouseup', this._mouseupHandle, this);\n map.on('zooming moving dragrotating', this._viewchanging, this);\n this._initShader();\n }\n\n _createHelperLayer() {\n this._helperlayer = new GLTFLayer(`${INTERNAL_LAYER_PREFIX}_transformcontrol`);\n this._helper = new GLTFMarker([0, 0], {\n symbol: {\n url: 'cube',\n modelHeight: 1,\n uniforms: {\n polygonOpacity: 0.01\n }\n }\n }).addTo(this._helperlayer);\n }\n\n remove() {\n if (!this.map) {\n return;\n }\n this._removeEvents();\n this.TransformHelper.dispose();\n this._helperlayer.remove();\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n delete this._helper;\n delete this._helperlayer;\n delete this.map;\n delete this.layer;\n delete this.layerRenderer;\n delete this.container;\n delete this._target;\n }\n\n _removeEvents() {\n if (!this.container || !this.map) {\n return;\n }\n this.map.off('dom:mousemove', this._mouseMoveHandle, this);\n this.map.off('dom:mousedown', this._mousedownHandle, this);\n this.map.off('dom:mouseup', this._mouseupHandle, this);\n this.map.off('zooming moving dragrotating', this._viewchanging, this);\n if (this.layer) {\n this.layer.off('renderend', this.render, this);\n }\n }\n\n _mouseMoveHandle(e) {\n if (!this._isAvailable()) {\n return;\n }\n this.currentMousePosition = {\n x: e.containerPoint.x,\n y: e.containerPoint.y\n };\n if (this.mouseAction === 'moving') {\n //在moving的情况下,会激活translate或者rotate两种模式\n const meshes = this._getMeshes();\n this.currentPickingObject = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\n if (this.currentPickingObject && this.currentPickingObject.pickingId != null) {\n this._setMode(this.currentPickingObject.pickingId);\n if (this.currentPickingObject.pickingId === 6) {\n this._transformPlaneHelper(true);\n } else {\n this._transformPlaneHelper(false);\n }\n } else {\n this._transformPlaneHelper(false);\n this._setMode();\n }\n this._meshAction();\n }\n this._transformAction(this.currentMousePosition);\n }\n\n _mousedownHandle(e) {\n if (!this._isAvailable() || e.domEvent.button !== 0) {\n return;\n }\n const meshes = this._getMeshes();\n this.currentMousePosition = {\n x: e.containerPoint.x,\n y: e.containerPoint.y\n };\n this._needRefreshPicking = true;\n this.currentPickingObject = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\n this.firstDownPoint = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\n if (this.currentPickingObject && this.currentPickingObject.meshId != null) {\n this.mouseAction = 'transform';\n this._setTask(this.currentPickingObject.pickingId);\n this.map.config('zoomable', false);\n this.map.config('draggable', false);\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n } else {\n this.mouseAction = 'pan';\n this.map.config('zoomable', true);\n this.map.config('draggable', true);\n this._resetScale();\n }\n this.lastMousePosition = this.currentMousePosition;\n this.lastPickingObject = this.currentPickingObject;\n this.lastPickingMesh = meshes[this.currentPickingObject.meshId];\n }\n\n _mouseupHandle() {\n if (this.mouseAction === 'transform') {\n this.firstDownPoint = null;\n this._resetScale();\n this._needRefreshPicking = true;\n this.fire('transformend', { action: this._task, type: 'transformend', transformtarget: this._target.getTargets() });\n }\n this.mouseAction = 'moving';\n if (this._mode !== 'xyzScale') {\n this._mode = 'translate';\n }\n this.map.config('zoomable', true);\n this.map.config('draggable', true);\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n }\n\n _viewchanging() {\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0][0];\n if (!planeMesh) {\n return;\n }\n const bearing = this.map.getBearing();\n planeMesh.rotation[2] = -bearing;\n this._updateMatrix();\n }\n\n _updateMatrix() {\n if (!this._isAvailable()) {\n return;\n }\n this.TransformHelper.updateMatrix(this.map, this._target, 0, 0, [0, 0, 0]);\n this._needRefreshPicking = true;\n }\n\n picked(coordinate) {\n if (!this.layerRenderer) {\n return false;\n }\n const meshes = this._getMeshes();\n const map = this.map;\n let containerPoint = coordinate;\n if (!(coordinate instanceof Point)) {\n containerPoint = map.coordinateToContainerPoint(new Coordinate(coordinate));\n }\n const pickingObject = this._getPickingPoint(containerPoint, meshes, 'picked');\n if (pickingObject && pickingObject.meshId !== null) {\n return true;\n }\n return false;\n }\n\n _resetScale() {\n const scalingMesh = this.TransformHelper.getMeshes('scaling')['scaling'][0][0];\n const scale = 340 / 177;\n scalingMesh.scaling = [0.6 * scale, 0.6 * scale, 0.6 * scale];\n if (this.layerRenderer) {\n this._resetScaleControl(scalingMesh);\n this._resetDefaultColor();\n }\n }\n\n _resetDefaultColor() {\n const defaultMeshes = this.TransformHelper['_meshes'].translate;\n defaultMeshes.forEach(meshes => {\n for (let i = 0; i < meshes.length; i++) {\n const mesh = meshes[i];\n if (defaultHuanPickingIds.indexOf(mesh.getUniform('uPickingId')) > -1) {\n mesh.material.set('color', mesh.originColor);\n }\n }\n });\n }\n\n _resetScaleControl(mesh) {\n const coordinate = this._target.getCoordinates();\n const p = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\n const trans = [p.x, p.y, 0];\n const originTrans = getTranslationPoint(this.map, this._target.getTranslation());\n vec3.add(trans, trans, originTrans);\n const translate = vec3.copy([], mesh.translate);\n const scaling = mesh.scaling;\n let fixedScale = calFixedScale(this._target, this.map);\n fixedScale = vec3.set([], fixedScale, fixedScale, fixedScale);\n vec3.multiply(translate, translate, fixedScale);\n vec3.multiply(fixedScale, fixedScale, scaling);\n vec3.add(translate, translate, trans);\n mat4.fromRotationTranslationScale(mesh.localTransform, [0, 0, 0, 1], translate, fixedScale);\n const meshes = this._getMeshes();\n meshes.forEach(mesh => {\n const meshid = mesh.getUniform('uPickingId');\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\n const translate = vec3.copy([], mesh.translate);\n const scale = 170 / 177;\n mesh.scaling = [scale, scale, scale];\n const scaling = mesh.scaling;\n const rotation = mesh.rotation;\n let fixedScale = calFixedScale(this._target, this.map);\n fixedScale = vec3.set([], fixedScale, fixedScale, fixedScale);\n vec3.multiply(translate, translate, fixedScale);\n vec3.multiply(fixedScale, fixedScale, scaling);\n vec3.add(translate, translate, trans);\n const rotate = quat.fromEuler([], rotation[0], rotation[1], rotation[2]);\n mat4.fromRotationTranslationScale(mesh.localTransform, rotate, translate, fixedScale);\n }\n });\n }\n\n _getWorldPosition(containerPoint) {\n const coordinate = this.map.containerPointToCoordinate(containerPoint);\n const worldPosition = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\n return {\n point: [worldPosition.x, worldPosition.y]\n };\n }\n\n _transformAction(mousePosition) {\n if (this.mouseAction === 'transform') {\n const mode = this._getMode();\n const currentTrans = getTranslationPoint(this.map, this._target.getTranslation());\n const z = this._target._getPointZ();\n let planeInteract = null, lastPlaneInteract = null;\n if (currentTrans[2] + z < 0.01 && this._task !== 'z-translate') { //target不是贴着地面的情况下\n planeInteract = this._getWorldPosition(this.currentMousePosition);\n lastPlaneInteract = this._getWorldPosition(this.lastMousePosition);\n } else {\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0];\n planeInteract = this._getPickingPoint(this.currentMousePosition, planeMesh, 'plane');\n lastPlaneInteract = this._getPickingPoint(this.lastMousePosition, planeMesh, 'plane');\n if (!planeInteract || planeInteract.meshId === null || !lastPlaneInteract || lastPlaneInteract.meshId === null) {\n return;\n }\n }\n const deltaTranslate = [0, 0, 0];\n const deltaRotation = [0, 0, 0];\n let deltaScale = 0;\n let deltaAngle = 0;\n let helperDeltaScale = 0;\n if (mode === 'translate') {\n if (this._task === 'xy-translate') {\n const deltaTransX = planeInteract.point[0] - lastPlaneInteract.point[0];\n const deltaTransY = planeInteract.point[1] - lastPlaneInteract.point[1];\n deltaTranslate[0] = deltaTransX;\n deltaTranslate[1] = deltaTransY;\n } else if (this._task === 'x-translate') {\n const deltaTransX = planeInteract.point[0] - lastPlaneInteract.point[0];\n deltaTranslate[0] = deltaTransX;\n } else if (this._task === 'y-translate') {\n const deltaTransY = planeInteract.point[1] - lastPlaneInteract.point[1];\n deltaTranslate[1] = deltaTransY;\n } else if (this._task === 'z-translate') {\n let deltaTransZ = 0;\n if (!this._isInMapCenter()) {\n deltaTransZ = planeInteract.point[2] - lastPlaneInteract.point[2];\n } else {\n const glRes = this.map.getGLRes();\n const lastContainerPoint = this.map['_pointAtResToContainerPoint'](new Point(lastPlaneInteract.point[0], lastPlaneInteract.point[1]), glRes);\n const currentContainerPoint = this.map['_pointAtResToContainerPoint'](new Point(planeInteract.point[0], planeInteract.point[1]), glRes);\n const distance = vec2.length(vec2.set(EMPTY_VEC, planeInteract.point[0] - lastPlaneInteract.point[0], planeInteract.point[1] - lastPlaneInteract.point[1]));\n if (currentContainerPoint.y < lastContainerPoint.y) {\n deltaTransZ = distance;\n } else {\n deltaTransZ = -distance;\n }\n }\n deltaTranslate[2] = deltaTransZ;\n }\n } else if (mode === 'rotation') {\n deltaAngle = this._calAngle(planeInteract.point, lastPlaneInteract.point);\n if (deltaAngle >= 0) {\n this.TransformHelper._setRotateClockwise(true);\n } else {\n this.TransformHelper._setRotateClockwise(false);\n }\n deltaRotation[2] += deltaAngle;\n } else if (mode === 'scaling' || mode === 'xyzScale') {\n const center = this._getCurrentCenter();\n const firstDistance = vec2.length(vec2.set(EMPTY_VEC, this.firstDownPoint.point[0] - center[0], this.firstDownPoint.point[1] - center[1]));\n const scaleDistance = vec2.length(vec2.set(EMPTY_VEC, lastPlaneInteract.point[0] - center[0], lastPlaneInteract.point[1] - center[1]));\n deltaScale = this._calDirection(planeInteract.point, lastPlaneInteract.point, center, scaleDistance);\n helperDeltaScale = this._calDirection(planeInteract.point, lastPlaneInteract.point, center, firstDistance);\n }\n this.TransformHelper.updateMatrix(this.map, this._target, deltaAngle, helperDeltaScale, deltaTranslate);//TC自己转动\n this._target._updateTRS(this._task, deltaTranslate, deltaRotation, deltaScale, limitScale, this.map, this);\n }\n this.lastMousePosition = mousePosition;\n this.lastPickingObject = this.currentPickingObject;\n const meshes = this._getMeshes();\n this.lastPickingMesh = meshes[this.currentPickingObject.meshId];\n }\n\n _calDirection(from, to, center, distance, currentScaling) {\n const distanceFrom = vec2.length(vec2.set(EMPTY_VEC, from[0] - center[0], from[1] - center[1]));\n const distanceTo = vec2.length(vec2.set(EMPTY_VEC, to[0] - center[0], to[1] - center[1]));\n const scalar = (distanceFrom - distanceTo) / distance;\n if (currentScaling) {\n return (currentScaling[0] - limitScale) * scalar;\n }\n return scalar;\n }\n\n _getCurrentCenter() {\n const map = this.map;\n const coordinate = this._target.getCoordinates();\n const center = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n const trans = vec3.set(CENTER, center.x, center.y, 0);\n const currentTrans = getTranslationPoint(map, this._target.getTranslation());\n vec3.add(trans, trans, currentTrans);\n return trans;\n }\n\n _transformPlaneHelper(rotated) {\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0][0];\n const trans = mat4.getTranslation(TRANS, planeMesh.localTransform);\n const scaling = mat4.getScaling(SCALE, planeMesh.localTransform);\n let rotation = quat.fromEuler(QUAT, 0, 0, 0);\n const bearing = this.map.getBearing();\n if (rotated && !this._isInMapCenter()) {\n rotation = quat.fromEuler(QUAT, 90, 0, -bearing);\n if (planeMesh.rotation[0] === 0) {\n this._needRefreshPicking = true;\n }\n vec3.set(planeMesh.rotation, 90, 0, -bearing);\n } else {\n if (planeMesh.rotation[0] === 90) {\n this._needRefreshPicking = true;\n }\n vec3.set(planeMesh.rotation, 0, 0, -bearing);\n }\n mat4.fromRotationTranslationScale(planeMesh.localTransform, rotation, trans, scaling);\n }\n\n _isInMapCenter() {\n if (this.map.getPitch()) {\n return false;\n }\n const cameraPos = this.map.cameraPosition;\n const centerPos = this.map.coordinateToPointAtRes(this.map.getCenter(), this.map.getGLRes());\n vec3.set(centerPos, centerPos.x, centerPos.y, 0);\n const coordinate = this._target.getCoordinates();\n const p = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\n const trans = getTranslationPoint(this.map, this._target.getTranslation());\n const position = vec3.set(TRANS, p.x, p.y, 0);\n const worldPos = vec3.add(position, position, trans);\n const vTargetToCamera = vec3.subtract([], cameraPos, worldPos);\n const vCenterToCamera = vec3.subtract([], cameraPos, centerPos);\n const angle = vec3.angle(vTargetToCamera, vCenterToCamera);\n const theta = (1 / 180) * Math.PI;\n if (angle < theta) {\n return true;\n }\n return false;\n }\n\n _meshAction() {\n const meshes = this._getMeshes();\n if (this.currentPickingObject && this.currentPickingObject.meshId != null) {\n this._setCursor();\n if (this.lastPickingObject && this.lastPickingObject.meshId != null && this.lastPickingObject.meshId !== this.currentPickingObject.meshId) {\n this._resetColor();\n }\n const pickedMesh = meshes[this.currentPickingObject.meshId];\n if (pickedMesh && noChangeColorPickingIds.indexOf(this.currentPickingObject.pickingId) < 0) {\n if (this.currentPickingObject.pickingId > 100) {\n this._changeXYZScaleColor(pickedMesh);\n } else {\n const color = [pickedMesh.originColor[0], pickedMesh.originColor[1], pickedMesh.originColor[2], 0.8];\n pickedMesh.material.set('color', color);\n this._setTranslateMeshesColor(pickedMesh, 0.5);\n }\n }\n this.layerRenderer.setToRedraw();\n } else if (this.lastPickingObject && this.lastPickingObject.meshId != null) {\n this.map.resetCursor();\n this._resetColor();\n this.layerRenderer.setToRedraw();\n }\n }\n\n _changeXYZScaleColor(pickedMesh) {\n const color = [255 / 255, 179 / 255, 2 / 255, 1];\n pickedMesh.material.set('color', color);\n if(pickedMesh.properties['relatedMeshes']) {\n pickedMesh.properties['relatedMeshes'].forEach(mesh => {\n mesh.material.set('color', color)\n });\n }\n }\n\n _setCursor() {\n if (this.currentPickingObject.pickingId === 6) {\n this.map.setCursor('ns-resize');\n } else if (translatePickingIds0.indexOf(this.currentPickingObject.pickingId) > -1) {\n this.map.setCursor('move');\n } else {\n this.map.setCursor('pointer');\n }\n }\n\n _resetColor() {\n const lastMesh = this.lastPickingMesh;\n if (!lastMesh) {\n return;\n }\n const pickedId = lastMesh.getUniform('uPickingId');\n const meshes = this._getMeshes();\n if (translatePickingIds0.indexOf(pickedId) > -1) {\n meshes.forEach(mesh => {\n if (translatePickingIds0.indexOf(mesh.getUniform('uPickingId')) > -1) {\n mesh.material.set('color', mesh.originColor);\n }\n });\n } else if (scaleChnagePickingIds.indexOf(pickedId) > -1) {\n meshes.forEach(mesh => {\n const meshid = mesh.getUniform('uPickingId');\n if (defaultHuanPickingIds.indexOf(meshid) > -1) {\n mesh.material.set('color', mesh.originColor);\n }\n });\n } else if (pickedId === 11) {\n meshes.forEach(mesh => {\n if (defaultHuanPickingIds.indexOf(mesh.getUniform('uPickingId')) > -1) {\n mesh.material.set('color', mesh.originColor);\n }\n });\n }\n lastMesh.material.set('color', lastMesh.originColor);\n if(lastMesh.properties['relatedMeshes']) {\n lastMesh.properties['relatedMeshes'].forEach(mesh => {\n mesh.material.set('color', mesh.originColor)\n });\n }\n }\n\n _setTranslateMeshesColor(pickedMesh, opacity) {\n const pickedId = pickedMesh.getUniform('uPickingId');\n const meshes = this._getMeshes();\n if (translatePickingIds0.indexOf(pickedId) > -1) {\n meshes.forEach(mesh => {\n if (translatePickingIds0.indexOf(mesh.getUniform('uPickingId')) > -1) {\n if (mesh.getUniform('uPickingId') !== pickedMesh.getUniform('uPickingId')) {\n const color = [mesh.originColor[0], mesh.originColor[1], mesh.originColor[2], opacity];\n mesh.material.set('color', color);\n }\n }\n });\n } else if (this._mode === 'scaling') {\n meshes.forEach(mesh => {\n const meshid = mesh.getUniform('uPickingId');\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\n const color = [149 / 255, 179 / 255, 199 / 255, 0.8];\n mesh.material.set('color', color);\n }\n });\n } else if (this._mode === 'rotation') {\n meshes.forEach(mesh => {\n const meshid = mesh.getUniform('uPickingId');\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\n const color = mesh.originColor;\n mesh.material.set('color', [color[0], color[1], color[2], 0]);\n }\n });\n }\n }\n\n reset() {\n if (!this.map || !this._target) {\n return;\n }\n this._target._reset();\n this.TransformHelper.updateMatrix(this.map, this._target, 0, 0, [0, 0, 0]);\n }\n\n _calAngle(to, from) {\n const center = this._getCurrentCenter();\n const startDirection = vec2.set(START, from[0] - center[0], from[1] - center[1]);\n const endDirection = vec2.set(END, to[0] - center[0], to[1] - center[1]);\n const startAngle = Math.atan2(startDirection[1], startDirection[0]);\n const endAngle = Math.atan2(endDirection[1], endDirection[0]);\n return ((endAngle - startAngle) / Math.PI) * 180;\n }\n\n _setTask(pickingId) {\n //根据pickingId来判断被鼠标命中的是哪个辅助部件,从而判定当前执行的操作\n if (pickingId === 113 || pickingId === 114) {\n this._task = 'x-scale';\n } else if (pickingId === 115 || pickingId === 116) {\n this._task = 'z-scale';\n } else if (pickingId === 117 || pickingId === 118) {\n this._task = 'y-scale';\n } else if (pickingId === 119) {\n this._task = 'xyz-scale';\n } else if (pickingId === 5) {\n this._task = 'xy-translate';\n } else if (pickingId === 6) {\n this._task = 'z-translate';\n } else if (pickingId === 7 || pickingId === 9) {\n this._task = 'x-translate';\n } else if (pickingId === 8 || pickingId === 10) {\n this._task = 'y-translate';\n } else if (pickingId === 11) {\n this._task = 'z-rotate';\n } else {\n this._task = 'scale';\n }\n return this._task;\n }\n\n transform(targets) {\n if (!targets) {\n return;\n }\n if (this.layerRenderer && this.layerRenderer.layer) {\n this.layerRenderer.layer.off('renderend', this.render);\n this.layerRenderer.layer.off('resizeCanvas', this._resize);\n }\n if (!this.map) {\n console.error('should add to a target first');\n return;\n }\n if (this._target) {\n this._target._clear();\n this._target._add(targets);\n }\n if (!this._target.getTargets().length) {\n return;\n }\n const map = this.map;\n this.TransformHelper.updateMatrix(map, this._target, 0, 0, [0, 0, 0]);\n this._prepareContext();\n this._needRefreshPicking = true;\n }\n\n getTransformTarget() {\n return this._target;\n }\n\n _onRemoveTarget() {\n delete this._target;\n }\n\n _prepareContext() {\n const layer = this._target._getLayer();\n if (layer) {\n layer.off('renderend', this.render);\n layer.off('resizeCanvas', this._resize);\n }\n const map = this.map;\n const layerRenderer = layer.getRenderer();\n this.layerRenderer = layerRenderer;\n this.regl = layerRenderer.regl;\n this.renderer = layerRenderer.renderer;\n this._picking = this.layerRenderer.getFBORayPicking();\n this._uniforms = {\n 'projViewMatrix' : map.projViewMatrix,\n 'projMatrix': map.projMatrix,\n 'viewMatrix': map.viewMatrix,\n 'pointSize': 1.0\n };\n layer.on('renderend', this.render, this);\n layer.on('resizeCanvas', this._resize, this);\n layerRenderer.setToRedraw();\n }\n\n _resize() {\n this._picking.clear();\n this._needRefreshPicking = true;\n }\n\n _getPickingPoint(containerPoint, meshes, task) {\n const map = this.map;\n if (!map || !this._picking || !this.layerRenderer || !this.layerRenderer.canvas) {\n return null;\n }\n const dpr = map.getDevicePixelRatio();\n const x = containerPoint.x * dpr, y = containerPoint.y * dpr;\n const uniforms = this._uniforms;\n const inGroup = this.layerRenderer.canvas.gl && this.layerRenderer.canvas.gl.wrap;\n if (this._needRefreshPicking || inGroup || !this._pickTask || this._pickTask !== task) {\n this._picking.render(meshes, uniforms, true);\n this._pickTask = task;\n this._needRefreshPicking = false;\n }\n const picked = this._picking.pick(\n x, // 屏幕坐标 x轴的值\n y, // 屏幕坐标 y轴的值\n 10,\n uniforms,\n {\n viewMatrix : this.map.viewMatrix, //viewMatrix和projMatrix用于计算点的世界坐标值\n projMatrix : this.map.projMatrix,\n returnPoint : true\n }\n );\n return picked;\n }\n\n _initShader() {\n const dpr = this.map.getDevicePixelRatio();\n const viewport = {\n x : 0,\n y : 0,\n width : () => {\n return this.map ? this.map.width * dpr : 1;\n },\n height : () => {\n return this.map ? this.map.height * dpr : 1;\n }\n };\n this._shader = new reshader.MeshShader({\n vert,\n frag,\n uniforms : [\n 'color',\n {\n name : 'projViewModelMatrix',\n type : 'function',\n fn : function (context, props) {\n return mat4.multiply([], props['projViewMatrix'], props['modelMatrix']);\n }\n }\n ],\n extraCommandProps: {\n viewport,\n depth: {\n enable: true,\n func: 'always',\n mask: true,\n range: [0, 0]\n },\n blend: {\n enable: true,\n func: {\n src: 'src alpha',\n dst: 'one minus src alpha'\n },\n equation: 'add'\n }\n },\n defines : {\n }\n });\n }\n\n render() {\n if (!this._isAvailable()) {\n return;\n }\n const meshes = this._getMeshes();\n this.helperScene.setMeshes(meshes);\n const drawContext = this.layerRenderer.getFrameContext();\n //避免tc的mesh多次绘制\n if (drawContext && drawContext.renderTarget && this.layerRenderer.getFrameTimestamp() !== drawContext.timestamp) {\n return;\n }\n this._updateMatrix();\n this._shader.filter = drawContext && drawContext.sceneFilter;\n const targetFBO = drawContext && drawContext.renderTarget && drawContext.renderTarget.fbo;\n this.renderer.render(this._shader, this._uniforms, this.helperScene, targetFBO);\n }\n\n _getMeshes() {\n let meshes = [];\n const meshMap = this.TransformHelper.getMeshes(this._mode);\n for (const p in meshMap) {\n if (p === 'translate') {\n continue;\n }\n const meshList = meshMap[p];\n for (let i = 0; i < meshList.length; i++) {\n meshes = meshes.concat(meshList[i]);\n }\n }\n //为避免z轴被其他mesh覆盖,最后绘制z轴的mesh\n const translateMeshes = meshMap['translate'];\n if (translateMeshes) {\n for (let i = 0; i < translateMeshes.length; i++) {\n meshes = meshes.concat(translateMeshes[i]);\n }\n }\n return meshes;\n }\n\n _isAvailable() {\n const renderer = this.layerRenderer;\n const layer = renderer && renderer.layer;\n return renderer && this._target && layer && layer.isVisible() && this._target._isVisible() && this.regl && this._enabled;\n }\n}\n\nTransformControl.mergeOptions(options);\n"],"names":["partsModels","yuanhuan","accessors","name","componentType","count","min","max","type","bufferView","byteOffset","asset","generator","version","buffers","byteLength","uri","bufferViews","buffer","byteStride","target","materials","pbrMetallicRoughness","baseColorFactor","metallicFactor","roughnessFactor","emissiveFactor","alphaMode","doubleSided","meshes","primitives","attributes","POSITION","NORMAL","indices","material","mode","nodes","mesh","scene","scenes","yuanhuan41","yuanhuan411","yuanpan","zzhou","TEXCOORD_0","jiantou","xuanzhuan","plane","xyzScale","scale","rotation","n","globalThis","self","window","global","Error","t","e","gl_trans__coders","inject","r","toString","_","indexOf","o","substring","l","s","maptalks_gltf_loader_bundle","length","registerTranscoder","getTranscoder","gltfloader","maptalks_gltf_loader","prepareMesh","modelName","translate","color","pickingId","rotate","quat","fromEuler","modelMatrix","mat4","fromRotationTranslationScale","promise","GLTFLoader","JSON","parse","stringify","load","then","gltf","createGLTFMesh","data","reshader","GLTFHelper","exportGLTFPack","getMeshesInfo","forEach","g","i","Material","materialInfo","Mesh","geometry","setUniform","defines","getDefines","HAS_PICKING_ID","setDefines","scaling","multiply","localTransform","nodeMatrix","originTransform","copy","originColor","push","properties","slice","getAbsoluteValue","value","Math","abs","sign","calFixedScale","map","coordinate","getCoordinates","coordPoint","coordinateToPointAtRes","getGLRes","trans","x","y","currentTrans","getTranslationPoint","getTranslation","vec3","add","containerPoint","point","res","altitude","pointToContainerPoint","maptalks","Point","worldCoordExtend","targetRes","coordExtend","containerPointToCoordinate","containerPointToPoint","sqrt","pow","translation","distanceToPointAtRes","z","altitudeToPoint","set","TranslateHelper","constructor","this","_coordinate","_meshes","_prepareMeshes","setCoordinate","right","bottom","left","up","getMeshes","RotationHelper","ScalingHelper","PlaneHelper","XyzScaleHelper","VEC3","TRANS","MAT4","QUAT","SCALE","ratio","ROTATION","scaleChangePickingIds","TransformHelper","planeHelper","xyzScaleHelper","_rotateClockwise","wn","en","es","ws","updateMatrix","angle","scalar","deltaTrans","p","_getPointZ","deltaTranslate","m","j","getUniform","getTargets","getRotation","translateMesh","fixedScale","tmpScale","sm","_setRotateClockwise","clockwise","dispose","EMPTY_VEC","EMPTY_QUAT","EMPTY_MAT","TEMP_POINT","TEMP_VEC_1","TEMP_VEC_2","TEMP_SCALE","EMPTY_TRANS","TransformTarget","_targetList","_translating","_scaling","_rotation","_add","Array","isArray","on","_onRemoveTarget","_originTRS","getScale","_clear","off","_updateTRS","task","deltaRotation","deltaScale","limitScale","transformcontrol","currentRotation","currentScaling","targetCoordinate","_calNewCenter","tempScale","options","scaleStrength","targetScale","minScale","currentMinScale","targetRotation","setCoordinates","_scaleXYZ","setTRS","fire","action","transformtarget","center","getTransformOrigin","getCenter","originCenter","glRes","pCenter","pOriginCenter","sub","trsMatrix","transformMat4","newCenter","pointAtResToCoordinate","_reset","_getLayer","getLayer","cx","cy","cz","len","Coordinate","setTransformOrigin","index","splice","pz","getPointZ","_isVisible","isVisible","translatePickingIds","translatePickingIds0","rotatePickingIds","scalePickingIds","noChangeColorPickingIds","defaultHuanPickingIds","scaleChnagePickingIds","CENTER","START","END","TransformControl","Eventable","Handlerable","Class","super","mouseAction","_mode","_enabled","_target","helperScene","Scene","addToMapCount","_createHelperLayer","_helper","transform","enable","layerRenderer","setToRedraw","disable","resetCursor","setMode","_resetScale","getMode","isEnable","_setMode","_getMode","addTo","_removeEvents","console","warn","gllayer","getLayers","layer","GroupGLLayer","_helperlayer","container","getContainer","_mouseMoveHandle","_mousedownHandle","_mouseupHandle","_viewchanging","_initShader","GLTFLayer","INTERNAL_LAYER_PREFIX","GLTFMarker","symbol","url","modelHeight","uniforms","polygonOpacity","remove","render","_isAvailable","currentMousePosition","_getMeshes","currentPickingObject","_getPickingPoint","_transformPlaneHelper","_meshAction","_transformAction","domEvent","button","_needRefreshPicking","firstDownPoint","meshId","_setTask","config","lastMousePosition","lastPickingObject","lastPickingMesh","_task","planeMesh","bearing","getBearing","_updateMatrix","picked","coordinateToContainerPoint","pickingObject","scalingMesh","_resetScaleControl","_resetDefaultColor","originTrans","meshid","_getWorldPosition","worldPosition","mousePosition","planeInteract","lastPlaneInteract","deltaAngle","helperDeltaScale","deltaTransX","deltaTransY","deltaTransZ","_isInMapCenter","lastContainerPoint","currentContainerPoint","distance","vec2","_calAngle","_getCurrentCenter","firstDistance","scaleDistance","_calDirection","from","to","rotated","getScaling","getPitch","cameraPos","cameraPosition","centerPos","position","worldPos","vTargetToCamera","subtract","vCenterToCamera","PI","_setCursor","_resetColor","pickedMesh","_changeXYZScaleColor","_setTranslateMeshesColor","setCursor","lastMesh","pickedId","opacity","reset","startDirection","endDirection","startAngle","atan2","targets","_resize","error","_prepareContext","getTransformTarget","getRenderer","regl","renderer","_picking","getFBORayPicking","_uniforms","projViewMatrix","projMatrix","viewMatrix","pointSize","clear","canvas","dpr","getDevicePixelRatio","inGroup","gl","wrap","_pickTask","pick","returnPoint","viewport","width","height","_shader","MeshShader","vert","frag","fn","context","props","extraCommandProps","depth","func","mask","range","blend","src","dst","equation","setMeshes","drawContext","getFrameContext","renderTarget","getFrameTimestamp","timestamp","filter","sceneFilter","targetFBO","fbo","meshMap","meshList","concat","translateMeshes","mergeOptions"],"mappings":"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"}
1
+ {"version":3,"file":"transform-control.es.js","sources":["../src/common/models.js","../../gl/dist/transcoders.js","../src/common/Util.js","../src/helper/TranslateHelper.js","../src/helper/RotationHelper.js","../src/helper/ScalingHelper.js","../src/helper/PlaneHelper.js","../src/helper/XyzScaleHelper.js","../src/helper/TransformHelper.js","../src/TransformTarget.js","../src/TransformControl.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\nconst yuanhuan41 = {\n 'accessors': [\n {\n 'name': 'Բ��_1_0_positions',\n 'componentType': 5126,\n 'count': 39,\n 'min': [\n 0,\n 0,\n 0\n ],\n 'max': [\n 5.489999771118164,\n 0,\n 5.488900184631348\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': 'Բ��_1_0_normals',\n 'componentType': 5126,\n 'count': 39,\n 'min': [\n 0,\n -0.999939501285553,\n -1\n ],\n 'max': [\n 0.13969914615154266,\n 1,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': 'Բ��_1_0_indices',\n 'componentType': 5123,\n 'count': 105,\n 'min': [\n 0\n ],\n 'max': [\n 38\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'yh41',\n 'byteLength': 1148,\n 'uri': 'data:application/octet-stream;base64,8tKXQAAAAACoNU09FK6vQAAAAAB1Ako/FK6vQAAAAAAAAACATfOAQAAAAAACmkg+K4dWQAAAAAAIrNw+WvUtQAAAAABbsT8/X5gIQAAAAACMSpI/OUWbQAAAAAD0/VQ/LbKHQAAAAAD0/XQ/W0JqQAAAAAC6SZQ/dLXNPwAAAACfq80/H4VHQAAAAAB0JLc/ZognQAAAAAA1XuI/YVSSPwAAAAAukAhABaMKQAAAAAB4nApABcU/PwAAAACF6y1Aw2TiPwAAAACRfidASS63PwAAAABKe0dAJLncPgAAAACze1ZAj1OUPwAAAADjNmpAAppIPgAAAADu64BAnRF1PwAAAAD8qYdAqDVNPQAAAADBypdAgQRVPwAAAAAIPZtAAAAAAAAAAAASpa9AAwlKPwAAAAASpa9AJJd/PAAAAAASpa9AAwlKPwAAAAASpa9AAAAAAAAAAAASpa9Asp1vPQAAAAASpa9AJLn8PQAAAAASpa9AqoJRPgAAAAASpa9ARwOYPgAAAAASpa9AHhbKPgAAAAASpa9A2hv8PgAAAAASpa9A5q4VPwAAAAASpa9A+n4qPwAAAAASpa9AQxw7PwAAAAASpa9AwhdGPwAAAAASpa9AAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAJ5X/OwL+fz8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/Kzs0PAn8f78AAACApLK/PA7uf78AAACAeJkZPefRfz8AAACA+ZldPQSgf78AAACA6XSTPelVfz8AAACALLO3PdT3fr8AAACAfkjZPR2Ofr8AAACANf32Paohfj8AAACAeUYHPqDBfT8AAACASw0PPlt9fb8AAACAAAABAAIAAwABAAAABAABAAMABQABAAQABgAHAAUABwABAAUABgAIAAcABgAJAAgACgAJAAYACgALAAkACgAMAAsADQAMAAoADQAOAAwADwAOAA0ADwAQAA4ADwARABAAEgARAA8AEgATABEAFAATABIAFAAVABMAFgAVABQAFgAXABUAGAAXABYAGAAZABcAGgAbABwAHQAbABoAHgAbAB0AHwAbAB4AIAAbAB8AIQAbACAAIgAbACEAIwAbACIAJAAbACMAJQAbACQAJgAbACUAAAA='\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 468,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 468,\n 'byteOffset': 468,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 212,\n 'byteOffset': 936,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat_002',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.588,\n 0.588,\n 0.588,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.99\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': 'Բ��_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': 'Բ��',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst yuanpan = {\n 'accessors': [\n {\n 'name': 'Circle001_1_0_positions',\n 'componentType': 5126,\n 'count': 28,\n 'min': [\n -1.9510999917984009,\n 0,\n -1.9510999917984009\n ],\n 'max': [\n 1.9510999917984009,\n 0,\n 1.9510999917984009\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': 'Circle001_1_0_normals',\n 'componentType': 5126,\n 'count': 28,\n 'min': [\n 0,\n 1,\n 0\n ],\n 'max': [\n 0,\n 1,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': 'Circle001_1_0_indices',\n 'componentType': 5123,\n 'count': 78,\n 'min': [\n 0\n ],\n 'max': [\n 27\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'yuanpan',\n 'byteLength': 828,\n 'uri': 'data:application/octet-stream;base64,S+rkvgAAAADRIvM/AAAAAAAAAAClvfk/S+rkPgAAAADRIvM/0SLzvwAAAABL6uQ+MlXgvwAAAACsi1s/c9fCvwAAAACvJZw/pb35vwAAAAAAAAAA0SLzvwAAAABL6uS+MlXgvwAAAACsi1u/c9fCvwAAAACvJZy/ryWcvwAAAABz18K/rItbvwAAAAAyVeC/S+rkvgAAAADRIvO/AAAAgAAAAAClvfm/S+rkPgAAAADRIvO/rItbPwAAAAAyVeC/ryWcPwAAAABz18K/c9fCPwAAAACvJZy/MlXgPwAAAACsi1u/0SLzPwAAAABL6uS+pb35PwAAAAAAAACA0SLzPwAAAABL6uQ+MlXgPwAAAACsi1s/c9fCPwAAAACvJZw/ryWcvwAAAABz18I/ryWcPwAAAABz18I/rItbvwAAAAAyVeA/rItbPwAAAAAyVeA/AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAABAAIAAwAEAAUABgADAAUABwAGAAUACAAHAAUACQAIAAUACgAJAAUACwAKAAUADAALAAUADQAMAAUADgANAAUADwAOAAUAEAAPAAUAEQAQAAUAEgARAAUAEwASAAUAFAATAAUAFQAUAAUAFgAVAAUAFwAWAAUAFwAFABgAGQAXABgAGQAYABoAGwAZABoAAgAbABoAAAACABoA'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 336,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 336,\n 'byteOffset': 336,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 156,\n 'byteOffset': 672,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'wire_008110135',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.0314,\n 0.4314,\n 0.5294,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.968\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': 'Circle001_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': 'Circle001',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst zzhou = {\n 'accessors': [\n {\n 'name': 'Cube.001-Mesh_0_positions',\n 'componentType': 5126,\n 'count': 45,\n 'min': [\n -0.2711470127105713,\n -5.473427772521973,\n -0.2711470127105713\n ],\n 'max': [\n 0.2711470127105713,\n 0.46298399567604065,\n 0.2711470127105713\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': 'Cube.001-Mesh_0_normals',\n 'componentType': 5126,\n 'count': 45,\n 'min': [\n -1,\n -1,\n -1\n ],\n 'max': [\n 1,\n 1,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': 'Cube.001-Mesh_0_texcoords',\n 'componentType': 5126,\n 'count': 45,\n 'min': [\n 0.125,\n 0\n ],\n 'max': [\n 0.875,\n 1\n ],\n 'type': 'VEC2',\n 'bufferView': 2,\n 'byteOffset': 0\n },\n {\n 'name': 'Cube.001-Mesh_0_indices',\n 'componentType': 5123,\n 'count': 72,\n 'min': [\n 0\n ],\n 'max': [\n 44\n ],\n 'type': 'SCALAR',\n 'bufferView': 3,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'Z',\n 'byteLength': 1584,\n 'uri': 'data:application/octet-stream;base64,/waNvZMdK77/Bo09/waNPZMdK77/Bo09/waNPR4Kr8D/Bo09l+KKPVImr8D/Bo09/waNvVImr8D/Bo09yNOKPsjTir7I04o+AAAAAD0M7T4AAAAAyNOKvsjTir7I04o+yNOKvsjTir7I04o+AAAAAD0M7T4AAAAAyNOKvsjTir7I04q+yNOKvsjTir7I04q+yNOKPsjTir7I04q+yNOKPsjTir7I04o+yNOKvsjTir7I04o+yNOKPsjTir7I04q+AAAAAD0M7T4AAAAAyNOKPsjTir7I04o+yNOKvsjTir7I04q+AAAAAD0M7T4AAAAAyNOKPsjTir7I04q+/waNPZMdK77/Bo09/waNPZMdK77/Bo29/waNPVImr8D/Bo29/waNPVImr8D/Bo09/waNPR4Kr8D/Bo09/waNvZMdK77/Bo09/waNvVImr8D/Bo09/waNvVImr8D/Bo29/waNvZMdK77/Bo29/waNvZMdK77/Bo29/waNvVImr8D/Bo29/waNPVImr8D/Bo29/waNPZMdK77/Bo29/waNPZMdK77/Bo09/waNvZMdK77/Bo09/waNvZMdK77/Bo29/waNPZMdK77/Bo29/waNvVImr8D/Bo09cooOO1Imr8BAMTI7/waNvVImr8D/Bo29/waNPVImr8D/Bo29/waNPVImr8D/Bo09l+KKPVImr8D/Bo09/waNPVImr8D/Bo09AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAFFmsT5wJHA/AAAAAFFmsT5wJHA/AAAAAFFmsT5wJHA/cCRwv1FmsT4AAAAAcCRwv1FmsT4AAAAAcCRwv1FmsT4AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAcCRwP1FmsT4AAAAAcCRwP1FmsT4AAAAAcCRwP1FmsT4AAAAAAAAAAFFmsT5wJHC/AAAAAFFmsT5wJHC/AAAAAFFmsT5wJHC/AACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAADAPgAAQD8AAMA+AACAP2L1Hz8AAIA/AAAgP3uDfz8AACA/AABAPwAAwD4AAIA+AAAgPwAAAAAAAMA+AAAAAAAAwD4AAIA/AAAgPwAAQD8AAMA+AABAPwAAAD4AAAA/AADAPgAAAD8AAMA+AACAPgAAAD4AAIA+AADAPgAAAD8AACA/AACAPgAAwD4AAIA+AADAPgAAQD8AACA/AAAAPwAAwD4AAAA/AADAPgAAAD8AAMA+AABAPwAAID8AAEA/AAAgPwAAAD9i9R8/AAAAPwAAwD4AAAA/AAAgPwAAAD8AACA/AACAPgAAwD4AAIA+AADAPgAAgD4AACA/AACAPgAAID8AAAAAAADAPgAAAAAAAAA+AAAAPwAAwD4AAAA/AADAPgAAgD4AAAA+AACAPgAAID8AAAA/vAJBP/mGwj4AACA/AACAPgAAYD8AAIA+AAAgPwAAgD97g18/AAAAPwAAYD8AAAA/AAABAAIAAgADAAQAAgAEAAAABQAGAAcACAAJAAoACwAMAA0ACwANAA4ADwAQABEAEgATABQAFQAWABcAFwAYABkAFwAZABUAGgAbABwAGgAcAB0AHgAfACAAHgAgACEAIgAjACQAIgAkACUAJgAnACgAKAAnACkAAwACACoAKQAnACsAKQArACwAJwAmACsA'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 540,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 540,\n 'byteOffset': 540,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 360,\n 'byteOffset': 1080,\n 'byteStride': 8,\n 'target': 34962\n },\n {\n 'name': 'bufferView_3',\n 'buffer': 0,\n 'byteLength': 144,\n 'byteOffset': 1440,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'Material.001',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.8,\n 0.8,\n 0.8,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.676000006\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': 'Cube.001-Mesh',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1,\n 'TEXCOORD_0': 2\n },\n 'indices': 3,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': 'Cube.001',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst jiantou = {\n 'accessors': [\n {\n 'name': '��ͷ_1_0_positions',\n 'componentType': 5126,\n 'count': 7,\n 'min': [\n -0.47690001130104065,\n -0.8044000267982483,\n 0\n ],\n 'max': [\n 0.47780001163482666,\n 0,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': '��ͷ_1_0_normals',\n 'componentType': 5126,\n 'count': 7,\n 'min': [\n 0,\n 0,\n 1\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': '��ͷ_1_0_indices',\n 'componentType': 5123,\n 'count': 15,\n 'min': [\n 0\n ],\n 'max': [\n 6\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'jiantou',\n 'byteLength': 200,\n 'uri': 'data:application/octet-stream;base64,bxIDOintTb8AAAAAH/RsvsKGp74AAAAAPSz0vsKGp74AAAAANs17PsKGp74AAAAANKL0PsKGp74AAAAANs17PgAAAAAAAAAAH/RsvgAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAADAAEAAAAEAAMAAQAFAAYAAQADAAUAAAA='\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 84,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 84,\n 'byteOffset': 84,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 32,\n 'byteOffset': 168,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat_003',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.588,\n 0.588,\n 0.588,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.99\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': '��ͷ_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': '��ͷ',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst xuanzhuan = {\n 'accessors': [\n {\n 'name': '��ת001_1_0_positions',\n 'componentType': 5126,\n 'count': 369,\n 'min': [\n -6.572299957275391,\n -7.298999786376953,\n 0\n ],\n 'max': [\n 6.5742998123168945,\n 7.298299789428711,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': '��ת001_1_0_normals',\n 'componentType': 5126,\n 'count': 369,\n 'min': [\n 0,\n -1,\n 0\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': '��ת001_1_0_indices',\n 'componentType': 5123,\n 'count': 1089,\n 'min': [\n 0\n ],\n 'max': [\n 368\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': '旋转-新',\n 'byteLength': 11036,\n 'uri': 'data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAwABAAAAAwAEAAEAAwAFAAQAAwAGAAUAAwAHAAYAAwAIAAcAAwAJAAgAAwAKAAkAAwALAAoAAwAMAAsADQAMAAMADQAOAAwADQAPAA4ADQAQAA8ADQARABAADQASABEADQATABIADQAUABMADQAVABQADQAWABUADQAXABYADQAYABcADQAZABgADQAaABkADQAbABoAHAAbAA0AHAAdABsAHAAeAB0AHAAfAB4AHAAgAB8AHAAhACAAHAAiACEAHAAjACIAHAAkACMAHAAlACQAHAAmACUAHAAnACYAHAAoACcAHAApACgAHAAqACkAHAArACoAHAAsACsAHAAtACwAHAAuAC0AHAAvAC4AHAAwAC8AHAAxADAAHAAyADEAHAAzADIAHAA0ADMAHAA1ADQAHAA2ADUAHAA3ADYAHAA4ADcAHAA5ADgAHAA6ADkAHAA7ADoAHAA8ADsAHAA9ADwAHAA+AD0AHAA/AD4AHABAAD8AQABBAD8AQQBCAD8AQgBDAD8AHABAAEQAHABEAEUAHABGAEUARgBHAEUARgBIAEcARgBJAEgARgBKAEkARgBLAEoARgBMAEsAHABNAEYAHABOAE0AHABPAE4AHABQAE8AHABRAFAAHABSAFEAUgBTAFEAUgBUAFMAUgBVAFQAUgBWAFUAUgBXAFYAUgBYAFcAHABZAFIAHABaAFkAHABbAFoAHABcAFsAHABdAFwAHABeAF0AHABfAF4AHABgAF8AHABhAGAAHABiAGEAHABjAGIAHABjAGQAZABlAGMAZQBmAGMAHABnAGQAaABpAGoAawBpAGgAbABpAGsAbQBpAGwAbgBpAG0AbwBpAG4AcABpAG8AcQBpAHAAcgBpAHEAcwBpAHIAdABnABwAdAB1AGcAdAB2AHUAdwB4AHkAdwB5AHoAegB5AHsAegB7AHwAfAB7AH0AfAB9AH4AfgB9AH8AfgB/AIAAgQCCAIMAgQCDAIQAhACDAIUAhACFAIYAhgCFAIcAhgCHAIgAiACHAIkAiACJAIoAiwCMAI0AiwCNAI4AjwCKAJAAigCJAJAAkQCSAJMAkQCTAJQAlACTAJUAlACVAJYAlgCVAJcAlgCXAJgAgAB/AIIAgACCAIEAmACXAJkAmACZAJoAmgCZAJsAmgCbAJwAnACbAJ0AnACdAJ4AngCdAHYAngB2AHQAnwB4AHcAoAB4AJ8AoAChAHgAogChAKAAowCkAKUAowCmAKQAowCnAKYAowCoAKcAowCpAKgAowCqAKkAowCrAKoAowCsAKsAowCtAKwAowCuAK0AowCvAK4AowCiAK8AowChAKIAsAChAKMAsQChALAAsgChALEAswChALIAtAChALMAtQChALQAtgChALUAtwChALYAuAChALcAuQChALgAugChALkAuwChALoAvAChALsAvQChALwAvgChAL0AvwChAL4AwAChAL8AwQChAMAAwgChAMEAwwChAMIAxAChAMMAxQChAMQAxgChAMUAxwChAMYAyAChAMcAyQChAMgAygChAMkAywChAMoAzAChAMsAzQChAMwAzgChAM0AzwChAM4A0AChAM8A0QChANAA0gChANEA0wChANIA1AChANMA1QChANQA1gChANUA1wChANYA2AChANcA2QChANgA2gChANkA2wChANoA3AChANsA3QChANwA3gChAN0A3wChAN4A4AChAN8A4QChAOAA4gChAOEA4wChAOIA5AChAOMA5QChAOQA5gChAOUA5wChAOYA6AChAOcA6QChAOgA6gChAOkA6wChAOoA7AChAOsA7QChAOwA7gChAO0A7wChAO4A8AChAO8A8QChAO8A8gChAPEA8wChAPIA9AChAPMA9QChAPQA9gChAPUA9gD3AKEA+AD3APYA+QD3APgA+gD3APkA+wD3APoA/AD3APsA/QD3APwA/gD3AP0A/wD3AP4AAAH3AP8AAQH3AAABAgH3AAEBAwH3AAIBBAH3AAMBBQH3AAQBBgH3AAUBBgEHAfcACAEHAQYBCQEHAQgBCgEHAQkBCwEHAQoBDAEHAQsBDQEHAQwBDgEHAQ0BDwEHAQ4BEAEHAQ8BEQESARMBFAESAREBFAEVARIBFgEVARQBFgEXARUBGAEXARYBGAEZARcBGgEbARgBGwEcARgBHAEZARgBHAEdARkBHQEeARkBHwEeAR0BGgEgARsBIQEeAR8BGgEiASABIwEiARoBIQEkAR4BJQEkASEBIwEmASIBJwEkASUBIwEoASYBKQEoASMBJwEqASQBKwEqAScBKQEsASgBLQEsASkBKwEuASoBLwEuASsBLQEwASwBMQEuAS8BLQEyATABjgCNADMBjgAzATQBNQE2ATcBNQE3ATgBOAE3ATkBOAE5AToBOwE8AT0BOwE9AT4BPwFAAUEBPwFBAUIBPgE9AUMBPgFDAUQBRQFGAUABRQFAAT8BRwFIAZIARwGSAJEASQFKAUYBSQFGAUUBRAFDAUsBRAFLAUwBOgE5AUoBOgFKAUkBTAFLAU0BTAFNAU4BTgFNAU8BTgFPAVABQgFBAVEBQgFRAVIBUgFRAS4BUgEuATEBNAEzATwBNAE8ATsBUwFUATYBUwE2ATUBUAFPATIBUAEyAS0BiwBVAYwAVgFUAVMBiwBXAVUBWAFUAVYBWAFZAVQBWgFXAYsAWgFbAVcBXAFZAVgBXAFdAVkBXgFbAVoBXgFfAVsBYAFdAVwBXgFhAV8BYgFdAWABYgFjAV0BZAFhAV4BZAFlAWEBZgFjAWIBZAFnAWUBZwFjAWYBZAFjAWcBZAFoAWMBaQFoAWQBaQFqAWgBawFqAWkBawFsAWoBbQFsAWsBbQFuAWwBbwFwAUgBbwFIAUcBAAA='\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 4428,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 4428,\n 'byteOffset': 4428,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 2180,\n 'byteOffset': 8856,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.5,\n 0.5,\n 0.5,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 1\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': '��ת001_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': '��ת001',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst yuanhuan411 = {\n 'accessors': [\n {\n 'name': '����СȦ_1_0_positions',\n 'componentType': 5126,\n 'count': 28,\n 'min': [\n 0.026000000536441803,\n -4.6834001541137695,\n 0\n ],\n 'max': [\n 4.696700096130371,\n -0.014800000004470348,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': '����СȦ_1_0_normals',\n 'componentType': 5126,\n 'count': 28,\n 'min': [\n 0,\n 0,\n 1\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': '����СȦ_1_0_indices',\n 'componentType': 5123,\n 'count': 78,\n 'min': [\n 0\n ],\n 'max': [\n 27\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'yuanhuan411',\n 'byteLength': 828,\n 'uri': 'data:application/octet-stream;base64,ufwXQLN7Mr8AAAAAObRAQLFQK78AAAAA1ediQMWP8b4AAAAAGQQ6QCv2174AAAAAqFdeQHUCWr4AAAAA7FGCQL6fmr0AAAAAHHyDQDLmrr4AAAAAXkuWQJf/kL4AAAAAXkuWQLN7crwAAAAAMCrxP2RdhL8AAAAA/BgDQJeQn78AAAAADeARQAg9i78AAAAAukkIQISeXb8AAAAAZaogQH/Zbb8AAAAA7Q3ePr4wOcAAAAAA5IMuP9/gP8AAAAAAJQZxPwrXH8AAAAAAPZs1P6UsF8AAAAAAdy2hP0VHAsAAAAAAb/CFP5eQ778AAAAA0ES4P32utr8AAAAAAprQPyL9zr8AAAAAi/1lPqqCXcAAAAAA9dv3PtcSYsAAAAAADi2yPZvmgcAAAAAAYTK1PssQg8AAAAAA9P3UPGrelcAAAAAA4liXPmrelcAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMAAwACAAQABQAGAAcABQAHAAgABAACAAYABAAGAAUACQAKAAsACQALAAwAAAANAAEADgAPABAADgAQABEAEQAQABIAEQASABMAFAAVAAoAFAAKAAkADAALAA0ADAANAAAAFgAXAA8AFgAPAA4AGAAZABcAGAAXABYAGgAZABgAGgAbABkAEwASABUAEwAVABQA'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 336,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 336,\n 'byteOffset': 336,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 156,\n 'byteOffset': 672,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.588,\n 0.588,\n 0.588,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.99\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': '����СȦ_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': '����СȦ',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst plane = {\n 'accessors': [\n {\n 'name': 'Rectangle001_1_0_positions',\n 'componentType': 5126,\n 'count': 4,\n 'min': [\n -5,\n -5,\n 0\n ],\n 'max': [\n 5,\n 5,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': 'Rectangle001_1_0_normals',\n 'componentType': 5126,\n 'count': 4,\n 'min': [\n 0,\n 0,\n 1\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': 'Rectangle001_1_0_indices',\n 'componentType': 5123,\n 'count': 6,\n 'min': [\n 0\n ],\n 'max': [\n 3\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': 'plane',\n 'byteLength': 108,\n 'uri': 'data:application/octet-stream;base64,AACgQAAAoEAAAAAAAACgwAAAoEAAAAAAAACgwAAAoMAAAAAAAACgQAAAoMAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAgADAAAA'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 48,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 48,\n 'byteOffset': 48,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 12,\n 'byteOffset': 96,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'wire_225198087',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.8824,\n 0.7765,\n 0.3412,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 0.968\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': 'Rectangle001_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': 'Rectangle001',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst yuanhuan = {\n 'accessors': [\n {\n 'name': '����С��_1_0_positions',\n 'componentType': 5126,\n 'count': 104,\n 'min': [\n -5.407599925994873,\n -5.404099941253662,\n 0\n ],\n 'max': [\n 5.405200004577637,\n 5.406300067901611,\n 0\n ],\n 'type': 'VEC3',\n 'bufferView': 0,\n 'byteOffset': 0\n },\n {\n 'name': '����С��_1_0_normals',\n 'componentType': 5126,\n 'count': 104,\n 'min': [\n 0,\n 0,\n 1\n ],\n 'max': [\n 0,\n 0,\n 1\n ],\n 'type': 'VEC3',\n 'bufferView': 1,\n 'byteOffset': 0\n },\n {\n 'name': '����С��_1_0_indices',\n 'componentType': 5123,\n 'count': 288,\n 'min': [\n 0\n ],\n 'max': [\n 103\n ],\n 'type': 'SCALAR',\n 'bufferView': 2,\n 'byteOffset': 0\n }\n ],\n 'asset': {\n 'generator': 'obj2gltf',\n 'version': '2.0'\n },\n 'buffers': [\n {\n 'name': '缩放圈-新',\n 'byteLength': 3072,\n 'uri': 'data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMABAAFAAYABAAGAAcAAwACAAgAAwAIAAkACgALAAwACgAMAA0ADQAMAA4ADQAOAA8ADwAOABAADwAQABEAEgATABQAEgAUABUAFgAXABgAFgAYABkAGgAbABwAGgAcAB0AHgALAAoAHwALAB4AHwAgAAsAIQAgAB8AIgAjACAAIgAgACEAJAAlACYAJAAmACcAJwAmACgAJwAoACkAKgArACwAKgAsAC0ALgAvADAALgAwADEAGQAYADIAGQAyADMANAA1ABsANAAbABoAFQAUADYAFQA2ADcAOAA5ADoAOAA6ADsAPAA9AD4APAA/AD0AQAA/ADwAQABBAD8AQgBBAEAAQgBAAEMARABFAEYARABGAEcARABHAEgARgBJAEcARgBKAEkASwBKAEYASwBMAEoASwBNAEwACQAIAC8ACQAvAC4ALQAsADkALQA5ADgAOwA6AE4AOwBOAE8ATwBOAE0ATwBNAEsAKQAoACsAKQArACoANwA2AFAANwBQAFEAUQBQAFIAUQBSAFMAUwBSAFQAUwBUAFUAVgBXAFgAVgBYAFkAVgBZAFoAWwBZAFgAXABZAFsAXABdAFkAXgBdAFwAXwBdAF4APAA+AGAAPABgAGEAMQAwABcAMQAXABYAYgBjADUAYgA1ADQAYQBgAGMAYQBjAGIAMwAyAF0AMwBdAF8AHQAcAGQAHQBkAGUAZQBkAAUAZQAFAAQAZgBnAAcAZgAHAAYAEQAQABMAEQATABIA'\n }\n ],\n 'bufferViews': [\n {\n 'name': 'bufferView_0',\n 'buffer': 0,\n 'byteLength': 1248,\n 'byteOffset': 0,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_1',\n 'buffer': 0,\n 'byteLength': 1248,\n 'byteOffset': 1248,\n 'byteStride': 12,\n 'target': 34962\n },\n {\n 'name': 'bufferView_2',\n 'buffer': 0,\n 'byteLength': 576,\n 'byteOffset': 2496,\n 'target': 34963\n }\n ],\n 'materials': [\n {\n 'name': 'SVGMat_001',\n 'pbrMetallicRoughness': {\n 'baseColorFactor': [\n 0.5,\n 0.5,\n 0.5,\n 1\n ],\n 'metallicFactor': 0,\n 'roughnessFactor': 1\n },\n 'emissiveFactor': [\n 0,\n 0,\n 0\n ],\n 'alphaMode': 'OPAQUE',\n 'doubleSided': false\n }\n ],\n 'meshes': [\n {\n 'name': '����С��_1',\n 'primitives': [\n {\n 'attributes': {\n 'POSITION': 0,\n 'NORMAL': 1\n },\n 'indices': 2,\n 'material': 0,\n 'mode': 4\n }\n ]\n }\n ],\n 'nodes': [\n {\n 'name': '����С��',\n 'mesh': 0\n }\n ],\n 'scene': 0,\n 'scenes': [\n {\n 'nodes': [\n 0\n ]\n }\n ]\n};\n\nconst xyzScale = {\n \"asset\" : {\n \"generator\" : \"Khronos glTF Blender I/O v1.6.16\",\n \"version\" : \"2.0\"\n },\n \"scene\" : 0,\n \"scenes\" : [\n {\n \"name\" : \"Scene\",\n \"nodes\" : [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n ]\n }\n ],\n \"nodes\" : [\n {\n \"mesh\" : 0,\n \"name\" : \"Cube\",\n \"scale\" : [\n 0.7008190751075745,\n 0.014999999664723873,\n 0.014999999664723873\n ]\n },\n {\n \"mesh\" : 1,\n \"name\" : \"Cube.001\",\n \"scale\" : [\n 0.10000000149011612,\n 0.10000000149011612,\n 0.10000000149011612\n ]\n },\n {\n \"mesh\" : 2,\n \"name\" : \"Cube.004\",\n \"rotation\" : [\n 0,\n -0.7071068286895752,\n 0,\n 0.7071068286895752\n ],\n \"scale\" : [\n 0.7008190751075745,\n 0.014999999664723873,\n 0.014999999664723873\n ]\n },\n {\n \"mesh\" : 3,\n \"name\" : \"Cube.003\",\n \"rotation\" : [\n 0,\n -0.7071068286895752,\n 0,\n 0.7071068286895752\n ],\n \"scale\" : [\n 0.10000000149011612,\n 0.10000000149011612,\n 0.10000000149011612\n ]\n },\n {\n \"mesh\" : 4,\n \"name\" : \"Cube.006\",\n \"rotation\" : [\n 0,\n 0,\n 0.7071068286895752,\n 0.7071068286895752\n ],\n \"scale\" : [\n 0.7008190751075745,\n 0.014999999664723873,\n 0.014999999664723873\n ]\n },\n {\n \"mesh\" : 5,\n \"name\" : \"Cube.005\",\n \"rotation\" : [\n 0,\n 0,\n 0.7071068286895752,\n 0.7071068286895752\n ],\n \"scale\" : [\n 0.10000000149011612,\n 0.10000000149011612,\n 0.10000000149011612\n ]\n },\n {\n \"mesh\" : 6,\n \"name\" : \"Cube.002\",\n \"scale\" : [\n 0.10000000149011612,\n 0.10000000149011612,\n 0.10000000149011612\n ]\n },\n ],\n \"materials\" : [\n {\n \"doubleSided\" : true,\n \"name\" : \"Material\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.6938720345497131,\n 0.020288480445742607,\n 0.011612260714173317,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.001\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.6938720345497131,\n 0.020288480445742607,\n 0.011612260714173317,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.002\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.626582869887352,\n 0.626582869887352,\n 0.626582869887352,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.006\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.11193240433931351,\n 0.5583405494689941,\n 0.033104799687862396,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.005\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.11193240433931351,\n 0.5583405494689941,\n 0.033104799687862396,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.010\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.004391402006149292,\n 0.21223078668117523,\n 0.5209956169128418,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n },\n {\n \"doubleSided\" : true,\n \"name\" : \"Material.009\",\n \"pbrMetallicRoughness\" : {\n \"baseColorFactor\" : [\n 0.004391402006149292,\n 0.21223078668117523,\n 0.5209956169128418,\n 1\n ],\n \"metallicFactor\" : 0,\n \"roughnessFactor\" : 0.4000000059604645\n }\n }\n ],\n \"meshes\" : [\n {\n \"name\" : \"Cube\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 0,\n \"NORMAL\" : 1,\n \"TEXCOORD_0\" : 2\n },\n \"indices\" : 3,\n \"material\" : 0\n }\n ]\n },\n {\n \"name\" : \"Cube.001\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 4,\n \"NORMAL\" : 5,\n \"TEXCOORD_0\" : 6\n },\n \"indices\" : 3,\n \"material\" : 1\n }\n ]\n },\n {\n \"name\" : \"Cube.006\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 10,\n \"NORMAL\" : 11,\n \"TEXCOORD_0\" : 12\n },\n \"indices\" : 3,\n \"material\" : 3\n }\n ]\n },\n {\n \"name\" : \"Cube.005\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 13,\n \"NORMAL\" : 14,\n \"TEXCOORD_0\" : 15\n },\n \"indices\" : 3,\n \"material\" : 4\n }\n ]\n },\n {\n \"name\" : \"Cube.010\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 16,\n \"NORMAL\" : 17,\n \"TEXCOORD_0\" : 18\n },\n \"indices\" : 3,\n \"material\" : 5\n }\n ]\n },\n {\n \"name\" : \"Cube.009\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 19,\n \"NORMAL\" : 20,\n \"TEXCOORD_0\" : 21\n },\n \"indices\" : 3,\n \"material\" : 6\n }\n ]\n },\n {\n \"name\" : \"Cube.002\",\n \"primitives\" : [\n {\n \"attributes\" : {\n \"POSITION\" : 7,\n \"NORMAL\" : 8,\n \"TEXCOORD_0\" : 9\n },\n \"indices\" : 3,\n \"material\" : 2\n }\n ]\n }\n ],\n \"accessors\" : [\n {\n \"bufferView\" : 0,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 2.0003609657287598,\n 1,\n 1\n ],\n \"min\" : [\n 0.0003610849380493164,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 1,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 2,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 3,\n \"componentType\" : 5123,\n \"count\" : 36,\n \"type\" : \"SCALAR\"\n },\n {\n \"bufferView\" : 4,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 14.549108505249023,\n 1,\n 1\n ],\n \"min\" : [\n 12.549108505249023,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 5,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 6,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 7,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 1,\n 1,\n 1\n ],\n \"min\" : [\n -1,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 8,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 9,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 10,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 2.0003609657287598,\n 1,\n 1\n ],\n \"min\" : [\n 0.0003610849380493164,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 11,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 12,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 13,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 14.549108505249023,\n 1,\n 1\n ],\n \"min\" : [\n 12.549108505249023,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 14,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 15,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 16,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 2.0003609657287598,\n 1,\n 1\n ],\n \"min\" : [\n 0.0003610849380493164,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 17,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 18,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n },\n {\n \"bufferView\" : 19,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"max\" : [\n 14.549108505249023,\n 1,\n 1\n ],\n \"min\" : [\n 12.549108505249023,\n -1,\n -1\n ],\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 20,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC3\"\n },\n {\n \"bufferView\" : 21,\n \"componentType\" : 5126,\n \"count\" : 24,\n \"type\" : \"VEC2\"\n }\n ],\n \"bufferViews\" : [\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 0\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 288\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 576\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 72,\n \"byteOffset\" : 768\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 840\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 1128\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 1416\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 1608\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 1896\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 2184\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 2376\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 2664\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 2952\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 3144\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 3432\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 3720\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 3912\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 4200\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 4488\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 4680\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 288,\n \"byteOffset\" : 4968\n },\n {\n \"buffer\" : 0,\n \"byteLength\" : 192,\n \"byteOffset\" : 5256\n }\n ],\n \"buffers\" : [\n {\n \"byteLength\" : 5448,\n \"uri\" : \"data:application/octet-stream;base64,6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAQAOABQAAQAUAAcACgAGABMACgATABcAFQASAAwAFQAMAA8AEAADAAkAEAAJABYABQACAAgABQAIAAsAEQANAAAAEQAAAAQAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA\"\n }\n ]\n}\n\n\nconst partsModels = {\n yuanhuan,\n yuanhuan41,\n yuanhuan411,\n yuanpan,\n zzhou,\n jiantou,\n xuanzhuan,\n plane,\n xyzScale\n};\n\nexport default partsModels;\n","/*!\n * @maptalks/gl v0.124.4\n * LICENSE : UNLICENSED\n * (c) 2016-2026 maptalks.com\n */\nconst n = function() {\n if (\"undefined\" != typeof globalThis) return globalThis;\n if (\"undefined\" != typeof self) return self;\n if (\"undefined\" != typeof window) return window;\n if (\"undefined\" != typeof global) return global;\n throw new Error(\"unable to locate global object\");\n}, t = n(), e = t.gl_trans__coders = t.gl_trans__coders || {};\n\nfunction r(n) {\n return e[n];\n}\n\nfunction _(n, t) {\n e[n] = t;\n}\n\nfunction o() {\n return n().maptalks_gltf_loader;\n}\n\nfunction l(t) {\n n().maptalks_gltf_loader_bundle = t;\n}\n\ne.inject = function(e) {\n const r = e.toString(), _ = r.indexOf(\"{\") + 1, o = r.substring(0, _), l = t.gl_trans__coders = t.gl_trans__coders || {};\n let s = `${o}\\n const _____getGlobal = ${n.toString()};\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};`;\n for (const n in l) \"inject\" !== n && \"getTranscoder\" !== n && \"registerTranscoder\" !== n && (s += 'tran_____scoders[\"' + n + '\"] =' + l[n].toString() + \"\\n;\");\n return s += \"\\n(\" + n().maptalks_gltf_loader_bundle.toString() + \")({});\\n\", s += \"\\n\" + r.substring(o.length), \n s;\n}, e.registerTranscoder = _, e.getTranscoder = r;\n\nexport { e as default, o as getGLTFLoaderBundle, r as getTranscoder, l as registerGLTFLoaderBundle, _ as registerTranscoder };\n","import { mat4, reshader, quat, vec3 } from '@maptalks/gl';\nimport partsModels from './models';\nimport * as maptalks from 'maptalks';\nimport { getGLTFLoaderBundle } from '@maptalks/gl/dist/transcoders';\n\nconst gltfloader = getGLTFLoaderBundle();\nconst point = [];\nfunction createGLTFMesh(modelName) {\n const loader = new gltfloader.GLTFLoader('', JSON.parse(JSON.stringify(partsModels[modelName])));//避免tc在移除后,再添加新的,内置的gltf受影响\n return loader.load().then(gltf => {\n return gltf;\n });\n}\n\nexport function prepareMesh(modelName, translate, rotation, scale, color, pickingId) {\n const meshes = [];\n const rotate = quat.fromEuler([], rotation[0], rotation[1], rotation[2]);\n const modelMatrix = mat4.fromRotationTranslationScale([], rotate, translate, scale);\n const promise = createGLTFMesh(modelName);\n promise.then(data => {\n const gltfPack = reshader.GLTFHelper.exportGLTFPack(data);\n const geometries = gltfPack.getMeshesInfo();\n geometries.forEach((g, i) => {\n const material = new reshader.Material({ color: color || g.materialInfo.baseColorFactor });\n const mesh = new reshader.Mesh(g.geometry, material);\n mesh.setUniform('uPickingId', pickingId + i);\n const defines = mesh.getDefines();\n defines.HAS_PICKING_ID = 2;\n mesh.setDefines(defines);\n mesh.translate = translate;\n mesh.rotation = rotation;\n mesh.scaling = scale;\n mat4.multiply(mesh.localTransform, modelMatrix, g.nodeMatrix);\n mesh.originTransform = mat4.copy([], mesh.localTransform);\n mesh.originColor = color || g.materialInfo.baseColorFactor;\n meshes.push(mesh);\n });\n if (pickingId > 100) {\n meshes[0].properties['relatedMeshes'] = meshes.slice(1, 2);\n meshes[1].properties['relatedMeshes'] = meshes.slice(0, 1);\n meshes[2].properties['relatedMeshes'] = meshes.slice(3, 4);\n meshes[3].properties['relatedMeshes'] = meshes.slice(2, 3);\n meshes[4].properties['relatedMeshes'] = meshes.slice(5, 6);\n meshes[5].properties['relatedMeshes'] = meshes.slice(4, 5);\n meshes[6].properties['relatedMeshes'] = meshes.slice(0, 6);\n }\n });\n return meshes;\n}\n\nfunction containerPointToPoint(map, containerPoint, targetRes, altitude) {\n if (altitude) {\n const res = targetRes / map['_getResolution']();\n const w2 = map.width / 2, h2 = map.height / 2;\n point[0] = (containerPoint.x - w2) / w2;\n point[1] = containerPoint.y / h2 - 1;\n point[3] = altitude * res;\n const inverseMat = mat4.invert([], map.projViewMatrix);\n vec3.transformMat4(point, point, inverseMat);\n const glScale = map.getGLScale();\n vec3.set(point, point[0] / glScale, point[1] / glScale, point[2] / glScale);\n vec3.scale(point, point, 1 / res);\n return new maptalks.Point(point[0], point[1]);\n } else {\n const coordExtend = map.containerPointToCoordinate(containerPoint);\n return map.coordinateToPointAtRes(coordExtend, targetRes);\n }\n}\n\nfunction pointToContainerPoint(map, point, res, altitude) {\n return map['_pointAtResToContainerPoint'](point, res, altitude);\n}\n\nfunction getAbsoluteValue(value, s) {\n return Math.abs(value) * Math.sign(s);\n}\n\nexport function calFixedScale(target, map) {\n const coordinate = target.getCoordinates();\n const coordPoint = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n const trans = [coordPoint.x, coordPoint.y, 0];\n const currentTrans = getTranslationPoint(map, target.getTranslation());\n vec3.add(trans, trans, currentTrans);\n const containerPoint = pointToContainerPoint(map, new maptalks.Point(trans[0], trans[1]), map.getGLRes());\n containerPoint.x += 85;\n const worldCoordExtend = containerPointToPoint(map, containerPoint, map.getGLRes());\n const currentLength = Math.sqrt(Math.pow(worldCoordExtend.x - trans[0], 2) + Math.pow(worldCoordExtend.y - trans[1], 2));\n const fixedScale = currentLength / 5.272881136101205;\n return fixedScale;\n}\n\nexport function containerPointToWorldPoint(point, map) {\n const coordinate = map.containerPointToCoordinate(new maptalks.Point(point.x, point.y));\n return map.coordinateToPointAtRes(coordinate, map.getGLRes());\n}\n\nexport function getTranslationPoint(map, translation) {\n if (!map) {\n return translation;\n }\n const point = map.distanceToPointAtRes(translation[0], translation[1], map.getGLRes());\n const z = map.altitudeToPoint(translation[2], map.getGLRes());\n return vec3.set([], getAbsoluteValue(point.x, translation[0]), getAbsoluteValue(point.y, translation[1]), getAbsoluteValue(z, translation[2]));\n}\n","import { prepareMesh } from '../common/Util.js';\n\nexport default class TranslateHelper {\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const scale = 340 / 177;\n const right = prepareMesh('jiantou', [1.2 * scale, 0, 0], [0, 0, 90], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 7);\n const bottom = prepareMesh('jiantou', [0, 1.2 * scale, 0], [0, 0, 180], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 8);\n const left = prepareMesh('jiantou', [-1.2 * scale, 0, 0], [0, 0, 270], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 9);\n const up = prepareMesh('jiantou', [0, -1.2 * scale, 0], [0, 0, 0], [scale, scale, scale], [89 / 255, 206 / 255, 147 / 255, 0], 10);\n meshes.push(right, bottom, left, up);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { prepareMesh } from '../common/Util.js';\n\nexport default class RotationHelper {\n\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const scale = 340 / 177;\n const mesh = prepareMesh('xuanzhuan', [0, 0, 0], [180, 0, 0], [0.5 * scale, 0.5 * scale, 0.5 * scale], [50 / 255, 130 / 255, 184 / 255, 0.8], 11);\n meshes.push(mesh);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { prepareMesh } from '../common/Util.js';\nexport default class ScalingHelper {\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const scale = 340 / 177;\n const mesh = prepareMesh('yuanhuan', [0, 0, 0], [0, 0, 0], [0.5 * scale, 0.5 * scale, 0.5 * scale], [149 / 255, 179 / 255, 199 / 255, 0.5], 12);\n meshes.push(mesh);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { prepareMesh } from '../common/Util.js';\n\nexport default class PlaneHelper {\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const mesh = prepareMesh('plane', [0, 0, 0], [0, 0, 0], [10, 10, 10], [1, 0, 0, 0.5], 16);\n meshes.push(mesh);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { prepareMesh } from '../common/Util.js';\n\nexport default class XyzScaleHelper {\n\n constructor(coordinate) {\n this._coordinate = coordinate;\n this._meshes = this._prepareMeshes();\n }\n\n setCoordinate(coordinate) {\n this._coordinate = coordinate;\n }\n\n _prepareMeshes() {\n const meshes = [];\n const mesh = prepareMesh('xyzScale', [0, 0, 0], [0, 0, 0], [2, 2, 2], null, 113);\n meshes.push(mesh);\n return meshes;\n }\n\n getMeshes() {\n return this._meshes;\n }\n}\n","import { mat4, vec3, quat } from '@maptalks/gl';\nimport TranslateHelper from './TranslateHelper';\nimport RotationHelper from './RotationHelper';\nimport ScalingHelper from './ScalingHelper';\nimport PlaneHelper from './PlaneHelper';\nimport { prepareMesh, calFixedScale, getTranslationPoint } from '../common/Util.js';\nimport XyzScaleHelper from './XyzScaleHelper';\n\nconst VEC3 = [], TRANS = [], MAT4 = [], QUAT = [], SCALE = [], ratio = [177 / 170, 177 / 170, 177 / 170], ROTATION = [];\nconst scaleChangePickingIds = [1, 2, 3, 4, 12];\n\nexport default class TransformHelper {\n constructor() {\n this.translate = new TranslateHelper();\n this.rotation = new RotationHelper();\n this.scaling = new ScalingHelper();\n this.planeHelper = new PlaneHelper();\n this.xyzScaleHelper = new XyzScaleHelper();\n this._meshes = this._prepareMeshes();\n this._rotateClockwise = true;\n }\n\n _prepareMeshes() {\n const meshes = {};\n meshes['translate'] = this.translate.getMeshes();\n meshes['rotation'] = this.rotation.getMeshes();\n meshes['scaling'] = this.scaling.getMeshes();\n meshes['planeHelper'] = this.planeHelper.getMeshes();\n meshes['xyzScale'] = this.xyzScaleHelper.getMeshes();\n const scale = 340 / 177;\n const wn = prepareMesh('yuanhuan41', [-2.745 * scale, 2.745 * scale, 0], [90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [149 / 255, 179 / 255, 199 / 255, 0.6], 1);//缩放\n const en = prepareMesh('yuanhuan41', [2.745 * scale, 2.745 * scale, 0], [-90, 0, 180], [scale * 0.5, scale * 0.5, scale * 0.5], [50 / 255, 130 / 255, 184 / 255, 0.5], 2);\n const es = prepareMesh('yuanhuan41', [2.745 * scale, -2.745 * scale, 0], [90, 0, 180], [scale * 0.5, scale * 0.5, scale * 0.5], [149 / 255, 179 / 255, 199 / 255, 0.6], 3);//缩放\n const ws = prepareMesh('yuanhuan41', [-2.745 * scale, -2.745 * scale, 0], [-90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [50 / 255, 130 / 255, 184 / 255, 0.5], 4);\n const yuanpan = prepareMesh('yuanpan', [0, 0, 0], [90, 0, 0], [scale * 0.5, scale * 0.5, scale * 0.5], [89 / 255, 206 / 255, 147 / 255, 0.5], 5);\n const zzhou = prepareMesh('zzhou', [0, 0, 6.5], [90, 0, 0], [1, 1, 1], [14 / 255, 127 / 255, 191 / 255, 1], 6);\n meshes['translate'].push(wn, en, es, ws, yuanpan, zzhou);\n return meshes;\n }\n\n updateMatrix(map, target, angle, scalar, deltaTrans) {\n const coordinate = target.getCoordinates();\n const p = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n const z = target._getPointZ();\n vec3.set(TRANS, p.x, p.y, z);\n const deltaTranslate = vec3.copy(VEC3, deltaTrans);\n const currentTrans = getTranslationPoint(map, target.getTranslation()); //由于gltfmarker中translation单位改成了米,不能直接这样加,需要转换一下\n vec3.add(TRANS, TRANS, currentTrans);\n vec3.add(TRANS, TRANS, deltaTranslate);\n for (const name in this._meshes) {\n for (let i = 0; i < this._meshes[name].length; i++) {\n const m = this._meshes[name][i];\n for (let j = 0; j < m.length; j++) {\n const mesh = m[j];\n const pickingId = mesh.getUniform('uPickingId');\n const translate = vec3.copy(VEC3, mesh.translate);\n let rotation = vec3.copy(ROTATION, mesh.rotation);\n const scaling = mesh.scaling;\n if (pickingId === 11) {\n if (this._rotateClockwise) {\n rotation[2] += angle;\n mesh.rotation[2] += angle;\n } else if (!this._rotateClockwise) {\n rotation[2] += angle;\n mesh.rotation[2] += angle;\n rotation[0] = 360;\n rotation[2] -= 90;\n }\n }\n if (pickingId > 100 && target.getTargets().length === 1) {\n rotation = target.getTargets()[0].getRotation();\n }\n if (scaleChangePickingIds.indexOf(pickingId) > -1) {\n if (pickingId !== 12) {\n scaling[0] += scalar;\n scaling[1] += scalar;\n scaling[2] += scalar;\n } else {\n const translateMesh = this._meshes['translate'][4][0];\n scaling[0] = translateMesh.scaling[0] * 1.2;\n scaling[1] = translateMesh.scaling[0] * 1.2;\n scaling[2] = translateMesh.scaling[0] * 1.2;\n }\n }\n let fixedScale = calFixedScale(target, map);\n fixedScale = vec3.set(MAT4, fixedScale, fixedScale, fixedScale);\n vec3.multiply(translate, translate, fixedScale);\n vec3.multiply(fixedScale, fixedScale, scaling);\n if (pickingId === 1 || pickingId === 2 || pickingId === 3 || pickingId === 4) {\n const tmpScale = vec3.multiply(SCALE, scaling, ratio);\n vec3.multiply(translate, translate, tmpScale);\n }\n const rotate = quat.fromEuler(QUAT, rotation[0], rotation[1], rotation[2]);\n vec3.add(translate, translate, TRANS);\n if (name === 'xyzScale') {\n const sm = mat4.fromRotationTranslationScale([], rotate, translate, fixedScale);\n mat4.multiply(mesh.localTransform, sm, mesh.originTransform);\n } else {\n mat4.fromRotationTranslationScale(mesh.localTransform, rotate, translate, fixedScale);\n }\n }\n }\n }\n }\n\n getMeshes(mode) {\n const meshes = {};\n if (!mode) {\n return meshes;\n }\n if (mode === 'xyzScale') {\n meshes[mode] = this._meshes[mode];\n } else {\n meshes['translate'] = this._meshes.translate;\n if (mode !== 'translate') {\n meshes[mode] = this._meshes[mode];\n }\n }\n return meshes;\n }\n\n _setRotateClockwise(clockwise) {\n this._rotateClockwise = clockwise;\n }\n\n dispose() {\n for (const name in this._meshes) {\n for (let i = 0; i < this._meshes[name].length; i++) {\n const m = this._meshes[name][i];\n for (let j = 0; j < m.length; j++) {\n const mesh = m[j];\n mesh.geometry.dispose();\n mesh.dispose();\n }\n }\n }\n }\n}\n","import { Coordinate, Point } from \"maptalks\";\nimport { vec3, mat4, quat } from '@maptalks/gl';\n\nconst EMPTY_VEC = [], EMPTY_QUAT = [], EMPTY_MAT = [], TEMP_POINT = new Point(0, 0), TEMP_VEC_1 = [], TEMP_VEC_2 = [], TEMP_SCALE = [], EMPTY_TRANS = [0, 0, 0];\nexport default class TransformTarget {\n constructor() {\n this._targetList = [];\n this._translating = [0, 0, 0];\n this._scaling = [1, 1, 1];\n this._rotation = [0, 0, 0];\n }\n\n _add(target) {\n if (Array.isArray(target)) {\n target.forEach(t => {\n this._add(t);\n });\n } else {\n target.on('remove', this._onRemoveTarget, this);\n target._originTRS = {\n coordinate: target.getCoordinates(),\n translation: target.getTranslation(),\n rotation: target.getRotation(),\n scale: target.getScale()\n };\n this._targetList.push(target);\n }\n }\n\n _clear() {\n this._targetList.forEach(t => {\n t.off('remove', this._onRemoveTarget, this);\n });\n this._targetList = [];\n }\n\n _updateTRS(task, deltaTranslate, deltaRotation, deltaScale, limitScale, map, transformcontrol) {\n for (let i = 0; i < this._targetList.length; i++) {\n const target = this._targetList[i];\n const currentRotation = target.getRotation();\n const currentScaling = target.getScale();\n const targetCoordinate = this._calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate);\n let tempScale = null;\n //放大时,拉伸的空间可无限大,但是缩小时,是向圈内缩放,空间有限,需要增加缩小的倍数\n if (deltaScale >= 0) {\n tempScale = deltaScale;\n } else {\n tempScale = deltaScale * (this.options && this.options.scaleStrength || 1.0);\n }\n const targetScale = vec3.add(TEMP_SCALE, vec3.set(EMPTY_VEC, tempScale * currentScaling[0], tempScale * currentScaling[1], tempScale * currentScaling[2]), currentScaling);\n const minScale = Math.min(...targetScale);\n //minScale可能会出现<=0的情况,所以minScale只作为判断是否要限定scale的依据,计算的逻辑则用当前target的scale去计算,当前target的scale可以保证>=0.01\n if (Math.abs(minScale) < limitScale) {//scale有可能是负,例如翻转的情况\n const currentMinScale = Math.abs(minScale);\n targetScale[0] = targetScale[0] * (limitScale / currentMinScale);\n targetScale[1] = targetScale[1] * (limitScale / currentMinScale);\n targetScale[2] = targetScale[2] * (limitScale / currentMinScale);\n }\n const targetRotation = vec3.add(currentRotation, deltaRotation, currentRotation);\n target.setCoordinates(targetCoordinate);\n this._scaleXYZ(task, targetScale, currentScaling);\n const currentTrans = target.getTranslation();\n target.setTRS(currentTrans, targetRotation, targetScale);\n }\n vec3.set(TEMP_SCALE, deltaScale, deltaScale, deltaScale);\n vec3.add(this._rotation, deltaRotation, this._rotation);\n vec3.add(this._scaling, TEMP_SCALE, this._scaling);\n vec3.add(this._translating, deltaTranslate, this._translating);\n if (task.indexOf('translate') > -1) {\n transformcontrol.fire('positionchange', { action: task, type: 'positionchange', transformtarget: this._targetList, center: this.getCoordinates(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\n } else {\n transformcontrol.fire('transforming', { action: task, type: 'transforming', transformtarget: this._targetList, center: this._targetList[0].getTransformOrigin(), scale: this._scaling, rotation: this._rotation, translation: this._translating, deltaTranslate, deltaRotation, deltaScale });\n }\n }\n\n _calNewCenter(map, target, deltaScale, deltaRotation, deltaTranslate) {\n const center = target.getCenter();\n const originCenter = target.getTransformOrigin();\n const glRes = map.getGLRes();\n const pCenter = map.coordinateToPointAtRes(center, glRes, TEMP_POINT);\n pCenter.z = map.altitudeToPoint(center.z, glRes);\n vec3.set(TEMP_VEC_1, pCenter.x, pCenter.y, pCenter.z || 0);\n const pOriginCenter = map.coordinateToPointAtRes(originCenter, glRes, TEMP_POINT);\n pOriginCenter.z = map.altitudeToPoint(originCenter.z, glRes);\n vec3.set(TEMP_VEC_2, pOriginCenter.x , pOriginCenter.y, pOriginCenter.z || 0);\n const point = vec3.sub(EMPTY_VEC, TEMP_VEC_1, TEMP_VEC_2);\n const rotation = quat.fromEuler(EMPTY_QUAT, 0, 0, deltaRotation[2]);\n vec3.set(TEMP_SCALE, deltaScale + 1, deltaScale + 1, deltaScale + 1);\n const trsMatrix = mat4.fromRotationTranslationScale(EMPTY_MAT, rotation, deltaTranslate, TEMP_SCALE);\n vec3.transformMat4(point, point, trsMatrix);\n vec3.add(point, point, TEMP_VEC_2);\n TEMP_POINT.set(point[0], point[1]);\n const newCenter = map.pointAtResToCoordinate(TEMP_POINT, glRes);\n newCenter.z = point[2] / map.altitudeToPoint(1, glRes);\n return newCenter;\n }\n\n _scaleXYZ(task, targetScale, currentScaling) {\n if (task === 'x-scale') {\n targetScale[1] = currentScaling[1];\n targetScale[2] = currentScaling[2];\n } if (task === 'y-scale') {\n targetScale[0] = currentScaling[0];\n targetScale[2] = currentScaling[2];\n } if (task === 'z-scale') {\n targetScale[0] = currentScaling[0];\n targetScale[1] = currentScaling[1];\n }\n return targetScale;\n }\n\n _reset() {\n this._targetList.forEach(target => {\n if (target._originTRS) {\n const { coordinate, translation, rotation, scale } = target._originTRS;\n target.setCoordinates(coordinate);\n target.setTRS(translation, rotation, scale);\n }\n });\n }\n\n getScale() {\n return this._scaling;\n }\n\n getTranslation() {\n if (this._targetList.length === 1) {\n return this._targetList[0].getTranslation() || EMPTY_TRANS;\n }\n return EMPTY_TRANS;\n }\n\n getRotation() {\n return this._rotation;\n }\n\n _getLayer() {\n if (this._targetList[0]) {\n return this._targetList[0].getLayer();\n }\n return null;\n }\n\n getCoordinates() {\n let cx = 0, cy = 0, cz = 0\n const len = this._targetList.length;\n if (!len) {\n return null;\n }\n for (let i = 0; i < len; i++) {\n const center = this._targetList[i].getCenter();\n cx += center.x;\n cy += center.y;\n cz += center.z || 0;\n }\n cx = cx / len;\n cy = cy / len;\n cz = cz / len;\n const newCenter = new Coordinate(cx, cy, cz);\n for (let i = 0; i < len; i++) {\n this._targetList[i].setTransformOrigin(newCenter);\n }\n return newCenter;\n }\n\n _onRemoveTarget(e) {\n const target = e.target;\n const index = this._targetList.indexOf(target);\n if (index > -1) {\n delete target._originTRS;\n this._targetList.splice(index, 1);\n }\n }\n\n getTargets() {\n return this._targetList;\n }\n\n _getPointZ() {\n let pz = 0\n const len = this._targetList.length;\n for (let i = 0; i < len; i++) {\n const pointZ = this._targetList[i].getPointZ();\n pz += pointZ;\n }\n pz = pz / len;\n return pz;\n }\n\n _isVisible() {\n for (let i = 0; i < this._targetList.length; i++) {\n if (this._targetList[i].isVisible()) {\n return true;\n }\n }\n return false;\n }\n}\n","import { mat4, quat, vec3, vec2, reshader, GroupGLLayer } from '@maptalks/gl';\nimport { Handlerable, Eventable, Class, Point, Coordinate, INTERNAL_LAYER_PREFIX } from 'maptalks';\nimport TransformHelper from './helper/TransformHelper';\nimport { calFixedScale, getTranslationPoint } from './common/Util';\nimport vert from './common/helper.vert';\nimport frag from './common/helper.frag';\nimport TransformTarget from './TransformTarget';\nimport { GLTFLayer, GLTFMarker } from '@maptalks/gltf-layer';\n\nconst translatePickingIds = [5, 6, 7, 8, 9, 10];\nconst translatePickingIds0 = [5, 7, 8, 9, 10];\nconst rotatePickingIds = [2, 4, 11];\nconst scalePickingIds = [1, 3, 12];\nconst noChangeColorPickingIds = [12, 16];\nconst defaultHuanPickingIds = [1, 2, 3, 4];\nconst scaleChnagePickingIds = [1, 2, 3, 4, 12];\nconst limitScale = 0.01;\nconst QUAT = [], SCALE = [], TRANS = [], EMPTY_VEC = [], CENTER = [], START = [], END = [];\nconst options = {\n scaleStrength: 2.0\n};\n\nexport default class TransformControl extends Eventable(Handlerable(Class)) {\n constructor(options = {}) {\n super(options);\n this.options = options;\n this.mouseAction = 'moving';\n this._mode = this.options.mode || 'translate';\n this._enabled = true;\n this.TransformHelper = new TransformHelper();\n this._target = new TransformTarget();\n this.helperScene = new reshader.Scene([]);\n this.addToMapCount = 0;\n this._createHelperLayer();\n }\n\n setCoordinates(coordinate) {\n this._helper.setCoordinates(coordinate);\n this.transform(this._helper);\n }\n\n enable() {\n this._enabled = true;\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n return this;\n }\n\n disable() {\n this._enabled = false;\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n if (this.map) {\n this.map.resetCursor();\n }\n return this;\n }\n\n setMode(mode) {\n this._mode = mode;\n this._resetScale();\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n this.fire('modechange', { mode, type: 'modechange' });\n }\n\n getMode() {\n return this._mode;\n }\n\n isEnable() {\n return this._enabled;\n }\n\n _setMode(pickingId) {\n if (translatePickingIds.indexOf(pickingId) > -1) {\n this._mode = 'translate';\n } else if (rotatePickingIds.indexOf(pickingId) > -1) {\n this._mode = 'rotation';\n } else if (scalePickingIds.indexOf(pickingId) > -1) {\n this._mode = 'scaling';\n } else if (this._mode !== 'xyzScale') {\n this._mode = 'translate';\n }\n }\n\n _getMode() {\n return this._mode;\n }\n\n addTo(map) {\n if (this.map) {\n this._removeEvents();\n console.warn('transform control has been added to a map, it suggest remove from the map before');\n return;\n }\n this.addToMapCount++;\n this.map = map;\n const gllayer = map.getLayers(layer => layer instanceof GroupGLLayer)[0];\n if (gllayer) {\n this._helperlayer.addTo(gllayer);\n } else {\n this._helperlayer.addTo(this.map);\n }\n this.container = map.getContainer();\n map.on('dom:mousemove', this._mouseMoveHandle, this);\n map.on('dom:mousedown', this._mousedownHandle, this);\n map.on('dom:mouseup', this._mouseupHandle, this);\n map.on('zooming moving dragrotating', this._viewchanging, this);\n this._initShader();\n }\n\n _createHelperLayer() {\n this._helperlayer = new GLTFLayer(`${INTERNAL_LAYER_PREFIX}_transformcontrol`);\n this._helper = new GLTFMarker([0, 0], {\n symbol: {\n url: 'cube',\n modelHeight: 1,\n uniforms: {\n polygonOpacity: 0.01\n }\n }\n }).addTo(this._helperlayer);\n }\n\n remove() {\n if (!this.map) {\n return;\n }\n this._removeEvents();\n this.TransformHelper.dispose();\n this._helperlayer.remove();\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n delete this._helper;\n delete this._helperlayer;\n delete this.map;\n delete this.layer;\n delete this.layerRenderer;\n delete this.container;\n delete this._target;\n }\n\n _removeEvents() {\n if (!this.container || !this.map) {\n return;\n }\n this.map.off('dom:mousemove', this._mouseMoveHandle, this);\n this.map.off('dom:mousedown', this._mousedownHandle, this);\n this.map.off('dom:mouseup', this._mouseupHandle, this);\n this.map.off('zooming moving dragrotating', this._viewchanging, this);\n if (this.layer) {\n this.layer.off('renderend', this.render, this);\n }\n }\n\n _mouseMoveHandle(e) {\n if (!this._isAvailable()) {\n return;\n }\n this.currentMousePosition = {\n x: e.containerPoint.x,\n y: e.containerPoint.y\n };\n if (this.mouseAction === 'moving') {\n //在moving的情况下,会激活translate或者rotate两种模式\n const meshes = this._getMeshes();\n this.currentPickingObject = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\n if (this.currentPickingObject && this.currentPickingObject.pickingId != null) {\n this._setMode(this.currentPickingObject.pickingId);\n if (this.currentPickingObject.pickingId === 6) {\n this._transformPlaneHelper(true);\n } else {\n this._transformPlaneHelper(false);\n }\n } else {\n this._transformPlaneHelper(false);\n this._setMode();\n }\n this._meshAction();\n }\n this._transformAction(this.currentMousePosition);\n }\n\n _mousedownHandle(e) {\n if (!this._isAvailable() || e.domEvent.button !== 0) {\n return;\n }\n const meshes = this._getMeshes();\n this.currentMousePosition = {\n x: e.containerPoint.x,\n y: e.containerPoint.y\n };\n this._needRefreshPicking = true;\n this.currentPickingObject = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\n this.firstDownPoint = this._getPickingPoint(this.currentMousePosition, meshes, 'meshes');\n if (this.currentPickingObject && this.currentPickingObject.meshId != null) {\n this.mouseAction = 'transform';\n this._setTask(this.currentPickingObject.pickingId);\n this.map.config('zoomable', false);\n this.map.config('draggable', false);\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n } else {\n this.mouseAction = 'pan';\n this.map.config('zoomable', true);\n this.map.config('draggable', true);\n this._resetScale();\n }\n this.lastMousePosition = this.currentMousePosition;\n this.lastPickingObject = this.currentPickingObject;\n this.lastPickingMesh = meshes[this.currentPickingObject.meshId];\n }\n\n _mouseupHandle() {\n if (this.mouseAction === 'transform') {\n this.firstDownPoint = null;\n this._resetScale();\n this._needRefreshPicking = true;\n this.fire('transformend', { action: this._task, type: 'transformend', transformtarget: this._target.getTargets() });\n }\n this.mouseAction = 'moving';\n if (this._mode !== 'xyzScale') {\n this._mode = 'translate';\n }\n this.map.config('zoomable', true);\n this.map.config('draggable', true);\n if (this.layerRenderer) {\n this.layerRenderer.setToRedraw();\n }\n }\n\n _viewchanging() {\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0][0];\n if (!planeMesh) {\n return;\n }\n const bearing = this.map.getBearing();\n planeMesh.rotation[2] = -bearing;\n this._updateMatrix();\n }\n\n _updateMatrix() {\n if (!this._isAvailable()) {\n return;\n }\n this.TransformHelper.updateMatrix(this.map, this._target, 0, 0, [0, 0, 0]);\n this._needRefreshPicking = true;\n }\n\n picked(coordinate) {\n if (!this.layerRenderer) {\n return false;\n }\n const meshes = this._getMeshes();\n const map = this.map;\n let containerPoint = coordinate;\n if (!(coordinate instanceof Point)) {\n containerPoint = map.coordinateToContainerPoint(new Coordinate(coordinate));\n }\n const pickingObject = this._getPickingPoint(containerPoint, meshes, 'picked');\n if (pickingObject && pickingObject.meshId !== null) {\n return true;\n }\n return false;\n }\n\n _resetScale() {\n const scalingMesh = this.TransformHelper.getMeshes('scaling')['scaling'][0][0];\n const scale = 340 / 177;\n scalingMesh.scaling = [0.6 * scale, 0.6 * scale, 0.6 * scale];\n if (this.layerRenderer) {\n this._resetScaleControl(scalingMesh);\n this._resetDefaultColor();\n }\n }\n\n _resetDefaultColor() {\n const defaultMeshes = this.TransformHelper['_meshes'].translate;\n defaultMeshes.forEach(meshes => {\n for (let i = 0; i < meshes.length; i++) {\n const mesh = meshes[i];\n if (defaultHuanPickingIds.indexOf(mesh.getUniform('uPickingId')) > -1) {\n mesh.material.set('color', mesh.originColor);\n }\n }\n });\n }\n\n _resetScaleControl(mesh) {\n const coordinate = this._target.getCoordinates();\n const p = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\n const trans = [p.x, p.y, 0];\n const originTrans = getTranslationPoint(this.map, this._target.getTranslation());\n vec3.add(trans, trans, originTrans);\n const translate = vec3.copy([], mesh.translate);\n const scaling = mesh.scaling;\n let fixedScale = calFixedScale(this._target, this.map);\n fixedScale = vec3.set([], fixedScale, fixedScale, fixedScale);\n vec3.multiply(translate, translate, fixedScale);\n vec3.multiply(fixedScale, fixedScale, scaling);\n vec3.add(translate, translate, trans);\n mat4.fromRotationTranslationScale(mesh.localTransform, [0, 0, 0, 1], translate, fixedScale);\n const meshes = this._getMeshes();\n meshes.forEach(mesh => {\n const meshid = mesh.getUniform('uPickingId');\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\n const translate = vec3.copy([], mesh.translate);\n const scale = 170 / 177;\n mesh.scaling = [scale, scale, scale];\n const scaling = mesh.scaling;\n const rotation = mesh.rotation;\n let fixedScale = calFixedScale(this._target, this.map);\n fixedScale = vec3.set([], fixedScale, fixedScale, fixedScale);\n vec3.multiply(translate, translate, fixedScale);\n vec3.multiply(fixedScale, fixedScale, scaling);\n vec3.add(translate, translate, trans);\n const rotate = quat.fromEuler([], rotation[0], rotation[1], rotation[2]);\n mat4.fromRotationTranslationScale(mesh.localTransform, rotate, translate, fixedScale);\n }\n });\n }\n\n _getWorldPosition(containerPoint) {\n const coordinate = this.map.containerPointToCoordinate(containerPoint);\n const worldPosition = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\n return {\n point: [worldPosition.x, worldPosition.y]\n };\n }\n\n _transformAction(mousePosition) {\n if (this.mouseAction === 'transform') {\n const mode = this._getMode();\n const currentTrans = getTranslationPoint(this.map, this._target.getTranslation());\n const z = this._target._getPointZ();\n let planeInteract = null, lastPlaneInteract = null;\n if (currentTrans[2] + z < 0.01 && this._task !== 'z-translate') { //target不是贴着地面的情况下\n planeInteract = this._getWorldPosition(this.currentMousePosition);\n lastPlaneInteract = this._getWorldPosition(this.lastMousePosition);\n } else {\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0];\n planeInteract = this._getPickingPoint(this.currentMousePosition, planeMesh, 'plane');\n lastPlaneInteract = this._getPickingPoint(this.lastMousePosition, planeMesh, 'plane');\n if (!planeInteract || planeInteract.meshId === null || !lastPlaneInteract || lastPlaneInteract.meshId === null) {\n return;\n }\n }\n const deltaTranslate = [0, 0, 0];\n const deltaRotation = [0, 0, 0];\n let deltaScale = 0;\n let deltaAngle = 0;\n let helperDeltaScale = 0;\n if (mode === 'translate') {\n if (this._task === 'xy-translate') {\n const deltaTransX = planeInteract.point[0] - lastPlaneInteract.point[0];\n const deltaTransY = planeInteract.point[1] - lastPlaneInteract.point[1];\n deltaTranslate[0] = deltaTransX;\n deltaTranslate[1] = deltaTransY;\n } else if (this._task === 'x-translate') {\n const deltaTransX = planeInteract.point[0] - lastPlaneInteract.point[0];\n deltaTranslate[0] = deltaTransX;\n } else if (this._task === 'y-translate') {\n const deltaTransY = planeInteract.point[1] - lastPlaneInteract.point[1];\n deltaTranslate[1] = deltaTransY;\n } else if (this._task === 'z-translate') {\n let deltaTransZ = 0;\n if (!this._isInMapCenter()) {\n deltaTransZ = planeInteract.point[2] - lastPlaneInteract.point[2];\n } else {\n const glRes = this.map.getGLRes();\n const lastContainerPoint = this.map['_pointAtResToContainerPoint'](new Point(lastPlaneInteract.point[0], lastPlaneInteract.point[1]), glRes);\n const currentContainerPoint = this.map['_pointAtResToContainerPoint'](new Point(planeInteract.point[0], planeInteract.point[1]), glRes);\n const distance = vec2.length(vec2.set(EMPTY_VEC, planeInteract.point[0] - lastPlaneInteract.point[0], planeInteract.point[1] - lastPlaneInteract.point[1]));\n if (currentContainerPoint.y < lastContainerPoint.y) {\n deltaTransZ = distance;\n } else {\n deltaTransZ = -distance;\n }\n }\n deltaTranslate[2] = deltaTransZ;\n }\n } else if (mode === 'rotation') {\n deltaAngle = this._calAngle(planeInteract.point, lastPlaneInteract.point);\n if (deltaAngle >= 0) {\n this.TransformHelper._setRotateClockwise(true);\n } else {\n this.TransformHelper._setRotateClockwise(false);\n }\n deltaRotation[2] += deltaAngle;\n } else if (mode === 'scaling' || mode === 'xyzScale') {\n const center = this._getCurrentCenter();\n const firstDistance = vec2.length(vec2.set(EMPTY_VEC, this.firstDownPoint.point[0] - center[0], this.firstDownPoint.point[1] - center[1]));\n const scaleDistance = vec2.length(vec2.set(EMPTY_VEC, lastPlaneInteract.point[0] - center[0], lastPlaneInteract.point[1] - center[1]));\n deltaScale = this._calDirection(planeInteract.point, lastPlaneInteract.point, center, scaleDistance);\n helperDeltaScale = this._calDirection(planeInteract.point, lastPlaneInteract.point, center, firstDistance);\n }\n this.TransformHelper.updateMatrix(this.map, this._target, deltaAngle, helperDeltaScale, deltaTranslate);//TC自己转动\n this._target._updateTRS(this._task, deltaTranslate, deltaRotation, deltaScale, limitScale, this.map, this);\n }\n this.lastMousePosition = mousePosition;\n this.lastPickingObject = this.currentPickingObject;\n const meshes = this._getMeshes();\n this.lastPickingMesh = meshes[this.currentPickingObject.meshId];\n }\n\n _calDirection(from, to, center, distance, currentScaling) {\n const distanceFrom = vec2.length(vec2.set(EMPTY_VEC, from[0] - center[0], from[1] - center[1]));\n const distanceTo = vec2.length(vec2.set(EMPTY_VEC, to[0] - center[0], to[1] - center[1]));\n const scalar = (distanceFrom - distanceTo) / distance;\n if (currentScaling) {\n return (currentScaling[0] - limitScale) * scalar;\n }\n return scalar;\n }\n\n _getCurrentCenter() {\n const map = this.map;\n const coordinate = this._target.getCoordinates();\n const center = map.coordinateToPointAtRes(coordinate, map.getGLRes());\n const trans = vec3.set(CENTER, center.x, center.y, 0);\n const currentTrans = getTranslationPoint(map, this._target.getTranslation());\n vec3.add(trans, trans, currentTrans);\n return trans;\n }\n\n _transformPlaneHelper(rotated) {\n const planeMesh = this.TransformHelper.planeHelper.getMeshes()[0][0];\n const trans = mat4.getTranslation(TRANS, planeMesh.localTransform);\n const scaling = mat4.getScaling(SCALE, planeMesh.localTransform);\n let rotation = quat.fromEuler(QUAT, 0, 0, 0);\n const bearing = this.map.getBearing();\n if (rotated && !this._isInMapCenter()) {\n rotation = quat.fromEuler(QUAT, 90, 0, -bearing);\n if (planeMesh.rotation[0] === 0) {\n this._needRefreshPicking = true;\n }\n vec3.set(planeMesh.rotation, 90, 0, -bearing);\n } else {\n if (planeMesh.rotation[0] === 90) {\n this._needRefreshPicking = true;\n }\n vec3.set(planeMesh.rotation, 0, 0, -bearing);\n }\n mat4.fromRotationTranslationScale(planeMesh.localTransform, rotation, trans, scaling);\n }\n\n _isInMapCenter() {\n if (this.map.getPitch()) {\n return false;\n }\n const cameraPos = this.map.cameraPosition;\n const centerPos = this.map.coordinateToPointAtRes(this.map.getCenter(), this.map.getGLRes());\n vec3.set(centerPos, centerPos.x, centerPos.y, 0);\n const coordinate = this._target.getCoordinates();\n const p = this.map.coordinateToPointAtRes(coordinate, this.map.getGLRes());\n const trans = getTranslationPoint(this.map, this._target.getTranslation());\n const position = vec3.set(TRANS, p.x, p.y, 0);\n const worldPos = vec3.add(position, position, trans);\n const vTargetToCamera = vec3.subtract([], cameraPos, worldPos);\n const vCenterToCamera = vec3.subtract([], cameraPos, centerPos);\n const angle = vec3.angle(vTargetToCamera, vCenterToCamera);\n const theta = (1 / 180) * Math.PI;\n if (angle < theta) {\n return true;\n }\n return false;\n }\n\n _meshAction() {\n const meshes = this._getMeshes();\n if (this.currentPickingObject && this.currentPickingObject.meshId != null) {\n this._setCursor();\n if (this.lastPickingObject && this.lastPickingObject.meshId != null && this.lastPickingObject.meshId !== this.currentPickingObject.meshId) {\n this._resetColor();\n }\n const pickedMesh = meshes[this.currentPickingObject.meshId];\n if (pickedMesh && noChangeColorPickingIds.indexOf(this.currentPickingObject.pickingId) < 0) {\n if (this.currentPickingObject.pickingId > 100) {\n this._changeXYZScaleColor(pickedMesh);\n } else {\n const color = [pickedMesh.originColor[0], pickedMesh.originColor[1], pickedMesh.originColor[2], 0.8];\n pickedMesh.material.set('color', color);\n this._setTranslateMeshesColor(pickedMesh, 0.5);\n }\n }\n this.layerRenderer.setToRedraw();\n } else if (this.lastPickingObject && this.lastPickingObject.meshId != null) {\n this.map.resetCursor();\n this._resetColor();\n this.layerRenderer.setToRedraw();\n }\n }\n\n _changeXYZScaleColor(pickedMesh) {\n const color = [255 / 255, 179 / 255, 2 / 255, 1];\n pickedMesh.material.set('color', color);\n if(pickedMesh.properties['relatedMeshes']) {\n pickedMesh.properties['relatedMeshes'].forEach(mesh => {\n mesh.material.set('color', color)\n });\n }\n }\n\n _setCursor() {\n if (this.currentPickingObject.pickingId === 6) {\n this.map.setCursor('ns-resize');\n } else if (translatePickingIds0.indexOf(this.currentPickingObject.pickingId) > -1) {\n this.map.setCursor('move');\n } else {\n this.map.setCursor('pointer');\n }\n }\n\n _resetColor() {\n const lastMesh = this.lastPickingMesh;\n if (!lastMesh) {\n return;\n }\n const pickedId = lastMesh.getUniform('uPickingId');\n const meshes = this._getMeshes();\n if (translatePickingIds0.indexOf(pickedId) > -1) {\n meshes.forEach(mesh => {\n if (translatePickingIds0.indexOf(mesh.getUniform('uPickingId')) > -1) {\n mesh.material.set('color', mesh.originColor);\n }\n });\n } else if (scaleChnagePickingIds.indexOf(pickedId) > -1) {\n meshes.forEach(mesh => {\n const meshid = mesh.getUniform('uPickingId');\n if (defaultHuanPickingIds.indexOf(meshid) > -1) {\n mesh.material.set('color', mesh.originColor);\n }\n });\n } else if (pickedId === 11) {\n meshes.forEach(mesh => {\n if (defaultHuanPickingIds.indexOf(mesh.getUniform('uPickingId')) > -1) {\n mesh.material.set('color', mesh.originColor);\n }\n });\n }\n lastMesh.material.set('color', lastMesh.originColor);\n if(lastMesh.properties['relatedMeshes']) {\n lastMesh.properties['relatedMeshes'].forEach(mesh => {\n mesh.material.set('color', mesh.originColor)\n });\n }\n }\n\n _setTranslateMeshesColor(pickedMesh, opacity) {\n const pickedId = pickedMesh.getUniform('uPickingId');\n const meshes = this._getMeshes();\n if (translatePickingIds0.indexOf(pickedId) > -1) {\n meshes.forEach(mesh => {\n if (translatePickingIds0.indexOf(mesh.getUniform('uPickingId')) > -1) {\n if (mesh.getUniform('uPickingId') !== pickedMesh.getUniform('uPickingId')) {\n const color = [mesh.originColor[0], mesh.originColor[1], mesh.originColor[2], opacity];\n mesh.material.set('color', color);\n }\n }\n });\n } else if (this._mode === 'scaling') {\n meshes.forEach(mesh => {\n const meshid = mesh.getUniform('uPickingId');\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\n const color = [149 / 255, 179 / 255, 199 / 255, 0.8];\n mesh.material.set('color', color);\n }\n });\n } else if (this._mode === 'rotation') {\n meshes.forEach(mesh => {\n const meshid = mesh.getUniform('uPickingId');\n if (meshid === 1 || meshid === 3 || meshid === 2 || meshid === 4) {\n const color = mesh.originColor;\n mesh.material.set('color', [color[0], color[1], color[2], 0]);\n }\n });\n }\n }\n\n reset() {\n if (!this.map || !this._target) {\n return;\n }\n this._target._reset();\n this.TransformHelper.updateMatrix(this.map, this._target, 0, 0, [0, 0, 0]);\n }\n\n _calAngle(to, from) {\n const center = this._getCurrentCenter();\n const startDirection = vec2.set(START, from[0] - center[0], from[1] - center[1]);\n const endDirection = vec2.set(END, to[0] - center[0], to[1] - center[1]);\n const startAngle = Math.atan2(startDirection[1], startDirection[0]);\n const endAngle = Math.atan2(endDirection[1], endDirection[0]);\n return ((endAngle - startAngle) / Math.PI) * 180;\n }\n\n _setTask(pickingId) {\n //根据pickingId来判断被鼠标命中的是哪个辅助部件,从而判定当前执行的操作\n if (pickingId === 113 || pickingId === 114) {\n this._task = 'x-scale';\n } else if (pickingId === 115 || pickingId === 116) {\n this._task = 'z-scale';\n } else if (pickingId === 117 || pickingId === 118) {\n this._task = 'y-scale';\n } else if (pickingId === 119) {\n this._task = 'xyz-scale';\n } else if (pickingId === 5) {\n this._task = 'xy-translate';\n } else if (pickingId === 6) {\n this._task = 'z-translate';\n } else if (pickingId === 7 || pickingId === 9) {\n this._task = 'x-translate';\n } else if (pickingId === 8 || pickingId === 10) {\n this._task = 'y-translate';\n } else if (pickingId === 11) {\n this._task = 'z-rotate';\n } else {\n this._task = 'scale';\n }\n return this._task;\n }\n\n transform(targets) {\n if (!targets) {\n return;\n }\n if (this.layerRenderer && this.layerRenderer.layer) {\n this.layerRenderer.layer.off('renderend', this.render);\n this.layerRenderer.layer.off('resizeCanvas', this._resize);\n }\n if (!this.map) {\n console.error('should add to a target first');\n return;\n }\n if (this._target) {\n this._target._clear();\n this._target._add(targets);\n }\n if (!this._target.getTargets().length) {\n return;\n }\n const map = this.map;\n this.TransformHelper.updateMatrix(map, this._target, 0, 0, [0, 0, 0]);\n this._prepareContext();\n this._needRefreshPicking = true;\n }\n\n getTransformTarget() {\n return this._target;\n }\n\n _onRemoveTarget() {\n delete this._target;\n }\n\n _prepareContext() {\n const layer = this._target._getLayer();\n if (layer) {\n layer.off('renderend', this.render);\n layer.off('resizeCanvas', this._resize);\n }\n const map = this.map;\n const layerRenderer = layer.getRenderer();\n this.layerRenderer = layerRenderer;\n this.regl = layerRenderer.regl;\n this.renderer = layerRenderer.renderer;\n this._picking = this.layerRenderer.getFBORayPicking();\n this._uniforms = {\n 'projViewMatrix' : map.projViewMatrix,\n 'projMatrix': map.projMatrix,\n 'viewMatrix': map.viewMatrix,\n 'pointSize': 1.0\n };\n layer.on('renderend', this.render, this);\n layer.on('resizeCanvas', this._resize, this);\n layerRenderer.setToRedraw();\n }\n\n _resize() {\n this._picking.clear();\n this._needRefreshPicking = true;\n }\n\n _getPickingPoint(containerPoint, meshes, task) {\n const map = this.map;\n if (!map || !this._picking || !this.layerRenderer || !this.layerRenderer.canvas) {\n return null;\n }\n const dpr = map.getDevicePixelRatio();\n const x = containerPoint.x * dpr, y = containerPoint.y * dpr;\n const uniforms = this._uniforms;\n const inGroup = this.layerRenderer.canvas.gl && this.layerRenderer.canvas.gl.wrap;\n if (this._needRefreshPicking || inGroup || !this._pickTask || this._pickTask !== task) {\n this._picking.render(meshes, uniforms, true);\n this._pickTask = task;\n this._needRefreshPicking = false;\n }\n const picked = this._picking.pick(\n x, // 屏幕坐标 x轴的值\n y, // 屏幕坐标 y轴的值\n 10,\n uniforms,\n {\n viewMatrix : this.map.viewMatrix, //viewMatrix和projMatrix用于计算点的世界坐标值\n projMatrix : this.map.projMatrix,\n returnPoint : true\n }\n );\n return picked;\n }\n\n _initShader() {\n const dpr = this.map.getDevicePixelRatio();\n const viewport = {\n x : 0,\n y : 0,\n width : () => {\n return this.map ? this.map.width * dpr : 1;\n },\n height : () => {\n return this.map ? this.map.height * dpr : 1;\n }\n };\n this._shader = new reshader.MeshShader({\n vert,\n frag,\n uniforms : [\n 'color',\n {\n name : 'projViewModelMatrix',\n type : 'function',\n fn : function (context, props) {\n return mat4.multiply([], props['projViewMatrix'], props['modelMatrix']);\n }\n }\n ],\n extraCommandProps: {\n viewport,\n depth: {\n enable: true,\n func: 'always',\n mask: true,\n range: [0, 0]\n },\n blend: {\n enable: true,\n func: {\n src: 'src alpha',\n dst: 'one minus src alpha'\n },\n equation: 'add'\n }\n },\n defines : {\n }\n });\n }\n\n render() {\n if (!this._isAvailable()) {\n return;\n }\n const meshes = this._getMeshes();\n this.helperScene.setMeshes(meshes);\n const drawContext = this.layerRenderer.getFrameContext();\n //避免tc的mesh多次绘制\n if (drawContext && drawContext.renderTarget && this.layerRenderer.getFrameTimestamp() !== drawContext.timestamp) {\n return;\n }\n this._updateMatrix();\n this._shader.filter = drawContext && drawContext.sceneFilter;\n const targetFBO = drawContext && drawContext.renderTarget && drawContext.renderTarget.fbo;\n this.renderer.render(this._shader, this._uniforms, this.helperScene, targetFBO);\n }\n\n _getMeshes() {\n let meshes = [];\n const meshMap = this.TransformHelper.getMeshes(this._mode);\n for (const p in meshMap) {\n if (p === 'translate') {\n continue;\n }\n const meshList = meshMap[p];\n for (let i = 0; i < meshList.length; i++) {\n meshes = meshes.concat(meshList[i]);\n }\n }\n //为避免z轴被其他mesh覆盖,最后绘制z轴的mesh\n const translateMeshes = meshMap['translate'];\n if (translateMeshes) {\n for (let i = 0; i < translateMeshes.length; i++) {\n meshes = meshes.concat(translateMeshes[i]);\n }\n }\n return meshes;\n }\n\n _isAvailable() {\n const renderer = this.layerRenderer;\n const layer = renderer && renderer.layer;\n return renderer && this._target && layer && layer.isVisible() && this._target._isVisible() && this.regl && this._enabled;\n }\n}\n\nTransformControl.mergeOptions(options);\n"],"names":["partsModels","yuanhuan","accessors","name","componentType","count","min","max","type","bufferView","byteOffset","asset","generator","version","buffers","byteLength","uri","bufferViews","buffer","byteStride","target","materials","pbrMetallicRoughness","baseColorFactor","metallicFactor","roughnessFactor","emissiveFactor","alphaMode","doubleSided","meshes","primitives","attributes","POSITION","NORMAL","indices","material","mode","nodes","mesh","scene","scenes","yuanhuan41","yuanhuan411","yuanpan","zzhou","TEXCOORD_0","jiantou","xuanzhuan","plane","xyzScale","scale","rotation","n","globalThis","self","window","global","Error","t","e","gl_trans__coders","inject","r","toString","_","indexOf","o","substring","l","s","maptalks_gltf_loader_bundle","length","registerTranscoder","getTranscoder","gltfloader","maptalks_gltf_loader","prepareMesh","modelName","translate","color","pickingId","rotate","quat","fromEuler","modelMatrix","mat4","fromRotationTranslationScale","promise","GLTFLoader","JSON","parse","stringify","load","then","gltf","createGLTFMesh","data","reshader","GLTFHelper","exportGLTFPack","getMeshesInfo","forEach","g","i","Material","materialInfo","Mesh","geometry","setUniform","defines","getDefines","HAS_PICKING_ID","setDefines","scaling","multiply","localTransform","nodeMatrix","originTransform","copy","originColor","push","properties","slice","getAbsoluteValue","value","Math","abs","sign","calFixedScale","map","coordinate","getCoordinates","coordPoint","coordinateToPointAtRes","getGLRes","trans","x","y","currentTrans","getTranslationPoint","getTranslation","vec3","add","containerPoint","point","res","altitude","pointToContainerPoint","maptalks","Point","worldCoordExtend","targetRes","coordExtend","containerPointToCoordinate","containerPointToPoint","sqrt","pow","translation","distanceToPointAtRes","z","altitudeToPoint","set","TranslateHelper","constructor","this","_coordinate","_meshes","_prepareMeshes","setCoordinate","right","bottom","left","up","getMeshes","RotationHelper","ScalingHelper","PlaneHelper","XyzScaleHelper","VEC3","TRANS","MAT4","QUAT","SCALE","ratio","ROTATION","scaleChangePickingIds","TransformHelper","planeHelper","xyzScaleHelper","_rotateClockwise","wn","en","es","ws","updateMatrix","angle","scalar","deltaTrans","p","_getPointZ","deltaTranslate","m","j","getUniform","getTargets","getRotation","translateMesh","fixedScale","tmpScale","sm","_setRotateClockwise","clockwise","dispose","EMPTY_VEC","EMPTY_QUAT","EMPTY_MAT","TEMP_POINT","TEMP_VEC_1","TEMP_VEC_2","TEMP_SCALE","EMPTY_TRANS","TransformTarget","_targetList","_translating","_scaling","_rotation","_add","Array","isArray","on","_onRemoveTarget","_originTRS","getScale","_clear","off","_updateTRS","task","deltaRotation","deltaScale","limitScale","transformcontrol","currentRotation","currentScaling","targetCoordinate","_calNewCenter","tempScale","options","scaleStrength","targetScale","minScale","currentMinScale","targetRotation","setCoordinates","_scaleXYZ","setTRS","fire","action","transformtarget","center","getTransformOrigin","getCenter","originCenter","glRes","pCenter","pOriginCenter","sub","trsMatrix","transformMat4","newCenter","pointAtResToCoordinate","_reset","_getLayer","getLayer","cx","cy","cz","len","Coordinate","setTransformOrigin","index","splice","pz","getPointZ","_isVisible","isVisible","translatePickingIds","translatePickingIds0","rotatePickingIds","scalePickingIds","noChangeColorPickingIds","defaultHuanPickingIds","scaleChnagePickingIds","CENTER","START","END","TransformControl","Eventable","Handlerable","Class","super","mouseAction","_mode","_enabled","_target","helperScene","Scene","addToMapCount","_createHelperLayer","_helper","transform","enable","layerRenderer","setToRedraw","disable","resetCursor","setMode","_resetScale","getMode","isEnable","_setMode","_getMode","addTo","_removeEvents","console","warn","gllayer","getLayers","layer","GroupGLLayer","_helperlayer","container","getContainer","_mouseMoveHandle","_mousedownHandle","_mouseupHandle","_viewchanging","_initShader","GLTFLayer","INTERNAL_LAYER_PREFIX","GLTFMarker","symbol","url","modelHeight","uniforms","polygonOpacity","remove","render","_isAvailable","currentMousePosition","_getMeshes","currentPickingObject","_getPickingPoint","_transformPlaneHelper","_meshAction","_transformAction","domEvent","button","_needRefreshPicking","firstDownPoint","meshId","_setTask","config","lastMousePosition","lastPickingObject","lastPickingMesh","_task","planeMesh","bearing","getBearing","_updateMatrix","picked","coordinateToContainerPoint","pickingObject","scalingMesh","_resetScaleControl","_resetDefaultColor","originTrans","meshid","_getWorldPosition","worldPosition","mousePosition","planeInteract","lastPlaneInteract","deltaAngle","helperDeltaScale","deltaTransX","deltaTransY","deltaTransZ","_isInMapCenter","lastContainerPoint","currentContainerPoint","distance","vec2","_calAngle","_getCurrentCenter","firstDistance","scaleDistance","_calDirection","from","to","rotated","getScaling","getPitch","cameraPos","cameraPosition","centerPos","position","worldPos","vTargetToCamera","subtract","vCenterToCamera","PI","_setCursor","_resetColor","pickedMesh","_changeXYZScaleColor","_setTranslateMeshesColor","setCursor","lastMesh","pickedId","opacity","reset","startDirection","endDirection","startAngle","atan2","targets","_resize","error","_prepareContext","getTransformTarget","getRenderer","regl","renderer","_picking","getFBORayPicking","_uniforms","projViewMatrix","projMatrix","viewMatrix","pointSize","clear","canvas","dpr","getDevicePixelRatio","inGroup","gl","wrap","_pickTask","pick","returnPoint","viewport","width","height","_shader","MeshShader","vert","frag","fn","context","props","extraCommandProps","depth","func","mask","range","blend","src","dst","equation","setMeshes","drawContext","getFrameContext","renderTarget","getFrameTimestamp","timestamp","filter","sceneFilter","targetFBO","fbo","meshMap","meshList","concat","translateMeshes","mergeOptions"],"mappings":";;;;;;;;;;;;;AACA,MA2wDMA,IAAc;IAChBC,UA1wBa;QACbC,WAAa,EACT;YACIC,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,GACF,oBACA,mBACD;YAEJC,KAAO,EACH,mBACA,mBACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,GACA,GACA;YAEJC,KAAO,EACH,GACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH;YAEJC,KAAO,EACH;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;;QAGtBC,OAAS;YACLC,WAAa;YACbC,SAAW;;QAEfC,SAAW,EACP;YACIX,MAAQ;YACRY,YAAc;YACdC,KAAO;;QAGfC,aAAe,EACX;YACId,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdU,QAAU;;QAGlBC,WAAa,EACT;YACIlB,MAAQ;YACRmB,sBAAwB;gBACpBC,iBAAmB,EACf,IACA,IACA,IACA;gBAEJC,gBAAkB;gBAClBC,iBAAmB;;YAEvBC,gBAAkB,EACd,GACA,GACA;YAEJC,WAAa;YACbC,cAAe;;QAGvBC,QAAU,EACN;YACI1B,MAAQ;YACR2B,YAAc,EACV;gBACIC,YAAc;oBACVC,UAAY;oBACZC,QAAU;;gBAEdC,SAAW;gBACXC,UAAY;gBACZC,MAAQ;;;QAKxBC,OAAS,EACL;YACIlC,MAAQ;YACRmC,MAAQ;;QAGhBC,OAAS;QACTC,QAAU,EACN;YACIH,OAAS,EACL;;;IAkoBZI,YA7wDe;QACfvC,WAAa,EACT;YACIC,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,GACA,GACA;YAEJC,KAAO,EACH,mBACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,IACC,mBACA;YAELC,KAAO,EACH,oBACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH;YAEJC,KAAO,EACH;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;;QAGtBC,OAAS;YACLC,WAAa;YACbC,SAAW;;QAEfC,SAAW,EACP;YACIX,MAAQ;YACRY,YAAc;YACdC,KAAO;;QAGfC,aAAe,EACX;YACId,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdU,QAAU;;QAGlBC,WAAa,EACT;YACIlB,MAAQ;YACRmB,sBAAwB;gBACpBC,iBAAmB,EACf,MACA,MACA,MACA;gBAEJC,gBAAkB;gBAClBC,iBAAmB;;YAEvBC,gBAAkB,EACd,GACA,GACA;YAEJC,WAAa;YACbC,cAAe;;QAGvBC,QAAU,EACN;YACI1B,MAAQ;YACR2B,YAAc,EACV;gBACIC,YAAc;oBACVC,UAAY;oBACZC,QAAU;;gBAEdC,SAAW;gBACXC,UAAY;gBACZC,MAAQ;;;QAKxBC,OAAS,EACL;YACIlC,MAAQ;YACRmC,MAAQ;;QAGhBC,OAAS;QACTC,QAAU,EACN;YACIH,OAAS,EACL;;;IAqoDZK,aA1iCgB;QAChBxC,WAAa,EACT;YACIC,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,sBACC,oBACD;YAEJC,KAAO,EACH,oBACC,qBACD;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,GACA,GACA;YAEJC,KAAO,EACH,GACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH;YAEJC,KAAO,EACH;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;;QAGtBC,OAAS;YACLC,WAAa;YACbC,SAAW;;QAEfC,SAAW,EACP;YACIX,MAAQ;YACRY,YAAc;YACdC,KAAO;;QAGfC,aAAe,EACX;YACId,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdU,QAAU;;QAGlBC,WAAa,EACT;YACIlB,MAAQ;YACRmB,sBAAwB;gBACpBC,iBAAmB,EACf,MACA,MACA,MACA;gBAEJC,gBAAkB;gBAClBC,iBAAmB;;YAEvBC,gBAAkB,EACd,GACA,GACA;YAEJC,WAAa;YACbC,cAAe;;QAGvBC,QAAU,EACN;YACI1B,MAAQ;YACR2B,YAAc,EACV;gBACIC,YAAc;oBACVC,UAAY;oBACZC,QAAU;;gBAEdC,SAAW;gBACXC,UAAY;gBACZC,MAAQ;;;QAKxBC,OAAS,EACL;YACIlC,MAAQ;YACRmC,MAAQ;;QAGhBC,OAAS;QACTC,QAAU,EACN;YACIH,OAAS,EACL;;;IAk6BZM,SAhoDY;QACZzC,WAAa,EACT;YACIC,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,GACF,oBACD,IACC;YAELC,KAAO,EACH,oBACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,GACA,GACA;YAEJC,KAAO,EACH,GACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH;YAEJC,KAAO,EACH;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;;QAGtBC,OAAS;YACLC,WAAa;YACbC,SAAW;;QAEfC,SAAW,EACP;YACIX,MAAQ;YACRY,YAAc;YACdC,KAAO;;QAGfC,aAAe,EACX;YACId,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdU,QAAU;;QAGlBC,WAAa,EACT;YACIlB,MAAQ;YACRmB,sBAAwB;gBACpBC,iBAAmB,EACf,OACA,OACA,OACA;gBAEJC,gBAAkB;gBAClBC,iBAAmB;;YAEvBC,gBAAkB,EACd,GACA,GACA;YAEJC,WAAa;YACbC,cAAe;;QAGvBC,QAAU,EACN;YACI1B,MAAQ;YACR2B,YAAc,EACV;gBACIC,YAAc;oBACVC,UAAY;oBACZC,QAAU;;gBAEdC,SAAW;gBACXC,UAAY;gBACZC,MAAQ;;;QAKxBC,OAAS,EACL;YACIlC,MAAQ;YACRmC,MAAQ;;QAGhBC,OAAS;QACTC,QAAU,EACN;YACIH,OAAS,EACL;;;IAw/CZO,OAl/CU;QACV1C,WAAa,EACT;YACIC,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,GACF,oBACA,oBACA;YAELC,KAAO,EACH,mBACA,oBACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,GACF,IACA,IACA;YAELC,KAAO,EACH,GACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,MACA;YAEJC,KAAO,EACH,MACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH;YAEJC,KAAO,EACH;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;;QAGtBC,OAAS;YACLC,WAAa;YACbC,SAAW;;QAEfC,SAAW,EACP;YACIX,MAAQ;YACRY,YAAc;YACdC,KAAO;;QAGfC,aAAe,EACX;YACId,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdU,QAAU;;QAGlBC,WAAa,EACT;YACIlB,MAAQ;YACRmB,sBAAwB;gBACpBC,iBAAmB,EACf,IACA,IACA,IACA;gBAEJC,gBAAkB;gBAClBC,iBAAmB;;YAEvBC,gBAAkB,EACd,GACA,GACA;YAEJC,WAAa;YACbC,cAAe;;QAGvBC,QAAU,EACN;YACI1B,MAAQ;YACR2B,YAAc,EACV;gBACIC,YAAc;oBACVC,UAAY;oBACZC,QAAU;oBACVY,YAAc;;gBAElBX,SAAW;gBACXC,UAAY;gBACZC,MAAQ;;;QAKxBC,OAAS,EACL;YACIlC,MAAQ;YACRmC,MAAQ;;QAGhBC,OAAS;QACTC,QAAU,EACN;YACIH,OAAS,EACL;;;IAi1CZS,SA30CY;QACZ5C,WAAa,EACT;YACIC,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,GACF,qBACA,mBACD;YAEJC,KAAO,EACH,oBACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,GACA,GACA;YAEJC,KAAO,EACH,GACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH;YAEJC,KAAO,EACH;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;;QAGtBC,OAAS;YACLC,WAAa;YACbC,SAAW;;QAEfC,SAAW,EACP;YACIX,MAAQ;YACRY,YAAc;YACdC,KAAO;;QAGfC,aAAe,EACX;YACId,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdU,QAAU;;QAGlBC,WAAa,EACT;YACIlB,MAAQ;YACRmB,sBAAwB;gBACpBC,iBAAmB,EACf,MACA,MACA,MACA;gBAEJC,gBAAkB;gBAClBC,iBAAmB;;YAEvBC,gBAAkB,EACd,GACA,GACA;YAEJC,WAAa;YACbC,cAAe;;QAGvBC,QAAU,EACN;YACI1B,MAAQ;YACR2B,YAAc,EACV;gBACIC,YAAc;oBACVC,UAAY;oBACZC,QAAU;;gBAEdC,SAAW;gBACXC,UAAY;gBACZC,MAAQ;;;QAKxBC,OAAS,EACL;YACIlC,MAAQ;YACRmC,MAAQ;;QAGhBC,OAAS;QACTC,QAAU,EACN;YACIH,OAAS,EACL;;;IAmsCZU,WA7rCc;QACd7C,WAAa,EACT;YACIC,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,GACF,oBACA,mBACD;YAEJC,KAAO,EACH,oBACA,mBACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,IACC,GACD;YAEJC,KAAO,EACH,GACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH;YAEJC,KAAO,EACH;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;;QAGtBC,OAAS;YACLC,WAAa;YACbC,SAAW;;QAEfC,SAAW,EACP;YACIX,MAAQ;YACRY,YAAc;YACdC,KAAO;;QAGfC,aAAe,EACX;YACId,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdU,QAAU;;QAGlBC,WAAa,EACT;YACIlB,MAAQ;YACRmB,sBAAwB;gBACpBC,iBAAmB,EACf,IACA,IACA,IACA;gBAEJC,gBAAkB;gBAClBC,iBAAmB;;YAEvBC,gBAAkB,EACd,GACA,GACA;YAEJC,WAAa;YACbC,cAAe;;QAGvBC,QAAU,EACN;YACI1B,MAAQ;YACR2B,YAAc,EACV;gBACIC,YAAc;oBACVC,UAAY;oBACZC,QAAU;;gBAEdC,SAAW;gBACXC,UAAY;gBACZC,MAAQ;;;QAKxBC,OAAS,EACL;YACIlC,MAAQ;YACRmC,MAAQ;;QAGhBC,OAAS;QACTC,QAAU,EACN;YACIH,OAAS,EACL;;;IAqjCZW,OAh6BU;QACV9C,WAAa,EACT;YACIC,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,GACF,IACA,GACD;YAEJC,KAAO,EACH,GACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH,GACA,GACA;YAEJC,KAAO,EACH,GACA,GACA;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;WAElB;YACIP,MAAQ;YACRC,eAAiB;YACjBC,OAAS;YACTC,KAAO,EACH;YAEJC,KAAO,EACH;YAEJC,MAAQ;YACRC,YAAc;YACdC,YAAc;;QAGtBC,OAAS;YACLC,WAAa;YACbC,SAAW;;QAEfC,SAAW,EACP;YACIX,MAAQ;YACRY,YAAc;YACdC,KAAO;;QAGfC,aAAe,EACX;YACId,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdS,YAAc;YACdC,QAAU;WAEd;YACIjB,MAAQ;YACRe,QAAU;YACVH,YAAc;YACdL,YAAc;YACdU,QAAU;;QAGlBC,WAAa,EACT;YACIlB,MAAQ;YACRmB,sBAAwB;gBACpBC,iBAAmB,EACf,OACA,OACA,OACA;gBAEJC,gBAAkB;gBAClBC,iBAAmB;;YAEvBC,gBAAkB,EACd,GACA,GACA;YAEJC,WAAa;YACbC,cAAe;;QAGvBC,QAAU,EACN;YACI1B,MAAQ;YACR2B,YAAc,EACV;gBACIC,YAAc;oBACVC,UAAY;oBACZC,QAAU;;gBAEdC,SAAW;gBACXC,UAAY;gBACZC,MAAQ;;;QAKxBC,OAAS,EACL;YACIlC,MAAQ;YACRmC,MAAQ;;QAGhBC,OAAS;QACTC,QAAU,EACN;YACIH,OAAS,EACL;;;IAwxBZY,UAnoBa;QACbtC,OAAU;YACNC,WAAc;YACdC,SAAY;;QAEhB0B,OAAU;QACVC,QAAW,EACP;YACIrC,MAAS;YACTkC,OAAU,EACN,GACA,GACA,GACA,GACA,GACA,GACA;;QAIZA,OAAU,EACN;YACIC,MAAS;YACTnC,MAAS;YACT+C,OAAU,EACN,mBACA,qBACA;WAGR;YACIZ,MAAS;YACTnC,MAAS;YACT+C,OAAU,EACN,oBACA,oBACA;WAGR;YACIZ,MAAS;YACTnC,MAAS;YACTgD,UAAa,EACT,IACC,mBACD,GACA;YAEJD,OAAU,EACN,mBACA,qBACA;WAGR;YACIZ,MAAS;YACTnC,MAAS;YACTgD,UAAa,EACT,IACC,mBACD,GACA;YAEJD,OAAU,EACN,oBACA,oBACA;WAGR;YACIZ,MAAS;YACTnC,MAAS;YACTgD,UAAa,EACT,GACA,GACA,mBACA;YAEJD,OAAU,EACN,mBACA,qBACA;WAGR;YACIZ,MAAS;YACTnC,MAAS;YACTgD,UAAa,EACT,GACA,GACA,mBACA;YAEJD,OAAU,EACN,oBACA,oBACA;WAGR;YACIZ,MAAS;YACTnC,MAAS;YACT+C,OAAU,EACN,oBACA,oBACA;;QAIZ7B,WAAc,EACV;YACIO,cAAgB;YAChBzB,MAAS;YACTmB,sBAAyB;gBACrBC,iBAAoB,EAChB,mBACA,qBACA,qBACA;gBAEJC,gBAAmB;gBACnBC,iBAAoB;;WAG5B;YACIG,cAAgB;YAChBzB,MAAS;YACTmB,sBAAyB;gBACrBC,iBAAoB,EAChB,mBACA,qBACA,qBACA;gBAEJC,gBAAmB;gBACnBC,iBAAoB;;WAG5B;YACIG,cAAgB;YAChBzB,MAAS;YACTmB,sBAAyB;gBACrBC,iBAAoB,EAChB,kBACA,kBACA,kBACA;gBAEJC,gBAAmB;gBACnBC,iBAAoB;;WAG5B;YACIG,cAAgB;YAChBzB,MAAS;YACTmB,sBAAyB;gBACrBC,iBAAoB,EAChB,oBACA,mBACA,qBACA;gBAEJC,gBAAmB;gBACnBC,iBAAoB;;WAG5B;YACIG,cAAgB;YAChBzB,MAAS;YACTmB,sBAAyB;gBACrBC,iBAAoB,EAChB,oBACA,mBACA,qBACA;gBAEJC,gBAAmB;gBACnBC,iBAAoB;;WAG5B;YACIG,cAAgB;YAChBzB,MAAS;YACTmB,sBAAyB;gBACrBC,iBAAoB,EAChB,qBACA,oBACA,mBACA;gBAEJC,gBAAmB;gBACnBC,iBAAoB;;WAG5B;YACIG,cAAgB;YAChBzB,MAAS;YACTmB,sBAAyB;gBACrBC,iBAAoB,EAChB,qBACA,oBACA,mBACA;gBAEJC,gBAAmB;gBACnBC,iBAAoB;;;QAIhCI,QAAW,EACP;YACI1B,MAAS;YACT2B,YAAe,EACX;gBACIC,YAAe;oBACXC,UAAa;oBACbC,QAAW;oBACXY,YAAe;;gBAEnBX,SAAY;gBACZC,UAAa;;WAIzB;YACIhC,MAAS;YACT2B,YAAe,EACX;gBACIC,YAAe;oBACXC,UAAa;oBACbC,QAAW;oBACXY,YAAe;;gBAEnBX,SAAY;gBACZC,UAAa;;WAIzB;YACIhC,MAAS;YACT2B,YAAe,EACX;gBACIC,YAAe;oBACXC,UAAa;oBACbC,QAAW;oBACXY,YAAe;;gBAEnBX,SAAY;gBACZC,UAAa;;WAIzB;YACIhC,MAAS;YACT2B,YAAe,EACX;gBACIC,YAAe;oBACXC,UAAa;oBACbC,QAAW;oBACXY,YAAe;;gBAEnBX,SAAY;gBACZC,UAAa;;WAIzB;YACIhC,MAAS;YACT2B,YAAe,EACX;gBACIC,YAAe;oBACXC,UAAa;oBACbC,QAAW;oBACXY,YAAe;;gBAEnBX,SAAY;gBACZC,UAAa;;WAIzB;YACIhC,MAAS;YACT2B,YAAe,EACX;gBACIC,YAAe;oBACXC,UAAa;oBACbC,QAAW;oBACXY,YAAe;;gBAEnBX,SAAY;gBACZC,UAAa;;WAIzB;YACIhC,MAAS;YACT2B,YAAe,EACX;gBACIC,YAAe;oBACXC,UAAa;oBACbC,QAAW;oBACXY,YAAe;;gBAEnBX,SAAY;gBACZC,UAAa;;;QAK7BjC,WAAc,EACV;YACIO,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVE,KAAQ,EACJ,oBACA,GACA;YAEJD,KAAQ,EACJ,uBACC,IACA;YAELE,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVE,KAAQ,EACJ,oBACA,GACA;YAEJD,KAAQ,EACJ,qBACC,IACA;YAELE,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVE,KAAQ,EACJ,GACA,GACA;YAEJD,KAAQ,GACH,IACA,IACA;YAELE,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVE,KAAQ,EACJ,oBACA,GACA;YAEJD,KAAQ,EACJ,uBACC,IACA;YAELE,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVE,KAAQ,EACJ,oBACA,GACA;YAEJD,KAAQ,EACJ,qBACC,IACA;YAELE,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVE,KAAQ,EACJ,oBACA,GACA;YAEJD,KAAQ,EACJ,uBACC,IACA;YAELE,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVE,KAAQ,EACJ,oBACA,GACA;YAEJD,KAAQ,EACJ,qBACC,IACA;YAELE,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;WAEb;YACIC,YAAe;YACfL,eAAkB;YAClBC,OAAU;YACVG,MAAS;;QAGjBS,aAAgB,EACZ;YACIC,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;WAEnB;YACIQ,QAAW;YACXH,YAAe;YACfL,YAAe;;QAGvBI,SAAY,EACR;YACIC,YAAe;YACfC,KAAQ;;;GCjwDdoC,IAAI;IACN,IAAI,sBAAsBC,YAAY,OAAOA;IAC7C,IAAI,sBAAsBC,MAAM,OAAOA;IACvC,IAAI,sBAAsBC,QAAQ,OAAOA;IACzC,IAAI,sBAAsBC,QAAQ,OAAOA;IACzC,MAAM,IAAIC,MAAM;AACpB,GAAGC,IAAIN,KAAKO,IAAID,EAAEE,mBAAmBF,EAAEE,oBAAoB;;AAkB3DD,EAAEE,SAAS,SAASF;IAChB,MAAMG,IAAIH,EAAEI,YAAYC,IAAIF,EAAEG,QAAQ,OAAO,GAAGC,IAAIJ,EAAEK,UAAU,GAAGH,IAAII,IAAIV,EAAEE,mBAAmBF,EAAEE,oBAAoB;IACtH,IAAIS,IAAI,GAAGH,iCAAiCd,EAAEW;IAC9C,KAAK,MAAMX,KAAKgB,GAAG,aAAahB,KAAK,oBAAoBA,KAAK,yBAAyBA,MAAMiB,KAAK,uBAAuBjB,IAAI,SAASgB,EAAEhB,GAAGW,aAAa;IACxJ,OAAOM,KAAK,QAAQjB,IAAIkB,4BAA4BP,aAAa,YAAYM,KAAK,OAAOP,EAAEK,UAAUD,EAAEK;IACvGF;AACJ,GAAGV,EAAEa,qBAlBL,SAAWpB,GAAGM;IACVC,EAAEP,KAAKM;AACX,GAgB6BC,EAAEc,gBAtB/B,SAAWrB;IACP,OAAOO,EAAEP;AACb;;ACVA,MAAMsB,IDiBKtB,IAAIuB;;ACRR,SAASC,EAAYC,GAAWC,GAAW3B,GAAUD,GAAO6B,GAAOC;IACtE,MAAMnD,IAAS,IACToD,IAASC,EAAKC,UAAU,IAAIhC,EAAS,IAAIA,EAAS,IAAIA,EAAS,KAC/DiC,IAAcC,EAAKC,6BAA6B,IAAIL,GAAQH,GAAW5B,IACvEqC,IAXV,SAAwBV;QAEpB,OADe,IAAIH,EAAWc,WAAW,IAAIC,KAAKC,MAAMD,KAAKE,UAAU3F,EAAY6E,MACrEe,OAAOC,MAAKC,KACfA;AAEf,KAMoBC,CAAelB;IA6B/B,OA5BAU,EAAQM,MAAKG;QACQC,EAASC,WAAWC,eAAeH,GACxBI,gBACjBC,SAAQ,CAACC,GAAGC;YACnB,MAAMpE,IAAW,IAAI8D,EAASO,SAAS;gBAAEzB,OAAOA,KAASuB,EAAEG,aAAalF;gBAClEe,IAAO,IAAI2D,EAASS,KAAKJ,EAAEK,UAAUxE;YAC3CG,EAAKsE,WAAW,cAAc5B,IAAYuB;YAC1C,MAAMM,IAAUvE,EAAKwE;YACrBD,EAAQE,iBAAiB,GACzBzE,EAAK0E,WAAWH,IAChBvE,EAAKwC,YAAYA,GACjBxC,EAAKa,WAAWA,GAChBb,EAAK2E,UAAU/D;YACfmC,EAAK6B,SAAS5E,EAAK6E,gBAAgB/B,GAAakB,EAAEc,aAClD9E,EAAK+E,kBAAkBhC,EAAKiC,KAAK,IAAIhF,EAAK6E;YAC1C7E,EAAKiF,cAAcxC,KAASuB,EAAEG,aAAalF,iBAC3CM,EAAO2F,KAAKlF;AAAK,aAEjB0C,IAAY,QACZnD,EAAO,GAAG4F,WAA0B,gBAAI5F,EAAO6F,MAAM,GAAG,IACxD7F,EAAO,GAAG4F,WAA0B,gBAAI5F,EAAO6F,MAAM,GAAG;QACxD7F,EAAO,GAAG4F,WAA0B,gBAAI5F,EAAO6F,MAAM,GAAG,IACxD7F,EAAO,GAAG4F,WAA0B,gBAAI5F,EAAO6F,MAAM,GAAG;QACxD7F,EAAO,GAAG4F,WAA0B,gBAAI5F,EAAO6F,MAAM,GAAG,IACxD7F,EAAO,GAAG4F,WAA0B,gBAAI5F,EAAO6F,MAAM,GAAG;QACxD7F,EAAO,GAAG4F,WAA0B,gBAAI5F,EAAO6F,MAAM,GAAG;AAC3D,SAEE7F;AACX;;AAyBA,SAAS8F,EAAiBC,GAAOvD;IAC7B,OAAOwD,KAAKC,IAAIF,KAASC,KAAKE,KAAK1D;AACvC;;AAEO,SAAS2D,EAAc5G,GAAQ6G;IAClC,MAAMC,IAAa9G,EAAO+G,kBACpBC,IAAaH,EAAII,uBAAuBH,GAAYD,EAAIK,aACxDC,IAAQ,EAACH,EAAWI,GAAGJ,EAAWK,GAAG,KACrCC,IAAeC,EAAoBV,GAAK7G,EAAOwH;IACrDC,EAAKC,IAAIP,GAAOA,GAAOG;IACvB,MAAMK,IAdV,SAA+Bd,GAAKe,GAAOC,GAAKC;QAC5C,OAAOjB,EAAiC,4BAAEe,GAAOC,GAAKC;AAC1D,KAY2BC,CAAsBlB,GAAK,IAAImB,EAASC,MAAMd,EAAM,IAAIA,EAAM,KAAKN,EAAIK;IAC9FS,EAAeP,KAAK;IACpB,MAAMc,IAnCV,SAA+BrB,GAAKc,GAAgBQ,GAAWL;QAapD;YACH,MAAMM,IAAcvB,EAAIwB,2BAA2BV;YACnD,OAAOd,EAAII,uBAAuBmB,GAAaD;AAClD;AACL,KAkB6BG,CAAsBzB,GAAKc,GAAgBd,EAAIK;IAGxE,OAFsBT,KAAK8B,KAAK9B,KAAK+B,IAAIN,EAAiBd,IAAID,EAAM,IAAI,KAAKV,KAAK+B,IAAIN,EAAiBb,IAAIF,EAAM,IAAI,MAClF;AAEvC;;AAOO,SAASI,EAAoBV,GAAK4B;IACrC,KAAK5B,GACD,OAAO4B;IAEX,MAAMb,IAAQf,EAAI6B,qBAAqBD,EAAY,IAAIA,EAAY,IAAI5B,EAAIK,aACrEyB,IAAI9B,EAAI+B,gBAAgBH,EAAY,IAAI5B,EAAIK;IAClD,OAAOO,EAAKoB,IAAI,IAAItC,EAAiBqB,EAAMR,GAAGqB,EAAY,KAAKlC,EAAiBqB,EAAMP,GAAGoB,EAAY,KAAKlC,EAAiBoC,GAAGF,EAAY;AAC9I;;ACrGe,MAAMK;IACjB,WAAAC,CAAYjC;QACRkC,KAAKC,IAAcnC,GACnBkC,KAAKE,UAAUF,KAAKG;AACvB;IAED,aAAAC,CAActC;QACVkC,KAAKC,IAAcnC;AACtB;IAED,CAAAqC;QACI,MAAM1I,IAAS,IACTqB,IAAQ,MAAM,KACduH,IAAQ7F,EAAY,WAAW,EAAC,MAAM1B,GAAO,GAAG,KAAI,EAAC,GAAG,GAAG,MAAK,EAACA,GAAOA,GAAOA,KAAQ,EAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,KAAI,IAC5HwH,IAAS9F,EAAY,WAAW,EAAC,GAAG,MAAM1B,GAAO,KAAI,EAAC,GAAG,GAAG,OAAM,EAACA,GAAOA,GAAOA,KAAQ,EAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,KAAI,IAC9HyH,IAAO/F,EAAY,WAAW,GAAE,MAAM1B,GAAO,GAAG,KAAI,EAAC,GAAG,GAAG,OAAM,EAACA,GAAOA,GAAOA,KAAQ,EAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,KAAI,IAC7H0H,IAAKhG,EAAY,WAAW,EAAC,IAAI,MAAM1B,GAAO,KAAI,EAAC,GAAG,GAAG,KAAI,EAACA,GAAOA,GAAOA,KAAQ,EAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,KAAI;QAE/H,OADArB,EAAO2F,KAAKiD,GAAOC,GAAQC,GAAMC,IAC1B/I;AACV;IAED,SAAAgJ;QACI,OAAOT,KAAKE;AACf;;;ACvBU,MAAMQ;IAEjB,WAAAX,CAAYjC;QACRkC,KAAKC,IAAcnC,GACnBkC,KAAKE,UAAUF,KAAKG;AACvB;IAED,aAAAC,CAActC;QACVkC,KAAKC,IAAcnC;AACtB;IAED,CAAAqC;QACI,MAAM1I,IAAS,IACTqB,IAAQ,MAAM,KACdZ,IAAOsC,EAAY,aAAa,EAAC,GAAG,GAAG,KAAI,EAAC,KAAK,GAAG,KAAI,EAAC,KAAM1B,GAAO,KAAMA,GAAO,KAAMA,KAAQ,EAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM;QAE9I,OADArB,EAAO2F,KAAKlF,IACLT;AACV;IAED,SAAAgJ;QACI,OAAOT,KAAKE;AACf;;;ACtBU,MAAMS;IACjB,WAAAZ,CAAYjC;QACRkC,KAAKC,IAAcnC,GACnBkC,KAAKE,UAAUF,KAAKG;AACvB;IAED,aAAAC,CAActC;QACVkC,KAAKC,IAAcnC;AACtB;IAED,CAAAqC;QACI,MAAM1I,IAAS,IACTqB,IAAQ,MAAM,KACdZ,IAAOsC,EAAY,YAAY,EAAC,GAAG,GAAG,KAAI,EAAC,GAAG,GAAG,KAAI,EAAC,KAAM1B,GAAO,KAAMA,GAAO,KAAMA,KAAQ,EAAC,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM;QAE5I,OADArB,EAAO2F,KAAKlF,IACLT;AACV;IAED,SAAAgJ;QACI,OAAOT,KAAKE;AACf;;;ACnBU,MAAMU;IACjB,WAAAb,CAAYjC;QACRkC,KAAKC,IAAcnC,GACnBkC,KAAKE,UAAUF,KAAKG;AACvB;IAED,aAAAC,CAActC;QACVkC,KAAKC,IAAcnC;AACtB;IAED,CAAAqC;QACI,MAAM1I,IAAS,IACTS,IAAOsC,EAAY,SAAS,EAAC,GAAG,GAAG,KAAI,EAAC,GAAG,GAAG,KAAI,EAAC,IAAI,IAAI,MAAK,EAAC,GAAG,GAAG,GAAG,MAAM;QAEtF,OADA/C,EAAO2F,KAAKlF,IACLT;AACV;IAED,SAAAgJ;QACI,OAAOT,KAAKE;AACf;;;ACnBU,MAAMW;IAEjB,WAAAd,CAAYjC;QACRkC,KAAKC,IAAcnC,GACnBkC,KAAKE,UAAUF,KAAKG;AACvB;IAED,aAAAC,CAActC;QACVkC,KAAKC,IAAcnC;AACtB;IAED,CAAAqC;QACI,MAAM1I,IAAS,IACTS,IAAOsC,EAAY,YAAY,EAAC,GAAG,GAAG,KAAI,EAAC,GAAG,GAAG,KAAI,EAAC,GAAG,GAAG,KAAI,MAAM;QAE5E,OADA/C,EAAO2F,KAAKlF,IACLT;AACV;IAED,SAAAgJ;QACI,OAAOT,KAAKE;AACf;;;ACdL,MAAMY,IAAO,IAAIC,IAAQ,IAAIC,IAAO,IAAIC,IAAO,IAAIC,IAAQ,IAAIC,IAAQ,EAAC,MAAM,KAAK,MAAM,KAAK,MAAM,OAAMC,IAAW,IAC/GC,IAAwB,EAAC,GAAG,GAAG,GAAG,GAAG;;AAE5B,MAAMC;IACjB,WAAAvB;QACIC,KAAKtF,YAAY,IAAIoF,GACrBE,KAAKjH,WAAW,IAAI2H,GACpBV,KAAKnD,UAAU,IAAI8D,GACnBX,KAAKuB,cAAc,IAAIX;QACvBZ,KAAKwB,iBAAiB,IAAIX,GAC1Bb,KAAKE,UAAUF,KAAKG,KACpBH,KAAKyB,KAAmB;AAC3B;IAED,CAAAtB;QACI,MAAM1I,IAAS,CAAA;QACfA,EAAkB,YAAIuI,KAAKtF,UAAU+F,aACrChJ,EAAiB,WAAIuI,KAAKjH,SAAS0H;QACnChJ,EAAgB,UAAIuI,KAAKnD,QAAQ4D,aACjChJ,EAAoB,cAAIuI,KAAKuB,YAAYd;QACzChJ,EAAiB,WAAIuI,KAAKwB,eAAef;QACzC,MAAM3H,IAAQ,MAAM,KACd4I,IAAKlH,EAAY,cAAc,GAAE,QAAQ1B,GAAO,QAAQA,GAAO,KAAI,EAAC,IAAI,GAAG,KAAI,EAAS,KAARA,GAAqB,KAARA,GAAqB,KAARA,KAAc,EAAC,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,IAChK6I,IAAKnH,EAAY,cAAc,EAAC,QAAQ1B,GAAO,QAAQA,GAAO,KAAI,GAAE,IAAI,GAAG,OAAM,EAAS,KAARA,GAAqB,KAARA,GAAqB,KAARA,KAAc,EAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,IACjK8I,IAAKpH,EAAY,cAAc,EAAC,QAAQ1B,IAAQ,QAAQA,GAAO,KAAI,EAAC,IAAI,GAAG,OAAM,EAAS,KAARA,GAAqB,KAARA,GAAqB,KAARA,KAAc,EAAC,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,IAClK+I,IAAKrH,EAAY,cAAc,GAAE,QAAQ1B,IAAQ,QAAQA,GAAO,KAAI,GAAE,IAAI,GAAG,KAAI,EAAS,KAARA,GAAqB,KAARA,GAAqB,KAARA,KAAc,EAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,IACjKP,IAAUiC,EAAY,WAAW,EAAC,GAAG,GAAG,KAAI,EAAC,IAAI,GAAG,KAAI,EAAS,KAAR1B,GAAqB,KAARA,GAAqB,KAARA,KAAc,EAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,IACxIN,IAAQgC,EAAY,SAAS,EAAC,GAAG,GAAG,OAAM,EAAC,IAAI,GAAG,KAAI,EAAC,GAAG,GAAG,KAAI,EAAC,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,KAAI;QAE5G,OADA/C,EAAkB,UAAE2F,KAAKsE,GAAIC,GAAIC,GAAIC,GAAItJ,GAASC,IAC3Cf;AACV;IAED,YAAAqK,CAAajE,GAAK7G,GAAQ+K,GAAOC,GAAQC;QACrC,MAAMnE,IAAa9G,EAAO+G,kBACpBmE,IAAIrE,EAAII,uBAAuBH,GAAYD,EAAIK,aAC/CyB,IAAI3I,EAAOmL;QACjB1D,EAAKoB,IAAIkB,GAAOmB,EAAE9D,GAAG8D,EAAE7D,GAAGsB;QAC1B,MAAMyC,IAAiB3D,EAAKvB,KAAK4D,GAAMmB,IACjC3D,IAAeC,EAAoBV,GAAK7G,EAAOwH;QACrDC,EAAKC,IAAIqC,GAAOA,GAAOzC,IACvBG,EAAKC,IAAIqC,GAAOA,GAAOqB;QACvB,KAAK,MAAMrM,KAAQiK,KAAKE,SACpB,KAAK,IAAI/D,IAAI,GAAGA,IAAI6D,KAAKE,QAAQnK,GAAMoE,QAAQgC,KAAK;YAChD,MAAMkG,IAAIrC,KAAKE,QAAQnK,GAAMoG;YAC7B,KAAK,IAAImG,IAAI,GAAGA,IAAID,EAAElI,QAAQmI,KAAK;gBAC/B,MAAMpK,IAAOmK,EAAEC,IACT1H,IAAY1C,EAAKqK,WAAW,eAC5B7H,IAAY+D,EAAKvB,KAAK4D,GAAM5I,EAAKwC;gBACvC,IAAI3B,IAAW0F,EAAKvB,KAAKkE,GAAUlJ,EAAKa;gBACxC,MAAM8D,IAAU3E,EAAK2E;gBAerB,IAdkB,OAAdjC,MACIoF,KAAKyB,KACL1I,EAAS,MAAMgJ,GACf7J,EAAKa,SAAS,MAAMgJ,KACZ/B,KAAKyB,MACb1I,EAAS,MAAMgJ;gBACf7J,EAAKa,SAAS,MAAMgJ,GACpBhJ,EAAS,KAAK,KACdA,EAAS,MAAM,MAGnB6B,IAAY,OAAsC,MAA/B5D,EAAOwL,aAAarI,WACvCpB,IAAW/B,EAAOwL,aAAa,GAAGC;gBAElCpB,EAAsBxH,QAAQe,MAAc,GAC5C,IAAkB,OAAdA,GACAiC,EAAQ,MAAMmF,GACdnF,EAAQ,MAAMmF,GACdnF,EAAQ,MAAMmF,QACX;oBACH,MAAMU,IAAgB1C,KAAKE,QAAmB,UAAE,GAAG;oBACnDrD,EAAQ,KAAgC,MAA3B6F,EAAc7F,QAAQ,IACnCA,EAAQ,KAAgC,MAA3B6F,EAAc7F,QAAQ,IACnCA,EAAQ,KAAgC,MAA3B6F,EAAc7F,QAAQ;AACtC;gBAEL,IAAI8F,IAAa/E,EAAc5G,GAAQ6G;gBAIvC,IAHA8E,IAAalE,EAAKoB,IAAImB,GAAM2B,GAAYA,GAAYA,IACpDlE,EAAK3B,SAASpC,GAAWA,GAAWiI,IACpClE,EAAK3B,SAAS6F,GAAYA,GAAY9F,IACpB,MAAdjC,KAAiC,MAAdA,KAAiC,MAAdA,KAAiC,MAAdA,GAAiB;oBAC1E,MAAMgI,IAAWnE,EAAK3B,SAASoE,GAAOrE,GAASsE;oBAC/C1C,EAAK3B,SAASpC,GAAWA,GAAWkI;AACvC;gBACD,MAAM/H,IAASC,EAAKC,UAAUkG,GAAMlI,EAAS,IAAIA,EAAS,IAAIA,EAAS;gBAEvE,IADA0F,EAAKC,IAAIhE,GAAWA,GAAWqG,IAClB,eAAThL,GAAqB;oBACrB,MAAM8M,IAAK5H,EAAKC,6BAA6B,IAAIL,GAAQH,GAAWiI;oBACpE1H,EAAK6B,SAAS5E,EAAK6E,gBAAgB8F,GAAI3K,EAAK+E;AACpE,uBACwBhC,EAAKC,6BAA6BhD,EAAK6E,gBAAgBlC,GAAQH,GAAWiI;AAEjF;AACJ;AAER;IAED,SAAAlC,CAAUzI;QACN,MAAMP,IAAS,CAAA;QACf,OAAKO,KAGQ,eAATA,IACAP,EAAOO,KAAQgI,KAAKE,QAAQlI,MAE5BP,EAAkB,YAAIuI,KAAKE,QAAQxF;QACtB,gBAAT1C,MACAP,EAAOO,KAAQgI,KAAKE,QAAQlI,MAG7BP,KAVIA;AAWd;IAED,CAAAqL,CAAoBC;QAChB/C,KAAKyB,IAAmBsB;AAC3B;IAED,OAAAC;QACI,KAAK,MAAMjN,KAAQiK,KAAKE,SACpB,KAAK,IAAI/D,IAAI,GAAGA,IAAI6D,KAAKE,QAAQnK,GAAMoE,QAAQgC,KAAK;YAChD,MAAMkG,IAAIrC,KAAKE,QAAQnK,GAAMoG;YAC7B,KAAK,IAAImG,IAAI,GAAGA,IAAID,EAAElI,QAAQmI,KAAK;gBAC/B,MAAMpK,IAAOmK,EAAEC;gBACfpK,EAAKqE,SAASyG,WACd9K,EAAK8K;AACR;AACJ;AAER;;;ACrIL,MAAMC,IAAY,IAAIC,IAAa,IAAIC,IAAY,IAAIC,IAAa,IAAInE,EAAM,GAAG,IAAIoE,IAAa,IAAIC,IAAa,IAAIC,IAAa,IAAIC,IAAc,EAAC,GAAG,GAAG;;AAC9I,MAAMC;IACjB,WAAA1D;QACIC,KAAK0D,IAAc,IACnB1D,KAAK2D,IAAe,EAAC,GAAG,GAAG,KAC3B3D,KAAK4D,IAAW,EAAC,GAAG,GAAG,KACvB5D,KAAK6D,IAAY,EAAC,GAAG,GAAG;AAC3B;IAED,CAAAC,CAAK9M;QACG+M,MAAMC,QAAQhN,KACdA,EAAOiF,SAAQ3C;YACX0G,KAAK8D,EAAKxK;AAAE,eAGhBtC,EAAOiN,GAAG,UAAUjE,KAAKkE,GAAiBlE,OAC1ChJ,EAAOmN,IAAa;YAChBrG,YAAY9G,EAAO+G;YACnB0B,aAAazI,EAAOwH;YACpBzF,UAAU/B,EAAOyL;YACjB3J,OAAO9B,EAAOoN;WAElBpE,KAAK0D,EAAYtG,KAAKpG;AAE7B;IAED,CAAAqN;QACIrE,KAAK0D,EAAYzH,SAAQ3C;YACrBA,EAAEgL,IAAI,UAAUtE,KAAKkE,GAAiBlE;AAAK,aAE/CA,KAAK0D,IAAc;AACtB;IAED,CAAAa,CAAWC,GAAMpC,GAAgBqC,GAAeC,GAAYC,GAAY9G,GAAK+G;QACzE,KAAK,IAAIzI,IAAI,GAAGA,IAAI6D,KAAK0D,EAAYvJ,QAAQgC,KAAK;YAC9C,MAAMnF,IAASgJ,KAAK0D,EAAYvH,IAC1B0I,IAAkB7N,EAAOyL,eACzBqC,IAAiB9N,EAAOoN,YACxBW,IAAmB/E,KAAKgF,EAAcnH,GAAK7G,GAAQ0N,GAAYD,GAAerC;YACpF,IAAI6C,IAAY;YAGZA,IADAP,KAAc,IACFA,IAEAA,KAAc1E,KAAKkF,WAAWlF,KAAKkF,QAAQC,iBAAiB;YAE5E,MAAMC,IAAc3G,EAAKC,IAAI6E,GAAY9E,EAAKoB,IAAIoD,GAAWgC,IAAaH,EAAe,IAAIG,IAAYH,EAAe,IAAIG,IAAYH,EAAe,KAAKA,IACtJO,IAAW5H,KAAKvH,OAAOkP;YAE7B,IAAI3H,KAAKC,IAAI2H,KAAYV,GAAY;gBACjC,MAAMW,IAAkB7H,KAAKC,IAAI2H;gBACjCD,EAAY,KAAKA,EAAY,MAAMT,IAAaW,IAChDF,EAAY,KAAKA,EAAY,MAAMT,IAAaW,IAChDF,EAAY,KAAKA,EAAY,MAAMT,IAAaW;AACnD;YACD,MAAMC,IAAiB9G,EAAKC,IAAImG,GAAiBJ,GAAeI;YAChE7N,EAAOwO,eAAeT,IACtB/E,KAAKyF,EAAUjB,GAAMY,GAAaN;YAClC,MAAMxG,IAAetH,EAAOwH;YAC5BxH,EAAO0O,OAAOpH,GAAciH,GAAgBH;AAC/C;QACD3G,EAAKoB,IAAI0D,GAAYmB,GAAYA,GAAYA,IAC7CjG,EAAKC,IAAIsB,KAAK6D,GAAWY,GAAezE,KAAK6D,IAC7CpF,EAAKC,IAAIsB,KAAK4D,GAAUL,GAAYvD,KAAK4D,IACzCnF,EAAKC,IAAIsB,KAAK2D,GAAcvB,GAAgBpC,KAAK2D;QAC7Ca,EAAK3K,QAAQ,gBAAgB,IAC7B+K,EAAiBe,KAAK,kBAAkB;YAAEC,QAAQpB;YAAMpO,MAAM;YAAkByP,iBAAiB7F,KAAK0D;YAAaoC,QAAQ9F,KAAKjC;YAAkBjF,OAAOkH,KAAK4D;YAAU7K,UAAUiH,KAAK6D;YAAWpE,aAAaO,KAAK2D;YAAcvB;YAAgBqC;YAAeC;aAEjQE,EAAiBe,KAAK,gBAAgB;YAAEC,QAAQpB;YAAMpO,MAAM;YAAgByP,iBAAiB7F,KAAK0D;YAAaoC,QAAQ9F,KAAK0D,EAAY,GAAGqC;YAAsBjN,OAAOkH,KAAK4D;YAAU7K,UAAUiH,KAAK6D;YAAWpE,aAAaO,KAAK2D;YAAcvB;YAAgBqC;YAAeC;;AAEvR;IAED,CAAAM,CAAcnH,GAAK7G,GAAQ0N,GAAYD,GAAerC;QAClD,MAAM0D,IAAS9O,EAAOgP,aAChBC,IAAejP,EAAO+O,sBACtBG,IAAQrI,EAAIK,YACZiI,IAAUtI,EAAII,uBAAuB6H,GAAQI,GAAO9C;QAC1D+C,EAAQxG,IAAI9B,EAAI+B,gBAAgBkG,EAAOnG,GAAGuG,IAC1CzH,EAAKoB,IAAIwD,GAAY8C,EAAQ/H,GAAG+H,EAAQ9H,GAAG8H,EAAQxG,KAAK;QACxD,MAAMyG,IAAgBvI,EAAII,uBAAuBgI,GAAcC,GAAO9C;QACtEgD,EAAczG,IAAI9B,EAAI+B,gBAAgBqG,EAAatG,GAAGuG,IACtDzH,EAAKoB,IAAIyD,GAAY8C,EAAchI,GAAIgI,EAAc/H,GAAG+H,EAAczG,KAAK;QAC3E,MAAMf,IAAQH,EAAK4H,IAAIpD,GAAWI,GAAYC,IACxCvK,IAAW+B,EAAKC,UAAUmI,GAAY,GAAG,GAAGuB,EAAc;QAChEhG,EAAKoB,IAAI0D,GAAYmB,IAAa,GAAGA,IAAa,GAAGA,IAAa;QAClE,MAAM4B,IAAYrL,EAAKC,6BAA6BiI,GAAWpK,GAAUqJ,GAAgBmB;QACzF9E,EAAK8H,cAAc3H,GAAOA,GAAO0H,IACjC7H,EAAKC,IAAIE,GAAOA,GAAO0E,IACvBF,EAAWvD,IAAIjB,EAAM,IAAIA,EAAM;QAC/B,MAAM4H,IAAY3I,EAAI4I,uBAAuBrD,GAAY8C;QAEzD,OADAM,EAAU7G,IAAIf,EAAM,KAAKf,EAAI+B,gBAAgB,GAAGsG,IACzCM;AACV;IAED,CAAAf,CAAUjB,GAAMY,GAAaN;QAWzB,OAVa,cAATN,MACAY,EAAY,KAAKN,EAAe,IAChCM,EAAY,KAAKN,EAAe,KACrB,cAATN,MACFY,EAAY,KAAKN,EAAe;QAChCM,EAAY,KAAKN,EAAe,KACrB,cAATN,MACFY,EAAY,KAAKN,EAAe,IAChCM,EAAY,KAAKN,EAAe,KAE7BM;AACV;IAED,CAAAsB;QACI1G,KAAK0D,EAAYzH,SAAQjF;YACrB,IAAIA,EAAOmN,GAAY;gBACnB,OAAMrG,YAAEA,GAAU2B,aAAEA,GAAW1G,UAAEA,GAAQD,OAAEA,KAAU9B,EAAOmN;gBAC5DnN,EAAOwO,eAAe1H,IACtB9G,EAAO0O,OAAOjG,GAAa1G,GAAUD;AACxC;AAAA;AAER;IAED,QAAAsL;QACI,OAAOpE,KAAK4D;AACf;IAED,cAAApF;QACI,OAAgC,MAA5BwB,KAAK0D,EAAYvJ,UACV6F,KAAK0D,EAAY,GAAGlF,oBAExBgF;AACV;IAED,WAAAf;QACI,OAAOzC,KAAK6D;AACf;IAED,CAAA8C;QACI,OAAI3G,KAAK0D,EAAY,KACV1D,KAAK0D,EAAY,GAAGkD,aAExB;AACV;IAED,cAAA7I;QACI,IAAI8I,IAAK,GAAGC,IAAK,GAAGC,IAAK;QACzB,MAAMC,IAAMhH,KAAK0D,EAAYvJ;QAC7B,KAAK6M,GACD,OAAO;QAEX,KAAK,IAAI7K,IAAI,GAAGA,IAAI6K,GAAK7K,KAAK;YAC1B,MAAM2J,IAAS9F,KAAK0D,EAAYvH,GAAG6J;YACnCa,KAAMf,EAAO1H,GACb0I,KAAMhB,EAAOzH,GACb0I,KAAMjB,EAAOnG,KAAK;AACrB;QACDkH,KAAUG,GACVF,KAAUE,GACVD,KAAUC;QACV,MAAMR,IAAY,IAAIS,EAAWJ,GAAIC,GAAIC;QACzC,KAAK,IAAI5K,IAAI,GAAGA,IAAI6K,GAAK7K,KACrB6D,KAAK0D,EAAYvH,GAAG+K,mBAAmBV;QAE3C,OAAOA;AACV;IAED,CAAAtC,CAAgB3K;QACZ,MAAMvC,IAASuC,EAAEvC,QACXmQ,IAAQnH,KAAK0D,EAAY7J,QAAQ7C;QACnCmQ,KAAS,aACFnQ,EAAOmN,GACdnE,KAAK0D,EAAY0D,OAAOD,GAAO;AAEtC;IAED,UAAA3E;QACI,OAAOxC,KAAK0D;AACf;IAED,CAAAvB;QACI,IAAIkF,IAAK;QACT,MAAML,IAAMhH,KAAK0D,EAAYvJ;QAC7B,KAAK,IAAIgC,IAAI,GAAGA,IAAI6K,GAAK7K,KAAK;YAE1BkL,KADerH,KAAK0D,EAAYvH,GAAGmL;AAEtC;QAED,OADAD,KAAUL,GACHK;AACV;IAED,CAAAE;QACI,KAAK,IAAIpL,IAAI,GAAGA,IAAI6D,KAAK0D,EAAYvJ,QAAQgC,KACzC,IAAI6D,KAAK0D,EAAYvH,GAAGqL,aACpB,QAAO;QAGf,QAAO;AACV;;;AC3LL,MAAMC,IAAsB,EAAC,GAAG,GAAG,GAAG,GAAG,GAAG,MACtCC,IAAuB,EAAC,GAAG,GAAG,GAAG,GAAG,MACpCC,IAAmB,EAAC,GAAG,GAAG,MAC1BC,IAAkB,EAAC,GAAG,GAAG,MACzBC,IAA0B,EAAC,IAAI,MAC/BC,IAAwB,EAAC,GAAG,GAAG,GAAG,KAClCC,IAAwB,EAAC,GAAG,GAAG,GAAG,GAAG,MAErC9G,KAAO,IAAIC,KAAQ,IAAIH,KAAQ,IAAIkC,KAAY,IAAI+E,KAAS,IAAIC,KAAQ,IAAIC,KAAM;;AAKzE,MAAMC,WAAyBC,EAAUC,EAAYC;IAChE,WAAAvI,CAAYmF,IAAU;QAClBqD,MAAMrD,IACNlF,KAAKkF,UAAUA,GACflF,KAAKwI,cAAc,UACnBxI,KAAKyI,IAAQzI,KAAKkF,QAAQlN,QAAQ;QAClCgI,KAAK0I,KAAW,GAChB1I,KAAKsB,kBAAkB,IAAIA,GAC3BtB,KAAK2I,IAAU,IAAIlF,GACnBzD,KAAK4I,cAAc,IAAI/M,EAASgN,MAAM;QACtC7I,KAAK8I,gBAAgB,GACrB9I,KAAK+I;AACR;IAED,cAAAvD,CAAe1H;QACXkC,KAAKgJ,EAAQxD,eAAe1H,IAC5BkC,KAAKiJ,UAAUjJ,KAAKgJ;AACvB;IAED,MAAAE;QAKI,OAJAlJ,KAAK0I,KAAW,GACZ1I,KAAKmJ,iBACLnJ,KAAKmJ,cAAcC,eAEhBpJ;AACV;IAED,OAAAqJ;QAQI,OAPArJ,KAAK0I,KAAW,GACZ1I,KAAKmJ,iBACLnJ,KAAKmJ,cAAcC,eAEnBpJ,KAAKnC,OACLmC,KAAKnC,IAAIyL;QAENtJ;AACV;IAED,OAAAuJ,CAAQvR;QACJgI,KAAKyI,IAAQzQ,GACbgI,KAAKwJ,KACDxJ,KAAKmJ,iBACLnJ,KAAKmJ,cAAcC,eAEvBpJ,KAAK2F,KAAK,cAAc;YAAE3N;YAAM5B,MAAM;;AACzC;IAED,OAAAqT;QACI,OAAOzJ,KAAKyI;AACf;IAED,QAAAiB;QACI,OAAO1J,KAAK0I;AACf;IAED,CAAAiB,CAAS/O;QACD6M,EAAoB5N,QAAQe,MAAc,IAC1CoF,KAAKyI,IAAQ,cACNd,EAAiB9N,QAAQe,MAAc,IAC9CoF,KAAKyI,IAAQ,aACNb,EAAgB/N,QAAQe,MAAc,IAC7CoF,KAAKyI,IAAQ,YACS,eAAfzI,KAAKyI,MACZzI,KAAKyI,IAAQ;AAEpB;IAED,CAAAmB;QACI,OAAO5J,KAAKyI;AACf;IAED,KAAAoB,CAAMhM;QACF,IAAImC,KAAKnC,KAGL,OAFAmC,KAAK8J,UACLC,QAAQC,KAAK;QAGjBhK,KAAK8I,iBACL9I,KAAKnC,MAAMA;QACX,MAAMoM,IAAUpM,EAAIqM,WAAUC,KAASA,aAAiBC,IAAc;QAClEH,IACAjK,KAAKqK,EAAaR,MAAMI,KAExBjK,KAAKqK,EAAaR,MAAM7J,KAAKnC,MAEjCmC,KAAKsK,YAAYzM,EAAI0M;QACrB1M,EAAIoG,GAAG,iBAAiBjE,KAAKwK,GAAkBxK,OAC/CnC,EAAIoG,GAAG,iBAAiBjE,KAAKyK,GAAkBzK,OAC/CnC,EAAIoG,GAAG,eAAejE,KAAK0K,GAAgB1K;QAC3CnC,EAAIoG,GAAG,+BAA+BjE,KAAK2K,GAAe3K,OAC1DA,KAAK4K;AACR;IAED,CAAA7B;QACI/I,KAAKqK,IAAe,IAAIQ,EAAU,GAAGC,uBACrC9K,KAAKgJ,IAAU,IAAI+B,EAAW,EAAC,GAAG,KAAI;YAClCC,QAAQ;gBACJC,KAAK;gBACLC,aAAa;gBACbC,UAAU;oBACNC,gBAAgB;;;WAGzBvB,MAAM7J,KAAKqK;AACjB;IAED,MAAAgB;QACSrL,KAAKnC,QAGVmC,KAAK8J,KACL9J,KAAKsB,gBAAgB0B,WACrBhD,KAAKqK,EAAagB,UACdrL,KAAKmJ,iBACLnJ,KAAKmJ,cAAcC;eAEhBpJ,KAAKgJ,UACLhJ,KAAKqK,UACLrK,KAAKnC,YACLmC,KAAKmK,cACLnK,KAAKmJ;eACLnJ,KAAKsK,kBACLtK,KAAK2I;AACf;IAED,CAAAmB;QACS9J,KAAKsK,aAActK,KAAKnC,QAG7BmC,KAAKnC,IAAIyG,IAAI,iBAAiBtE,KAAKwK,GAAkBxK,OACrDA,KAAKnC,IAAIyG,IAAI,iBAAiBtE,KAAKyK,GAAkBzK;QACrDA,KAAKnC,IAAIyG,IAAI,eAAetE,KAAK0K,GAAgB1K,OACjDA,KAAKnC,IAAIyG,IAAI,+BAA+BtE,KAAK2K,GAAe3K;QAC5DA,KAAKmK,SACLnK,KAAKmK,MAAM7F,IAAI,aAAatE,KAAKsL,QAAQtL;AAEhD;IAED,CAAAwK,CAAiBjR;QACb,IAAKyG,KAAKuL,KAAV;YAOA,IAJAvL,KAAKwL,uBAAuB;gBACxBpN,GAAG7E,EAAEoF,eAAeP;gBACpBC,GAAG9E,EAAEoF,eAAeN;eAEC,aAArB2B,KAAKwI,aAA0B;gBAE/B,MAAM/Q,IAASuI,KAAKyL;gBACpBzL,KAAK0L,uBAAuB1L,KAAK2L,EAAiB3L,KAAKwL,sBAAsB/T,GAAQ,WACjFuI,KAAK0L,wBAA+D,QAAvC1L,KAAK0L,qBAAqB9Q,aACvDoF,KAAK2J,EAAS3J,KAAK0L,qBAAqB9Q;gBACI,MAAxCoF,KAAK0L,qBAAqB9Q,YAC1BoF,KAAK4L,GAAsB,KAE3B5L,KAAK4L,GAAsB,OAG/B5L,KAAK4L,GAAsB;gBAC3B5L,KAAK2J,MAET3J,KAAK6L;AACR;YACD7L,KAAK8L,GAAiB9L,KAAKwL;AAtB1B;AAuBJ;IAED,CAAAf,CAAiBlR;QACb,KAAKyG,KAAKuL,OAAwC,MAAtBhS,EAAEwS,SAASC,QACnC;QAEJ,MAAMvU,IAASuI,KAAKyL;QACpBzL,KAAKwL,uBAAuB;YACxBpN,GAAG7E,EAAEoF,eAAeP;YACpBC,GAAG9E,EAAEoF,eAAeN;WAExB2B,KAAKiM,MAAsB,GAC3BjM,KAAK0L,uBAAuB1L,KAAK2L,EAAiB3L,KAAKwL,sBAAsB/T,GAAQ;QACrFuI,KAAKkM,iBAAiBlM,KAAK2L,EAAiB3L,KAAKwL,sBAAsB/T,GAAQ,WAC3EuI,KAAK0L,wBAA4D,QAApC1L,KAAK0L,qBAAqBS,UACvDnM,KAAKwI,cAAc;QACnBxI,KAAKoM,GAASpM,KAAK0L,qBAAqB9Q,YACxCoF,KAAKnC,IAAIwO,OAAO,aAAY,IAC5BrM,KAAKnC,IAAIwO,OAAO,cAAa;QACzBrM,KAAKmJ,iBACLnJ,KAAKmJ,cAAcC,kBAGvBpJ,KAAKwI,cAAc;QACnBxI,KAAKnC,IAAIwO,OAAO,aAAY,IAC5BrM,KAAKnC,IAAIwO,OAAO,cAAa,IAC7BrM,KAAKwJ,MAETxJ,KAAKsM,oBAAoBtM,KAAKwL;QAC9BxL,KAAKuM,oBAAoBvM,KAAK0L,sBAC9B1L,KAAKwM,kBAAkB/U,EAAOuI,KAAK0L,qBAAqBS;AAC3D;IAED,CAAAzB;QAC6B,gBAArB1K,KAAKwI,gBACLxI,KAAKkM,iBAAiB,MACtBlM,KAAKwJ,KACLxJ,KAAKiM,MAAsB;QAC3BjM,KAAK2F,KAAK,gBAAgB;YAAEC,QAAQ5F,KAAKyM;YAAOrW,MAAM;YAAgByP,iBAAiB7F,KAAK2I,EAAQnG;aAExGxC,KAAKwI,cAAc,UACA,eAAfxI,KAAKyI,MACLzI,KAAKyI,IAAQ;QAEjBzI,KAAKnC,IAAIwO,OAAO,aAAY,IAC5BrM,KAAKnC,IAAIwO,OAAO,cAAa,IACzBrM,KAAKmJ,iBACLnJ,KAAKmJ,cAAcC;AAE1B;IAED,CAAAuB;QACI,MAAM+B,IAAY1M,KAAKsB,gBAAgBC,YAAYd,YAAY,GAAG;QAClE,KAAKiM,GACD;QAEJ,MAAMC,IAAU3M,KAAKnC,IAAI+O;QACzBF,EAAU3T,SAAS,MAAM4T,GACzB3M,KAAK6M;AACR;IAED,EAAAA;QACS7M,KAAKuL,QAGVvL,KAAKsB,gBAAgBQ,aAAa9B,KAAKnC,KAAKmC,KAAK2I,GAAS,GAAG,GAAG,EAAC,GAAG,GAAG;QACvE3I,KAAKiM,MAAsB;AAC9B;IAED,MAAAa,CAAOhP;QACH,KAAKkC,KAAKmJ,eACN,QAAO;QAEX,MAAM1R,IAASuI,KAAKyL,KACd5N,IAAMmC,KAAKnC;QACjB,IAAIc,IAAiBb;QACfA,aAAsBmB,MACxBN,IAAiBd,EAAIkP,2BAA2B,IAAI9F,EAAWnJ;QAEnE,MAAMkP,IAAgBhN,KAAK2L,EAAiBhN,GAAgBlH,GAAQ;QACpE,UAAIuV,KAA0C,SAAzBA,EAAcb;AAItC;IAED,CAAA3C;QACI,MAAMyD,IAAcjN,KAAKsB,gBAAgBb,UAAU,WAAoB,QAAE,GAAG,IACtE3H,IAAQ,MAAM;QACpBmU,EAAYpQ,UAAU,EAAC,KAAM/D,GAAO,KAAMA,GAAO,KAAMA,KACnDkH,KAAKmJ,kBACLnJ,KAAKkN,GAAmBD,IACxBjN,KAAKmN;AAEZ;IAED,EAAAA;QAC0BnN,KAAKsB,gBAAyB,QAAE5G,UACxCuB,SAAQxE;YAClB,KAAK,IAAI0E,IAAI,GAAGA,IAAI1E,EAAO0C,QAAQgC,KAAK;gBACpC,MAAMjE,IAAOT,EAAO0E;gBAChB2L,EAAsBjO,QAAQ3B,EAAKqK,WAAW,kBAAkB,KAChErK,EAAKH,SAAS8H,IAAI,SAAS3H,EAAKiF;AAEvC;AAAA;AAER;IAED,EAAA+P,CAAmBhV;QACf,MAAM4F,IAAakC,KAAK2I,EAAQ5K,kBAC1BmE,IAAIlC,KAAKnC,IAAII,uBAAuBH,GAAYkC,KAAKnC,IAAIK,aACzDC,IAAQ,EAAC+D,EAAE9D,GAAG8D,EAAE7D,GAAG,KACnB+O,IAAc7O,EAAoByB,KAAKnC,KAAKmC,KAAK2I,EAAQnK;QAC/DC,EAAKC,IAAIP,GAAOA,GAAOiP;QACvB,MAAM1S,IAAY+D,EAAKvB,KAAK,IAAIhF,EAAKwC,YAC/BmC,IAAU3E,EAAK2E;QACrB,IAAI8F,IAAa/E,EAAcoC,KAAK2I,GAAS3I,KAAKnC;QAClD8E,IAAalE,EAAKoB,IAAI,IAAI8C,GAAYA,GAAYA,IAClDlE,EAAK3B,SAASpC,GAAWA,GAAWiI,IACpClE,EAAK3B,SAAS6F,GAAYA,GAAY9F,IACtC4B,EAAKC,IAAIhE,GAAWA,GAAWyD;QAC/BlD,EAAKC,6BAA6BhD,EAAK6E,gBAAgB,EAAC,GAAG,GAAG,GAAG,KAAIrC,GAAWiI;QACjE3C,KAAKyL,IACbxP,SAAQ/D;YACX,MAAMmV,IAASnV,EAAKqK,WAAW;YAC/B,IAAe,MAAX8K,KAA2B,MAAXA,KAA2B,MAAXA,KAA2B,MAAXA,GAAc;gBAC9D,MAAM3S,IAAY+D,EAAKvB,KAAK,IAAIhF,EAAKwC,YAC/B5B,IAAQ,MAAM;gBACpBZ,EAAK2E,UAAU,EAAC/D,GAAOA,GAAOA;gBAC9B,MAAM+D,IAAU3E,EAAK2E,SACf9D,IAAWb,EAAKa;gBACtB,IAAI4J,IAAa/E,EAAcoC,KAAK2I,GAAS3I,KAAKnC;gBAClD8E,IAAalE,EAAKoB,IAAI,IAAI8C,GAAYA,GAAYA,IAClDlE,EAAK3B,SAASpC,GAAWA,GAAWiI,IACpClE,EAAK3B,SAAS6F,GAAYA,GAAY9F,IACtC4B,EAAKC,IAAIhE,GAAWA,GAAWyD;gBAC/B,MAAMtD,IAASC,EAAKC,UAAU,IAAIhC,EAAS,IAAIA,EAAS,IAAIA,EAAS;gBACrEkC,EAAKC,6BAA6BhD,EAAK6E,gBAAgBlC,GAAQH,GAAWiI;AAC7E;AAAA;AAER;IAED,EAAA2K,CAAkB3O;QACd,MAAMb,IAAakC,KAAKnC,IAAIwB,2BAA2BV,IACjD4O,IAAgBvN,KAAKnC,IAAII,uBAAuBH,GAAYkC,KAAKnC,IAAIK;QAC3E,OAAO;YACHU,OAAO,EAAC2O,EAAcnP,GAAGmP,EAAclP;;AAE9C;IAED,EAAAyN,CAAiB0B;QACb,IAAyB,gBAArBxN,KAAKwI,aAA6B;YAClC,MAAMxQ,IAAOgI,KAAK4J,KACZtL,IAAeC,EAAoByB,KAAKnC,KAAKmC,KAAK2I,EAAQnK,mBAC1DmB,IAAIK,KAAK2I,EAAQxG;YACvB,IAAIsL,IAAgB,MAAMC,IAAoB;YAC9C,IAAIpP,EAAa,KAAKqB,IAAI,OAAuB,kBAAfK,KAAKyM,IACnCgB,IAAgBzN,KAAKsN,GAAkBtN,KAAKwL;YAC5CkC,IAAoB1N,KAAKsN,GAAkBtN,KAAKsM,yBAC7C;gBACH,MAAMI,IAAY1M,KAAKsB,gBAAgBC,YAAYd,YAAY;gBAG/D,IAFAgN,IAAgBzN,KAAK2L,EAAiB3L,KAAKwL,sBAAsBkB,GAAW,UAC5EgB,IAAoB1N,KAAK2L,EAAiB3L,KAAKsM,mBAAmBI,GAAW;iBACxEe,KAA0C,SAAzBA,EAActB,WAAoBuB,KAAkD,SAA7BA,EAAkBvB,QAC3F;AAEP;YACD,MAAM/J,IAAiB,EAAC,GAAG,GAAG,KACxBqC,IAAgB,EAAC,GAAG,GAAG;YAC7B,IAAIC,IAAa,GACbiJ,IAAa,GACbC,IAAmB;YACvB,IAAa,gBAAT5V;gBACA,IAAmB,mBAAfgI,KAAKyM,IAA0B;oBAC/B,MAAMoB,IAAcJ,EAAc7O,MAAM,KAAK8O,EAAkB9O,MAAM,IAC/DkP,IAAcL,EAAc7O,MAAM,KAAK8O,EAAkB9O,MAAM;oBACrEwD,EAAe,KAAKyL,GACpBzL,EAAe,KAAK0L;AACxC,uBAAuB,IAAmB,kBAAf9N,KAAKyM,IAAyB;oBACrC,MAAMoB,IAAcJ,EAAc7O,MAAM,KAAK8O,EAAkB9O,MAAM;oBACrEwD,EAAe,KAAKyL;AACxC,uBAAuB,IAAmB,kBAAf7N,KAAKyM,IAAyB;oBACrC,MAAMqB,IAAcL,EAAc7O,MAAM,KAAK8O,EAAkB9O,MAAM;oBACrEwD,EAAe,KAAK0L;AACxC,uBAAuB,IAAmB,kBAAf9N,KAAKyM,IAAyB;oBACrC,IAAIsB,IAAc;oBAClB,IAAK/N,KAAKgO,MAEH;wBACH,MAAM9H,IAAQlG,KAAKnC,IAAIK,YACjB+P,IAAqBjO,KAAKnC,IAAiC,4BAAE,IAAIoB,EAAMyO,EAAkB9O,MAAM,IAAI8O,EAAkB9O,MAAM,KAAKsH,IAChIgI,IAAwBlO,KAAKnC,IAAiC,4BAAE,IAAIoB,EAAMwO,EAAc7O,MAAM,IAAI6O,EAAc7O,MAAM,KAAKsH,IAC3HiI,IAAWC,EAAKjU,OAAOiU,EAAKvO,IAAIoD,IAAWwK,EAAc7O,MAAM,KAAK8O,EAAkB9O,MAAM,IAAI6O,EAAc7O,MAAM,KAAK8O,EAAkB9O,MAAM;wBAEnJmP,IADAG,EAAsB7P,IAAI4P,EAAmB5P,IAC/B8P,KAECA;AAEtB,2BAXGJ,IAAcN,EAAc7O,MAAM,KAAK8O,EAAkB9O,MAAM;oBAYnEwD,EAAe,KAAK2L;AACvB;mBACE,IAAa,eAAT/V,GACP2V,IAAa3N,KAAKqO,GAAUZ,EAAc7O,OAAO8O,EAAkB9O,QAC/D+O,KAAc,IACd3N,KAAKsB,gBAAgBwB,GAAoB,KAEzC9C,KAAKsB,gBAAgBwB,GAAoB;YAE7C2B,EAAc,MAAMkJ,QACjB,IAAa,cAAT3V,KAA+B,eAATA,GAAqB;gBAClD,MAAM8N,IAAS9F,KAAKsO,MACdC,IAAgBH,EAAKjU,OAAOiU,EAAKvO,IAAIoD,IAAWjD,KAAKkM,eAAetN,MAAM,KAAKkH,EAAO,IAAI9F,KAAKkM,eAAetN,MAAM,KAAKkH,EAAO,MAChI0I,IAAgBJ,EAAKjU,OAAOiU,EAAKvO,IAAIoD,IAAWyK,EAAkB9O,MAAM,KAAKkH,EAAO,IAAI4H,EAAkB9O,MAAM,KAAKkH,EAAO;gBAClIpB,IAAa1E,KAAKyO,GAAchB,EAAc7O,OAAO8O,EAAkB9O,OAAOkH,GAAQ0I,IACtFZ,IAAmB5N,KAAKyO,GAAchB,EAAc7O,OAAO8O,EAAkB9O,OAAOkH,GAAQyI;AAC/F;YACDvO,KAAKsB,gBAAgBQ,aAAa9B,KAAKnC,KAAKmC,KAAK2I,GAASgF,GAAYC,GAAkBxL,IACxFpC,KAAK2I,EAAQpE,EAAWvE,KAAKyM,IAAOrK,GAAgBqC,GAAeC,GAnY5D,KAmYoF1E,KAAKnC,KAAKmC;AACxG;QACDA,KAAKsM,oBAAoBkB,GACzBxN,KAAKuM,oBAAoBvM,KAAK0L;QAC9B,MAAMjU,IAASuI,KAAKyL;QACpBzL,KAAKwM,kBAAkB/U,EAAOuI,KAAK0L,qBAAqBS;AAC3D;IAED,EAAAsC,CAAcC,GAAMC,GAAI7I,GAAQqI,GAAUrJ;QACtC,MAEM9C,KAFeoM,EAAKjU,OAAOiU,EAAKvO,IAAIoD,IAAWyL,EAAK,KAAK5I,EAAO,IAAI4I,EAAK,KAAK5I,EAAO,OACxEsI,EAAKjU,OAAOiU,EAAKvO,IAAIoD,IAAW0L,EAAG,KAAK7I,EAAO,IAAI6I,EAAG,KAAK7I,EAAO,QACxCqI;QAC7C,OAAIrJ,KACQA,EAAe,KAhZhB,OAgZmC9C,IAEvCA;AACV;IAED,EAAAsM;QACI,MAAMzQ,IAAMmC,KAAKnC,KACXC,IAAakC,KAAK2I,EAAQ5K,kBAC1B+H,IAASjI,EAAII,uBAAuBH,GAAYD,EAAIK,aACpDC,IAAQM,EAAKoB,IAAImI,IAAQlC,EAAO1H,GAAG0H,EAAOzH,GAAG,IAC7CC,IAAeC,EAAoBV,GAAKmC,KAAK2I,EAAQnK;QAE3D,OADAC,EAAKC,IAAIP,GAAOA,GAAOG,IAChBH;AACV;IAED,CAAAyN,CAAsBgD;QAClB,MAAMlC,IAAY1M,KAAKsB,gBAAgBC,YAAYd,YAAY,GAAG,IAC5DtC,IAAQlD,EAAKuD,eAAeuC,IAAO2L,EAAU3P,iBAC7CF,IAAU5B,EAAK4T,WAAW3N,IAAOwL,EAAU3P;QACjD,IAAIhE,IAAW+B,EAAKC,UAAUkG,IAAM,GAAG,GAAG;QAC1C,MAAM0L,IAAU3M,KAAKnC,IAAI+O;QACrBgC,MAAY5O,KAAKgO,QACjBjV,IAAW+B,EAAKC,UAAUkG,IAAM,IAAI,IAAI0L,IACV,MAA1BD,EAAU3T,SAAS,OACnBiH,KAAKiM,MAAsB;QAE/BxN,EAAKoB,IAAI6M,EAAU3T,UAAU,IAAI,IAAI4T,OAEP,OAA1BD,EAAU3T,SAAS,OACnBiH,KAAKiM,MAAsB,IAE/BxN,EAAKoB,IAAI6M,EAAU3T,UAAU,GAAG,IAAI4T;QAExC1R,EAAKC,6BAA6BwR,EAAU3P,gBAAgBhE,GAAUoF,GAAOtB;AAChF;IAED,EAAAmR;QACI,IAAIhO,KAAKnC,IAAIiR,YACT,QAAO;QAEX,MAAMC,IAAY/O,KAAKnC,IAAImR,gBACrBC,IAAYjP,KAAKnC,IAAII,uBAAuB+B,KAAKnC,IAAImI,aAAahG,KAAKnC,IAAIK;QACjFO,EAAKoB,IAAIoP,GAAWA,EAAU7Q,GAAG6Q,EAAU5Q,GAAG;QAC9C,MAAMP,IAAakC,KAAK2I,EAAQ5K,kBAC1BmE,IAAIlC,KAAKnC,IAAII,uBAAuBH,GAAYkC,KAAKnC,IAAIK,aACzDC,IAAQI,EAAoByB,KAAKnC,KAAKmC,KAAK2I,EAAQnK,mBACnD0Q,IAAWzQ,EAAKoB,IAAIkB,IAAOmB,EAAE9D,GAAG8D,EAAE7D,GAAG,IACrC8Q,IAAW1Q,EAAKC,IAAIwQ,GAAUA,GAAU/Q,IACxCiR,IAAkB3Q,EAAK4Q,SAAS,IAAIN,GAAWI,IAC/CG,IAAkB7Q,EAAK4Q,SAAS,IAAIN,GAAWE;QAGrD,OAFcxQ,EAAKsD,MAAMqN,GAAiBE,KAC3B,IAAI,MAAO7R,KAAK8R;AAKlC;IAED,EAAA1D;QACI,MAAMpU,IAASuI,KAAKyL;QACpB,IAAIzL,KAAK0L,wBAA4D,QAApC1L,KAAK0L,qBAAqBS,QAAgB;YACvEnM,KAAKwP,MACDxP,KAAKuM,qBAAsD,QAAjCvM,KAAKuM,kBAAkBJ,UAAkBnM,KAAKuM,kBAAkBJ,WAAWnM,KAAK0L,qBAAqBS,UAC/HnM,KAAKyP;YAET,MAAMC,IAAajY,EAAOuI,KAAK0L,qBAAqBS;YACpD,IAAIuD,KAAc7H,EAAwBhO,QAAQmG,KAAK0L,qBAAqB9Q,aAAa,GACrF,IAAIoF,KAAK0L,qBAAqB9Q,YAAY,KACtCoF,KAAK2P,GAAqBD,SACvB;gBACH,MAAM/U,IAAQ,EAAC+U,EAAWvS,YAAY,IAAIuS,EAAWvS,YAAY,IAAIuS,EAAWvS,YAAY,IAAI;gBAChGuS,EAAW3X,SAAS8H,IAAI,SAASlF,IACjCqF,KAAK4P,GAAyBF,GAAY;AAC7C;YAEL1P,KAAKmJ,cAAcC;AAC/B,eAAmBpJ,KAAKuM,qBAAsD,QAAjCvM,KAAKuM,kBAAkBJ,WACxDnM,KAAKnC,IAAIyL;QACTtJ,KAAKyP,MACLzP,KAAKmJ,cAAcC;AAE1B;IAED,EAAAuG,CAAqBD;QACjB,MAAM/U,IAAQ,EAAC,GAAW,MAAM,KAAK,IAAI,KAAK;QAC9C+U,EAAW3X,SAAS8H,IAAI,SAASlF,IAC9B+U,EAAWrS,WAA0B,iBACpCqS,EAAWrS,WAA0B,cAAEpB,SAAQ/D;YAC3CA,EAAKH,SAAS8H,IAAI,SAASlF;AAAM;AAG5C;IAED,EAAA6U;QACgD,MAAxCxP,KAAK0L,qBAAqB9Q,YAC1BoF,KAAKnC,IAAIgS,UAAU,eACZnI,EAAqB7N,QAAQmG,KAAK0L,qBAAqB9Q,cAAc,IAC5EoF,KAAKnC,IAAIgS,UAAU,UAEnB7P,KAAKnC,IAAIgS,UAAU;AAE1B;IAED,EAAAJ;QACI,MAAMK,IAAW9P,KAAKwM;QACtB,KAAKsD,GACD;QAEJ,MAAMC,IAAWD,EAASvN,WAAW,eAC/B9K,IAASuI,KAAKyL;QAChB/D,EAAqB7N,QAAQkW,MAAa,IAC1CtY,EAAOwE,SAAQ/D;YACPwP,EAAqB7N,QAAQ3B,EAAKqK,WAAW,kBAAkB,KAC/DrK,EAAKH,SAAS8H,IAAI,SAAS3H,EAAKiF;AACnC,cAEE4K,EAAsBlO,QAAQkW,MAAa,IAClDtY,EAAOwE,SAAQ/D;YACX,MAAMmV,IAASnV,EAAKqK,WAAW;YAC3BuF,EAAsBjO,QAAQwT,MAAW,KACzCnV,EAAKH,SAAS8H,IAAI,SAAS3H,EAAKiF;AACnC,cAEe,OAAb4S,KACPtY,EAAOwE,SAAQ/D;YACP4P,EAAsBjO,QAAQ3B,EAAKqK,WAAW,kBAAkB,KAChErK,EAAKH,SAAS8H,IAAI,SAAS3H,EAAKiF;AACnC,aAGT2S,EAAS/X,SAAS8H,IAAI,SAASiQ,EAAS3S,cACrC2S,EAASzS,WAA0B,iBAClCyS,EAASzS,WAA0B,cAAEpB,SAAQ/D;YACzCA,EAAKH,SAAS8H,IAAI,SAAS3H,EAAKiF;AAAY;AAGvD;IAED,EAAAyS,CAAyBF,GAAYM;QACjC,MAAMD,IAAWL,EAAWnN,WAAW,eACjC9K,IAASuI,KAAKyL;QAChB/D,EAAqB7N,QAAQkW,MAAa,IAC1CtY,EAAOwE,SAAQ/D;YACX,IAAIwP,EAAqB7N,QAAQ3B,EAAKqK,WAAW,kBAAkB,KAC3DrK,EAAKqK,WAAW,kBAAkBmN,EAAWnN,WAAW,eAAe;gBACvE,MAAM5H,IAAQ,EAACzC,EAAKiF,YAAY,IAAIjF,EAAKiF,YAAY,IAAIjF,EAAKiF,YAAY,IAAI6S;gBAC9E9X,EAAKH,SAAS8H,IAAI,SAASlF;AAC9B;AACJ,cAEiB,cAAfqF,KAAKyI,IACZhR,EAAOwE,SAAQ/D;YACX,MAAMmV,IAASnV,EAAKqK,WAAW;YAC/B,IAAe,MAAX8K,KAA2B,MAAXA,KAA2B,MAAXA,KAA2B,MAAXA,GAAc;gBAC9D,MAAM1S,IAAQ,EAAC,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK;gBAChDzC,EAAKH,SAAS8H,IAAI,SAASlF;AAC9B;AAAA,cAEiB,eAAfqF,KAAKyI,KACZhR,EAAOwE,SAAQ/D;YACX,MAAMmV,IAASnV,EAAKqK,WAAW;YAC/B,IAAe,MAAX8K,KAA2B,MAAXA,KAA2B,MAAXA,KAA2B,MAAXA,GAAc;gBAC9D,MAAM1S,IAAQzC,EAAKiF;gBACnBjF,EAAKH,SAAS8H,IAAI,SAAS,EAAClF,EAAM,IAAIA,EAAM,IAAIA,EAAM,IAAI;AAC7D;AAAA;AAGZ;IAED,KAAAsV;QACSjQ,KAAKnC,OAAQmC,KAAK2I,MAGvB3I,KAAK2I,EAAQjC,KACb1G,KAAKsB,gBAAgBQ,aAAa9B,KAAKnC,KAAKmC,KAAK2I,GAAS,GAAG,GAAG,EAAC,GAAG,GAAG;AAC1E;IAED,EAAA0F,CAAUM,GAAID;QACV,MAAM5I,IAAS9F,KAAKsO,MACd4B,IAAiB9B,EAAKvO,IAAIoI,IAAOyG,EAAK,KAAK5I,EAAO,IAAI4I,EAAK,KAAK5I,EAAO,KACvEqK,IAAe/B,EAAKvO,IAAIqI,IAAKyG,EAAG,KAAK7I,EAAO,IAAI6I,EAAG,KAAK7I,EAAO,KAC/DsK,IAAa3S,KAAK4S,MAAMH,EAAe,IAAIA,EAAe;QAEhE,QADiBzS,KAAK4S,MAAMF,EAAa,IAAIA,EAAa,MACtCC,KAAc3S,KAAK8R,KAAM;AAChD;IAED,EAAAnD,CAASxR;QAuBL,OApBIoF,KAAKyM,KADS,QAAd7R,KAAmC,QAAdA,IACR,YACQ,QAAdA,KAAmC,QAAdA,IACf,YACQ,QAAdA,KAAmC,QAAdA,IACf,YACQ,QAAdA,IACM,cACQ,MAAdA,IACM,iBACQ,MAAdA,IACM,gBACQ,MAAdA,KAAiC,MAAdA,IACb,gBACQ,MAAdA,KAAiC,OAAdA,IACb,gBACQ,OAAdA,IACM,aAEA;QAEVoF,KAAKyM;AACf;IAED,SAAAxD,CAAUqH;QACN,KAAKA,GACD;QAMJ,IAJItQ,KAAKmJ,iBAAiBnJ,KAAKmJ,cAAcgB,UACzCnK,KAAKmJ,cAAcgB,MAAM7F,IAAI,aAAatE,KAAKsL;QAC/CtL,KAAKmJ,cAAcgB,MAAM7F,IAAI,gBAAgBtE,KAAKuQ,OAEjDvQ,KAAKnC,KAEN,YADAkM,QAAQyG,MAAM;QAOlB,IAJIxQ,KAAK2I,MACL3I,KAAK2I,EAAQtE,KACbrE,KAAK2I,EAAQ7E,EAAKwM,MAEjBtQ,KAAK2I,EAAQnG,aAAarI,QAC3B;QAEJ,MAAM0D,IAAMmC,KAAKnC;QACjBmC,KAAKsB,gBAAgBQ,aAAajE,GAAKmC,KAAK2I,GAAS,GAAG,GAAG,EAAC,GAAG,GAAG,MAClE3I,KAAKyQ,MACLzQ,KAAKiM,MAAsB;AAC9B;IAED,kBAAAyE;QACI,OAAO1Q,KAAK2I;AACf;IAED,CAAAzE;eACWlE,KAAK2I;AACf;IAED,EAAA8H;QACI,MAAMtG,IAAQnK,KAAK2I,EAAQhC;QACvBwD,MACAA,EAAM7F,IAAI,aAAatE,KAAKsL,SAC5BnB,EAAM7F,IAAI,gBAAgBtE,KAAKuQ;QAEnC,MAAM1S,IAAMmC,KAAKnC,KACXsL,IAAgBgB,EAAMwG;QAC5B3Q,KAAKmJ,gBAAgBA,GACrBnJ,KAAK4Q,OAAOzH,EAAcyH,MAC1B5Q,KAAK6Q,WAAW1H,EAAc0H,UAC9B7Q,KAAK8Q,KAAW9Q,KAAKmJ,cAAc4H;QACnC/Q,KAAKgR,KAAY;YACbC,gBAAmBpT,EAAIoT;YACvBC,YAAcrT,EAAIqT;YAClBC,YAActT,EAAIsT;YAClBC,WAAa;WAEjBjH,EAAMlG,GAAG,aAAajE,KAAKsL,QAAQtL,OACnCmK,EAAMlG,GAAG,gBAAgBjE,KAAKuQ,IAASvQ,OACvCmJ,EAAcC;AACjB;IAED,EAAAmH;QACIvQ,KAAK8Q,GAASO,SACdrR,KAAKiM,MAAsB;AAC9B;IAED,CAAAN,CAAiBhN,GAAgBlH,GAAQ+M;QACrC,MAAM3G,IAAMmC,KAAKnC;QACjB,MAAKA,KAAQmC,KAAK8Q,MAAa9Q,KAAKmJ,iBAAkBnJ,KAAKmJ,cAAcmI,SACrE,OAAO;QAEX,MAAMC,IAAM1T,EAAI2T,uBACVpT,IAAIO,EAAeP,IAAImT,GAAKlT,IAAIM,EAAeN,IAAIkT,GACnDpG,IAAWnL,KAAKgR,IAChBS,IAAUzR,KAAKmJ,cAAcmI,OAAOI,MAAM1R,KAAKmJ,cAAcmI,OAAOI,GAAGC;SACzE3R,KAAKiM,MAAuBwF,MAAYzR,KAAK4R,MAAa5R,KAAK4R,OAAcpN,OAC7ExE,KAAK8Q,GAASxF,OAAO7T,GAAQ0T,IAAU,IACvCnL,KAAK4R,KAAYpN;QACjBxE,KAAKiM,MAAsB;QAa/B,OAXejM,KAAK8Q,GAASe,KACzBzT,GACAC,GACA,IACA8M,GACA;YACIgG,YAAanR,KAAKnC,IAAIsT;YACtBD,YAAalR,KAAKnC,IAAIqT;YACtBY,cAAc;;AAIzB;IAED,CAAAlH;QACI,MAAM2G,IAAMvR,KAAKnC,IAAI2T,uBACfO,IAAW;YACb3T,GAAI;YACJC,GAAI;YACJ2T,OAAQ,MACGhS,KAAKnC,MAAMmC,KAAKnC,IAAImU,QAAQT,IAAM;YAE7CU,QAAS,MACEjS,KAAKnC,MAAMmC,KAAKnC,IAAIoU,SAASV,IAAM;;QAGlDvR,KAAKkS,KAAU,IAAIrW,EAASsW,WAAW;YACnCC;YACAC;YACAlH,UAAW,EACP,SACA;gBACIpV,MAAO;gBACPK,MAAO;gBACPkc,IAAK,SAAUC,GAASC;oBACpB,OAAOvX,EAAK6B,SAAS,IAAI0V,EAAsB,gBAAGA,EAAmB;AACxE;;YAGTC,mBAAmB;gBACfV;gBACAW,OAAO;oBACHxJ,SAAQ;oBACRyJ,MAAM;oBACNC,OAAM;oBACNC,OAAO,EAAC,GAAG;;gBAEfC,OAAO;oBACH5J,SAAQ;oBACRyJ,MAAM;wBACFI,KAAK;wBACLC,KAAK;;oBAETC,UAAU;;;YAGlBxW,SAAU,CACT;;AAER;IAED,MAAA6O;QACI,KAAKtL,KAAKuL,KACN;QAEJ,MAAM9T,IAASuI,KAAKyL;QACpBzL,KAAK4I,YAAYsK,UAAUzb;QAC3B,MAAM0b,IAAcnT,KAAKmJ,cAAciK;QAEvC,IAAID,KAAeA,EAAYE,gBAAgBrT,KAAKmJ,cAAcmK,wBAAwBH,EAAYI,WAClG;QAEJvT,KAAK6M,MACL7M,KAAKkS,GAAQsB,SAASL,KAAeA,EAAYM;QACjD,MAAMC,IAAYP,KAAeA,EAAYE,gBAAgBF,EAAYE,aAAaM;QACtF3T,KAAK6Q,SAASvF,OAAOtL,KAAKkS,IAASlS,KAAKgR,IAAWhR,KAAK4I,aAAa8K;AACxE;IAED,CAAAjI;QACI,IAAIhU,IAAS;QACb,MAAMmc,IAAU5T,KAAKsB,gBAAgBb,UAAUT,KAAKyI;QACpD,KAAK,MAAMvG,KAAK0R,GAAS;YACrB,IAAU,gBAAN1R,GACA;YAEJ,MAAM2R,IAAWD,EAAQ1R;YACzB,KAAK,IAAI/F,IAAI,GAAGA,IAAI0X,EAAS1Z,QAAQgC,KACjC1E,IAASA,EAAOqc,OAAOD,EAAS1X;AAEvC;QAED,MAAM4X,IAAkBH,EAAmB;QAC3C,IAAIG,GACA,KAAK,IAAI5X,IAAI,GAAGA,IAAI4X,EAAgB5Z,QAAQgC,KACxC1E,IAASA,EAAOqc,OAAOC,EAAgB5X;QAG/C,OAAO1E;AACV;IAED,CAAA8T;QACI,MAAMsF,IAAW7Q,KAAKmJ,eAChBgB,IAAQ0G,KAAYA,EAAS1G;QACnC,OAAO0G,KAAY7Q,KAAK2I,KAAWwB,KAASA,EAAM3C,eAAexH,KAAK2I,EAAQpB,OAAgBvH,KAAK4Q,QAAQ5Q,KAAK0I;AACnH;;;AAGLP,GAAiB6L,aAxxBD;IACZ7O,eAAe;;;;;"}