test.js.map 5.0 MB

1
  1. {"version":3,"file":"test.js","sources":["../../MxCAD/src/Modal/hooks.ts","../../MxCAD/src/Modal/Modal.vue","../../MxCAD/src/Modal/Tools.vue","../../MxCAD/src/iframe.ts","../../MxCAD/src/comment.ts","../../MxCAD/src/paramdraw.ts","../../MxCAD/node_modules/.pnpm/three@0.113.2/node_modules/three/build/three.module.js","../../MxCAD/src/measure.ts","../../MxCAD/src/interactive.ts","../../MxCAD/src/drawTable.ts","../../MxCAD/node_modules/.pnpm/qrcode-generator@1.4.4/node_modules/qrcode-generator/qrcode.js","../../MxCAD/src/database.ts","../../MxCAD/src/cadfile.ts","../../MxCAD/src/findtext.ts","../../MxCAD/src/customEntity.ts","../../MxCAD/src/makeblock.ts","../../MxCAD/src/hatch.ts","../../MxCAD/src/mxai/base.ts","../../MxCAD/src/mxai/MxAiDrawLine.ts","../../MxCAD/src/mxai/MxAiDrawCircle.ts","../../MxCAD/src/mxai/tools.ts","../../MxCAD/src/mxai/MxAiDrawCircleArc.ts","../../MxCAD/src/mxai/MxAiDrawPolygon.ts","../../MxCAD/src/mxai/MxAiDrawRect.ts","../../MxCAD/src/mxai/MxAiDrawEllipse.ts","../../MxCAD/src/mxai/interiorDesignCode/drawWall.ts","../../MxCAD/src/mxai/interiorDesignCode/InsertBock.ts","../../MxCAD/src/mxai/interiorDesignCode/index.ts","../../MxCAD/src/mxai/MxAiDrawText.ts","../../MxCAD/src/mxai/MxAiWithdrawAndRestore.ts","../../MxCAD/src/mxai/MxAiModule.ts","../../MxCAD/src/userdemo/getdata.ts","../../MxCAD/src/userdemo/linetext_custom/entity.ts","../../MxCAD/src/userdemo/index.ts","../../MxCAD/src/gis/gis_entity.ts","../../MxCAD/src/extools/annotationsTools.ts","../../MxCAD/src/extools/fitTools.ts","../../MxCAD/src/extools/textTools.ts","../../MxCAD/src/extools/blockTools.ts","../../MxCAD/src/extools/countTools.ts","../../MxCAD/src/extools/drawTools.ts","../../MxCAD/node_modules/.pnpm/mapbox-gl@2.8.2/node_modules/mapbox-gl/dist/mapbox-gl.js","../../MxCAD/src/gis/third_party_maps.ts","../../MxCAD/src/gis/ttif_demo.ts","../../MxCAD/src/gis/map_providers.ts","../../MxCAD/src/gis/init.ts","../../MxCAD/src/icon/index.js","../../MxCAD/src/icon/dwgCampare.js","../../MxCAD/node_modules/.pnpm/three@0.113.2/node_modules/three/examples/jsm/loaders/GLTFLoader.js","../../MxCAD/src/gis/add_3d_model.ts","../../MxCAD/src/templateCode/index.ts","../../MxCAD/src/templateCode/param/drawLine.ts?raw","../../MxCAD/src/templateCode/param/drawCircle.ts?raw","../../MxCAD/src/templateCode/param/drawPoint.ts?raw","../../MxCAD/src/templateCode/param/drawArc.ts?raw","../../MxCAD/src/templateCode/param/drawImg.ts?raw","../../MxCAD/src/templateCode/param/drawPolyline.ts?raw","../../MxCAD/src/templateCode/param/drawEllipse.ts?raw","../../MxCAD/src/templateCode/param/drawText.ts?raw","../../MxCAD/src/templateCode/param/drawMtext.ts?raw","../../MxCAD/src/templateCode/param/drawDimension.ts?raw","../../MxCAD/src/templateCode/param/drawPath.ts?raw","../../MxCAD/src/templateCode/param/drawHatch.ts?raw","../../MxCAD/src/templateCode/param/drawBlock.ts?raw","../../MxCAD/src/templateCode/param/drawCustom.ts?raw","../../MxCAD/src/templateCode/param/drawTypeLine.ts?raw","../../MxCAD/src/templateCode/param/drawTypeText.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_drawArc.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_drawLine.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_drawText.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_drawCircle.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_drawImg.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_drawPolyline.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_drawMxDbEllipse.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_drawHatchFormPoint.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_InsertBlock.ts?raw","../../MxCAD/src/templateCode/interactive/Mx_drawCustomEntity.ts?raw","../../MxCAD/src/templateCode/dataBase/TestGetAllEntity.ts?raw","../../MxCAD/src/templateCode/dataBase/TestAddLayer.ts?raw","../../MxCAD/src/templateCode/dataBase/TestGetAllBlock.ts?raw","../../MxCAD/src/templateCode/dataBase/TestGetAllLayer.ts?raw","../../MxCAD/src/templateCode/dataBase/TestGetAllLinetype.ts?raw","../../MxCAD/src/templateCode/dataBase/TestGetAllTextStyle.ts?raw","../../MxCAD/src/templateCode/dataBase/TestReadxData.ts?raw","../../MxCAD/src/templateCode/dataBase/TestWritexData.ts?raw","../../MxCAD/src/templateCode/dataBase/TestGetNamedObjectsDictionary.ts?raw","../../MxCAD/src/command/list.ts","../../MxCAD/src/command/group.ts","../../MxCAD/src/command/list.ts?raw","../../MxCAD/src/command/index.ts","../../MxCAD/src/index.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { ref } from \"vue\";\nimport { getMxCADUi } from \"../index\"\n\nconst isModalVisible = ref(false);\nconst isToolsVisible = ref(false);\n// 显示测试模块\nconst showModal = (options?: Partial<typeof modalOpts>) => {\n isModalVisible.value = true;\n isToolsVisible.value = false;\n modalOptions.value = Object.assign(modalOptions.value, options || {});\n};\n// 显示扩展工具模块\nconst showTools = (options?: Partial<typeof modalOpts>) => {\n isToolsVisible.value = true;\n isModalVisible.value = false;\n modalOptions.value = Object.assign(modalOptions.value, options || {});\n};\nconst hideModal = () => {\n isModalVisible.value = false;\n isToolsVisible.value = false;\n};\nconst modalOpts = {\n title: \"Modal\",\n text: \"\",\n oncancel: hideModal,\n onsubmit: hideModal,\n ongetallentity: hideModal,\n ondrawline: hideModal,\n docommand: (cmd) => { }\n}\n\nconst modalOptions = ref(modalOpts)\n\n// 提取文字\nconst isDialogVisible = ref(false);\nconst excelText = ref('');\n\n// 监听选中文本\nconst text = ref('');\ndocument.addEventListener('mouseup', function () {\n text.value = document.getSelection().toString();\n if (text.value === '') {\n text.value = excelText.value;\n }\n});\n\nasync function copyTextToClipboard() {\n try {\n await navigator.clipboard.writeText(text.value);\n } catch (err) {\n console.error('Failed to copy: ', err);\n }\n}\nexport const useModalVisible = () => {\n return {\n isModalVisible,\n isToolsVisible,\n isDialogVisible,\n showModal,\n showTools,\n hideModal,\n modalOptions,\n excelText,\n copyTextToClipboard,\n }\n}\n\n","\n<script setup lang=\"ts\">\nimport { useModalVisible } from './hooks';\nconst { isModalVisible, hideModal, modalOptions } = useModalVisible();\n</script>\n<template>\n <teleport to=\"body\">\n <!-- Modal -->\n <div class=\"modal-wrapper\" id=\"modal\" v-if=\"isModalVisible\">\n <div class=\"modal-body card\">\n <div class=\"modal-header\">\n <h2 class=\"heading\">{{ modalOptions.title }}</h2>\n <a href=\"#!\" @click=\"hideModal\" role=\"button\" class=\"close\" aria-label=\"close this modal\">\n <svg viewBox=\"0 0 24 24\">\n <path\n d=\"M24 20.188l-8.315-8.209 8.2-8.282-3.697-3.697-8.212 8.318-8.31-8.203-3.666 3.666 8.321 8.24-8.206 8.313 3.666 3.666 8.237-8.318 8.285 8.203z\" />\n </svg>\n </a>\n </div>\n <div style=\"overflow-y: auto; height: 500px;\">\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Open_DemoCode')\">下载开Demo代码</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Open_DevInstall')\">下载开发包</button>\n <button class=\"button button2\" @click=\"modalOptions.ondrawline\">调用画圆线命令</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_DrawLine')\">交互画直线</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_AddLayer')\">添加图层</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_GetAllLayer')\">得到所有图层</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_GetAllTextStyle')\">得到所有文字样式</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_GetAllBlock')\">得到所有图块</button>\n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_GetAllLinetype')\">得到所有线型</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_WritexData')\">写扩展数据</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_ReadxData')\">读扩展数据</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_InsertBlock')\">测试插入一个图块</button>\n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawLine')\">绘直线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawArc')\">绘圆弧</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawCircle')\">绘圆</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawPolyline')\">绘PL线</button>\n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawHatch')\">绘填充</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawText')\">绘文字</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_Ellipse')\">绘椭圆</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_EllipseArc')\">绘椭圆弧</button>\n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_MText')\">绘制多行文字</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawTable')\">绘制表格</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_QRCode')\">绘制二维码</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_InsertStamp')\">插入图章</button>\n </div>\n\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.ongetallentity\">得到所有对象</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_SelectEntity')\">交互选择对象</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Export_MxWeb')\">保存mxweb到服务器</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_GetSysVars')\">得到系统变量</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_NewFile')\">新建图纸</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ViewBackgroundColor')\">白色背景色</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_FindText')\">文字查找定位</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_SelectEntitysToBlock')\">选择实体做块</button>\n </div>\n <div class=\"btn_box\">\n\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_Text')\">绘制单行文字</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_DrawHatchFormPoint')\">选点填充</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_TestExProp')\">设置扩展属性</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DimAligned')\">绘制对齐标注</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawDimRotated')\">绘性线标注</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawDimAngular')\">角度标注</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_LineTypeTest')\">修改对象线型</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_SelectEntitHideLayer')\">选择隐藏对象层</button>\n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_TestAddCurrentSelect')\">添加到当前选择</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_TestSetViewAngle')\">视区旋转</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_WriteXRecord')\">写扩展记录</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_GetNamedObjectsDictionary')\">得到命名字典</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_AddTextStyleTable')\">添加文字样式</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_DrawCustomEntity')\">绘自定义实体</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_ChangeColor')\">修改对象颜色</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_ChangeVisible')\">修改对象不可见</button>\n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_ChangeEntityLayer')\">修改对象层</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ChaneEntityDrawOrder')\">修改对象显示顺序</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Export_Pdf')\">指定范围输出pdf</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawImage')\">绘制image</button>\n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_GetObjectExDictionaryData')\">读取对象扩展字典</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_Draw3DPolyline')\">绘制3DPolyline</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_LineText')\">绘线文本自定义实体</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_IntersectWith')\">计算交点</button>\n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_TrueText')\">修改文字样式</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_OffsetIn_DrawLine')\">偏移输入画线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_CreateGroup')\">创建组</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ScreenToJpg')\">屏幕截图jpg</button> \n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_GetText')\">获取图纸相同文字</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Cut_Dwg')\">指定范围输出dwg</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawMarkCircle')\">测试绘制标记圆</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_Wipeout')\">测试Wipeout</button>\n </div>\n\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_SelectEntitysToSpatialFilterBlock')\">创建剪切块</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Test_DrawDimRotatedTol')\">公差标注</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('MxTest_ModifyAllEntityColor')\">改所有对象颜色</button>\n </div>\n </div>\n </div>\n </div>\n </teleport>\n</template>\n<style scoped lang=\"scss\">\n.heading {\n font-size: 1.5em;\n margin-bottom: 12px;\n}\n\n.card {\n background: #fff;\n color: #000;\n background-image: linear-gradient(48deg, #fff 0%, #e5efe9 100%);\n border-top-right-radius: 16px;\n border-bottom-left-radius: 16px;\n box-shadow: -20px 20px 35px 1px rgba(10, 49, 86, 0.18);\n display: flex;\n flex-direction: column;\n padding: 32px;\n margin: 40px;\n max-width: 400px;\n width: 100%;\n}\n\n.content-wrapper {\n font-size: 1.1em;\n margin-bottom: 44px;\n}\n\n.content-wrapper:last-child {\n margin-bottom: 0;\n}\n\n.button {\n align-items: center;\n background: #e5efe9;\n border: 1px solid #5a72b5;\n border-radius: 4px;\n color: #121943;\n cursor: pointer;\n display: flex;\n font-size: 1em;\n font-weight: 700;\n height: 40px;\n justify-content: center;\n width: 180px;\n}\n\n.button:focus {\n border: 2px solid transparent;\n box-shadow: 0px 0px 0px 2px #121943;\n outline: solid 4px transparent;\n}\n\n.link {\n color: #121943;\n}\n\n.link:focus {\n box-shadow: 0px 0px 0px 2px #121943;\n}\n\n.input-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.input-wrapper .label {\n align-items: baseline;\n display: flex;\n font-weight: 700;\n justify-content: space-between;\n margin-bottom: 8px;\n}\n\n.input-wrapper .optional {\n color: #5a72b5;\n font-size: 0.9em;\n}\n\n.input-wrapper .input {\n border: 1px solid #5a72b5;\n border-radius: 4px;\n height: 40px;\n padding: 8px;\n}\n\ncode {\n background: #e5efe9;\n border: 1px solid #5a72b5;\n border-radius: 4px;\n padding: 2px 4px;\n}\n\n.modal-header {\n align-items: baseline;\n display: flex;\n justify-content: space-between;\n}\n\n.close {\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n height: 16px;\n text-decoration: none;\n width: 16px;\n}\n\n.close svg {\n width: 16px;\n}\n\n.modal-wrapper {\n align-items: center;\n background: rgba(0, 0, 0, 0.7);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n}\n\n#modal {\n transition: opacity 0.25s ease-in-out;\n}\n\n#modal .modal-body {\n max-width: 830px;\n opacity: 1;\n transform: translateY(-100px);\n transition: opacity 0.25s ease-in-out;\n width: 100%;\n z-index: 1;\n}\n\n.outside-trigger {\n bottom: 0;\n cursor: default;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n}\n\n.button__link {\n text-decoration: none;\n}\n\n.button {\n background-color: #4CAF50;\n /* Green */\n border: none;\n color: white;\n text-align: center;\n text-decoration: none;\n display: inline-block;\n font-size: 16px;\n margin: 4px 2px;\n -webkit-transition-duration: 0.4s;\n /* Safari */\n transition-duration: 0.4s;\n cursor: pointer;\n}\n\n.button1 {\n background-color: white;\n color: black;\n border: 2px solid #4CAF50;\n}\n\n.button1:hover {\n background-color: #4CAF50;\n color: white;\n}\n\n.button2 {\n background-color: white;\n color: black;\n border: 2px solid #008CBA;\n}\n\n.button2:hover {\n background-color: #008CBA;\n color: white;\n}\n\n.btn_box {\n width: 100%;\n display: flex;\n justify-items: center;\n justify-content: start;\n align-items: start;\n}\n</style>\n\n\n"," \n<script setup lang=\"ts\">\nimport { useModalVisible } from './hooks';\nimport { reactive, ref } from 'vue';\n\nconst { isToolsVisible, hideModal, modalOptions, isDialogVisible, excelText, copyTextToClipboard } = useModalVisible()\nconst types = reactive([\n { name: '修改工具', id: 'fit' },\n { name: '文字工具', id: 'text' },\n { name: '绘图工具', id: 'draw' },\n { name: '块工具', id: 'block' },\n { name: '测量工具', id: 'count' },\n { name: '标注工具', id: 'dimension' },\n])\nconst btn_id = ref<string>('fit');\nconst { store } = MxPluginContext;\nconst { setCommandFocus } = store.useFocus();\nconst model = ref(null);\n// 移动设置窗口\nconst dragModal = (event) => {\n const dragBox = model.value;\n const disX = event.clientX - dragBox.offsetLeft;\n const disY = event.clientY - dragBox.offsetTop;\n\n const moveDrag = (event) => {\n dragBox.style.left = event.clientX - disX + \"px\";\n dragBox.style.top = event.clientY - disY + \"px\";\n };\n\n document.addEventListener(\"mousemove\", moveDrag);\n document.addEventListener(\"mouseup\", () => {\n document.removeEventListener(\"mousemove\", moveDrag);\n });\n};\n</script>\n<template>\n <teleport to=\"body\">\n <!-- Modal -->\n <div class=\"modal-wrapper\" id=\"modal\" v-if=\"isToolsVisible\">\n <div class=\"modal-body card\">\n <div class=\"modal-header\">\n <h2 class=\"heading\">{{ modalOptions.title }}</h2>\n <a href=\"#!\" @click=\"hideModal\" role=\"button\" class=\"close\" aria-label=\"close this modal\">\n <svg viewBox=\"0 0 24 24\">\n <path\n d=\"M24 20.188l-8.315-8.209 8.2-8.282-3.697-3.697-8.212 8.318-8.31-8.203-3.666 3.666 8.321 8.24-8.206 8.313 3.666 3.666 8.237-8.318 8.285 8.203z\" />\n </svg>\n </a>\n </div>\n <div style=\"border-bottom:2px solid #008CBA; margin-bottom: 8px;\">\n <button v-for=\"item in types\" :key=\"item.id\" @click=\"() => { btn_id = item.id }\"\n :class=\"btn_id === item.id ? 'btn btn2' : 'btn'\">{{ item.name }}</button>\n </div>\n <div style=\"overflow-y: auto; height: 500px;\" v-show=\"btn_id === 'fit'\">\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Multicopy')\">多重复制</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ArcToCircle')\">弧转圆</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_CopyRotation')\">复制旋转</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_CricleTotoll')\">圆转多边</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ChangeColor')\">修改颜色</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ArcToAngle')\">圆弧切角</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_TemHiding')\">临时隐藏</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BoxDel')\">方框删除</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_AngleCopy')\">角度复制</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_VertexRep')\">顶点复制</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_IntersectBreak')\">交点打断</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_DoubleOff')\">双向偏移</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_EitCircle')\">改圆大小</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_LayerTypeScale')\">线型比例</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Telescoping')\">伸缩</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ArcOrder')\">按弧阵列</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_PlRoundCorners')\">pl圆角</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_PlReverse')\">pl线反向</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_TestGetAllLineByLayer')\">得到所有直线对象</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Bisection')\">等分</button>\n <!-- <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_FillRatio')\">填充比例</button> -->\n <!-- <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_InheritanceFill')\">继承填充</button> -->\n </div>\n <div>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_RectangularScaling')\">矩形缩放</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Interrupt')\">打断</button>\n </div>\n </div>\n <div style=\"overflow-y: auto; height: 500px;\" v-show=\"btn_id === 'draw'\">\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_DrawStart')\">星形</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ConcavoVex')\">凹凸线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ZigzagLine')\">锯齿线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_CenterRect')\">中心矩形</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BreakLine')\">折断线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_CCLine')\">圆中心线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Piping')\">管道</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_CutPipeline')\">剖管符</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_PerpLine')\">中垂线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_StairLine')\">楼梯</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_SolidCircle')\">实心圆</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_CottonInsulation')\">保温棉</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_CenterLine')\">中心线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_DoHole')\">开洞</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Compass')\">指北针</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_MassegeBox')\">消息框</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_DatumSymbol')\">基准符</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_WelLine')\">焊缝线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ConcentricCircles')\">同心圆</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Gear')\">齿轮</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkCenterLine')\">块中心线</button>\n </div>\n </div>\n <div style=\"overflow-y: auto; height: 500px;\" v-show=\"btn_id === 'text'\">\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_AlignByLine')\">按线对齐</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_TextHeight')\">改字高</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_TextWidth')\">改字宽</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BrushCon')\">刷内容</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ReplaceCon')\">换内容</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_AlignLeft')\">左右对齐</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_AlignUp')\">上下对齐</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_TextReversal')\">文字反转</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_TextTraming')\">文字加框</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Underline')\">下划线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_TitleLine')\">图名线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Case')\">大小写</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_NumSum')\">数字求和</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_SSWords')\">选特定字</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Prefix')\">前后缀</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ConnectText')\">连接文字</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_TextTrim')\">去空格</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_VerticalText')\">文字竖向</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_AlignByArc')\">按弧对齐</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_EditTextStyle')\">修改全局文字样式</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ExtractText')\">提取文字</button>\n </div>\n </div>\n <div style=\"overflow-y: auto; height: 500px;\" v-show=\"btn_id === 'block'\">\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ChangeBN')\">改块名</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BushBlk')\">刷块</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ConBlk')\">块连线</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkCenterLine')\">块中心线</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkPt')\">改块基点</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkColor')\">改块颜色</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkRotate')\">多块旋转</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkScale')\">多块缩放</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkAngle')\">刷块角度</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkSelect')\">按块选择</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkAllSelect')\">按块全选</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_SSBlk')\">统计单块</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_SMBlk')\">统计多块</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_BlkLayer')\">修改块图层</button>\n </div>\n </div>\n <div style=\"overflow-y: auto; height: 500px;\" v-show=\"btn_id === 'count'\">\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_StaLength')\">长度</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_StaArea')\">统计面积</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Elevation')\">智能标高</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Area')\">面积</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ReactArea')\">矩形面积</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_DistFromPointToLine')\">点到直线的距离</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ArcLength')\">弧长</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_MeasuringCircle')\">测量圆</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_ContinueMeasurement')\">连续测量</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_CountList')\">查看分段长度</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_AreaArc')\">面积含弧线</button>\n </div>\n </div>\n <div style=\"overflow-y: auto; height: 500px;\" v-show=\"btn_id === 'dimension'\">\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Approval')\">审图标注</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_AnnotatedRectangle')\">矩形标注</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Roughness')\">粗糙度标注</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_CoordAnnotation')\">坐标标注</button>\n </div>\n <div class=\"btn_box\">\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_StandardSlope')\">标斜率</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Alignment')\">对齐</button>\n <button class=\"button button2\" @click=\"modalOptions.docommand('Mx_Enlarge')\">局部放大</button>\n </div>\n </div>\n </div>\n\n </div>\n <div class=\"textBox\" v-if=\"isDialogVisible\" ref=\"model\" @mousedown=\"dragModal\">\n <div class=\"header\">\n <span>选择的文字</span>\n <a href=\"#!\" @click=\"isDialogVisible = false\" role=\"button\" class=\"close\" aria-label=\"close this modal\">\n <svg viewBox=\"0 0 24 24\">\n <path\n d=\"M24 20.188l-8.315-8.209 8.2-8.282-3.697-3.697-8.212 8.318-8.31-8.203-3.666 3.666 8.321 8.24-8.206 8.313 3.666 3.666 8.237-8.318 8.285 8.203z\" />\n </svg>\n </a>\n </div>\n <textarea rows=\"20\" cols=\"50\" @focus=\"()=>setCommandFocus(false)\" @blur=\"()=>setCommandFocus(true)\"> {{ excelText }}</textarea>\n <div class=\"btnBox\">\n <button @click=\"copyTextToClipboard\">复制到剪贴板</button>\n </div>\n </div>\n </teleport>\n</template>\n<style scoped lang=\"scss\">\n.heading {\n font-size: 1.5em;\n margin-bottom: 12px;\n}\n\n.btn {\n height: 40px;\n width: 100px;\n text-align: center;\n line-height: 40px;\n font-size: 16px;\n font-weight: 700;\n}\n\n.btn2 {\n background-color: #008CBA;\n color: #fff;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n\n.card {\n background: #fff;\n color: #000;\n background-image: linear-gradient(48deg, #fff 0%, #e5efe9 100%);\n border-top-right-radius: 16px;\n border-bottom-left-radius: 16px;\n box-shadow: -20px 20px 35px 1px rgba(10, 49, 86, 0.18);\n display: flex;\n flex-direction: column;\n padding: 32px;\n margin: 40px;\n max-width: 400px;\n width: 100%;\n height: 600px\n}\n\n.content-wrapper {\n font-size: 1.1em;\n margin-bottom: 44px;\n}\n\n.content-wrapper:last-child {\n margin-bottom: 0;\n}\n\n.button {\n align-items: center;\n background: #e5efe9;\n border: 1px solid #5a72b5;\n border-radius: 4px;\n color: #121943;\n cursor: pointer;\n display: flex;\n font-size: 1em;\n font-weight: 700;\n height: 40px;\n justify-content: center;\n width: 180px;\n}\n\n.button:focus {\n border: 2px solid transparent;\n box-shadow: 0px 0px 0px 2px #121943;\n outline: solid 4px transparent;\n}\n\n.link {\n color: #121943;\n}\n\n.link:focus {\n box-shadow: 0px 0px 0px 2px #121943;\n}\n\n.input-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.input-wrapper .label {\n align-items: baseline;\n display: flex;\n font-weight: 700;\n justify-content: space-between;\n margin-bottom: 8px;\n}\n\n.input-wrapper .optional {\n color: #5a72b5;\n font-size: 0.9em;\n}\n\n.input-wrapper .input {\n border: 1px solid #5a72b5;\n border-radius: 4px;\n height: 40px;\n padding: 8px;\n}\n\ncode {\n background: #e5efe9;\n border: 1px solid #5a72b5;\n border-radius: 4px;\n padding: 2px 4px;\n}\n\n.modal-header {\n align-items: baseline;\n display: flex;\n justify-content: space-between;\n}\n\n.close {\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n height: 16px;\n text-decoration: none;\n width: 16px;\n}\n\n.close svg {\n width: 16px;\n}\n\n.modal-wrapper {\n align-items: center;\n background: rgba(0, 0, 0, 0.7);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n}\n\n#modal {\n transition: opacity 0.25s ease-in-out;\n}\n\n#modal .modal-body {\n max-width: 830px;\n opacity: 1;\n transform: translateY(-100px);\n transition: opacity 0.25s ease-in-out;\n width: 100%;\n z-index: 1;\n}\n\n.outside-trigger {\n bottom: 0;\n cursor: default;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n}\n\n.button__link {\n text-decoration: none;\n}\n\n.button {\n background-color: #4CAF50;\n /* Green */\n border: none;\n color: white;\n text-align: center;\n text-decoration: none;\n display: inline-block;\n font-size: 16px;\n margin: 4px 2px;\n -webkit-transition-duration: 0.4s;\n /* Safari */\n transition-duration: 0.4s;\n cursor: pointer;\n}\n\n.button1 {\n background-color: white;\n color: black;\n border: 2px solid #4CAF50;\n}\n\n.button1:hover {\n background-color: #4CAF50;\n color: white;\n}\n\n.button2 {\n background-color: white;\n color: black;\n border: 2px solid #008CBA;\n}\n\n.button2:hover {\n background-color: #008CBA;\n color: white;\n}\n\n.btn_box {\n width: 100%;\n display: flex;\n justify-items: center;\n justify-content: start;\n align-items: start;\n}\n\n.textBox {\n position: absolute;\n top: 30%;\n left: 42%;\n background-image: linear-gradient(48deg, #fff 0%, #e5efe9 100%);\n color: #000;\n padding: 10px 15px;\n\n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n textarea {\n color: #000;\n background-color: #ccc;\n border: 1px solid #5a72b5;\n border-radius: 8px;\n margin-top: 10px;\n font-size: var(--mx-font-size);\n ;\n padding: 5px;\n }\n\n ;\n\n .btnBox {\n display: flex;\n justify-content: flex-end;\n\n button {\n background-color: white;\n color: black;\n border: 2px solid #008CBA;\n border-radius: 5px;\n padding: 5px;\n margin-top: 10px;\n\n &:hover {\n background-color: #008CBA;\n color: white;\n }\n }\n }\n}\n</style>\n\n\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { MxFun} from \"mxdraw\"\n/* eslint-disable no-undef */\nconst MxIFrame= {\n init() {\n (MxFun as any).setPostMessageToParentFrameFunction(function(param:any){\n (top as any ).postMessage(param,'*');\n });\n\n window.addEventListener('message',function(event){\n if(event.data.type===\"sendStringToExecute\") {\n MxFun.sendStringToExecute(event.data.cmd, event.data);\n }\n else{\n console.log(\"mx:unprocessed message:\");\n console.log(event.data);\n }\n\n },false) ;\n },\n}\n\nexport function init() {\n MxIFrame.init();\n}\n\n\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nimport * as THREE from \"three\";\nimport {\n McEdGetPointWorldDrawObject,\n MrxDbgUiPrPoint,\n MxDbLeadComment, MxDbRectBoxLeadComment, MxDbArrow, MxDbCloudLine,\n MxFun, MrxDbgUiPrBaseReturn, MxDbArea\n} from \"mxdraw\";\nimport { MxCpp } from \"mxcad\";\n\nasync function BR_Comment() {\n const getPoint = new MrxDbgUiPrPoint();\n getPoint.setMessage(\"\\n指定第一点:\");\n getPoint.go((status) => {\n if (status != 0) {\n return;\n }\n\n const pt1 = getPoint.value();\n\n let leadComment = new MxDbLeadComment();\n leadComment.point1 = pt1.clone();\n leadComment.textHeight = MxFun.screenCoordLong2Doc(50);\n leadComment.text = \"测试Test1\";\n leadComment.textWidth = MxFun.screenCoordLong2Doc(300);\n\n leadComment.fixedSize = true;\n if (leadComment.fixedSize) {\n leadComment.textHeight = 50;\n leadComment.textWidth = 250;\n }\n leadComment.color = MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor();\n\n const worldDrawComment = new McEdGetPointWorldDrawObject();\n worldDrawComment.setDraw(\n (currentPoint: THREE.Vector3, pWorldDraw) => {\n\n leadComment.point2 = currentPoint;\n pWorldDraw.drawCustomEntity(leadComment);\n\n }\n );\n\n getPoint.setBasePt(pt1);\n getPoint.setUseBasePt(true);\n\n getPoint.setUserDraw(worldDrawComment);\n getPoint.setMessage(\"\\n指定第二点:\");\n\n getPoint.go((status) => {\n if (status != 0) {\n console.log(status);\n return;\n }\n const currentPoint = getPoint.value();\n leadComment.point2 = currentPoint;\n MxFun.addToCurrentSpace(leadComment);\n\n });\n });\n}\n\n\nfunction myCreateCanvasImageData(param:any):Promise<String>{\n return new Promise<String>((resolve, reject) => {\n MxFun.getCurrentDraw().createCanvasImageData(\n (imageData: String) => {\n resolve(imageData)\n },\n param\n );\n });\n}\n\nasync function TestMyCreateCanvasImageData(){\n\n for(let i = 0; i < 10;i++){\n let imageData = await myCreateCanvasImageData( {\n width: 349,\n height: 536,\n });\n console.log(imageData);\n }\n\n}\n\nfunction BR_Print() {\n MxFun.getCurrentDraw().createCanvasImageData(\n (imageData: String) => {\n const newWindow: any = window.open();\n if (newWindow != null) {\n newWindow.document.write('<img src=\"' + imageData + '\"/>');\n setTimeout(() => {\n newWindow.print();\n }, 300);\n }\n },\n {\n width: 349,\n height: 536,\n }\n );\n}\n\n\n\n\n\nasync function BR_CheckDraw() {\n let color = MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor();\n const point = new MrxDbgUiPrPoint()\n const mxDraw = MxFun.getCurrentDraw()\n const worldDrawComment = new McEdGetPointWorldDrawObject()\n const mxCheckDraw = new MxDbRectBoxLeadComment()\n mxCheckDraw.color = color.getHex();\n if( mxCheckDraw.color == 0) mxCheckDraw.color = 0x010101;\n mxCheckDraw.radius = MxFun.screenCoordLong2Doc(8);\n mxCheckDraw.setLineWidth(3);\n mxCheckDraw.setLineWidthByPixels(true);\n point.setMessage(\"\\n云线框起始点:\");\n point.go((status) => {\n if (status != MrxDbgUiPrBaseReturn.kOk) {\n return\n }\n mxCheckDraw.point1 = point.value()\n worldDrawComment.setDraw((currentPoint) => {\n mxCheckDraw.point2 = currentPoint\n worldDrawComment.drawCustomEntity(mxCheckDraw)\n\n })\n\n point.setUserDraw(worldDrawComment)\n point.setMessage(\"\\n云线框结束点:\");\n point.go((status) => {\n if (status != MrxDbgUiPrBaseReturn.kOk) {\n return\n }\n mxCheckDraw.point2 = point.value()\n\n worldDrawComment.setDraw((currentPoint) => {\n mxCheckDraw.point3 = currentPoint\n worldDrawComment.drawCustomEntity(mxCheckDraw)\n })\n mxCheckDraw.text = \"审图批注XXXXXXXXXX\"\n\n //mxCheckDraw.text = \"审图批注XXTest12345678901234567890123456789111111\";\n mxCheckDraw.textWidth = MxFun.screenCoordLong2Doc(200);\n mxCheckDraw.textHeight = MxFun.screenCoordLong2Doc(50);\n\n mxCheckDraw.fixedSize = true;\n if (mxCheckDraw.fixedSize) {\n mxCheckDraw.textHeight = 20;\n mxCheckDraw.textWidth = 230;\n }\n\n\n point.setMessage(\"\\n审图标注点:\");\n point.go((status) => {\n if (status != MrxDbgUiPrBaseReturn.kOk) {\n return\n }\n mxCheckDraw.point3 = point.value()\n mxDraw.addMxEntity(mxCheckDraw)\n })\n })\n })\n}\n\nfunction getScreenPixel(pixel: number, isFontSize?: boolean): number {\n let _pixel = MxFun.screenCoordLong2World(isFontSize ? pixel : pixel - pixel / 3)\n _pixel = MxFun.worldCoordLong2Doc(_pixel)\n return _pixel\n}\nexport function BR_Arrow() {\n const worldDraw = new McEdGetPointWorldDrawObject()\n const lines = new MxDbArrow()\n const mxDraw = MxFun.getCurrentDraw();\n const point = new MrxDbgUiPrPoint();\n point.setUserDraw(worldDraw)\n lines.setLineWidth(10)\n lines.innerOffset = getScreenPixel(10)\n lines.outerOffset = getScreenPixel(22)\n lines.topOffset = getScreenPixel(36)\n lines.color = MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor();\n point.go(() => {\n\n lines.startPoint = point.value()\n worldDraw.setDraw((v) => {\n lines.endPoint = v\n worldDraw.drawCustomEntity(lines)\n })\n point.go(async (status) => {\n lines.endPoint = point.value()\n\n mxDraw.addMxEntity(lines)\n\n })\n })\n}\n\nexport default function BR_CloudLine() {\n const point = new MrxDbgUiPrPoint()\n const mxDraw = MxFun.getCurrentDraw()\n const worldDrawComment = new McEdGetPointWorldDrawObject()\n\n // 屏幕坐标半径\n const radius = MxFun.screenCoordLong2Doc(16);\n\n point.setMessage(\"\\n点击开启绘制云线:\");\n\n point.go(() => {\n let pt = point.value()\n // 云线实例\n const mxCloudLine = new MxDbCloudLine()\n mxCloudLine.setRadius(radius);\n mxCloudLine.addPoint(pt);\n mxCloudLine.color = MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor();\n worldDrawComment.setDraw((\n currentPoint,\n ) => {\n if (pt.distanceTo(currentPoint) > radius) {\n pt = currentPoint.clone();\n mxCloudLine.addPoint(currentPoint, true);\n }\n\n worldDrawComment.drawCustomEntity(mxCloudLine)\n })\n point.setUserDraw(worldDrawComment)\n point.setMessage(\"\\n再次点击结束绘制云线:\");\n point.go(() => {\n mxDraw.addMxEntity(mxCloudLine)\n })\n })\n\n}\n\n\nlet sSaveData = \"\";\nexport function BR_SaveAllMxEntity() {\n let mxobj = MxFun.getCurrentDraw();\n sSaveData = mxobj.saveMxEntityToJson();\n console.log(sSaveData);\n\n}\n\n\nexport async function BR_LoadAllMxEntity() {\n if (sSaveData.length == 0) return;\n let mxobj = MxFun.getCurrentDraw();\n await mxobj.loadMxEntityFromJson(sSaveData, [\"models/svg/mark.svg\"]);\n mxobj.updateDisplay();\n}\n\nexport function BR_Area() {\n const getPoint = new MrxDbgUiPrPoint()\n getPoint.setMessage('\\n指定第一点:')\n getPoint.go(status => {\n if (status != 0) {\n return\n }\n const pt1 = getPoint.value()\n let area = new MxDbArea()\n area.addPoint(pt1)\n area.color = MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor();\n const worldDrawComment = new McEdGetPointWorldDrawObject()\n worldDrawComment.setDraw((currentPoint: THREE.Vector3, pWorldDraw) => {\n let tmp: MxDbArea = area.clone() as MxDbArea\n tmp.addPoint(currentPoint)\n worldDrawComment.drawCustomEntity(tmp)\n })\n getPoint.setUserDraw(worldDrawComment)\n getPoint.setMessage('\\n指定下一点:')\n getPoint.goWhile(\n status => {\n if (status == 0) {\n const pt2 = getPoint.value()\n area.addPoint(pt2)\n }\n },\n status => {\n area.isFill = true\n area.fillOpacity = 0.7\n area.fillColor = 0x663244\n MxFun.getCurrentDraw().addMxEntity(area)\n }\n )\n })\n}\n\nexport function init() {\n MxFun.addCommand(\"BR_Comment\", BR_Comment);\n MxFun.addCommand(\"BR_CheckDraw\", BR_CheckDraw);\n MxFun.addCommand(\"BR_Arrow\", BR_Arrow);\n MxFun.addCommand(\"BR_CloudLine\", BR_CloudLine);\n MxFun.addCommand(\"BR_Print\", BR_Print);\n MxFun.addCommand(\"BR_SaveAllMxEntity\", BR_SaveAllMxEntity);\n MxFun.addCommand(\"BR_LoadAllMxEntity\", BR_LoadAllMxEntity);\n MxFun.addCommand(\"BR_Area\", BR_Area);\n\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nimport {\n MxFun, Mxassembly\n} from \"mxdraw\";\nimport { McCmColor, McDb, MxCpp } from \"mxcad\";\n\nfunction Mx_Test_DrawLine() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n //设置线宽 4\n mxcad.drawLineWidth = 0;\n\n\n //创建一个图层,名为\"LineLayer\"\n mxcad.addLayer(\"LineLayer\");\n //设置当前图层为\"LineLayer\"\n mxcad.drawLayer = \"LineLayer\";\n // 直接绘制一个实线\n // 参数一直线的开始点x坐标,参数二直线的开始点y坐标,参数三直线的结束点x坐标,参数四直线的结束点y坐标\n mxcad.drawLine(0, 0, 100, 0);\n // 绘制一个实斜线\n mxcad.drawLine(200, 0, 300, 100);\n\n\n //----------------------------------------------------------------------------------------------------------\n //绘制一个虚线\n //定义虚线数据据,\"MyLineType\"是线型名,\"6,-8\"是虚线的一个单位定义,6是实线长,-8是空格长。\n mxcad.addLinetype(\"MyLineType\", \"6,-10\");\n //设计当前线型为\"MyLineType\"\n mxcad.drawLinetype = \"MyLineType\";\n // 绘制一个虚线\n mxcad.drawLine(0, 30, 100, 30);\n // 绘制一个斜虚线\n mxcad.drawLine(200, 30, 300, 130);\n\n //---------------------------------------------------------------------------------------------------------\n // 修改绘线的颜色为 16711680(蓝色), 16711680转成16进制是0xFF 00 00,其中,FF是蓝色,00是绿色,第个二00是红色。\n mxcad.drawColor = new McCmColor(0, 0, 255);\n // 绘制一个蓝色的虚线\n\n mxcad.drawLine(0, 60, 100, 60);\n // 绘制一个蓝色的斜虚线\n mxcad.drawLine(200, 60, 300, 160);\n //---------------------------------------------------------------------------------------------------------\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n //设置线宽 4\n mxcad.drawLineWidth = 4;\n //绘制一个带宽度的直线。\n mxcad.drawLine(0, 90, 100, 90);\n // 绘制一个带宽度的斜线\n mxcad.drawLine(200, 90, 300, 190);\n\n //---------------------------------------------------------------------------------------------------------\n //绘制一个点划线虚线\n mxcad.addLinetype(\"MyLineType2\", \"10,-2,3,-2\");\n //把线型改点划线\n mxcad.drawLinetype = \"MyLineType2\";\n // 修改绘线的颜色为 255(红色), 255转成16进制是0x00 00 FF,其中,00是蓝色,第个二00是绿色,FF是红色。\n mxcad.drawColor = new McCmColor(255, 0, 0);\n //绘制一个带宽度的红色点划线。\n mxcad.drawLine(0, 120, 100, 120);\n // 绘制一个带宽度红色点划斜线\n mxcad.drawLine(200, 120, 300, 220);\n //---------------------------------------------------------------------------------------------------------\n //增加一个带有形的线型\n mxcad.addTextStyle(\"MyLineTypeTextStyle\", \"txt.shx\", \"hztxt.shx\", 1);\n mxcad.addLinetypeEx(\"MyLineType3\", \"(12.7,(\\\"T=MxDraw\\\",\\\"S=2.54\\\",\\\"L=-5.08\\\",\\\"R=0.0\\\",\\\"X=-2.54\\\",\\\"Y=-1.27\\\"),-10.08)\", \"MyLineTypeTextStyle\");\n mxcad.drawLinetype = \"MyLineType3\";\n mxcad.drawLineWidth = 0;\n //绘制一个带宽度的红色点划线。\n mxcad.drawLine(350, 120, 600, 120);\n //---------------------------------------------------------------------------------------------------------\n //增加一个带有形的线型\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n mxcad.drawLineWidth = 4;\n //绘制一个带宽度的红色点划线。\n mxcad.drawLine(350, 220, 600, 220);\n\n //把所有的实体都放到当前显示视区\n mxcad.zoomAll();\n //更新视区显示\n mxcad.updateDisplay();\n}\n\nfunction Mx_Test_DrawArc() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n //设置线宽 4\n mxcad.drawLineWidth = 0;\n\n //创建一个图层,名为\"ArcLayer\"\n mxcad.addLayer(\"ArcLayer\");\n\n //设置当前图层为\"ArcLayer\"\n mxcad.drawLayer = (\"ArcLayer\");\n\n //《---------------------------------------》\n //绘制一个实线黑色的圆弧\n mxcad.drawArc(0, 1000, 100, 30, 200);\n\n\n //《---------------------------------------》\n //绘制一个虚线线的圆弧\n mxcad.addLinetype(\"ArcLineType\", \"30,-5,7,-7\");\n\n //设计当前线型为\"ArcLineType\"\n mxcad.drawLinetype = \"ArcLineType\";\n\n mxcad.drawColor = new McCmColor(255, 25, 0);\n\n mxcad.drawArc(300, 1000, 100, 30, 200);\n\n //《---------------------------------------》\n //绘制一个有宽度的虚线线的圆弧\n mxcad.drawLineWidth = 15;\n\n mxcad.drawColorIndex = 255;\n\n mxcad.drawArc(600, 1000, 100, 30, 200);\n\n\n //《---------------------------------------》\n //由圆弧上三个点绘制圆弧\n mxcad.drawArc2(800, 1000, 900, 1200, 1000, 900);\n\n //《---------------------------------------》\n //由圆弧上的开始点,结束度和凸度会圆弧\n mxcad.drawLinetype = \"\";\n mxcad.drawLineWidth = 40;\n mxcad.drawArc3(1200, 1000, 1400, 1000, 0.6);\n\n\n mxcad.zoomAll();\n mxcad.regen();\n mxcad.updateDisplay();\n}\n\nfunction Mx_Test_DrawCircle() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n mxcad.drawColorIndex = 0;\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n //设置线宽 4\n mxcad.drawLineWidth = 0;\n\n\n //创建一个图层,名为\"CircleLayer\"\n mxcad.addLayer(\"CircleLayer\");\n\n //设置当前图层为\"CircleLayer\"\n mxcad.drawLayer = \"CircleLayer\";\n\n //《---------------------------------------》\n //绘制一个实线黑色的圆\n mxcad.drawCircle(0, 800, 120);\n\n //《---------------------------------------》\n //绘制一个虚线线的圆\n mxcad.addLinetype(\"CircleLineType\", \"30,-5,7,-7\");\n\n //设计当前线型为\"CircleLineType\"\n mxcad.drawLinetype = (\"CircleLineType\");\n\n mxcad.drawColor = new McCmColor(0, 25, 255);\n\n mxcad.drawCircle(300, 800, 120);\n\n //《---------------------------------------》\n //绘制一个带有宽度的圆\n mxcad.addLinetype(\"CircleLineType\", \"30,-5,7,-7\");\n\n //设计当前线型为\"CircleLineType\"\n mxcad.drawLinetype = (\"CircleLineType\");\n\n mxcad.drawLineWidth = 40;\n\n mxcad.drawCircle(600, 800, 120);\n\n mxcad.zoomAll();\n mxcad.regen();\n mxcad.updateDisplay();\n}\n\n\nfunction Mx_Test_DrawPolyline() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n mxcad.drawColorIndex = 0;\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n //设置线宽 4\n mxcad.drawLineWidth = 0;\n\n //创建一个图层,名为\"PolylineLayer\"\n mxcad.addLayer(\"PolylineLayer\");;\n\n //设置当前图层为\"PolylineLayer\"\n mxcad.drawLayer = \"PolylineLayer\";\n\n\n //《---------------------------------------》\n //用Plyline显示绘制矩形框\n\n //定义一个路径的开始点\n mxcad.pathMoveTo(0, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(100, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(100, 400);\n\n //路径的一下个点\n mxcad.pathLineTo(0, 400);\n\n //把路径设置成闭合\n mxcad.pathMakeClosed();\n\n\n //把路径闭合,生成一个矩形框\n mxcad.drawPathToPolyline();\n\n //《---------------------------------------》\n //绘制一个有宽度,带线型的矩形框\n //定义一个路径的开始点\n mxcad.pathMoveTo(200, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(300, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(300, 400);\n\n //路径的一下个点\n mxcad.pathLineTo(200, 400);\n\n //把路径设置成闭合\n mxcad.pathMakeClosed();\n\n mxcad.addLinetype(\"MyLineType3\", \"30,-10\");\n\n mxcad.drawLinetype = \"MyLineType3\";\n\n mxcad.drawColorIndex = 255;\n\n mxcad.drawLineWidth = 5;\n\n mxcad.drawPathToPolyline();\n\n //《---------------------------------------》\n //绘制一个有宽度的矩形框\n //定义一个路径的开始点\n mxcad.pathMoveTo(400, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(500, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(500, 400);\n\n //路径的一下个点\n mxcad.pathLineTo(400, 400);\n\n //把路径设置成闭合\n mxcad.pathMakeClosed();\n\n mxcad.drawLinetype = (\"\");\n\n mxcad.drawColor = new McCmColor(0, 25, 255);\n\n mxcad.drawLineWidth = 10;\n\n mxcad.drawPathToPolyline();\n\n\n //《---------------------------------------》\n //绘制一个有宽度的矩形框\n //定义一个路径的开始点\n mxcad.pathMoveTo(400, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(500, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(500, 400);\n\n //路径的一下个点\n mxcad.pathLineTo(400, 400);\n\n //把路径设置成闭合\n mxcad.pathMakeClosed();\n\n mxcad.drawLinetype = \"\";\n\n mxcad.drawColor = new McCmColor(255, 25, 0);\n\n mxcad.drawLineWidth = 10;\n\n mxcad.drawPathToPolyline();\n\n //《---------------------------------------》\n //绘制一个有宽度的,不闭合的矩形框\n //定义一个路径的开始点\n mxcad.pathMoveTo(600, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(700, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(700, 400);\n\n //路径的一下个点\n mxcad.pathLineTo(600, 400);\n\n //把路径设置成闭合\n mxcad.drawLinetype = \"\";\n\n mxcad.drawColor = new McCmColor(0, 255, 0);\n\n mxcad.drawLineWidth = 10;\n\n mxcad.drawPathToPolyline();\n\n\n //《---------------------------------------》\n //绘制一个有宽度的,三角形\n //定义一个路径的开始点\n mxcad.pathMoveTo(800, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(900, 300);\n\n //路径的一下个点\n mxcad.pathLineTo(900, 400);\n\n mxcad.pathMakeClosed();\n\n //把路径设置成闭合\n mxcad.drawLinetype = \"\";\n\n mxcad.drawColor = new McCmColor(25, 255, 0);\n\n mxcad.drawLineWidth = 10;\n\n mxcad.drawPathToPolyline();\n\n\n //《---------------------------------------》\n //绘制一个箭头\n mxcad.pathMoveToEx(1000, 300, 10, 10, 0);\n\n mxcad.pathLineToEx(1000, 500, 30, 0, 0);\n\n mxcad.pathLineTo(1000, 580);\n\n mxcad.drawPathToPolyline();\n\n\n //《---------------------------------------》\n //绘制一个虚线箭头\n mxcad.pathMoveToEx(1200, 300, 10, 10, 0);\n\n mxcad.pathLineToEx(1200, 500, 30, 0, 0);\n\n mxcad.pathLineTo(1200, 580);\n\n\n mxcad.drawColor = new McCmColor(25, 255, 0);\n\n mxcad.drawLinetype = (\"MyLineType3\");\n\n mxcad.drawPathToPolyline();\n\n //《---------------------------------------》\n //绘制一个圆弧箭头,-0.34是圆弧的凸度.\n\n //mxcad.pathMoveToEx 1400, 300, 10, 10, -0.34);\n mxcad.pathMoveToEx(1400, 300, 10, 10, -0.34);\n\n mxcad.pathLineToEx(1400, 500, 30, 0, 0.34);\n\n mxcad.pathLineTo(1400, 600);\n\n\n mxcad.drawColor = new McCmColor(255, 255, 25);\n\n mxcad.drawLinetype = \"MyLineType3\";\n\n mxcad.drawPathToPolyline();\n\n mxcad.zoomAll();\n mxcad.regen();\n mxcad.updateDisplay();\n}\n\nfunction Mx_Test_DrawHatch() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n //设置线宽 4\n mxcad.drawLineWidth = 0;\n\n //创建一个图层,名为\"HatchLayer\"\n mxcad.addLayer(\"HatchLayer\");\n\n //设置当前图层为\"HatchLayer\"\n mxcad.drawLayer = \"HatchLayer\";\n\n\n\n //《---------------------------------------》\n //绘制一个实心有圆弧边界填充.\n //定义一个路径的开始点\n mxcad.pathMoveToEx(200, 3300, 0, 0, 0.3);\n\n //路径的一下个点\n mxcad.pathLineTo(300, 3300);\n\n //路径的一下个点\n mxcad.pathLineTo(300, 3400);\n\n //路径的一下个点\n mxcad.pathLineTo(200, 3300);\n\n mxcad.drawColor = new McCmColor(25, 255, 0);\n\n\n //把路径变成一个填充\n mxcad.drawPathToHatch(1);\n\n\n //《---------------------------------------》\n //绘制一个实心三角形填充.\n\n //定义一个路径的开始点\n mxcad.pathMoveTo(150, 3300);\n\n //路径的一下个点\n mxcad.pathLineTo(250, 3300);\n\n //路径的一下个点\n mxcad.pathLineTo(250, 3400);\n\n //路径的一下个点\n mxcad.pathLineTo(150, 3300);\n\n //把路径拟合成一个样线\n mxcad.drawColor = new McCmColor(255, 0, 0);\n mxcad.drawPathToHatch(1);\n\n //《---------------------------------------》\n //绘制一个实心有圆弧边界填充,中间挖去一块.\n\n //定义一个路径的开始点\n mxcad.pathMoveToEx(440, 3310, 0, 0, 0);\n\n //路径的一下个点\n mxcad.pathLineTo(480, 3310);\n\n //路径的一下个点\n mxcad.pathLineTo(480, 3360);\n\n //路径的一下个点\n mxcad.pathLineTo(450, 3340);\n\n // 把上面定义的路径定义填充排除区域.\n mxcad.pathMakeExclude(true);\n\n\n\n //定义一个路径的开始点\n mxcad.pathMoveToEx(400, 3300, 0, 0, 0.3);\n\n //路径的一下个点\n mxcad.pathLineTo(500, 3300);\n\n //路径的一下个点\n mxcad.pathLineTo(500, 3400);\n\n //路径的一下个点\n mxcad.pathLineTo(400, 3300);\n\n\n mxcad.drawColor = new McCmColor(255, 25, 0);\n\n //把路径变成一个填充\n mxcad.drawPathToHatch(1);\n\n\n\n\n //《---------------------------------------》\n //绘制一个有图案的填充\n //angle, x-origin,y-origin, delta-x,delta-y,dash-1,dash-2, …\n //45 = angle 是图案线角度.\n //0 = x-origin 是第一个填充线经过的点位置X坐标\n //0 = y-origin 是第一个填充线经过的点位置Y坐标\n //0 = delta-x 是下一个填充线相对前一个线的X方向偏移\n //0.125 = delta-y 是下一个填充线相对前一个线的Y方向偏移\n\n\n mxcad.addPatternDefinition(\"MyHatchPattern1\", \"((45, 0,0, 0,0.125))\");\n mxcad.drawPatternDefinition = \"MyHatchPattern1\";\n\n\n\n //定义一个路径的开始点\n mxcad.pathMoveToEx(600, 3300, 0, 0, 0.3);\n\n //路径的一下个点\n mxcad.pathLineTo(700, 3300);\n\n //路径的一下个点\n mxcad.pathLineTo(700, 3400);\n\n //路径的一下个点\n mxcad.pathLineTo(600, 3300);\n\n\n //把路径变成一个填充,80,是填充图案的缩放比例.\n mxcad.drawPathToHatch(100);\n\n\n //《---------------------------------------》\n //绘制另一个有图案的填充\n //45, 0,0, 0,.25\n //45, .176776695,0, 0,.25, .125,-.0625\n\n //{id: 'ANSI33', name: 'ANSI 青铜、黄铜和紫铜', value: '45, 0,0, 0,.2545, .176776695,0, 0,.25, .125,-.0625', imgPath: '/src/view/Dialogs/PatternFillingDialog/imgs/ANSI33.jpg'}\n\n mxcad.addPatternDefinition(\"MyHatchPattern2\", \"((45, 0,0, 0,0.25) (45, 0.176776695,0, 0,0.25, 0.125,-0.0625))\");\n mxcad.drawPatternDefinition = \"MyHatchPattern2\"\n\n //定义一个路径的开始点\n mxcad.pathMoveToEx(800, 3300, 0, 0, 0.3);\n\n //路径的一下个点\n mxcad.pathLineTo(900, 3300);\n\n //路径的一下个点\n mxcad.pathLineTo(900, 3400);\n\n //路径的一下个点\n mxcad.pathLineTo(800, 3300);\n\n\n //把路径变成一个填充,80,是填充图案的缩放比例.\n mxcad.drawPathToHatch(100);\n\n\n mxcad.zoomAll();\n mxcad.regen();\n mxcad.updateDisplay();\n}\n\nfunction Mx_Test_DrawText() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n //创建一个图层,名为\"TextLayer\"\n mxcad.addLayer(\"TextLayer\");\n\n //设置当前图层为\"TextLayer\"\n mxcad.drawLayer = \"TextLayer\";\n\n //《---------------------------------------》\n //写一个文字,0,1是左对齐.\n mxcad.drawText(0, 1900, \"绘图控件文字测试\", 100, 0, 0, 1);\n\n\n //《---------------------------------------》\n //写一个文字,2,1是右下对齐.\n mxcad.drawColor = new McCmColor(255, 25, 0);\n\n mxcad.drawText(3000, 2100, \"绘图控件文字测试\", 100, -20, 2, 1);\n\n //《---------------------------------------》\n //按指定样式绘制文字\n mxcad.addTextStyle(\"MyTextStyle\", \"italicc.shx\", \"gbcbig.shx\", 0.7);\n mxcad.drawTextStyle = \"MyTextStyle\";\n\n mxcad.drawColor = new McCmColor(255, 0, 0);\n mxcad.drawText(0, 3000, \"绘图控件文字测试\", 100, 0, 0, 1);\n\n\n //《---------------------------------------》\n //绘制TrueType文字\n mxcad.AddTureTypeTextStyle(\"MyTrueTypeTextStyle\");\n mxcad.drawTextStyle = \"MyTrueTypeTextStyle\";\n\n mxcad.drawColor = new McCmColor(200, 255, 50);\n mxcad.drawText(0, 3500, \"绘图控件TrueType文字测试\", 100, 0, 0, 1);\n\n mxcad.zoomAll();\n mxcad.regen();\n mxcad.updateDisplay();\n}\n\n\nfunction Mx_Test_TrueText(){\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n MxCpp.App.loadFonts([], [], [\"syadobe\",\"simsun\"], () => {\n\n // 添加一个黑体文字样式\n mxcad.AddTureTypeTextStyle(\"ht_style\",\"syadobe\");\n\n // 添加一个宋体文字样式\n mxcad.AddTureTypeTextStyle(\"st_style\",\"simsun\");\n\n // 设置当前样式为黑体\n mxcad.drawTextStyle = \"ht_style\";\n\n mxcad.drawColor = new McCmColor(200, 255, 50);\n let idText = mxcad.drawText(0, 3500, \"绘图控件TrueType文字测试\", 100, 0, 0, 1);\n \n let ent = idText.getMcDbEntity();\n // 修改文字样式为宋体\n if(ent) ent.textStyle = \"st_style\";\n \n mxcad.zoomAll();\n mxcad.regen();\n mxcad.updateDisplay();\n });\n \n\n}\n\n\nfunction Mx_Test_Ellipse() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n //设置线宽 4\n mxcad.drawLineWidth = 0;\n\n //创建一个图层,名为\"LineLayer\"\n mxcad.addLayer(\"LineLayer\");\n\n //设置当前图层为\"LineLayer\"\n mxcad.drawLayer = \"LineLayer\";\n\n\n // 直接绘制一个椭圆\n mxcad.drawEllipse(0, 1400, 100, 0, 0.7);\n\n\n //《---------------------------------------》\n //绘制一个倾斜的椭圆\n\n mxcad.addLinetype(\"MyEllipseType\", \"6,-10\");\n\n //设计当前线型为\"MyEllipseType\"\n mxcad.drawLinetype = (\"MyEllipseType\");\n\n mxcad.drawColor = new McCmColor(200, 0, 0);\n\n mxcad.drawEllipse(200, 1400, 80, 30, 0.5);\n\n mxcad.zoomAll();\n mxcad.regen();\n mxcad.updateDisplay();\n}\n\n\n\nfunction Mx_Test_EllipseArc() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n //设置线宽 4\n mxcad.drawLineWidth = 0;\n\n //创建一个图层,名为\"EllipseArcLayer\"\n mxcad.addLayer(\"EllipseArcLayer\");\n\n //设置当前图层为\"EllipseArcLayer\"\n mxcad.drawLayer = \"EllipseArcLayer\";\n\n\n // 直接绘制一个椭圆\n mxcad.drawEllipseArc(0, 1600, 80, 30, 0.4, 30, 200);\n\n\n //《---------------------------------------》\n mxcad.addLinetype(\"MyEllipseArcType\", \"6,-10\");\n\n //设计当前线型为\"MyEllipseType\"\n mxcad.drawLinetype = (\"MyEllipseArcType\");\n\n mxcad.drawColor = new McCmColor(200, 200, 0);\n\n mxcad.drawEllipseArc(200, 1600, -80, 30, 0.5, 60, 300);\n\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n mxcad.zoomAll();\n mxcad.regen();\n mxcad.updateDisplay();\n}\n\n\n\n\nfunction Mx_Test_MText() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n mxcad.addLayer(\"MtextLayer\");\n\n //设置当前图层为\"MtextLayer\"\n\n mxcad.drawLayer = \"MtextLayer\";\n\n mxcad.drawTextStyle = \"\";\n\n mxcad.drawMText(0, -100, \"控件:\\\\P多行文字测试\", 50, 400, 0, 1);\n\n mxcad.zoomAll();\n mxcad.regen();\n mxcad.updateDisplay();\n}\n\nfunction Mx_ParamDrawLine(data: any) {\n if (!data || !data.param) return;\n\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n //设置线宽 4\n mxcad.drawLineWidth = 0;\n\n\n //创建一个图层,名为\"LineLayer\"\n mxcad.addLayer(\"LineLayer\");\n //设置当前图层为\"LineLayer\"\n mxcad.drawLayer = \"LineLayer\";\n // 直接绘制一个实线\n mxcad.drawLine(data.param.x1, data.param.y1, data.param.x2, data.param.y2);\n\n mxcad.zoomAll();\n //更新视区显示\n mxcad.updateDisplay();\n\n MxFun.postMessageToParentFrame({ cmd: \"Mx_ParamDrawLine\", message: \"ok\" });\n\n}\n\nfunction Mx_Test_Text() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n // 绘制文字,左中对齐.\n //mxcad.drawText(100.1,200.45,\"1.033\",10,0,McDb.TextHorzMode.kTextLeft,McDb.TextVertMode.kTextVertMid);\n mxcad.drawText(\n 350831.77,\n 19405118.45,\n '1.034',\n 10,\n 0,\n McDb.TextHorzMode.kTextLeft,\n McDb.TextVertMode.kTextVertMid);\n\n mxcad.zoomAll();\n mxcad.regen(100);\n}\n\n\n\nfunction Mx_Test_DimAligned() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n mxcad.addDimStyle(\"MyDimStyle\", \"41,0.18,141,0.09,40,200\", \"77,1,271,3\", \"\", \"\");\n mxcad.drawDimStyle = \"MyDimStyle\"\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n //设置线宽\n mxcad.drawLineWidth = 0\n\n mxcad.drawDimAligned(0, 4000, 300, 4500, 150, 4600);\n\n //把所有的实体都放到当前显示视区\n mxcad.zoomAll();\n //更新视区显示\n mxcad.updateDisplay();\n}\n\nfunction Mx_Test_DrawDimRotated() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n let textId = mxcad.addTextStyle(\"我的标注字体\",\"complex.shx\",\"gbcbig.shx\",1); \n mxcad.addDimStyle(\"MyDimStyle\", \"41,0.18,141,0.09,40,200\", \"77,1,271,3\", \"\", `340,${textId.id}`);\n mxcad.drawDimStyle = \"MyDimStyle\"\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n //设置线宽\n mxcad.drawLineWidth = 0\n\n mxcad.drawDimRotated(0, 7000, 600, 7000, 250, 7050, 0);\n\n mxcad.drawDimRotated(0, 7200, 0, 7600, 150, 7300, 0.771);\n\n //把所有的实体都放到当前显示视区\n mxcad.zoomAll();\n //更新视区显示\n mxcad.updateDisplay();\n}\n\n\nfunction Mx_Test_DrawDimRotatedTol() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n let textId = mxcad.addTextStyle(\"我的标注字体\", \"complex.shx\", \"gbcbig.shx\", 1);\n mxcad.addDimStyle(\"MyDimStyle\", \"41,0.18,141,0.09,40,200\", \"77,1,271,3\", '3,\"DN%%c<>\"', `340,${textId.id}`);\n mxcad.drawDimStyle = \"MyDimStyle\"\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n //设置线宽\n mxcad.drawLineWidth = 0\n\n let dim = mxcad.drawDimRotated(0, 7000, 600, 7000, 250, 7050, 0).getMcDbDimension();\n if(dim){\n // DIMTOL\n dim.setDimVarInt(71,1);\n\n //dimtdec\n dim.setDimVarInt(272,1);\n\n // DIMTFAC\n dim.setDimVarDouble(146,0.5);\n\n // DIMTM\n dim.setDimVarDouble(48,5.5);\n\n // DIMTP\n dim.setDimVarDouble(47,2.5);\n\n dim.recomputeDimBlock();\n }\n\n //把所有的实体都放到当前显示视区\n mxcad.zoomAll();\n //更新视区显示\n mxcad.updateDisplay();\n}\n\nfunction Mx_Test_DrawDimAngular() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n mxcad.addDimStyle(\"MyDimStyle2\", \"41,0.18,141,0.09,40,200\", \"77,1,271,3\", \"\", \"\");\n mxcad.drawDimStyle = \"MyDimStyle2\"\n\n //把颜色改回黑白色\n mxcad.drawColorIndex = 0;\n\n //把线型改成实线\n mxcad.drawLinetype = \"\";\n\n //设置线宽\n mxcad.drawLineWidth = 0\n\n\n mxcad.drawDimAngular(500, 5000, 0, 5500, 1000, 5500, 500, 5500);\n\n //把所有的实体都放到当前显示视区\n mxcad.zoomAll();\n //更新视区显示\n mxcad.updateDisplay();\n}\n\nexport function init() {\n MxFun.addCommand(\"Mx_Test_DrawLine\", Mx_Test_DrawLine);\n MxFun.addCommand(\"Mx_Test_DrawArc\", Mx_Test_DrawArc);\n MxFun.addCommand(\"Mx_Test_DrawCircle\", Mx_Test_DrawCircle);\n MxFun.addCommand(\"Mx_Test_DrawPolyline\", Mx_Test_DrawPolyline);\n MxFun.addCommand(\"Mx_Test_DrawHatch\", Mx_Test_DrawHatch);\n MxFun.addCommand(\"Mx_Test_DrawText\", Mx_Test_DrawText);\n MxFun.addCommand(\"Mx_Test_Ellipse\", Mx_Test_Ellipse);\n MxFun.addCommand(\"Mx_Test_EllipseArc\", Mx_Test_EllipseArc);\n MxFun.addCommand(\"Mx_Test_MText\", Mx_Test_MText);\n MxFun.addCommand(\"Mx_Test_Text\", Mx_Test_Text);\n MxFun.addCommand(\"Mx_ParamDrawLine\", Mx_ParamDrawLine);\n MxFun.addCommand(\"Mx_Test_DimAligned\", Mx_Test_DimAligned);\n MxFun.addCommand(\"Mx_Test_DrawDimRotated\", Mx_Test_DrawDimRotated);\n MxFun.addCommand(\"Mx_Test_DrawDimRotatedTol\", Mx_Test_DrawDimRotatedTol);\n \n MxFun.addCommand(\"Mx_Test_DrawDimAngular\", Mx_Test_DrawDimAngular);\n MxFun.addCommand(\"Mx_Test_TrueText\", Mx_Test_TrueText);\n\n\n}\n","// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tvar output = Object( target );\n\n\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tvar source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nvar REVISION = '113';\nvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nvar TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar CullFaceFrontBack = 3;\nvar FrontFaceDirectionCW = 0;\nvar FrontFaceDirectionCCW = 1;\nvar BasicShadowMap = 0;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar VSMShadowMap = 3;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar FlatShading = 1;\nvar SmoothShading = 2;\nvar NoColors = 0;\nvar FaceColors = 1;\nvar VertexColors = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar Uncharted2ToneMapping = 3;\nvar CineonToneMapping = 4;\nvar ACESFilmicToneMapping = 5;\n\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar SphericalReflectionMapping = 305;\nvar CubeUVReflectionMapping = 306;\nvar CubeUVRefractionMapping = 307;\nvar RepeatWrapping = 1000;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipmapNearestFilter = 1004;\nvar NearestMipMapNearestFilter = 1004;\nvar NearestMipmapLinearFilter = 1005;\nvar NearestMipMapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipmapNearestFilter = 1007;\nvar LinearMipMapNearestFilter = 1007;\nvar LinearMipmapLinearFilter = 1008;\nvar LinearMipMapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedShort565Type = 1019;\nvar UnsignedInt248Type = 1020;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar RGBEFormat = RGBAFormat;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RedFormat = 1028;\nvar RedIntegerFormat = 1029;\nvar RGFormat = 1030;\nvar RGIntegerFormat = 1031;\nvar RGBIntegerFormat = 1032;\nvar RGBAIntegerFormat = 1033;\n\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar TrianglesDrawMode = 0;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar LinearEncoding = 3000;\nvar sRGBEncoding = 3001;\nvar GammaEncoding = 3007;\nvar RGBEEncoding = 3002;\nvar LogLuvEncoding = 3003;\nvar RGBM7Encoding = 3004;\nvar RGBM16Encoding = 3005;\nvar RGBDEncoding = 3006;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\n\nvar ZeroStencilOp = 0;\nvar KeepStencilOp = 7680;\nvar ReplaceStencilOp = 7681;\nvar IncrementStencilOp = 7682;\nvar DecrementStencilOp = 7683;\nvar IncrementWrapStencilOp = 34055;\nvar DecrementWrapStencilOp = 34056;\nvar InvertStencilOp = 5386;\n\nvar NeverStencilFunc = 512;\nvar LessStencilFunc = 513;\nvar EqualStencilFunc = 514;\nvar LessEqualStencilFunc = 515;\nvar GreaterStencilFunc = 516;\nvar NotEqualStencilFunc = 517;\nvar GreaterEqualStencilFunc = 518;\nvar AlwaysStencilFunc = 519;\n\nvar StaticDrawUsage = 35044;\nvar DynamicDrawUsage = 35048;\nvar StreamDrawUsage = 35040;\nvar StaticReadUsage = 35045;\nvar DynamicReadUsage = 35049;\nvar StreamReadUsage = 35041;\nvar StaticCopyUsage = 35046;\nvar DynamicCopyUsage = 35050;\nvar StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = listenerArray.slice( 0 );\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author thezwap\n */\n\nvar _lut = [];\n\nfor ( var i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nvar MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tvar d0 = Math.random() * 0xffffffff | 0;\n\t\tvar d1 = Math.random() * 0xffffffff | 0;\n\t\tvar d2 = Math.random() * 0xffffffff | 0;\n\t\tvar d3 = Math.random() * 0xffffffff | 0;\n\t\tvar uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range <a1, a2> to range <b1, b2>\n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from <low, high> interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from <low, high> interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c2 = cos( b / 2 );\n\t\tvar s2 = sin( b / 2 );\n\n\t\tvar c13 = cos( ( a + c ) / 2 );\n\t\tvar s13 = sin( ( a + c ) / 2 );\n\n\t\tvar c1_3 = cos( ( a - c ) / 2 );\n\t\tvar s1_3 = sin( ( a - c ) / 2 );\n\n\t\tvar c3_1 = cos( ( c - a ) / 2 );\n\t\tvar s3_1 = sin( ( c - a ) / 2 );\n\n\t\tif ( order === 'XYX' ) {\n\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\n\t\t} else if ( order === 'YZY' ) {\n\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\n\t\t} else if ( order === 'ZXZ' ) {\n\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\n\t\t} else if ( order === 'XZX' ) {\n\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\n\t\t} else if ( order === 'YXY' ) {\n\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\n\t\t} else if ( order === 'ZYZ' ) {\n\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order.' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( matrix && matrix.isMatrix4 ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tvar c = Math.cos( rotation );\n\t\tvar s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tvar c = Math.cos( theta );\n\t\tvar s = Math.sin( theta );\n\n\t\tvar te = this.elements;\n\n\t\tvar a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tvar a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar _canvas;\n\nvar ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tvar canvas;\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t} else if ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tvar context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tvar output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tvar url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( var i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c1 = cos( x / 2 );\n\t\tvar c2 = cos( y / 2 );\n\t\tvar c3 = cos( z / 2 );\n\n\t\tvar s1 = sin( x / 2 );\n\t\tvar s2 = sin( y / 2 );\n\t\tvar s3 = sin( z / 2 );\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar EPS = 0.000001;\n\n\t\tvar r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tvar angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tvar t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tvar s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nvar _vector = new Vector3();\nvar _quaternion = new Quaternion();\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( v ) {\n\n\t\tvar denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tvar scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( v ) {\n\n\t\tvar denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tvar theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tvar sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nvar _v1 = new Vector3();\nvar _m1 = new Matrix4();\nvar _zero = new Vector3( 0, 0, 0 );\nvar _one = new Vector3( 1, 1, 1 );\nvar _x = new Vector3();\nvar _y = new Vector3();\nvar _z = new Vector3();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function ( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tvar scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tvar scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tvar scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( eye, target, up ) {\n\n\t\tvar te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tvar te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tvar x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tvar sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tvar sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tvar sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tvar det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tvar invSX = 1 / sx;\n\t\tvar invSY = 1 / sy;\n\t\tvar invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nvar _matrix = new Matrix4();\nvar _quaternion$1 = new Quaternion();\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nvar _object3DId = 0;\n\nvar _v1$1 = new Vector3();\nvar _q1 = new Quaternion();\nvar _m1$1 = new Matrix4();\nvar _target = new Vector3();\n\nvar _position = new Vector3();\nvar _scale = new Vector3();\nvar _quaternion$2 = new Quaternion();\n\nvar _xAxis = new Vector3( 1, 0, 0 );\nvar _yAxis = new Vector3( 0, 1, 0 );\nvar _zAxis = new Vector3( 0, 0, 1 );\n\nvar _addedEvent = { type: 'added' };\nvar _removedEvent = { type: 'removed' };\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tvar parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tvar children = this.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tvar parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tvar shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tvar shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tvar uuids = [];\n\n\t\t\t\tfor ( var i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\t\t\tvar shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nvar _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nvar _vector$1 = new Vector3();\n\nvar _box = new Box3();\n\n// triangle centered vertices\n\nvar _v0 = new Vector3();\nvar _v1$2 = new Vector3();\nvar _v2 = new Vector3();\n\n// triangle edge vectors\n\nvar _f0 = new Vector3();\nvar _f1 = new Vector3();\nvar _f2 = new Vector3();\n\nvar _center = new Vector3();\nvar _extents = new Vector3();\nvar _triangleNormal = new Vector3();\nvar _testAxis = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tvar x = attribute.getX( i );\n\t\t\tvar y = attribute.getY( i );\n\t\t\tvar z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tvar halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function ( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.expandByPoint( _box.min );\n\t\t\tthis.expandByPoint( _box.max );\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: function ( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tvar axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tvar clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tvar i, j;\n\n\tfor ( i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tvar r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tvar p0 = v0.dot( _testAxis );\n\t\tvar p1 = v1.dot( _testAxis );\n\t\tvar p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nvar _box$1 = new Box3();\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tvar center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tvar maxRadiusSq = 0;\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nvar _vector$2 = new Vector3();\nvar _segCenter = new Vector3();\nvar _segDir = new Vector3();\nvar _diff = new Vector3();\n\nvar _edge1 = new Vector3();\nvar _edge2 = new Vector3();\nvar _normal = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tvar directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tvar directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tvar a01 = - this.direction.dot( _segDir );\n\t\tvar b0 = _diff.dot( this.direction );\n\t\tvar b1 = - _diff.dot( _segDir );\n\t\tvar c = _diff.lengthSq();\n\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\tvar s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t},\n\n\tintersectSphere: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tvar tca = _vector$2.dot( this.direction );\n\t\tvar d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tvar t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tvar t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tvar DdN = this.direction.dot( _normal );\n\t\tvar sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tvar DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tvar QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t},\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nvar _vector1 = new Vector3();\nvar _vector2 = new Vector3();\nvar _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function ( a, b, c ) {\n\n\t\tvar normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tvar direction = line.delta( _vector1 );\n\n\t\tvar denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( matrix, optionalNormalMatrix ) {\n\n\t\tvar normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tvar referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _v0$1 = new Vector3();\nvar _v1$3 = new Vector3();\nvar _v2$1 = new Vector3();\nvar _v3 = new Vector3();\n\nvar _vab = new Vector3();\nvar _vac = new Vector3();\nvar _vbc = new Vector3();\nvar _vap = new Vector3();\nvar _vbp = new Vector3();\nvar _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tvar targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t},\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function ( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tvar dot00 = _v0$1.dot( _v0$1 );\n\t\tvar dot01 = _v0$1.dot( _v1$3 );\n\t\tvar dot02 = _v0$1.dot( _v2$1 );\n\t\tvar dot11 = _v1$3.dot( _v1$3 );\n\t\tvar dot12 = _v1$3.dot( _v2$1 );\n\n\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tvar invDenom = 1 / denom;\n\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t},\n\n\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t},\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tvar a = this.a, b = this.b, c = this.c;\n\t\tvar v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tvar d1 = _vab.dot( _vap );\n\t\tvar d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tvar d3 = _vab.dot( _vbp );\n\t\tvar d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tvar vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tvar d5 = _vab.dot( _vcp );\n\t\tvar d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tvar vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tvar va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tvar denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t},\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nvar _hslA = { h: 0, s: 0, l: 0 };\nvar _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tvar hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tvar h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tvar s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tvar l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexTangents = false;\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function () {},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexTangents = source.vertexTangents;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: <float>,\n * refractionRatio: <float>,\n *\n * depthTest: <bool>,\n * depthWrite: <bool>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>\n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _vector$3 = new Vector3();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tfor ( var i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( var i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( var i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( var i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex = undefined;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tvar max = array[ 0 ];\n\n\tfor ( var i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nvar _m1$2 = new Matrix4();\nvar _obj = new Object3D();\nvar _offset = new Vector3();\nvar _box$2 = new Box3();\nvar _boxMorphTargets = new Box3();\nvar _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tvar tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tvar positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tvar position = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tvar position = this.attributes.position;\n\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tvar position = this.attributes.position;\n\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tvar morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( var j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.setAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tfor ( var i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeOffset = attribute2.itemSize * offset;\n\t\t\tvar length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( var i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar normals = this.attributes.normal;\n\n\t\tfor ( var i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.x = normals.getX( i );\n\t\t\t_vector$4.y = normals.getY( i );\n\t\t\t_vector$4.z = normals.getZ( i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = this.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar morphArray = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( var i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = morphAttribute[ i ];\n\n\t\t\t\tvar newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tvar groups = this.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar attributeData = attribute.toJSON();\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tvar morphAttributes = {};\n\t\tvar hasMorphAttributes = false;\n\n\t\tfor ( var key in this.morphAttributes ) {\n\n\t\t\tvar attributeArray = this.morphAttributes[ key ];\n\n\t\t\tvar array = [];\n\n\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = attributeArray[ i ];\n\n\t\t\t\tvar attributeData = attribute.toJSON();\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar name, i, l;\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = source.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone() );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nvar _inverseMatrix = new Matrix4();\nvar _ray = new Ray();\nvar _sphere = new Sphere();\n\nvar _vA = new Vector3();\nvar _vB = new Vector3();\nvar _vC = new Vector3();\n\nvar _tempA = new Vector3();\nvar _tempB = new Vector3();\nvar _tempC = new Vector3();\n\nvar _morphA = new Vector3();\nvar _morphB = new Vector3();\nvar _morphC = new Vector3();\n\nvar _uvA = new Vector2();\nvar _uvB = new Vector2();\nvar _uvC = new Vector2();\n\nvar _intersectionPoint = new Vector3();\nvar _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tvar geometry = this.geometry;\n\t\tvar material = this.material;\n\t\tvar matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tvar intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar a, b, c;\n\t\t\tvar index = geometry.index;\n\t\t\tvar position = geometry.attributes.position;\n\t\t\tvar morphPosition = geometry.morphAttributes.position;\n\t\t\tvar morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tvar uv = geometry.attributes.uv;\n\t\t\tvar uv2 = geometry.attributes.uv2;\n\t\t\tvar groups = geometry.groups;\n\t\t\tvar drawRange = geometry.drawRange;\n\t\t\tvar i, j, il, jl;\n\t\t\tvar group, groupMaterial;\n\t\t\tvar start, end;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\ta = index.getX( i );\n\t\t\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\ta = j;\n\t\t\t\t\t\t\tb = j + 1;\n\t\t\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\tend = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\ta = i;\n\t\t\t\t\t\tb = i + 1;\n\t\t\t\t\t\tc = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tvar fvA, fvB, fvC;\n\t\t\tvar isMultiMaterial = Array.isArray( material );\n\n\t\t\tvar vertices = geometry.vertices;\n\t\t\tvar faces = geometry.faces;\n\t\t\tvar uvs;\n\n\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tvar face = faces[ f ];\n\t\t\t\tvar faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tvar intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tvar distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tvar morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( var i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tvar influence = morphInfluences[ i ];\n\t\t\tvar morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tvar intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tvar face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nvar _geometryId = 0; // Geometry uses even numbers as Id\nvar _m1$3 = new Matrix4();\nvar _obj$1 = new Object3D();\nvar _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( var i = 0; i < positions.length; i += 3 ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromArray( positions, i ) );\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromArray( colors, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexColors = ( colors === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone() ];\n\n\t\t\tvar vertexNormals = ( normals === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromArray( normals, a * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, b * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, c * 3 )\n\t\t\t];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs2, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( var i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( var j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( var k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar i, il, j, jl, k, kl;\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargets = source.morphTargets;\n\n\t\tfor ( i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tvar morphNormals = source.morphNormals;\n\n\t\tfor ( i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tvar morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tvar destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tvar skinWeights = source.skinWeights;\n\n\t\tfor ( i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tvar skinIndices = source.skinIndices;\n\n\t\tfor ( i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tvar lineDistances = source.lineDistances;\n\n\t\tfor ( i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tvar scope = this;\n\n\t\twidth = width || 1;\n\t\theight = height || 1;\n\t\tdepth = depth || 1;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments ) || 1;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\t\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t\t// buffers\n\n\t\tvar indices = [];\n\t\tvar vertices = [];\n\t\tvar normals = [];\n\t\tvar uvs = [];\n\n\t\t// helper variables\n\n\t\tvar numberOfVertices = 0;\n\t\tvar groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tvar segmentWidth = width / gridX;\n\t\t\tvar segmentHeight = height / gridY;\n\n\t\t\tvar widthHalf = width / 2;\n\t\t\tvar heightHalf = height / 2;\n\t\t\tvar depthHalf = depth / 2;\n\n\t\t\tvar gridX1 = gridX + 1;\n\t\t\tvar gridY1 = gridY + 1;\n\n\t\t\tvar vertexCounter = 0;\n\t\t\tvar groupCount = 0;\n\n\t\t\tvar ix, iy;\n\n\t\t\tvar vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tvar dst = {};\n\n\tfor ( var u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( var p in src[ u ] ) {\n\n\t\t\tvar property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tvar merged = {};\n\n\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\tvar tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( var p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nvar UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: <string>,\n * vertexShader: <string>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * lights: <bool>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( var name in this.uniforms ) {\n\n\t\tvar uniform = this.uniforms[ name ];\n\t\tvar value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tvar extensions = {};\n\n\tfor ( var key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * var w = 1920;\n\t * var h = 1080;\n\t * var fullWidth = w * 3;\n\t * var fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, cubeResolution, options ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\toptions = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLCubeRenderTarget( cubeResolution, options );\n\tthis.renderTarget.texture.name = \"CubeCamera\";\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = texture.format;\n\tthis.texture.encoding = texture.encoding;\n\n\tvar scene = new Scene();\n\n\tvar shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\",\n\n\t\t\t\"\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\",\n\n\t\t\t\"}\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvWorldDirection = transformDirection( position, modelMatrix );\",\n\n\t\t\t\"\t#include <begin_vertex>\",\n\t\t\t\"\t#include <project_vertex>\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t\"uniform sampler2D tEquirect;\",\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"#define RECIPROCAL_PI 0.31830988618\",\n\t\t\t\"#define RECIPROCAL_PI2 0.15915494\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvec3 direction = normalize( vWorldDirection );\",\n\n\t\t\t\"\tvec2 sampleUV;\",\n\n\t\t\t\"\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\",\n\n\t\t\t\"\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\",\n\n\t\t\t\"\tgl_FragColor = texture2D( tEquirect, sampleUV );\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\t};\n\n\tvar material = new ShaderMaterial( {\n\n\t\ttype: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tvar mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tvar camera = new CubeCamera( 1, 10, 1 );\n\n\tcamera.renderTarget = this;\n\tcamera.renderTarget.texture.name = 'CubeCameraTexture';\n\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nvar _sphere$1 = new Sphere();\nvar _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromProjectionMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tvar context = null;\n\tvar isAnimating = false;\n\tvar animationLoop = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tif ( isAnimating === false ) return;\n\n\t\tanimationLoop( time, frame );\n\n\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tvar buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar usage = attribute.usage;\n\n\t\tvar buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tvar type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar ix, iy;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie(float roughness, float NoH) {\\n\\tfloat invAlpha = 1.0 / roughness;\\n\\tfloat cos2h = NoH * NoH;\\n\\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\\n}\\nfloat V_Neubelt(float NoV, float NoL) {\\n\\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\\n}\\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\\n\\tvec3 N = geometry.normal;\\n\\tvec3 V = geometry.viewDir;\\n\\tvec3 H = normalize( V + L );\\n\\tfloat dotNH = saturate( dot( N, H ) );\\n\\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\t#if ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\t\\tvarying vec3 vViewPosition;\\n\\t#endif\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define PI_HALF 1.5707963267949\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n return m[ 2 ][ 3 ] == - 1.0;\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x);\\n } else if (face == 1.0) {\\n uv = vec2(direction.x, -direction.z) / abs(direction.y);\\n } else if (face == 2.0) {\\n uv = direction.xy / abs(direction.z);\\n } else if (face == 3.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x);\\n } else if (face == 4.0) {\\n uv = direction.xz / abs(direction.y);\\n } else {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z);\\n }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\ttransformedNormal = mat3( instanceMatrix ) * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\tvec2 sampleUV;\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\\t\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) { \\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t\\tfloat shadowCameraNear;\\n\\t\\tfloat shadowCameraFar;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV;\\n\\t\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct ToonMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\\n#ifdef REFLECTIVITY\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#endif\\n#ifdef CLEARCOAT\\n\\tmaterial.clearcoat = saturate( clearcoat );\\tmaterial.clearcoatRoughness = max( clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheen;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n#ifdef CLEARCOAT\\n\\tfloat clearcoat;\\n\\tfloat clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tvec3 sheenColor;\\n#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = ccDotNL * directLight.color;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tccIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t\\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\\n\\t\\t\\tmaterial.specularRoughness,\\n\\t\\t\\tdirectLight.direction,\\n\\t\\t\\tgeometry,\\n\\t\\t\\tmaterial.sheenColor\\n\\t\\t);\\n\\t#else\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\\n\\t#endif\\n\\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t\\tfloat ccDotNL = ccDotNV;\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearcoatInv = 1.0 - clearcoatDHR;\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tdirectLight.color *= all( bvec3( pointLight.shadow, directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tdirectLight.color *= all( bvec3( spotLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectLight.color *= all( bvec3( directionalLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\\n\\t#ifdef CLEARCOAT\\n\\t\\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_normalmap_pars_fragment = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tshadow *= all( bvec2( directionalLight.shadow, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tshadow *= all( bvec2( spotLight.shadow, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tshadow *= all( bvec2( pointLight.shadow, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nuniform float toneMappingWhitePoint;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\\n}\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nvar cube_frag = \"#include <envmap_common_pars_fragment>\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar cube_vert = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\n\\t#endif\\n}\";\n\nvar depth_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n}\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV;\\n\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <color_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\tvLineDistance = scale * lineDistance;\\n\\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include <aomap_fragment>\\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar meshbasic_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_ENVMAP\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <emissivemap_fragment>\\n\\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include <lightmap_fragment>\\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <lights_lambert_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar meshtoon_frag = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <lights_toon_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_toon_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshtoon_vert = \"#define TOON\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define REFLECTIVITY\\n\\t#define CLEARCOAT\\n\\t#define TRANSPARENCY\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSPARENCY\\n\\tuniform float transparency;\\n#endif\\n#ifdef REFLECTIVITY\\n\\tuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <bsdfs>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <clearcoat_normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <roughnessmap_fragment>\\n\\t#include <metalnessmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <clearcoat_normal_fragment_begin>\\n\\t#include <clearcoat_normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_physical_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#ifdef TRANSPARENCY\\n\\t\\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\n\\t#endif\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshphysical_vert = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_particle_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nvar shadow_vert = \"#include <fog_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_normalmap_pars_fragment: clearcoat_normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0.5 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\ttransparency: { value: 0 },\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tvar clearColor = new Color( 0x000000 );\n\tvar clearAlpha = 0;\n\n\tvar planeMesh;\n\tvar boxMesh;\n\n\tvar currentBackground = null;\n\tvar currentBackgroundVersion = 0;\n\tvar currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tvar background = scene.background;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tvar xr = renderer.xr;\n\t\tvar session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tvar texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tvar extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tvar isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tvar maxTextures = gl.getParameter( 34930 );\n\tvar maxVertexTextures = gl.getParameter( 35660 );\n\tvar maxTextureSize = gl.getParameter( 3379 );\n\tvar maxCubemapSize = gl.getParameter( 34076 );\n\n\tvar maxAttributes = gl.getParameter( 34921 );\n\tvar maxVertexUniforms = gl.getParameter( 36347 );\n\tvar maxVaryings = gl.getParameter( 36348 );\n\tvar maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tvar maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info ) {\n\n\tvar geometries = new WeakMap();\n\tvar wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( var name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tvar attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tvar buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tvar index = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tfor ( var name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tvar indices = [];\n\n\t\tvar geometryIndex = geometry.index;\n\t\tvar geometryPosition = geometry.attributes.position;\n\t\tvar version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tvar array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\tattributes.update( attribute, 34963 );\n\n\t\t//\n\n\t\tvar previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tvar geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tvar extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tvar memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tvar render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tvar influencesList = {};\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tvar objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tvar length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tvar influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\tvar morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tvar morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\t// Remove current morphAttributes\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence[ 1 ] !== 0 ) {\n\n\t\t\t\tif ( morphTargets ) geometry.deleteAttribute( 'morphTarget' + i );\n\t\t\t\tif ( morphNormals ) geometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\t// Add morphAttributes\n\n\t\tvar morphInfluencesSum = 0;\n\n\t\tfor ( var i = 0; i < 8; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence ) {\n\n\t\t\t\tvar index = influence[ 0 ];\n\t\t\t\tvar value = influence[ 1 ];\n\n\t\t\t\tif ( value ) {\n\n\t\t\t\t\tif ( morphTargets ) geometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\t\t\t\t\tif ( morphNormals ) geometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tvar morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tvar updateList = {};\n\n\tfunction update( object ) {\n\n\t\tvar frame = info.render.frame;\n\n\t\tvar geometry = object.geometry;\n\t\tvar buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateList[ buffergeometry.id ] !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateList[ buffergeometry.id ] = frame;\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tvar texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nvar emptyTexture = new Texture();\nvar emptyTexture2dArray = new DataTexture2DArray();\nvar emptyTexture3d = new DataTexture3D();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nvar mat4array = new Float32Array( 16 );\nvar mat3array = new Float32Array( 9 );\nvar mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( var i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( var i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tvar cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map, next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tvar n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( var i = 0; i < n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tvar status = gl.getShaderParameter( shader, 35713 );\n\tvar log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tvar source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = 'Uncharted2';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tvar chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nvar includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tvar string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nvar loopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( loopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tvar string = '';\n\n\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tvar precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters ) {\n\n\tvar gl = renderer.getContext();\n\n\tvar defines = parameters.defines;\n\n\tvar vertexShader = parameters.vertexShader;\n\tvar fragmentShader = parameters.fragmentShader;\n\tvar shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tvar envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tvar envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tvar envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tvar customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tvar customDefines = generateDefines( defines );\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tvar numMultiviewViews = parameters.numMultiviewViews;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding || parameters.lightMapEncoding ) ?\n\t\t\t\tShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMapEncoding ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\tvar isGLSL3ShaderMaterial = false;\n\n\t\tvar versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( parameters.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t\t// Multiview\n\n\t\tif ( numMultiviewViews > 0 ) {\n\n\t\t\tprefixVertex = prefixVertex.replace(\n\t\t\t\t'#version 300 es\\n',\n\t\t\t\t[\n\t\t\t\t\t'#version 300 es\\n',\n\t\t\t\t\t'#extension GL_OVR_multiview2 : require',\n\t\t\t\t\t'layout(num_views = ' + numMultiviewViews + ') in;',\n\t\t\t\t\t'#define VIEW_ID gl_ViewID_OVR'\n\t\t\t\t].join( '\\n' )\n\t\t\t);\n\n\t\t\tprefixVertex = prefixVertex.replace(\n\t\t\t\t[\n\t\t\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t\t\t'uniform mat3 normalMatrix;'\n\t\t\t\t].join( '\\n' ),\n\t\t\t\t[\n\t\t\t\t\t'uniform mat4 modelViewMatrices[' + numMultiviewViews + '];',\n\t\t\t\t\t'uniform mat4 projectionMatrices[' + numMultiviewViews + '];',\n\t\t\t\t\t'uniform mat4 viewMatrices[' + numMultiviewViews + '];',\n\t\t\t\t\t'uniform mat3 normalMatrices[' + numMultiviewViews + '];',\n\n\t\t\t\t\t'#define modelViewMatrix modelViewMatrices[VIEW_ID]',\n\t\t\t\t\t'#define projectionMatrix projectionMatrices[VIEW_ID]',\n\t\t\t\t\t'#define viewMatrix viewMatrices[VIEW_ID]',\n\t\t\t\t\t'#define normalMatrix normalMatrices[VIEW_ID]'\n\t\t\t\t].join( '\\n' )\n\t\t\t);\n\n\t\t\tprefixFragment = prefixFragment.replace(\n\t\t\t\t'#version 300 es\\n',\n\t\t\t\t[\n\t\t\t\t\t'#version 300 es\\n',\n\t\t\t\t\t'#extension GL_OVR_multiview2 : require',\n\t\t\t\t\t'#define VIEW_ID gl_ViewID_OVR'\n\t\t\t\t].join( '\\n' )\n\t\t\t);\n\n\t\t\tprefixFragment = prefixFragment.replace(\n\t\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t\t[\n\t\t\t\t\t'uniform mat4 viewMatrices[' + numMultiviewViews + '];',\n\t\t\t\t\t'#define viewMatrix viewMatrices[VIEW_ID]'\n\t\t\t\t].join( '\\n' )\n\t\t\t);\n\n\t\t}\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tvar glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tvar programLog = gl.getProgramInfoLog( program ).trim();\n\t\tvar vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tvar runnable = true;\n\t\tvar haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tvar vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tvar fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\tthis.numMultiviewViews = numMultiviewViews;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities ) {\n\n\tvar programs = [];\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\tvar logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tvar floatVertexTextures = capabilities.floatVertexTextures;\n\tvar precision = capabilities.precision;\n\tvar maxVertexUniforms = capabilities.maxVertexUniforms;\n\tvar vertexTextures = capabilities.vertexTextures;\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\", \"numMultiviewViews\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\"\n\t];\n\n\tfunction getShaderObject( material, shaderID ) {\n\n\t\tvar shaderobject;\n\n\t\tif ( shaderID ) {\n\n\t\t\tvar shader = ShaderLib[ shaderID ];\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.type,\n\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.type,\n\t\t\t\tuniforms: material.uniforms,\n\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t};\n\n\t\t}\n\n\t\treturn shaderobject;\n\n\t}\n\n\tfunction allocateBones( object ) {\n\n\t\tvar skeleton = object.skeleton;\n\t\tvar bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar fog = scene.fog;\n\t\tvar environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tvar envMap = material.envMap || environment;\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar shaderobject = getShaderObject( material, shaderID );\n\t\tmaterial.onBeforeCompile( shaderobject, renderer );\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\t\tvar numMultiviewViews = currentRenderTarget && currentRenderTarget.isWebGLMultiviewRenderTarget ? currentRenderTarget.numViews : 0;\n\n\t\tvar parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: shaderobject.name,\n\n\t\t\tuniforms: shaderobject.uniforms,\n\t\t\tvertexShader: shaderobject.vertexShader,\n\t\t\tfragmentShader: shaderobject.fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\tnumMultiviewViews: numMultiviewViews,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || !! material.displacementMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.frawbuffers,\n\t\t\textensionDrawbuffers: material.extensions && material.extensions.drawbuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tonBeforeCompile: material.onBeforeCompile\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCacheKey = function ( parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( var name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.onBeforeCompile.toString() );\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( parameters, cacheKey ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function ( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tvar map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tvar renderItems = [];\n\tvar renderItemsIndex = 0;\n\n\tvar opaque = [];\n\tvar transparent = [];\n\n\tvar defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tvar lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar cameras = lists.get( scene );\n\t\tvar list;\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nvar nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tvar cache = new UniformsCache();\n\n\tvar state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\n\t\tnumDirectionalShadows: - 1,\n\t\tnumPointShadows: - 1,\n\t\tnumSpotShadows: - 1\n\n\t};\n\n\tfor ( var i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tvar vector3 = new Vector3();\n\tvar matrix4 = new Matrix4();\n\tvar matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tvar r = 0, g = 0, b = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tvar directionalLength = 0;\n\t\tvar pointLength = 0;\n\t\tvar spotLength = 0;\n\t\tvar rectAreaLength = 0;\n\t\tvar hemiLength = 0;\n\n\t\tvar numDirectionalShadows = 0;\n\t\tvar numPointShadows = 0;\n\t\tvar numSpotShadows = 0;\n\n\t\tvar viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tvar color = light.color;\n\t\t\tvar intensity = light.intensity;\n\t\t\tvar distance = light.distance;\n\n\t\t\tvar shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( var j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tuniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tuniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tvar hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tvar lights = new WebGLLights();\n\n\tvar lightsArray = [];\n\tvar shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tvar state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tvar renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>\n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: <float>,\n * nearDistance: <float>,\n * farDistance: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>\n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include <packing>\\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tvar _frustum = new Frustum(),\n\n\t\t_shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tvar shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tvar shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tvar shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tvar fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tvar fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tvar currentRenderTarget = _renderer.getRenderTarget();\n\t\tvar activeCubeFace = _renderer.getActiveCubeFace();\n\t\tvar activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tvar _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( var i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\t\t\tvar shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tvar shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has shadow exceeding max texture size, reducing' );\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tvar pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tvar viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( var vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tvar viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tvar geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tvar index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tvar material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tvar index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tvar material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar getMaterialVariant = getDepthMaterialVariant;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tif ( geometry.isBufferGeometry === true ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( geometry.isGeometry === true ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( 34921 );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar enabledCapabilities = {};\n\n\tvar currentProgram = null;\n\n\tvar currentBlendingEnabled = null;\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar maxTextures = gl.getParameter( 35661 );\n\n\tvar lineWidthAvailable = false;\n\tvar version = 0;\n\tvar glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tvar extension = isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tvar equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tvar extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tvar factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tvar flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tvar stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\tvar maxTextures = capabilities.maxTextures;\n\tvar maxCubemapSize = capabilities.maxCubemapSize;\n\tvar maxTextureSize = capabilities.maxTextureSize;\n\tvar maxSamples = capabilities.maxSamples;\n\n\tvar _videoTextures = new WeakMap();\n\tvar _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tvar useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tvar scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tvar floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tvar width = floor( scale * image.width );\n\t\t\t\tvar height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tvar canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tvar internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t} else if ( internalFormat === 34843 || internalFormat === 34837 ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultiviewRenderTarget ) {\n\n\t\t\t_gl.deleteTexture( renderTargetProperties.__webglColorTexture );\n\t\t\t_gl.deleteTexture( renderTargetProperties.__webglDepthStencilTexture );\n\n\t\t\tinfo.memory.textures -= 2;\n\n\t\t\tfor ( var i = 0, il = renderTargetProperties.__webglViewFramebuffers.length; i < il; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglViewFramebuffers[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tvar textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tvar textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tvar isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tvar isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tvar cubeImage = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tvar mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( var j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tvar mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( var j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tvar mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tvar mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( var j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tvar mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tvar wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tvar filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tvar textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tvar needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tvar image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tvar supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( isWebGL2 === false ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' );\n\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t} else if ( isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tglInternalFormat = 33189;\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\tvar glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 33189, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\tvar glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tvar isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tvar isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tvar isMultiview = ( renderTarget.isWebGLMultiviewRenderTarget === true );\n\t\tvar supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tvar glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( isMultiview ) {\n\n\t\t\t\tvar width = renderTarget.width;\n\t\t\t\tvar height = renderTarget.height;\n\t\t\t\tvar numViews = renderTarget.numViews;\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tvar ext = extensions.get( 'OVR_multiview2' );\n\n\t\t\t\tinfo.memory.textures += 2;\n\n\t\t\t\tvar colorTexture = _gl.createTexture();\n\t\t\t\t_gl.bindTexture( 35866, colorTexture );\n\t\t\t\t_gl.texParameteri( 35866, 10240, 9728 );\n\t\t\t\t_gl.texParameteri( 35866, 10241, 9728 );\n\t\t\t\t_gl.texImage3D( 35866, 0, 32856, width, height, numViews, 0, 6408, 5121, null );\n\t\t\t\text.framebufferTextureMultiviewOVR( 36160, 36064, colorTexture, 0, 0, numViews );\n\n\t\t\t\tvar depthStencilTexture = _gl.createTexture();\n\t\t\t\t_gl.bindTexture( 35866, depthStencilTexture );\n\t\t\t\t_gl.texParameteri( 35866, 10240, 9728 );\n\t\t\t\t_gl.texParameteri( 35866, 10241, 9728 );\n\t\t\t\t_gl.texImage3D( 35866, 0, 35056, width, height, numViews, 0, 34041, 34042, null );\n\t\t\t\text.framebufferTextureMultiviewOVR( 36160, 33306, depthStencilTexture, 0, 0, numViews );\n\n\t\t\t\tvar viewFramebuffers = new Array( numViews );\n\t\t\t\tfor ( var i = 0; i < numViews; ++ i ) {\n\n\t\t\t\t\tviewFramebuffers[ i ] = _gl.createFramebuffer();\n\t\t\t\t\t_gl.bindFramebuffer( 36160, viewFramebuffers[ i ] );\n\t\t\t\t\t_gl.framebufferTextureLayer( 36160, 36064, colorTexture, 0, i );\n\n\t\t\t\t}\n\n\t\t\t\trenderTargetProperties.__webglColorTexture = colorTexture;\n\t\t\t\trenderTargetProperties.__webglDepthStencilTexture = depthStencilTexture;\n\t\t\t\trenderTargetProperties.__webglViewFramebuffers = viewFramebuffers;\n\n\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\t\t\t\t_gl.bindTexture( 35866, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else if ( ! isMultiview ) {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\t\tvar supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tvar target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tvar width = renderTarget.width;\n\t\t\t\tvar height = renderTarget.height;\n\t\t\t\tvar mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tvar frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tvar warnedTexture2D = false;\n\tvar warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tvar isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author fernandojsg / http://fernandojsg.com\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction WebGLMultiviewRenderTarget( width, height, numViews, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.depthBuffer = false;\n\tthis.stencilBuffer = false;\n\n\tthis.numViews = numViews;\n\n}\n\nWebGLMultiviewRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultiviewRenderTarget,\n\n\tisWebGLMultiviewRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.numViews = source.numViews;\n\n\t\treturn this;\n\n\t},\n\n\tsetNumViews: function ( numViews ) {\n\n\t\tif ( this.numViews !== numViews ) {\n\n\t\t\tthis.numViews = numViews;\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author fernandojsg / http://fernandojsg.com\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction WebGLMultiview( renderer, gl ) {\n\n\tvar DEFAULT_NUMVIEWS = 2;\n\n\tvar extensions = renderer.extensions;\n\tvar properties = renderer.properties;\n\n\tvar renderTarget, currentRenderTarget;\n\tvar mat3, mat4, cameraArray, renderSize;\n\n\tvar available;\n\tvar maxNumViews = 0;\n\n\t//\n\n\tfunction isAvailable() {\n\n\t\tif ( available === undefined ) {\n\n\t\t\tvar extension = extensions.get( 'OVR_multiview2' );\n\n\t\t\tavailable = extension !== null && gl.getContextAttributes().antialias === false;\n\n\t\t\tif ( available ) {\n\n\t\t\t\tmaxNumViews = gl.getParameter( extension.MAX_VIEWS_OVR );\n\t\t\t\trenderTarget = new WebGLMultiviewRenderTarget( 0, 0, DEFAULT_NUMVIEWS );\n\n\t\t\t\trenderSize = new Vector2();\n\t\t\t\tmat4 = [];\n\t\t\t\tmat3 = [];\n\t\t\t\tcameraArray = [];\n\n\t\t\t\tfor ( var i = 0; i < maxNumViews; i ++ ) {\n\n\t\t\t\t\tmat4[ i ] = new Matrix4();\n\t\t\t\t\tmat3[ i ] = new Matrix3();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn available;\n\n\t}\n\n\tfunction getCameraArray( camera ) {\n\n\t\tif ( camera.isArrayCamera ) return camera.cameras;\n\n\t\tcameraArray[ 0 ] = camera;\n\n\t\treturn cameraArray;\n\n\t}\n\n\tfunction updateCameraProjectionMatricesUniform( camera, uniforms ) {\n\n\t\tvar cameras = getCameraArray( camera );\n\n\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tmat4[ i ].copy( cameras[ i ].projectionMatrix );\n\n\t\t}\n\n\t\tuniforms.setValue( gl, 'projectionMatrices', mat4 );\n\n\t}\n\n\tfunction updateCameraViewMatricesUniform( camera, uniforms ) {\n\n\t\tvar cameras = getCameraArray( camera );\n\n\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tmat4[ i ].copy( cameras[ i ].matrixWorldInverse );\n\n\t\t}\n\n\t\tuniforms.setValue( gl, 'viewMatrices', mat4 );\n\n\t}\n\n\tfunction updateObjectMatricesUniforms( object, camera, uniforms ) {\n\n\t\tvar cameras = getCameraArray( camera );\n\n\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tmat4[ i ].multiplyMatrices( cameras[ i ].matrixWorldInverse, object.matrixWorld );\n\t\t\tmat3[ i ].getNormalMatrix( mat4[ i ] );\n\n\t\t}\n\n\t\tuniforms.setValue( gl, 'modelViewMatrices', mat4 );\n\t\tuniforms.setValue( gl, 'normalMatrices', mat3 );\n\n\t}\n\n\tfunction isMultiviewCompatible( camera ) {\n\n\t\tif ( camera.isArrayCamera === undefined ) return true;\n\n\t\tvar cameras = camera.cameras;\n\n\t\tif ( cameras.length > maxNumViews ) return false;\n\n\t\tfor ( var i = 1, il = cameras.length; i < il; i ++ ) {\n\n\t\t\tif ( cameras[ 0 ].viewport.z !== cameras[ i ].viewport.z ||\n\t\t\t\tcameras[ 0 ].viewport.w !== cameras[ i ].viewport.w ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction resizeRenderTarget( camera ) {\n\n\t\tif ( currentRenderTarget ) {\n\n\t\t\trenderSize.set( currentRenderTarget.width, currentRenderTarget.height );\n\n\t\t} else {\n\n\t\t\trenderer.getDrawingBufferSize( renderSize );\n\n\t\t}\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tvar viewport = camera.cameras[ 0 ].viewport;\n\n\t\t\trenderTarget.setSize( viewport.z, viewport.w );\n\t\t\trenderTarget.setNumViews( camera.cameras.length );\n\n\t\t} else {\n\n\t\t\trenderTarget.setSize( renderSize.x, renderSize.y );\n\t\t\trenderTarget.setNumViews( DEFAULT_NUMVIEWS );\n\n\t\t}\n\n\t}\n\n\tfunction attachCamera( camera ) {\n\n\t\tif ( isMultiviewCompatible( camera ) === false ) return;\n\n\t\tcurrentRenderTarget = renderer.getRenderTarget();\n\t\tresizeRenderTarget( camera );\n\t\trenderer.setRenderTarget( renderTarget );\n\n\t}\n\n\tfunction detachCamera( camera ) {\n\n\t\tif ( renderTarget !== renderer.getRenderTarget() ) return;\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\tflush( camera );\n\n\t}\n\n\tfunction flush( camera ) {\n\n\t\tvar srcRenderTarget = renderTarget;\n\t\tvar numViews = srcRenderTarget.numViews;\n\n\t\tvar srcFramebuffers = properties.get( srcRenderTarget ).__webglViewFramebuffers;\n\n\t\tvar viewWidth = srcRenderTarget.width;\n\t\tvar viewHeight = srcRenderTarget.height;\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tfor ( var i = 0; i < numViews; i ++ ) {\n\n\t\t\t\tvar viewport = camera.cameras[ i ].viewport;\n\n\t\t\t\tvar x1 = viewport.x;\n\t\t\t\tvar y1 = viewport.y;\n\t\t\t\tvar x2 = x1 + viewport.z;\n\t\t\t\tvar y2 = y1 + viewport.w;\n\n\t\t\t\tgl.bindFramebuffer( 36008, srcFramebuffers[ i ] );\n\t\t\t\tgl.blitFramebuffer( 0, 0, viewWidth, viewHeight, x1, y1, x2, y2, 16384, 9728 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tgl.bindFramebuffer( 36008, srcFramebuffers[ 0 ] );\n\t\t\tgl.blitFramebuffer( 0, 0, viewWidth, viewHeight, 0, 0, renderSize.x, renderSize.y, 16384, 9728 );\n\n\t\t}\n\n\t}\n\n\tthis.isAvailable = isAvailable;\n\tthis.attachCamera = attachCamera;\n\tthis.detachCamera = detachCamera;\n\tthis.updateCameraProjectionMatricesUniform = updateCameraProjectionMatricesUniform;\n\tthis.updateCameraViewMatricesUniform = updateCameraViewMatricesUniform;\n\tthis.updateObjectMatricesUniforms = updateObjectMatricesUniforms;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer, gl ) {\n\n\tvar scope = this;\n\n\tvar session = null;\n\n\t// var framebufferScaleFactor = 1.0;\n\n\tvar referenceSpace = null;\n\tvar referenceSpaceType = 'local-floor';\n\n\tvar pose = null;\n\n\tvar controllers = [];\n\tvar inputSourcesMap = new Map();\n\n\t//\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tvar _currentDepthNear = null;\n\tvar _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = {};\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\tif ( controller.targetRay === undefined ) {\n\n\t\t\tcontroller.targetRay = new Group();\n\t\t\tcontroller.targetRay.matrixAutoUpdate = false;\n\t\t\tcontroller.targetRay.visible = false;\n\n\t\t}\n\n\t\treturn controller.targetRay;\n\n\t};\n\n\tthis.getControllerGrip = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = {};\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\tif ( controller.grip === undefined ) {\n\n\t\t\tcontroller.grip = new Group();\n\t\t\tcontroller.grip.matrixAutoUpdate = false;\n\t\t\tcontroller.grip.visible = false;\n\n\t\t}\n\n\t\treturn controller.grip;\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tvar controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tif ( controller.targetRay ) {\n\n\t\t\t\tcontroller.targetRay.dispatchEvent( { type: event.type } );\n\n\t\t\t}\n\n\t\t\tif ( controller.grip ) {\n\n\t\t\t\tcontroller.grip.dispatchEvent( { type: event.type } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tif ( controller.targetRay ) {\n\n\t\t\t\tcontroller.targetRay.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tcontroller.targetRay.visible = false;\n\n\t\t\t}\n\n\t\t\tif ( controller.grip ) {\n\n\t\t\t\tcontroller.grip.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tcontroller.grip.visible = false;\n\n\t\t\t}\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( /* value */ ) {\n\n\t\t// framebufferScaleFactor = value;\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tvar attributes = gl.getContextAttributes();\n\n\t\t\tvar layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tvar baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tvar inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( var i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tvar inputSource = event.removed[ i ];\n\t\t\tvar controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tif ( controller.targetRay ) {\n\n\t\t\t\t\tcontroller.targetRay.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t\tif ( controller.grip ) {\n\n\t\t\t\t\tcontroller.grip.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( var i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tvar inputSource = event.added[ i ];\n\t\t\tvar controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tif ( controller.targetRay ) {\n\n\t\t\t\t\tcontroller.targetRay.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t\tif ( controller.grip ) {\n\n\t\t\t\t\tcontroller.grip.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tvar cameraLPos = new Vector3();\n\tvar cameraRPos = new Vector3();\n\n\t/**\n\t * @author jsantell / https://www.jsantell.com/\n\t *\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tvar ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tvar projL = cameraL.projectionMatrix.elements;\n\t\tvar projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tvar near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tvar far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tvar topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tvar bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tvar leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tvar rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tvar left = near * leftFov;\n\t\tvar right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tvar zOffset = ipd / ( - leftFov + rightFov );\n\t\tvar xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tvar near2 = near + zOffset;\n\t\tvar far2 = far + zOffset;\n\t\tvar left2 = left - xOffset;\n\t\tvar right2 = right + ( ipd - xOffset );\n\t\tvar top2 = topFov * far / far2 * near2;\n\t\tvar bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tvar parent = camera.parent;\n\t\tvar cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tvar children = camera.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tvar views = pose.views;\n\t\t\tvar baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tfor ( var i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tvar view = views[ i ];\n\t\t\t\tvar viewport = baseLayer.getViewport( view );\n\n\t\t\t\tvar camera = cameraVR.cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar inputSources = session.inputSources;\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar inputSource = inputSources[ i ];\n\n\t\t\tvar inputPose = null;\n\t\t\tvar gripPose = null;\n\n\t\t\tif ( inputSource ) {\n\n\t\t\t\tif ( controller.targetRay ) {\n\n\t\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\t\tcontroller.targetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\t\tcontroller.targetRay.matrix.decompose( controller.targetRay.position, controller.targetRay.rotation, controller.targetRay.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( controller.grip && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tcontroller.grip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tcontroller.grip.matrix.decompose( controller.grip.position, controller.grip.rotation, controller.grip.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( controller.targetRay ) {\n\n\t\t\t\tcontroller.targetRay.visible = inputPose !== null;\n\n\t\t\t}\n\n\t\t\tif ( controller.grip ) {\n\n\t\t\t\tcontroller.grip.visible = gripPose !== null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tvar currentRenderList = null;\n\tvar currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t\t_isContextLost = false,\n\n\t\t// internal state cache\n\n\t\t_framebuffer = null,\n\n\t\t_currentActiveCubeFace = 0,\n\t\t_currentActiveMipmapLevel = 0,\n\t\t_currentRenderTarget = null,\n\t\t_currentFramebuffer = null,\n\t\t_currentMaterialId = - 1,\n\n\t\t// geometry and program caching\n\n\t\t_currentGeometryProgram = {\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false\n\t\t},\n\n\t\t_currentCamera = null,\n\t\t_currentArrayCamera = null,\n\n\t\t_currentViewport = new Vector4(),\n\t\t_currentScissor = new Vector4(),\n\t\t_currentScissorTest = null,\n\n\t\t//\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\t\t_opaqueSort = null,\n\t\t_transparentSort = null,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height ),\n\t\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t\t_scissorTest = false,\n\n\t\t// frustum\n\n\t\t_frustum = new Frustum(),\n\n\t\t// clipping\n\n\t\t_clipping = new WebGLClipping(),\n\t\t_clippingEnabled = false,\n\t\t_localClippingEnabled = false,\n\n\t\t// camera matrices cache\n\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_vector3 = new Vector3();\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat,\n\t\t\txrCompatible: true\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tvar extensions, capabilities, state, info;\n\tvar properties, textures, attributes, geometries, objects;\n\tvar programCache, renderLists, renderStates;\n\n\tvar background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tvar utils;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tvar xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// Multiview\n\n\tvar multiview = new WebGLMultiview( _this, _gl );\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tvar tempScene = new Scene();\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = tempScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tvar frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tvar program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\tvar updateBuffers = false;\n\n\t\tif ( _currentGeometryProgram.geometry !== geometry.id ||\n\t\t\t_currentGeometryProgram.program !== program.id ||\n\t\t\t_currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) {\n\n\t\t\t_currentGeometryProgram.geometry = geometry.id;\n\t\t\t_currentGeometryProgram.program = program.id;\n\t\t\t_currentGeometryProgram.wireframe = material.wireframe === true;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar attribute;\n\t\tvar renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, geometry, material, program );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( 34963, attribute.buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, geometry.maxInstancedCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( object, geometry, material, program ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\n\t\t\t\t\tvar attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tvar buffer = attribute.buffer;\n\t\t\t\t\tvar type = attribute.type;\n\t\t\t\t\tvar bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tvar attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tvar buffer = attribute.buffer;\n\t\t\t\t\tvar type = attribute.type;\n\n\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t_gl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\t_gl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\t_gl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\t_gl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tvar compiled = {};\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.material ) {\n\n\t\t\t\tif ( Array.isArray( object.material ) ) {\n\n\t\t\t\t\tfor ( var i = 0; i < object.material.length; i ++ ) {\n\n\t\t\t\t\t\tif ( object.material[ i ].uuid in compiled === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( object.material[ i ], scene, object );\n\t\t\t\t\t\t\tcompiled[ object.material[ i ].uuid ] = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.material.uuid in compiled === false ) {\n\n\t\t\t\t\tinitMaterial( object.material, scene, object );\n\t\t\t\t\tcompiled[ object.material.uuid ] = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\tanimation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tvar renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( ! ( camera && camera.isCamera ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost ) return;\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram.geometry = null;\n\t\t_currentGeometryProgram.program = null;\n\t\t_currentGeometryProgram.wireframe = false;\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled && xr.isPresenting ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tif ( xr.enabled && multiview.isAvailable() ) {\n\n\t\t\tmultiview.attachCamera( camera );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tvar opaqueObjects = currentRenderList.opaque;\n\t\tvar transparentObjects = currentRenderList.transparent;\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tscene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\tif ( xr.enabled ) {\n\n\t\t\tif ( multiview.isAvailable() ) {\n\n\t\t\t\tmultiview.detachCamera( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tif ( xr.enabled && multiview.isAvailable() ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar cameras = camera.cameras;\n\n\t\t\t\t\tfor ( var j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar camera2 = cameras[ j ];\n\n\t\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tvar program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\t_currentGeometryProgram.geometry = null;\n\t\t\t_currentGeometryProgram.program = null;\n\t\t\t_currentGeometryProgram.wireframe = false;\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar lights = currentRenderState.state.lights;\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tvar lightsStateVersion = lights.state.version;\n\n\t\tvar parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tvar programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.outputEncoding = _this.outputEncoding;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\ttextures.resetTextureUnits();\n\n\t\tvar fog = scene.fog;\n\t\tvar environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tvar materialProperties = properties.get( material );\n\t\tvar lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== _this.outputEncoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tif ( program.numMultiviewViews > 0 ) {\n\n\t\t\t\tmultiview.updateCameraProjectionMatricesUniform( camera, p_uniforms );\n\n\t\t\t} else {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\t}\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tif ( program.numMultiviewViews > 0 ) {\n\n\t\t\t\t\tmultiview.updateCameraViewMatricesUniform( camera, p_uniforms );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tvar bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tvar size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tvar boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tvar boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsToon( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material, environment );\n\n\t\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\t\trefreshUniformsPhysical( m_uniforms, material, environment );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsStandard( m_uniforms, material, environment );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsMatcap( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDepth( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDistance( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsNormal( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\t\trefreshUniformsSprites( m_uniforms, material );\n\n\t\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\t\tm_uniforms.color.value.copy( material.color );\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tif ( program.numMultiviewViews > 0 ) {\n\n\t\t\tmultiview.updateObjectMatricesUniforms( object, camera, p_uniforms );\n\n\t\t} else {\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\n\t\t}\n\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tvar envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tvar uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transparency.value = material.transparency;\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar framebuffer = _framebuffer;\n\t\tvar isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tvar levelScale = Math.pow( 2, - level );\n\t\tvar width = Math.floor( texture.image.width * levelScale );\n\t\tvar height = Math.floor( texture.image.height * levelScale );\n\t\tvar glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tvar width = srcTexture.image.width;\n\t\tvar height = srcTexture.image.height;\n\t\tvar glFormat = utils.convert( dstTexture.format );\n\t\tvar glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\t_gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t}\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nvar _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( var i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * map: new THREE.Texture( <Image> ),\n * alphaMap: new THREE.Texture( <Image> ),\n * rotation: <float>,\n * sizeAttenuation: <bool>\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar _geometry;\n\nvar _intersectPoint = new Vector3();\nvar _worldScale = new Vector3();\nvar _mvPosition = new Vector3();\n\nvar _alignedPosition = new Vector2();\nvar _rotatedPosition = new Vector2();\nvar _viewWorldMatrix = new Matrix4();\n\nvar _vA$1 = new Vector3();\nvar _vB$1 = new Vector3();\nvar _vC$1 = new Vector3();\n\nvar _uvA$1 = new Vector2();\nvar _uvB$1 = new Vector2();\nvar _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tvar float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tvar interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tvar rotation = this.material.rotation;\n\t\tvar sin, cos;\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tvar center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tvar intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\treturn this;\n\n\t}\n\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _v1$4 = new Vector3();\nvar _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tvar levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tvar levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = _v1$4.distanceTo( _v2$2 );\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tvar vector = new Vector4();\n\n\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( var i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tvar scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nvar _offsetMatrix = new Matrix4();\nvar _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone, i, il;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tvar bones = this.bones;\n\t\tvar boneInverses = this.boneInverses;\n\t\tvar boneMatrices = this.boneMatrices;\n\t\tvar boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( var i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tvar matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _instanceLocalMatrix = new Matrix4();\nvar _instanceWorldMatrix = new Matrix4();\n\nvar _instanceIntersects = [];\n\nvar _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tvar matrixWorld = this.matrixWorld;\n\t\tvar raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( var instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tif ( _instanceIntersects.length > 0 ) {\n\n\t\t\t\t_instanceIntersects[ 0 ].instanceId = instanceId;\n\t\t\t\t_instanceIntersects[ 0 ].object = this;\n\n\t\t\t\tintersects.push( _instanceIntersects[ 0 ] );\n\n\t\t\t\t_instanceIntersects.length = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * linewidth: <float>,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _start = new Vector3();\nvar _end = new Vector3();\nvar _inverseMatrix$1 = new Matrix4();\nvar _ray$1 = new Ray();\nvar _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tvar geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\tvar lineDistances = [ 0 ];\n\n\t\t\t\tfor ( var i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tvar vertices = geometry.vertices;\n\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( var i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tvar precision = raycaster.linePrecision;\n\n\t\tvar geometry = this.geometry;\n\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += precision;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tvar localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tvar localPrecisionSq = localPrecision * localPrecision;\n\n\t\tvar vStart = new Vector3();\n\t\tvar vEnd = new Vector3();\n\t\tvar interSegment = new Vector3();\n\t\tvar interRay = new Vector3();\n\t\tvar step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar index = geometry.index;\n\t\t\tvar attributes = geometry.attributes;\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tvar distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tvar distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tvar vertices = geometry.vertices;\n\t\t\tvar nbVertices = vertices.length;\n\n\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tvar distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _start$1 = new Vector3();\nvar _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tvar geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\tvar lineDistances = [];\n\n\t\t\t\tfor ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tvar vertices = geometry.vertices;\n\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( var i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n * map: new THREE.Texture( <Image> ),\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * size: <float>,\n * sizeAttenuation: <bool>\n *\n * morphTargets: <bool>\n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar _inverseMatrix$2 = new Matrix4();\nvar _ray$2 = new Ray();\nvar _sphere$3 = new Sphere();\nvar _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tvar geometry = this.geometry;\n\t\tvar matrixWorld = this.matrixWorld;\n\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tvar localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar index = geometry.index;\n\t\t\tvar attributes = geometry.attributes;\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar vertices = geometry.vertices;\n\n\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tvar rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tvar intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tvar video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar i, j, l, o, ol;\n\tvar edge = [ 0, 0 ], edges = {}, e, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\tvar vertex;\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( key in edges ) {\n\n\t\t\te = edges[ key ];\n\n\t\t\tvertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tvar position, indices, groups;\n\t\tvar group, start, count;\n\t\tvar index1, index2;\n\n\t\tvertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\t\t\tindices = geometry.index;\n\t\t\tgroups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tgroup = groups[ o ];\n\n\t\t\t\tstart = group.start;\n\t\t\t\tcount = group.count;\n\n\t\t\t\tfor ( i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge1 = indices.getX( i + j );\n\t\t\t\t\t\tedge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( key in edges ) {\n\n\t\t\t\te = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\n\t\t\tfor ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tindex1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tindex2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\tvar EPS = 0.00001;\n\n\tvar normal = new Vector3();\n\n\tvar p0 = new Vector3(), p1 = new Vector3();\n\tvar pu = new Vector3(), pv = new Vector3();\n\n\tvar i, j;\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tvar v = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tvar u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\tvar a = i * sliceCount + j;\n\t\t\tvar b = i * sliceCount + j + 1;\n\t\t\tvar c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tvar d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\tvar P = new Vector3();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, j;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.1.5)\n */\n\nvar Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tvar hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tvar minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( var i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tvar i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tvar p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tvar stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( ear, triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tvar p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tvar minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tvar minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tvar p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tvar p = start;\n\tdo {\n\n\t\tvar a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn p;\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tvar a = start;\n\tdo {\n\n\t\tvar b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tvar c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tvar queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tvar b = splitPolygon( outerNode, hole );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tvar p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tvar x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tvar stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m.next;\n\n\twhile ( p !== stop ) {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t}\n\n\treturn m;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tvar p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tvar i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tvar p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) &&\n\t\t locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b );\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tif ( ( equals( p1, p2 ) && equals( q1, q2 ) ) ||\n\t\t( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true;\n\treturn area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 &&\n\t\t area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tvar p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tvar p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tvar a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tvar p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tvar sum = 0;\n\tfor ( var i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tvar vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tvar holeIndices = []; // array of hole indices\n\t\tvar faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tvar holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( var i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tvar triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( var i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tvar l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( var i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: <int>, // number of points on the curves\n * steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: <float>, // Depth to extrude the shape\n *\n * bevelEnabled: <bool>, // turn on bevel\n * bevelThickness: <float>, // how deep into the original shape bevel goes\n * bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: <float>, // how far from shape outline does bevel start\n * bevelSegments: <int>, // number of bevel layers\n *\n * extrudePath: <THREE.Curve> // curve to extrude shape along\n *\n * UVGenerator: <Object> // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tvar scope = this;\n\n\tvar verticesArray = [];\n\tvar uvArray = [];\n\n\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tvar shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar placeholder = [];\n\n\t\t// options\n\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tvar steps = options.steps !== undefined ? options.steps : 1;\n\t\tvar depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tvar bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tvar extrudePath = options.extrudePath;\n\n\t\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tvar extrudePts, extrudeByPath = false;\n\t\tvar splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tvar ahole, h, hl; // looping of holes\n\n\t\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\t\tvar vertices = shapePoints.shape;\n\t\tvar holes = shapePoints.holes;\n\n\t\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tvar b, bs, t, z,\n\t\t\tvert, vlen = vertices.length,\n\t\t\tface, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tvar v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tvar v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tvar v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tvar direction_eq = false; // assumes: opposite\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tvar contourMovements = [];\n\n\t\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tvar holesMovements = [],\n\t\t\toneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tbs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tvar s;\n\n\t\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tvar layer = 0; // steps + 1\n\t\t\t\tvar offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\t\t\tvar layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tvar j, k;\n\t\t\ti = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tj = i;\n\t\t\t\tk = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tvar s = 0,\n\t\t\t\t\tsl = steps + bevelSegments * 2;\n\n\t\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nvar WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar a_z = vertices[ indexA * 3 + 2 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar b_z = vertices[ indexB * 3 + 2 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\t\tvar c_z = vertices[ indexC * 3 + 2 ];\n\t\tvar d_x = vertices[ indexD * 3 ];\n\t\tvar d_y = vertices[ indexD * 3 + 1 ];\n\t\tvar d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: <THREE.Font>, // font\n *\n * size: <float>, // size of the text\n * height: <float>, // thickness to extrude text\n * curveSegments: <int>, // number of points on the curves\n *\n * bevelEnabled: <bool>, // turn on bevel\n * bevelThickness: <float>, // how deep into text bevel goes\n * bevelSize: <float>, // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: <float> // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tvar ix, iy;\n\n\tvar index = 0;\n\tvar grid = [];\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tvar uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tvar u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tvar a = grid[ iy ][ ix + 1 ];\n\t\t\tvar b = grid[ iy ][ ix ];\n\t\t\tvar c = grid[ iy + 1 ][ ix ];\n\t\t\tvar d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// some helper variables\n\n\tvar segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tbase = segments * points.length * 3;\n\n\t\tfor ( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tvar edge = [ 0, 0 ], edges = {}, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tvar geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar sourceVertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tvar e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar index = 0;\n\tvar indexArray = [];\n\tvar halfHeight = height / 2;\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tvar a = indexArray[ y ][ x ];\n\t\t\t\tvar b = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, s;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: <THREE.Color>\n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: <hex>,\n * roughness: <float>,\n * metalness: <float>,\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * roughnessMap: new THREE.Texture( <Image> ),\n *\n * metalnessMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: <float>\n *\n * refractionRatio: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * reflectivity: <float>\n * clearcoat: <float>\n * clearcoatRoughness: <float>\n *\n * sheen: <Color>\n *\n * clearcoatNormalScale: <Vector2>,\n * clearcoatNormalMap: new THREE.Texture( <Image> ),\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatRoughness = 0.0;\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.transparency = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\n\tif ( source.sheen ) this.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\telse this.sheen = null;\n\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.transparency = source.transparency;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * specular: <hex>,\n * shininess: <float>,\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: <float>,\n * refractionRatio: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * color: <hex>,\n * specular: <hex>,\n * shininess: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n * gradientMap: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: <float>,\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: <float>,\n * refractionRatio: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * matcap: new THREE.Texture( <Image> ),\n *\n * map: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * linewidth: <float>,\n *\n * scale: <float>,\n * dashSize: <float>,\n * gapSize: <float>\n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tvar clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tvar track = clip.tracks[ i ];\n\t\t\tvar valueSize = track.getValueSize();\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\tfor ( var j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tvar frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( var k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tvar minStartTime = Infinity;\n\n\t\tfor ( var i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( var i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tvar s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to, 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor ( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tvar times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor ( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tvar times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tvar values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tvar TypedKeyframeTrack = this.constructor;\n\t\tvar track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tvar trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tvar times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || - 1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tvar tracks = this.tracks, duration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false;\n\tvar itemsLoaded = 0;\n\tvar itemsTotal = 0;\n\tvar urlModifier = undefined;\n\tvar handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tvar index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[ 1 ];\n\t\t\tvar isBase64 = !! dataUriRegexResult[ 2 ];\n\t\t\tvar data = dataUriRegexResult[ 3 ];\n\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tvar view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\tvar request = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = this.response;\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( var header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( value ) {\n\n\t\tthis.requestHeader = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tvar c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tvar t2 = t * t;\n\t\t\tvar t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nvar tmp = new Vector3();\nvar px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar points = this.points;\n\tvar l = points.length;\n\n\tvar p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tvar p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tvar pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tvar v0 = ( p2 - p0 ) * 0.5;\n\tvar v1 = ( p3 - p1 ) * 0.5;\n\tvar t2 = t * t;\n\tvar t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tvar k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( /* t */ ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar points = this.points;\n\tvar p = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tvar p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar p1 = points[ intPoint ];\n\tvar p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\n\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t},\n\n\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t// getPoint() depends on getLength\n\n\tgetLength: function () {\n\n\t\tvar lens = this.getCurveLengths();\n\t\treturn lens[ lens.length - 1 ];\n\n\t},\n\n\t// cacheLengths must be recalculated.\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.cacheLengths = null;\n\t\tthis.getCurveLengths();\n\n\t},\n\n\t// Compute lengths and cache them\n\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\tgetCurveLengths: function () {\n\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tvar lengths = [], sums = 0;\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t},\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 40;\n\n\t\tvar points = [];\n\n\t\tfor ( var i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tgetPoints: function ( divisions ) {\n\n\t\tdivisions = divisions || 12;\n\n\t\tvar points = [], last;\n\n\t\tfor ( var i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tvar curve = curves[ i ];\n\t\t\tvar resolution = ( curve && curve.isEllipseCurve ) ? divisions * 2\n\t\t\t\t: ( curve && ( curve.isLineCurve || curve.isLineCurve3 ) ) ? 1\n\t\t\t\t\t: ( curve && curve.isSplineCurve ) ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tvar pts = curve.getPoints( resolution );\n\n\t\t\tfor ( var j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tvar point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( var i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tvar shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tvar camera = this.camera;\n\n\t\tvar fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tvar camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( var name in json.uniforms ) {\n\n\t\t\t\tvar uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( var key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nvar LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tvar s = '';\n\n\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.maxInstancedCount = source.maxInstancedCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.maxInstancedCount = this.maxInstancedCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tvar data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\tvar bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\tvar bufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tvar morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( var key in morphAttributes ) {\n\n\t\t\t\tvar attributeArray = morphAttributes[ key ];\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar attribute = attributeArray[ i ];\n\t\t\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\t\t\tvar bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nvar TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar shapes = this.parseShape( json.shapes );\n\t\tvar geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tvar shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tif ( 'THREE' in window && 'LegacyJSONLoader' in THREE ) {\n\n\t\t\t\t\t\t\tvar geometryLoader = new THREE.LegacyJSONLoader();\n\t\t\t\t\t\t\tgeometry = geometryLoader.parse( data, this.resourcePath ).geometry;\n\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type \"Geometry\".' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar cache = {}; // MultiMaterial\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tvar array = [];\n\n\t\t\t\t\tfor ( var j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tvar material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar data = json[ i ];\n\n\t\t\tvar clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( var j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar currentUrl = url[ j ];\n\n\t\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tvar object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\tvar material = getMaterial( data.material );\n\t\t\t\tvar count = data.count;\n\t\t\t\tvar instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tvar levels = data.levels;\n\n\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tvar level = levels[ l ];\n\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nvar TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nvar TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nvar TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = undefined;\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\tif ( scope.options === undefined ) {\n\n\t\t\t\t// Workaround for FireFox. It causes an error if you pass options.\n\t\t\t\treturn createImageBitmap( blob );\n\n\t\t\t} else {\n\n\t\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t\t}\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tvar shapes = [];\n\t\tvar paths = createPaths( text, size, this.data );\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tvar chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tvar scale = size / data.resolution;\n\tvar line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tvar paths = [];\n\n\tvar offsetX = 0, offsetY = 0;\n\n\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\tvar char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tvar ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tvar glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tvar path = new ShapePath();\n\n\tvar x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\tvar action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _context;\n\nvar AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\tvar bufferCopy = buffer.slice( 0 );\n\n\t\t\tvar context = AudioContext.getContext();\n\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScale( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScale( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScale( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScale( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScale( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScale( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScale( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScale( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScale( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScale( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScale( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScale( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScale( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScale( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScale( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScale( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\n\tscale: function ( s ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar color1 = new Color().set( skyColor );\n\tvar color2 = new Color().set( groundColor );\n\n\tvar sky = new Vector3( color1.r, color1.g, color1.b );\n\tvar ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tvar c0 = Math.sqrt( Math.PI );\n\tvar c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nvar _eyeRight = new Matrix4();\nvar _eyeLeft = new Matrix4();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tvar cache = this._cache;\n\n\t\tvar needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tvar eyeSepHalf = cache.eyeSep / 2;\n\t\t\tvar eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tvar ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tvar xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _position$2 = new Vector3();\nvar _quaternion$3 = new Quaternion();\nvar _scale$1 = new Vector3();\nvar _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tvar listener = this.context.listener;\n\t\tvar up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tvar endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._pausedAt = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tvar source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._pausedAt + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis._pausedAt = ( this.context.currentTime - this._startedAt ) * this.playbackRate;\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._pausedAt = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _position$3 = new Vector3();\nvar _quaternion$4 = new Quaternion();\nvar _scale$2 = new Vector3();\nvar _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tvar panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tvar endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tbufferType = Array;\n\t\t\tmixFunction = this._select;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu<i>'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu<i>' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nvar _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nvar _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nvar _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nvar _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nvar _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nvar _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nvar _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nvar _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nvar _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nvar _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tvar matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tvar results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tvar lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tvar objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against a whitelist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tvar bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tvar searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length,\n\t\t\tknownObject = undefined;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\t\tvar duration = this._clip.duration;\n\t\tvar loop = this.loop;\n\t\tvar loopCount = this._loopCount;\n\n\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( var i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // polar angle\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nvar _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tvar halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tvar clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nvar _startP = new Vector3();\nvar _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tvar startEnd2 = _startEnd.dot( _startEnd );\n\t\tvar startEnd_startP = _startEnd.dot( _startP );\n\n\t\tvar t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nvar _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nvar _vector$9 = new Vector3();\nvar _boneMatrix = new Matrix4();\nvar _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tvar boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tvar bones = getBoneList( object );\n\n\tvar geometry = new BufferGeometry();\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar color1 = new Color( 0, 0, 1 );\n\tvar color2 = new Color( 0, 1, 0 );\n\n\tfor ( var i = 0; i < bones.length; i ++ ) {\n\n\t\tvar bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar bones = this.bones;\n\n\tvar geometry = this.geometry;\n\tvar position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( var i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tvar bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nvar _vector$a = new Vector3();\nvar _color1 = new Color();\nvar _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = VertexColors;\n\n\tvar position = geometry.getAttribute( 'position' );\n\tvar colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tvar colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( var i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tvar color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = size / divisions;\n\tvar halfSize = size / 2;\n\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {\n\n\tconstructor: GridHelper,\n\n\tcopy: function ( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.geometry.copy( source.geometry );\n\t\tthis.material.copy( source.material );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar x, z;\n\tvar v, i, j, r, color;\n\n\t// create the radials\n\n\tfor ( i = 0; i <= radials; i ++ ) {\n\n\t\tv = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tx = Math.sin( v ) * radius;\n\t\tz = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( i = 0; i <= circles; i ++ ) {\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tr = radius - ( radius / circles * i );\n\n\t\tfor ( j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tv = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nvar _v1$5 = new Vector3();\nvar _v2$3 = new Vector3();\nvar _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nvar _vector$b = new Vector3();\nvar _camera = new Camera();\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new BufferGeometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar colorFrustum = new Color( 0xffaa00 );\n\tvar colorCone = new Color( 0xff0000 );\n\tvar colorUp = new Color( 0x00aaff );\n\tvar colorTarget = new Color( 0xffffff );\n\tvar colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry = this.geometry;\n\tvar pointMap = this.pointMap;\n\n\tvar w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tvar points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nvar _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tvar min = _box$3.min;\n\tvar max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tvar position = this.geometry.attributes.position;\n\tvar array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tcolor = color || 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\tvar positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\tvar geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.type = 'PlaneHelper';\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\t//\n\n\tvar positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nvar _axis = new Vector3();\nvar _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tvar radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nArrowHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tvar colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author Emmett Lalish / elalish\n *\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nvar LOD_MIN = 4;\nvar LOD_MAX = 8;\nvar SIZE_MAX = Math.pow( 2, LOD_MAX );\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nvar EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\nvar TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nvar MAX_SAMPLES = 20;\nvar ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nvar _flatCamera = new OrthographicCamera();\nvar _blurMaterial = _getBlurShader( MAX_SAMPLES );\nvar _equirectShader = null;\nvar _cubemapShader = null;\n\nvar { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nvar _pingPongRenderTarget = null;\nvar _renderer = null;\n\nvar _oldTarget = null;\n\n// Golden Ratio\nvar PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nvar INV_PHI = 1 / PHI;\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nvar _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\nfunction PMREMGenerator( renderer ) {\n\n\t_renderer = renderer;\n\t_compileMaterial( _blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = _renderer.getRenderTarget();\n\t\tvar cubeUVRenderTarget = _allocateTargets();\n\t\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\t_blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\t\t_applyPMREM( cubeUVRenderTarget );\n\t\t_cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\tequirectangular.magFilter = NearestFilter;\n\t\tequirectangular.minFilter = NearestFilter;\n\t\tequirectangular.generateMipmaps = false;\n\n\t\treturn this.fromCubemap( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\t_oldTarget = _renderer.getRenderTarget();\n\t\tvar cubeUVRenderTarget = _allocateTargets( cubemap );\n\t\t_textureToCubeUV( cubemap, cubeUVRenderTarget );\n\t\t_applyPMREM( cubeUVRenderTarget );\n\t\t_cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( _cubemapShader == null ) {\n\n\t\t\t_cubemapShader = _getCubemapShader();\n\t\t\t_compileMaterial( _cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( _equirectShader == null ) {\n\n\t\t\t_equirectShader = _getEquirectShader();\n\t\t\t_compileMaterial( _equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\t_blurMaterial.dispose();\n\n\t\tif ( _cubemapShader != null ) _cubemapShader.dispose();\n\t\tif ( _equirectShader != null ) _equirectShader.dispose();\n\n\t\tfor ( var i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n};\n\nfunction _createPlanes() {\n\n\tvar _lodPlanes = [];\n\tvar _sizeLods = [];\n\tvar _sigmas = [];\n\n\tvar lod = LOD_MAX;\n\tfor ( var i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tvar sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tvar sigma = 1.0 / sizeLod;\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\t\t_sigmas.push( sigma );\n\n\t\tvar texelSize = 1.0 / ( sizeLod - 1 );\n\t\tvar min = - texelSize / 2;\n\t\tvar max = 1 + texelSize / 2;\n\t\tvar uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tvar cubeFaces = 6;\n\t\tvar vertices = 6;\n\t\tvar positionSize = 3;\n\t\tvar uvSize = 2;\n\t\tvar faceIndexSize = 1;\n\n\t\tvar position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tvar uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tvar faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( var face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tvar x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tvar y = face > 2 ? 0 : - 1;\n\t\t\tvar coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tvar fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\t\tvar planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _allocateTargets( equirectangular ) {\n\n\tvar params = {\n\t\tmagFilter: NearestFilter,\n\t\tminFilter: NearestFilter,\n\t\tgenerateMipmaps: false,\n\t\ttype: equirectangular ? equirectangular.type : UnsignedByteType,\n\t\tformat: equirectangular ? equirectangular.format : RGBEFormat,\n\t\tencoding: equirectangular ? equirectangular.encoding : RGBEEncoding,\n\t\tdepthBuffer: false,\n\t\tstencilBuffer: false\n\t};\n\tvar cubeUVRenderTarget = _createRenderTarget( params );\n\tcubeUVRenderTarget.depthBuffer = equirectangular ? false : true;\n\t_pingPongRenderTarget = _createRenderTarget( params );\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _cleanup( outputTarget ) {\n\n\t_pingPongRenderTarget.dispose();\n\t_renderer.setRenderTarget( _oldTarget );\n\toutputTarget.scissorTest = false;\n\t// reset viewport and scissor\n\toutputTarget.setSize( outputTarget.width, outputTarget.height );\n\n}\n\nfunction _sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\tvar fov = 90;\n\tvar aspect = 1;\n\tvar cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\tvar upSign = [ 1, 1, 1, 1, - 1, 1 ];\n\tvar forwardSign = [ 1, 1, - 1, - 1, - 1, 1 ];\n\n\tvar outputEncoding = _renderer.outputEncoding;\n\tvar toneMapping = _renderer.toneMapping;\n\tvar toneMappingExposure = _renderer.toneMappingExposure;\n\tvar clearColor = _renderer.getClearColor();\n\tvar clearAlpha = _renderer.getClearAlpha();\n\n\t_renderer.toneMapping = LinearToneMapping;\n\t_renderer.toneMappingExposure = 1.0;\n\t_renderer.outputEncoding = LinearEncoding;\n\tscene.scale.z *= - 1;\n\n\tvar background = scene.background;\n\tif ( background && background.isColor ) {\n\n\t\tbackground.convertSRGBToLinear();\n\t\t// Convert linear to RGBE\n\t\tvar maxComponent = Math.max( background.r, background.g, background.b );\n\t\tvar fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\tvar alpha = ( fExp + 128.0 ) / 255.0;\n\t\t_renderer.setClearColor( background, alpha );\n\t\tscene.background = null;\n\n\t}\n\n\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\tvar col = i % 3;\n\t\tif ( col == 0 ) {\n\n\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t} else if ( col == 1 ) {\n\n\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t} else {\n\n\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t}\n\t\t_setViewport( cubeUVRenderTarget,\n\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t_renderer.setRenderTarget( cubeUVRenderTarget );\n\t\t_renderer.render( scene, cubeCamera );\n\n\t}\n\n\t_renderer.toneMapping = toneMapping;\n\t_renderer.toneMappingExposure = toneMappingExposure;\n\t_renderer.outputEncoding = outputEncoding;\n\t_renderer.setClearColor( clearColor, clearAlpha );\n\tscene.scale.z *= - 1;\n\n}\n\nfunction _textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\tvar scene = new Scene();\n\tif ( texture.isCubeTexture ) {\n\n\t\tif ( _cubemapShader == null ) {\n\n\t\t\t_cubemapShader = _getCubemapShader();\n\n\t\t}\n\n\t} else {\n\n\t\tif ( _equirectShader == null ) {\n\n\t\t\t_equirectShader = _getEquirectShader();\n\n\t\t}\n\n\t}\n\tvar material = texture.isCubeTexture ? _cubemapShader : _equirectShader;\n\tscene.add( new Mesh( _lodPlanes[ 0 ], material ) );\n\tvar uniforms = material.uniforms;\n\n\tuniforms[ 'envMap' ].value = texture;\n\tif ( ! texture.isCubeTexture ) {\n\n\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t}\n\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\n\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\t_renderer.setRenderTarget( cubeUVRenderTarget );\n\t_renderer.render( scene, _flatCamera );\n\n}\n\nfunction _compileMaterial( material ) {\n\n\tvar tmpScene = new Scene();\n\ttmpScene.add( new Mesh( _lodPlanes[ 0 ], material ) );\n\t_renderer.compile( tmpScene, _flatCamera );\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tvar cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _applyPMREM( cubeUVRenderTarget ) {\n\n\tvar autoClear = _renderer.autoClear;\n\t_renderer.autoClear = false;\n\n\tfor ( var i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\tvar sigma = Math.sqrt(\n\t\t\t_sigmas[ i ] * _sigmas[ i ] -\n\t\t_sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\t\tvar poleAxis =\n\t\t_axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\t\t_blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t}\n\n\t_renderer.autoClear = autoClear;\n\n}\n\n/**\n * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n * vertically and horizontally, but this breaks down on a cube. Here we apply\n * the blur latitudinally (around the poles), and then longitudinally (towards\n * the poles) to approximate the orthogonally-separable blur. It is least\n * accurate at the poles, but still does a decent job.\n */\nfunction _blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t_halfBlur(\n\t\tcubeUVRenderTarget,\n\t\t_pingPongRenderTarget,\n\t\tlodIn,\n\t\tlodOut,\n\t\tsigma,\n\t\t'latitudinal',\n\t\tpoleAxis );\n\n\t_halfBlur(\n\t\t_pingPongRenderTarget,\n\t\tcubeUVRenderTarget,\n\t\tlodOut,\n\t\tlodOut,\n\t\tsigma,\n\t\t'longitudinal',\n\t\tpoleAxis );\n\n}\n\nfunction _halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\tconsole.error(\n\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t}\n\n\t// Number of standard deviations at which to cut off the discrete approximation.\n\tvar STANDARD_DEVIATIONS = 3;\n\n\tvar blurScene = new Scene();\n\tblurScene.add( new Mesh( _lodPlanes[ lodOut ], _blurMaterial ) );\n\tvar blurUniforms = _blurMaterial.uniforms;\n\n\tvar pixels = _sizeLods[ lodIn ] - 1;\n\tvar radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\tvar sigmaPixels = sigmaRadians / radiansPerPixel;\n\tvar samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\tif ( samples > MAX_SAMPLES ) {\n\n\t\tconsole.warn( `sigmaRadians, ${\n\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t}\n\n\tvar weights = [];\n\tvar sum = 0;\n\n\tfor ( var i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\tvar x = i / sigmaPixels;\n\t\tvar weight = Math.exp( - x * x / 2 );\n\t\tweights.push( weight );\n\n\t\tif ( i == 0 ) {\n\n\t\t\tsum += weight;\n\n\t\t} else if ( i < samples ) {\n\n\t\t\tsum += 2 * weight;\n\n\t\t}\n\n\t}\n\n\tfor ( var i = 0; i < weights.length; i ++ ) {\n\n\t\tweights[ i ] = weights[ i ] / sum;\n\n\t}\n\n\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\tblurUniforms[ 'samples' ].value = samples;\n\tblurUniforms[ 'weights' ].value = weights;\n\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\tif ( poleAxis ) {\n\n\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t}\n\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\tvar outputSize = _sizeLods[ lodOut ];\n\tvar x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\tvar y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) +\n\t2 * outputSize *\n\t\t( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t_renderer.setRenderTarget( targetOut );\n\t_renderer.render( blurScene, _flatCamera );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tvar weights = new Float32Array( maxSamples );\n\tvar poleAxis = new Vector3( 0, 1, 0 );\n\tvar shaderMaterial = new RawShaderMaterial( {\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n${_getEncodings()}\n\n#define ENVMAP_TYPE_CUBE_UV\n#include <cube_uv_reflection_fragment>\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tfor (int i = 0; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfor (int dir = -1; dir < 2; dir += 2) {\n\t\t\tif (i == 0 && dir == 1)\n\t\t\t\tcontinue;\n\t\t\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\t\t\tif (all(equal(axis, vec3(0.0))))\n\t\t\t\taxis = cross(vec3(0.0, 1.0, 0.0), vOutputDirection);\n\t\t\taxis = normalize(axis);\n\t\t\tfloat theta = dTheta * float(dir * i);\n\t\t\tfloat cosTheta = cos(theta);\n\t\t\t// Rodrigues' axis-angle rotation\n\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t\t\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\t\t\tgl_FragColor.rgb +=\n\t\t\t\t\tweights[i] * bilinearCubeUV(envMap, sampleDirection, mipInt);\n\t\t}\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\tshaderMaterial.type = 'SphericalGaussianBlur';\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tvar texelSize = new Vector2( 1, 1 );\n\tvar shaderMaterial = new RawShaderMaterial( {\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n${_getEncodings()}\n\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv;\n\tuv.y = asin(clamp(outputDirection.y, -1.0, 1.0)) * RECIPROCAL_PI + 0.5;\n\tuv.x = atan(outputDirection.z, outputDirection.x) * RECIPROCAL_PI2 + 0.5;\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\tshaderMaterial.type = 'EquirectangularToCubeUV';\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tvar shaderMaterial = new RawShaderMaterial( {\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n${_getEncodings()}\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\tshaderMaterial.type = 'CubemapToCubeUV';\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn `\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn `\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include <encodings_pars_fragment>\n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t`;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nvar LineStrip = 0;\n\nvar LinePieces = 1;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\n\t\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tvar scope = this;\n\t\t\tvar audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nvar GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tvar loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tvar loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SphericalReflectionMapping, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uncharted2ToneMapping, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGLCubeRenderTarget, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport * as THREE from \"three\";\r\nimport {\r\n McEdGetPointWorldDrawObject,\r\n MrxDbgUiPrPoint,\r\n MxDb2LineAngularDimension,\r\n MxDbAlignedDimension,\r\n MxDbCoord,\r\n MxFun,\r\n MxType\r\n} from \"mxdraw\";\r\nimport { MxCpp } from \"mxcad\";\r\n\r\nexport class MyAlignedDimension extends MxDbAlignedDimension {\r\n constructor() {\r\n super()\r\n }\r\n public getDimText(): string {\r\n var v2ndPtTo1stPt = new THREE.Vector3(this.point1.x - this.point2.x, this.point1.y - this.point2.y, 0);\r\n var fLen = v2ndPtTo1stPt.length()\r\n return fLen.toFixed(2)\r\n }\r\n\r\n public create() {\r\n return new MyAlignedDimension();\r\n }\r\n\r\n public getTypeName(): string {\r\n return this.constructor.name\r\n }\r\n}\r\n\r\nasync function Mx_Linear() {\r\n // 让用户在图上点取第一点.\r\n let myThis = this;\r\n const getPoint = new MrxDbgUiPrPoint();\r\n getPoint.setMessage(\"\\n指定第一点:\");\r\n getPoint.go((status) => {\r\n if (status != 0) {\r\n return;\r\n }\r\n const pt1 = getPoint.value();\r\n\r\n // 定义一个尺寸对象.\r\n //let dim = new MxDbAlignedDimension();\r\n let dim = new MyAlignedDimension();\r\n\r\n dim.setPoint1(pt1);\r\n dim.setColor(0xff22);\r\n\r\n // 在点取第二点时,设置动态绘制.\r\n const worldDrawComment = new McEdGetPointWorldDrawObject();\r\n worldDrawComment.setDraw((currentPoint: THREE.Vector3) => {\r\n // 动态绘制调用。\r\n dim.setPoint2(currentPoint);\r\n worldDrawComment.drawCustomEntity(dim);\r\n });\r\n\r\n getPoint.setBasePt(pt1);\r\n\r\n getPoint.setUseBasePt(true);\r\n getPoint.setUserDraw(worldDrawComment);\r\n getPoint.setMessage(\"\\n指定第二点:\");\r\n\r\n getPoint.setInputToucheType(MxType.InputToucheType.kGetEnd);\r\n getPoint.go((status) => {\r\n if (status != 0) {\r\n console.log(status);\r\n return;\r\n }\r\n\r\n // 成功取到第二点.\r\n const pt2 = getPoint.value();\r\n\r\n // 得到尺寸线的第二个点.\r\n dim.setPoint2(pt2);\r\n\r\n // 绘制自定义实体到图上.\r\n MxFun.getCurrentDraw().addMxEntity(dim);\r\n\r\n //计算长度.\r\n alert(\"测试长度是:\" + dim.getDimText());\r\n\r\n });\r\n });\r\n}\r\n\r\n// 测量角度\r\nfunction BR_AngleMeasure() {\r\n // 动态点对象 存储顶点数组\r\n const point = new MrxDbgUiPrPoint()\r\n // 绘制控件\r\n const mxDraw = MxFun.getCurrentDraw()\r\n\r\n const angleDim = new MxDb2LineAngularDimension()\r\n\r\n angleDim.color = MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor();\r\n // 开启连续点击\r\n const worldDraw = new McEdGetPointWorldDrawObject()\r\n worldDraw.setColor(MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor());\r\n point.setMessage(\"\\n指定第一点:\");\r\n point.go((status) => {\r\n if (status !== 0) {\r\n return\r\n }\r\n point.setMessage(\"\\n指定第二个角度点:\");\r\n angleDim.point1 = point.value()\r\n worldDraw.setDraw((currentPoint, pWorldDraw) => {\r\n angleDim.point2 = currentPoint\r\n pWorldDraw.drawLine(angleDim.point1, currentPoint)\r\n })\r\n point.setUserDraw(worldDraw)\r\n point.go((status) => {\r\n point.setMessage(\"\\n指定最后一个点:\");\r\n if (status !== 0) {\r\n return\r\n }\r\n angleDim.point2 = point.value()\r\n worldDraw.setDraw((currentPoint, pWorldDraw) => {\r\n angleDim.point3 = currentPoint\r\n worldDraw.drawCustomEntity(angleDim);\r\n })\r\n point.go((status) => {\r\n if (status !== 0) {\r\n return\r\n }\r\n mxDraw.addMxEntity(angleDim)\r\n })\r\n })\r\n })\r\n}\r\n\r\nfunction BR_CoordMeasure() {\r\n // 让用户在图上点取第一点.\r\n let myThis = this;\r\n const getPoint = new MrxDbgUiPrPoint();\r\n getPoint.setMessage(\"\\n指定坐标点:\");\r\n getPoint.go((status) => {\r\n if (status != 0) {\r\n return;\r\n }\r\n\r\n const pt1 = getPoint.value();\r\n\r\n let mxCoord = new MxDbCoord();\r\n mxCoord.point1 = pt1;\r\n mxCoord.point2 = pt1.clone();\r\n mxCoord.color = MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor();\r\n \r\n getPoint.setBasePt(pt1);\r\n getPoint.setUseBasePt(true);\r\n\r\n getPoint.setUserDraw((curPoint, pWorldDraw) => {\r\n mxCoord.point2 = curPoint;\r\n pWorldDraw.drawCustomEntity(mxCoord);\r\n });\r\n\r\n getPoint.setMessage(\"\\n指定标注点:\");\r\n\r\n getPoint.go((status) => {\r\n if (status != 0) {\r\n console.log(status);\r\n return;\r\n }\r\n mxCoord.point2 = getPoint.value();\r\n MxFun.addToCurrentSpace(mxCoord);\r\n });\r\n });\r\n}\r\n\r\n\r\nexport function init() {\r\n new MyAlignedDimension().rxInit();\r\n MxFun.addCommand(\"Mx_Linear\", Mx_Linear);\r\n MxFun.addCommand(\"BR_AngleMeasure\", BR_AngleMeasure);\r\n MxFun.addCommand(\"BR_CoordMeasure\", BR_CoordMeasure);\r\n\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { \r\n MxFun\r\n} from \"mxdraw\";\r\nimport { McDbBlockReference, McDbPolyline, MxCADResbuf, MxCADUiPrEntity } from \"mxcad\";\r\nimport { McGePoint3dToString } from \".\";\r\n\r\nasync function MxTest_SelectEntity() {\r\n let getEnt = new MxCADUiPrEntity();\r\n getEnt.setMessage(\"select entity:\");\r\n let id = await getEnt.go();\r\n let ent = id.getMcDbEntity();\r\n if (ent === null) return;\r\n\r\n console.log(\"ent.objectName\",ent.objectName);\r\n if (ent instanceof McDbBlockReference) {\r\n let blkRef: McDbBlockReference = ent;\r\n let retExplode: MxCADResbuf = blkRef.explode();\r\n if (retExplode.GetCount() == 0) return;\r\n let iExplodeConut = retExplode.GetCount();\r\n for (let j = 0; j < iExplodeConut; j++) {\r\n let tmpobj = retExplode.AtObject(j).val;\r\n if(tmpobj instanceof McDbPolyline){\r\n let polyline:McDbPolyline = tmpobj;\r\n let num = polyline.numVerts();\r\n for (let i = 0; i < num; i++) {\r\n let pt = polyline.getPointAt(i);\r\n let bulge = polyline.getBulgeAt(i);\r\n console.log(\"polyline.pt\" + i + \":\" + McGePoint3dToString(pt.val));\r\n console.log(\"polyline.bulge\" + i + \":\" + bulge);\r\n }\r\n }\r\n }\r\n }\r\n else if(ent instanceof McDbPolyline){\r\n let polyline:McDbPolyline = ent;\r\n let num = polyline.numVerts();\r\n for (let i = 0; i < num; i++) {\r\n let pt = polyline.getPointAt(i);\r\n let bulge = polyline.getBulgeAt(i);\r\n console.log(\"polyline.pt\" + i + \":\" + McGePoint3dToString(pt.val));\r\n console.log(\"polyline.bulge\" + i + \":\" + bulge);\r\n }\r\n }\r\n}\r\n\r\nexport function init() {\r\n MxFun.addCommand(\"MxTest_SelectEntity\", MxTest_SelectEntity);\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nimport { ColorIndexType, McCmColor, McDb, McGePoint3d, McGeVector3d, McObject, MxCpp } from \"mxcad\";\nexport class MxDrawTableData {\n public m_aryColumn: { name: string, w: number }[] = [];\n public m_allData: string[][] = [];\n\n public m_dColumnHeight: number = 14;\n public m_dRowHeight: number = 10;\n\n public m_dRowLineWdith: number = 0.0;\n public m_dColumnLineWidth: number = 0.5;\n\n public m_dRowTextHeight: number = 6;\n public m_dColumnTextHeight: number = 10;\n\n public addColumn(sName: string, dW: number) {\n this.m_aryColumn.push({ name: sName, w: dW });\n }\n\n public addRow(ary: string[]) {\n this.m_allData.push(ary);\n }\n};\n\nexport class MxDrawTable {\n public data: MxDrawTableData = new MxDrawTableData;\n public pt: McGePoint3d = new McGePoint3d;\n public dScale: number = 1.0;\n public mxcad: McObject = MxCpp.getCurrentMxCAD();\n\n public draw(pt: McGePoint3d, dScale: number): boolean {\n this.pt = pt;\n this.dScale = dScale;\n if (this.data.m_aryColumn.length == 0)\n return false;\n if (this.data.m_allData.length == 0)\n return false;\n this.DrawTableHead();\n\n this.DrawContent();\n return true;\n }\n\n private DrawTableHead() {\n let m_data = this.data;\n let m_instPt = this.pt.clone();\n let curPt = this.pt.clone();\n let vecTmp = new McGeVector3d(0, 1, 0).mult(this.Scale(this.data.m_dColumnHeight))\n console.log(vecTmp)\n let dLineWidth = this.Scale(this.data.m_dColumnLineWidth);\n\n let dAllW = 0.0;\n let kXAxis = new McGeVector3d(1, 0, 0);\n for (let i = 0; i < m_data.m_aryColumn.length; i++) {\n let col = m_data.m_aryColumn[i];\n this.DrawLine(curPt, curPt.clone().subvec(vecTmp), dLineWidth);\n this.DrawMCText(curPt.clone().addvec(kXAxis.clone().mult(this.Scale(col.w) * 0.5)).subvec(vecTmp.clone().mult(0.5)), col.name, this.Scale(m_data.m_dColumnTextHeight));\n curPt.addvec(kXAxis.clone().mult(this.Scale(col.w)));\n dAllW += this.Scale(col.w);\n }\n this.DrawLine(curPt, curPt.clone().subvec(vecTmp), dLineWidth);\n this.DrawLine(m_instPt, m_instPt.clone().addvec(kXAxis.clone().mult(dAllW)), dLineWidth);\n this.DrawLine(m_instPt.clone().subvec(vecTmp), m_instPt.addvec(kXAxis.clone().mult(dAllW)).subvec(vecTmp), dLineWidth);\n return true;\n }\n\n private DrawContent() {\n\n let m_data = this.data;\n let m_instPt = this.pt;\n\n\n let dAllW = 0.0;\n for (let i = 0; i < m_data.m_aryColumn.length; i++) {\n dAllW += this.Scale(m_data.m_aryColumn[i].w);\n }\n let dLineWidth = this.Scale(this.data.m_dRowLineWdith);\n\n let kXAxis = new McGeVector3d(1, 0, 0);\n let kYAxis = new McGeVector3d(0, 1, 0);\n let instPt = m_instPt.clone().subvec(kYAxis.clone().mult(this.Scale(m_data.m_dColumnHeight)));\n let vecTmp = kYAxis.clone().mult(this.Scale(m_data.m_dRowHeight));\n\n for (let i = 0; i < m_data.m_allData.length; i++) {\n let curPt = instPt.clone();\n\n for (let j = 0; j < m_data.m_aryColumn.length; j++) {\n let col = m_data.m_aryColumn[j];\n this.DrawLine(curPt, curPt.clone().subvec(vecTmp), dLineWidth);\n this.DrawMCText(curPt.clone().addvec(kXAxis.clone().mult(this.Scale(col.w * 0.5))).subvec(vecTmp.clone().mult(0.5)), m_data.m_allData[i][j], this.Scale(m_data.m_dRowTextHeight));\n curPt.addvec(kXAxis.clone().mult(this.Scale(col.w)));\n }\n this.DrawLine(curPt, curPt.clone().subvec(vecTmp), dLineWidth);\n this.DrawLine(instPt, instPt.clone().addvec(kXAxis.clone().mult(dAllW)), dLineWidth);\n this.DrawLine(instPt.clone().subvec(vecTmp), instPt.clone().addvec(kXAxis.clone().mult(dAllW)).subvec(vecTmp), dLineWidth);\n instPt.subvec(vecTmp);\n }\n return true;\n }\n\n private DrawLine(pt1: McGePoint3d, pt2: McGePoint3d, dLineWidth: number) {\n this.mxcad.drawLineWidth = dLineWidth;\n this.mxcad.drawColorIndex = ColorIndexType.kMagenta;\n this.mxcad.drawLine(pt1.x, pt1.y, pt2.x, pt2.y);\n }\n\n private DrawMCText(pt1: McGePoint3d, sTxt: string, dTextHeight: number) {\n this.mxcad.drawColorIndex = 0;\n this.mxcad.drawColor = new McCmColor(0,255,0);\n this.mxcad.drawText(pt1.x, pt1.y, sTxt, dTextHeight, 0,McDb.TextHorzMode.kTextMid,McDb.TextVertMode.kTextVertMid);\n }\n\n private Scale(dL: number): number {\n return dL * this.dScale;\n }\n};\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '&lt;'; break;\n case '>': escaped += '&gt;'; break;\n case '&': escaped += '&amp;'; break;\n case '\"': escaped += '&quot;'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nimport * as THREE from \"three\";\nimport {\n MrxDbgUiPrPoint,\n MxDbImage,\n MxFun,\n MxType\n} from \"mxdraw\";\nimport { ColorIndexType, McCmColor, McDbAlignedDimension, McDbArc, McDbAttribute, McDbAttributeDefinition, McDbBlockReference, McDbCircle, McDbDictionary, McDbDimension, McDbEntity, McDbHatch, McDbLayerTableRecord, McDbLine, McDbMText, McDbPolyline, McDbRasterImage, McDbRotatedDimension, McDbText, McDbTextStyleTableRecord, McDbXrecord, McGePoint3d, McObject, McObjectId, McObjectIdType, MxCADResbuf, MxCADSelectionSet, MxCADUI, MxCADUiPrEntity, MxCADUiPrPoint, MxCompare, MxCpp, MxModifyColor, MxTools } from \"mxcad\";\nimport { MxDrawTable } from \"./drawTable\";\nimport QRCode from 'qrcode-generator';\nimport { McGePoint3dToString, getMxCADUi } from \".\";\n\n\nfunction McDbEntityToJsonObject(ent: McDbEntity): object {\n let obj: any = {}\n obj.ObjectName = ent.objectName;\n\n\n obj.id = ent.getObjectID().id;\n obj.handle = ent.getHandle();\n obj.layer = ent.layer;\n obj.color = ent.trueColor.getColorString();\n obj.colorVal = ent.trueColor.getColorValue(ent.layerId);\n obj.linetype = ent.linetype;\n obj.textStyle = ent.textStyle;\n obj.type = ent.objectName;\n obj.dxf0 = ent.dxf0;\n\n if (ent instanceof McDbText) {\n let txt = (ent as McDbText);\n \n obj.position = McGePoint3dToString(txt.position);\n obj.textString = txt.textString;\n }\n else if (ent instanceof McDbMText) {\n let mtxt = (ent as McDbMText);\n obj.contents = mtxt.contents;\n obj.location = McGePoint3dToString(mtxt.location);\n }\n else if (ent instanceof McDbLine) {\n let line = (ent as McDbLine);\n obj.startPoint = McGePoint3dToString(line.startPoint);\n obj.endPoint = McGePoint3dToString(line.endPoint);\n }\n else if (ent instanceof McDbCircle) {\n let circle = (ent as McDbCircle);\n obj.center = McGePoint3dToString(circle.center);\n obj.radius = circle.radius;\n }\n else if (ent instanceof McDbArc) {\n let arc = (ent as McDbArc);\n obj.center = McGePoint3dToString(arc.center);\n obj.startAngle = arc.startAngle;\n obj.endAngle = arc.endAngle;\n }\n else if (ent instanceof McDbPolyline) {\n let polyline = (ent as McDbPolyline);\n let num = polyline.numVerts();\n obj.num = num;\n for (let i = 0; i < num; i++) {\n let pt = polyline.getPointAt(i);\n let bulge = polyline.getBulgeAt(i);\n obj[\"pt\" + i] = McGePoint3dToString(pt.val);\n obj[\"bulge\" + i] = bulge;\n }\n }\n else if (ent instanceof McDbBlockReference) {\n let blkRef = (ent as McDbBlockReference);\n obj.position = McGePoint3dToString(blkRef.position);\n obj.blockTransform = blkRef.blockTransform;\n obj.blockName = blkRef.blockName;\n //getBlockReferenceEntitys(blkRef);\n }\n else if (ent instanceof McDbAlignedDimension) {\n let alignedDim = (ent as McDbAlignedDimension);\n obj.xLine1Point = McGePoint3dToString(alignedDim.xLine1Point);\n obj.xLine2Point = McGePoint3dToString(alignedDim.xLine2Point);\n let txts = alignedDim.GetAllText();\n txts.forEach((val, index) => {\n obj[\"txt:\" + index] = val;\n });\n }\n else if (ent instanceof McDbRotatedDimension) {\n let rotatedDim = (ent as McDbRotatedDimension);\n obj.xLine1Point = McGePoint3dToString(rotatedDim.xLine1Point);\n obj.xLine2Point = McGePoint3dToString(rotatedDim.xLine2Point);\n let txts = rotatedDim.GetAllText();\n txts.forEach((val, index) => {\n obj[\"txt:\" + index] = val;\n });\n }\n else if (ent instanceof McDbDimension) {\n let dim = (ent as McDbDimension);\n let txts = dim.GetAllText();\n txts.forEach((val, index) => {\n obj[\"txt:\" + index] = val;\n });\n }\n else if (ent instanceof McDbHatch) {\n let hatch = (ent as McDbHatch);\n obj.patternType = hatch.patternType();\n obj.patternName = hatch.patternName();\n obj.patternAngle = hatch.patternAngle;\n obj.patternScale = hatch.patternScale;\n obj.patternSpace = hatch.patternSpace;\n obj.patternDouble = hatch.patternDouble;\n obj.hatchStyle = hatch.hatchStyle();\n obj.isSolid = hatch.isSolid();\n obj.numLoops = hatch.numLoops;\n for (let i = 0; i < obj.numLoops; i++) {\n let loop: any = hatch.getLoopAt(i);\n loop.vertices.forEach((val: any, inidex: number) => {\n loop[\"pt:\" + inidex] = {};\n loop[\"pt:\" + inidex].x = val.x;\n loop[\"pt:\" + inidex].y = val.y;\n loop[\"pt:\" + inidex].z = val.z;\n })\n obj[\"loop:\" + i] = loop;\n };\n obj.numPatternDefinitions = hatch.numPatternDefinitions;\n for (let i = 0; i < obj.numPatternDefinitions; i++) {\n obj[\"patternDefinitions:\" + i] = hatch.getPatternDefinitionAt(i);\n };\n }\n else if (ent instanceof McDbRasterImage) {\n let image = (ent as McDbRasterImage);\n let orientation = image.getOrientation();\n obj.orientation = {};\n obj.orientation.origin = orientation.origin.toVector3();\n obj.orientation.uCorner = orientation.uCorner.toVector3();\n obj.orientation.vOnPlane = orientation.vOnPlane.toVector3();\n\n let clipBoundary = image.clipBoundary();\n obj.clipBoundary = {};\n clipBoundary.forEach((pt, index) => {\n obj.clipBoundary[\"pt\" + index] = pt.toVector3();\n });\n\n obj.clipBoundaryType = image.clipBoundaryType();\n\n let imageDef = image.imageDefId().getMcDbRasterImageDef();\n if (imageDef) {\n obj.filePath = imageDef.sourceFileName;\n }\n }\n //...\n\n return obj;\n}\n\nfunction getBlockReferenceEntitys(blkRef: McDbBlockReference) {\n\n let blkRecrod = blkRef.blockTableRecordId.getMcDbBlockTableRecord();\n if (!blkRecrod) return;\n let aryId = blkRecrod.getAllEntityId();\n aryId.forEach((id) => {\n let ent: any = id.getMcDbEntity();\n if (!ent) return;\n ent = McDbEntityToJsonObject(ent);\n console.log(JSON.stringify(ent));\n })\n}\n\nasync function TestGetAllEntity() {\n\n let ss = new MxCADSelectionSet();\n ss.allSelect();\n ss.forEach((id) => {\n let ent: any = id.getMcDbEntity();\n if (!ent) return;\n ent = McDbEntityToJsonObject(ent);\n console.log(JSON.stringify(ent));\n })\n}\n\n// 下面的代码,是得到0层上的填充对象.\nasync function TestGentEntityOnLayer() {\n let ss = new MxCADSelectionSet();\n let filter = new MxCADResbuf();\n filter.AddString(\"0\", 8);\n ss.allSelect(filter);\n ss.forEach((id) => {\n let ent: any = id.getMcDbEntity();\n if (!ent) return;\n if (ent instanceof McDbHatch) {\n let obj: any = {};\n let hatch = (ent as McDbHatch);\n obj.patternType = hatch.patternType();\n obj.patternName = hatch.patternName();\n obj.patternAngle = hatch.patternAngle;\n obj.patternScale = hatch.patternScale;\n obj.patternSpace = hatch.patternSpace;\n obj.patternDouble = hatch.patternDouble;\n obj.hatchStyle = hatch.hatchStyle();\n obj.isSolid = hatch.isSolid();\n obj.numLoops = hatch.numLoops;\n for (let i = 0; i < obj.numLoops; i++) {\n let loop: any = hatch.getLoopAt(i);\n loop.vertices.forEach((val: any, inidex: number) => {\n loop[\"pt:\" + inidex] = {};\n loop[\"pt:\" + inidex].x = val.x;\n loop[\"pt:\" + inidex].y = val.y;\n loop[\"pt:\" + inidex].z = val.z;\n })\n obj[\"loop:\" + i] = loop;\n };\n obj.numPatternDefinitions = hatch.numPatternDefinitions;\n for (let i = 0; i < obj.numPatternDefinitions; i++) {\n obj[\"patternDefinitions:\" + i] = hatch.getPatternDefinitionAt(i);\n };\n\n console.log(obj)\n }\n\n\n\n })\n\n}\n\nasync function MxTest_GetSysVars() {\n let mxcad = MxCpp.getCurrentMxCAD();\n let database = mxcad.getDatabase();\n // 栅格\n let grid = {};\n grid[\"name\"] = \"GRIDMODE\";\n grid[\"isShow\"] = mxcad.getSysVarLong(\"GRIDMODE\");\n let ptSnapUnit = mxcad.getSysVarPoint(\"SNAPUNIT\");\n grid[\"xdist\"] = ptSnapUnit.x;\n grid[\"ydist\"] = ptSnapUnit.x;\n console.log(grid);\n\n // 正交\n let ortho = {};\n ortho[\"name\"] = \"ORTHOMODE\";\n ortho[\"isShow\"] = mxcad.getSysVarLong(\"ORTHOMODE\");\n console.log(ortho);\n\n // 极轴,\n let polarAxis = {};\n polarAxis[\"name\"] = \"AUTOSNAP\";\n polarAxis[\"enable\"] = (mxcad.getSysVarLong(\"AUTOSNAP\") & 8) != 0;\n polarAxis[\"polarang\"] = mxcad.getSysVarDouble(\"POLARANG\");\n console.log(polarAxis);\n\n // 对象捕捉\n let osnap = {};\n osnap[\"name\"] = \"OSMODE\";\n osnap[\"enable\"] = (mxcad.getSysVarLong(\"OSMODE\") & 16384) == 0;\n osnap[\"value\"] = mxcad.getSysVarLong(\"OSMODE\");\n osnap[\"End\"] = (mxcad.getSysVarLong(\"OSMODE\") & 1) != 0;\n osnap[\"Mid\"] = (mxcad.getSysVarLong(\"OSMODE\") & 2) != 0;\n osnap[\"Cen\"] = (mxcad.getSysVarLong(\"OSMODE\") & 4) != 0;\n osnap[\"Node\"] = (mxcad.getSysVarLong(\"OSMODE\") & 8) != 0;\n osnap[\"Quad\"] = (mxcad.getSysVarLong(\"OSMODE\") & 16) != 0;\n osnap[\"Int\"] = (mxcad.getSysVarLong(\"OSMODE\") & 32) != 0;\n osnap[\"Ins\"] = (mxcad.getSysVarLong(\"OSMODE\") & 64) != 0;\n osnap[\"Perp\"] = (mxcad.getSysVarLong(\"OSMODE\") & 128) != 0;\n osnap[\"Tan\"] = (mxcad.getSysVarLong(\"OSMODE\") & 256) != 0;\n osnap[\"Near\"] = (mxcad.getSysVarLong(\"OSMODE\") & 512) != 0;\n console.log(osnap);\n\n // 对象追踪\n let dyntrace = {};\n dyntrace[\"name\"] = \"DYNTRACE\";\n dyntrace[\"enable\"] = mxcad.getSysVarLong(\"DYNTRACE\") != 0;\n console.log(dyntrace);\n\n // DYN\n let dyn = {};\n dyn[\"name\"] = \"DYNINPUT\";\n dyn[\"enable\"] = mxcad.getSysVarLong(\"DYNINPUT\") != 0;\n console.log(dyn);\n\n let sysvar: any = {}\n\n // 全局线型比例\n sysvar.LTSCALE = mxcad.getSysVarDouble(\"LTSCALE\");\n\n // 当前线型比例\n sysvar.CELTSCALE = mxcad.getSysVarDouble(\"CELTSCALE\");\n\n // 当前线型\n sysvar.CELTYPE = mxcad.getSysVarString(\"CELTYPE\");\n\n // 当前文字样式\n sysvar.TEXTSTYLE = mxcad.getSysVarString(\"TEXTSTYLE\");\n\n // 当前布局名\n sysvar.CLAYOUTNAME = mxcad.getSysVarString(\"CLAYOUTNAME\");\n\n // 当前层名\n sysvar.CLAYER = mxcad.getSysVarString(\"CLAYER\");\n\n // 当前颜色\n sysvar.CECOLOR = database.getCurrentlyTrueColor().getColorValue();\n\n // 当前图纸的插入基点.\n sysvar.INSBASE = mxcad.getSysVarPoint(\"INSBASE\");\n\n\n // 当前图纸线重\n sysvar.CELWEIGHT = mxcad.getSysVarLong(\"CELWEIGHT\");\n\n // 当前点样式,百度PDMODE\n sysvar.PDMODE = mxcad.getSysVarLong(\"PDMODE\");\n\n // 点大小 。 >0指定绝对尺寸, <0 指定视口尺寸的百分比 =0在绘图区域高度的 5% 处创建点\n sysvar.PDSIZE = mxcad.getSysVarDouble(\"PDSIZE\");\n\n console.log(sysvar);\n}\n\n// 读取扩展数据。\nasync function MxTest_ReadxData() {\n let selEntity = new MxCADUiPrEntity();\n selEntity.setMessage(\"选择对象\");\n let id = await selEntity.go();\n if (!id.isValid()) return;\n\n let ent = id.getMcDbEntity();\n if (ent === null) return;\n\n let data = ent.getxData();\n //data.PrintData();\n data.forEach((val, type, dxf) => {\n console.log(JSON.stringify({ val: val, type: type, dxf: dxf }));\n })\n\n //let data = ent.getxDataString(\"DataName\");\n //MxFun.acutPrintf(data.val + \"\\n\");\n}\n\n\n// 写取扩展数据。\nasync function MxTest_WritexData() {\n let selEntity = new MxCADUiPrEntity();\n selEntity.setMessage(\"选择对象\");\n let id = await selEntity.go();\n if (!id.isValid()) return;\n\n let ent = id.getMcDbEntity();\n if (ent === null) return;\n ent.setxDataString(\"DataName\", \"xxxxx\");\n //ent.setxData(new MxCADResbuf([{type:MxCADResbufDataType.kExDataName,val:\"DataName\"},{type:MxCADResbufDataType.kString,val:\"yyyyy\"}]));\n}\n\nexport async function MxTest_DrawLine() {\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定第一点:\");\n let prvPoint = await getPoint.go();\n if (!prvPoint) return;\n getPoint.setMessage(\"\\n指定下一个点:\");\n while (true) {\n getPoint.setBasePt(prvPoint as any);\n let pt = await getPoint.go();\n if (!pt) return;\n let line = new McDbLine(prvPoint, pt);\n MxCpp.getCurrentMxCAD().drawEntity(line);\n prvPoint = pt;\n }\n}\n\n\n\nfunction getHostUrl(): string {\n let host = window.location.hostname;\n if (host.substring(0, 4) != \"http\") {\n host = document.location.protocol + \"//\" + host;\n }\n return host;\n}\n\nexport async function MxTest_InsertBlock() {\n let baseUrl = \"http://localhost:3000/mxcad/\"\n if (baseUrl.substring(0, 16) == \"http://localhost\") {\n baseUrl = getHostUrl() + baseUrl.substring(16);\n }\n\n let blkFilePath = baseUrl + \"tree.mxweb\";\n let mxcad = MxCpp.App.getCurrentMxCAD();\n let blkrecId = await mxcad.insertBlock(blkFilePath, \"tree\");\n if (!blkrecId.isValid()) {\n // 插入图块\n return;\n }\n\n let blkRef = new McDbBlockReference();\n blkRef.blockTableRecordId = blkrecId;\n let box = blkRef.getBoundingBox();\n if (box.ret) {\n let dLen = box.maxPt.distanceTo(box.minPt);\n if (dLen > 0.00001) {\n blkRef.setScale(mxcad.getMxDrawObject().screenCoordLong2Doc(100) / dLen);\n }\n }\n\n let getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\指定插入基点\");\n\n getPoint.setUserDraw((v, worldDraw) => {\n blkRef.position = v;\n worldDraw.drawMcDbEntity(blkRef);\n });\n\n let pt = await getPoint.go();\n if (!pt) return;\n blkRef.position = pt;\n let newBlkRefId = mxcad.drawEntity(blkRef);\n if (!newBlkRefId.isValid) {\n console.log(\"insert error\");\n return;\n }\n\n blkRef = newBlkRefId.getMcDbEntity() as McDbBlockReference;\n\n // 如果块有属性定义,下面为块引创建属性定义。\n blkRef.disableDisplay(true);\n let blkRecord: any = blkrecId.getMcDbBlockTableRecord();\n let ids = blkRecord.getAllEntityId();\n ids.forEach((id: any, index: any) => {\n if (!id.isKindOf(\"McDbAttributeDefinition\")) return;\n let attribDef = id.getMcDbEntity() as McDbAttributeDefinition;\n let tag = attribDef.tag;\n let txt = attribDef.textString;\n\n let attrib = new McDbAttribute();\n attrib.position = attribDef.position;\n attrib.alignmentPoint = attribDef.alignmentPoint\n attrib.height = attribDef.height\n attrib.trueColor = attribDef.trueColor\n attrib.widthFactor = attribDef.widthFactor\n if (txt.length > 0) attrib.textString = txt;\n else attrib.textString = \"test\" + index;\n attrib.tag = tag;\n attrib.isInvisible = attribDef.isInvisible;\n attrib.transformBy(blkRef.blockTransform);\n attrib = blkRef.appendAttribute(attrib).getMcDbEntity() as McDbAttribute;\n attrib.textStyle = attribDef.textStyle\n attrib.layer = attribDef.layer\n })\n blkRef.disableDisplay(false);\n\n}\n\nexport function MxTest_GetAllLayer() {\n let mxcad = MxCpp.App.getCurrentMxCAD();\n let layerTable = mxcad.getDatabase().getLayerTable();\n let aryId = layerTable.getAllRecordId();\n let ret = [];\n aryId.forEach((id) => {\n let layerRec = id.getMcDbLayerTableRecord();\n if (layerRec === null) return;\n\n console.log(layerRec);\n console.log(\"layerRec.color:\" + layerRec.color.getColorString());\n console.log(\"layerRec.name:\" + layerRec.name);\n let layer: any = {};\n layer.name = layerRec.name;\n\n layer.color = layerRec.color.getColorString();\n ret.push(layer);\n });\n\n MxFun.postMessageToParentFrame(ret);\n return ret;\n}\n\n\nexport function MxTest_AddLayer() {\n let mxcad = MxCpp.App.getCurrentMxCAD();\n let layerTable = mxcad.getDatabase().getLayerTable();\n if (!layerTable.has(\"xxx11\")) {\n let newLayer = new McDbLayerTableRecord();\n newLayer.name = \"xxx11\";\n layerTable.add(newLayer);\n }\n\n if (layerTable.has(\"xxx11\")) {\n console.log(\"add layer ok\");\n }\n}\n\n\n\nexport function MxTest_GetAllLinetype() {\n let mxcad = MxCpp.App.getCurrentMxCAD();\n let linetypeTable = mxcad.getDatabase().getLinetypeTable();\n let aryId = linetypeTable.getAllRecordId();\n aryId.forEach((id) => {\n let linetypeRec = id.getMcDbLinetypeTableRecord();\n if (linetypeRec === null) return;\n console.log(linetypeRec);\n });\n}\n\nexport function MxTest_GetAllTextStyle() {\n let mxcad = MxCpp.getCurrentMxCAD();\n let textSyleTable = mxcad.getDatabase().getTextStyleTable();\n let aryId = textSyleTable.getAllRecordId();\n aryId.forEach((id) => {\n let textSyleRec = id.getMcDbTextStyleTableRecord();\n if (textSyleRec === null) return;\n let out: any = {};\n out.name = textSyleRec.name;\n out.font = textSyleRec.font();\n out.fileName = textSyleRec.fileName;\n out.bigFontFileName = textSyleRec.bigFontFileName;\n out.textSize = textSyleRec.textSize;\n out.xScale = textSyleRec.xScale;\n console.log(out);\n });\n}\n\n\nexport async function MxTest_AddTextStyleTable() {\n let mxcad = MxCpp.getCurrentMxCAD();\n let textSyleTable = mxcad.getDatabase().getTextStyleTable();\n\n let sMyTextStyle = \"MyTextStyle\";\n if (textSyleTable.has(sMyTextStyle, false)) {\n let id = textSyleTable.get(sMyTextStyle, false);\n id.erase(false);\n };\n\n let newTextStyleRecord = new McDbTextStyleTableRecord();\n newTextStyleRecord.fileName = \"txt.shx\";\n newTextStyleRecord.bigFontFileName = \"hztxt.shx\";\n newTextStyleRecord.textSize = 10;\n newTextStyleRecord.name = sMyTextStyle;\n newTextStyleRecord.xScale = 0.7;\n if (textSyleTable.add(newTextStyleRecord).isValid()) {\n console.log(\"add ok\");\n }\n}\n\n\n\nexport function MxTest_GetAllBlock() {\n let mxcad = MxCpp.App.getCurrentMxCAD();\n let blockTable = mxcad.getDatabase().getBlockTable();\n let aryId = blockTable.getAllRecordId();\n aryId.forEach((id) => {\n let blkRec = id.getMcDbBlockTableRecord();\n if (blkRec === null) return;\n console.log(blkRec);\n console.log(\"blkRec.name:\" + blkRec.name);\n console.log(\"blkRec.origin:\" + blkRec.origin);\n });\n}\n\n\nasync function Mx_Test_DrawTable() {\n let draw = new MxDrawTable();\n draw.data.addColumn(\"序号\", 30);\n draw.data.addColumn(\"名称\", 45);\n draw.data.addColumn(\"材料\", 60);\n draw.data.addColumn(\"长度\", 50);\n for (let i = 0; i < 10; i++) {\n let sT = \"\" + i;\n draw.data.addRow([sT, \"AAAA\", \"BBBB\", \"1000\"])\n }\n\n let getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定表格插入点:\");\n let pt = await getPoint.go();\n if (!pt) return;\n\n let lScale = MxFun.screenCoordLong2Doc(100) / 200;\n draw.draw(pt, lScale);\n}\n\n\nasync function Mx_Test_QRCode() {\n const getPoint = new MrxDbgUiPrPoint()\n getPoint.setMessage('\\n指定插入点:')\n let pt = await getPoint.go();\n if (!pt) return;\n\n let mxobj = MxFun.getCurrentDraw()\n // 创建一个二维码生成器\n const qr = QRCode(5, 'L');\n\n // 设置二维码的内容\n qr.addData('https://www.mxdraw3d.com');\n\n // 生成二维码图像\n qr.make();\n\n // 获取二维码的数据URL\n const qrDataURL = qr.createDataURL();\n\n // 创建一个纹理对象\n const texture = new THREE.TextureLoader().load(qrDataURL);\n\n // 创建一个材质对象并将纹理赋值给它\n const material = new THREE.MeshBasicMaterial({ map: texture });\n let w = MxFun.screenCoordLong2Doc(80)\n let h = MxFun.screenCoordLong2Doc(80)\n\n let image = new MxDbImage()\n image.setRenderOrder(MxType.MxDefaultRenderOrder.kCADMeshRenderOrder - 1)\n image.setPoint1(pt)\n let pt2 = new THREE.Vector3(pt.x + w, pt.y + h, pt.z)\n image.setPoint2(pt2)\n\n image.setMaterial(material as any);\n mxobj.addMxEntity(image);\n\n setInterval(() => {\n mxobj.updateDisplay();\n }, 100)\n}\n\n\n\nexport async function MxTest_InsertStamp() {\n let baseUrl = \"http://localhost:3000/mxcad/\"\n if (baseUrl.substring(0, 16) == \"http://localhost\") {\n baseUrl = getHostUrl() + baseUrl.substring(16);\n }\n\n let blkFilePath = baseUrl + \"stamp.mxweb\";\n let mxcad = MxCpp.App.getCurrentMxCAD();\n let blkrecId = await mxcad.insertBlock(blkFilePath, \"stamp\");\n if (!blkrecId.isValid()) {\n // 插入图块\n return;\n }\n\n let blkRef = new McDbBlockReference();\n blkRef.blockTableRecordId = blkrecId;\n let box = blkRef.getBoundingBox();\n if (box.ret) {\n let dLen = box.maxPt.distanceTo(box.minPt);\n if (dLen > 0.00001) {\n blkRef.setScale(mxcad.getMxDrawObject().screenCoordLong2Doc(100) / dLen);\n }\n }\n\n let getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\指定插入基点\");\n\n getPoint.setUserDraw((v, worldDraw) => {\n blkRef.position = v;\n worldDraw.drawMcDbEntity(blkRef);\n });\n\n let pt = await getPoint.go();\n if (!pt) return;\n blkRef.position = pt;\n mxcad.drawEntity(blkRef);\n}\n\n\nexport async function MxTest_LineTypeTest() {\n let mxcad = MxCpp.getCurrentMxCAD();\n\n // 把当图上,已经存的\"TestMyLine\"线型删除,为了mxcad.addLinetypeEx重新添加定义线型.\n let linetypeRecord = mxcad.database.getLinetypeTable().get(\"TestMyLine\");\n if (!linetypeRecord.isErase()) {\n linetypeRecord.erase();\n }\n let lintype = mxcad.addLinetypeEx(\"TestMyLine\", '.5,-.2,[\"HW\",STANDARD,S=.1,R=0.0,X=-0.1,Y=-.05],-.2', \"\");\n if (!lintype.isValid()) return;\n\n let getEnt = new MxCADUiPrEntity();\n let entId = await getEnt.go();\n let ent = entId.getMcDbEntity();\n if (!ent) return;\n ent.linetypeId = lintype;\n\n}\n\n\n\n\nfunction MxTest_DictionaryData(dict: McDbDictionary) {\n let aryName = dict.getAllObjectName();\n aryName.forEach((name) => {\n console.log(name);\n let id = dict.getAt(name);\n let obj = id.getMcDbObject();\n if (obj instanceof McDbDictionary) {\n let dict: McDbDictionary = obj;\n console.log(dict);\n MxTest_DictionaryData(dict);\n }\n else if (obj instanceof McDbXrecord) {\n let xrec: McDbXrecord = obj;\n let data = xrec.getData()\n data.PrintData();\n }\n })\n}\n\nasync function MxTest_GetObjectExDictionaryData() {\n\n let selEntity = new MxCADUiPrEntity();\n selEntity.setMessage(\"选择标注对象\");\n let id = await selEntity.go();\n if (!id.isValid()) return;\n let ent = id.getMcDbEntity();\n if(ent && ent.isHaveExtensionDictionary()){\n let dict = ent.getExtensionDictionary();\n MxTest_DictionaryData(dict);\n }\n }\n\n\n\nexport async function MxTest_GetNamedObjectsDictionary() {\n let mxcad = MxCpp.getCurrentMxCAD();\n let dict = mxcad.getDatabase().getNamedObjectsDictionary();\n let aryName = dict.getAllObjectName();\n aryName.forEach((name) => {\n console.log(name);\n let id = dict.getAt(name);\n let obj = id.getMcDbObject();\n if (obj instanceof McDbDictionary) {\n let dict: McDbDictionary = obj;\n console.log(dict);\n MxTest_DictionaryData(dict);\n }\n })\n\n}\n\n\nexport async function MxTest_WriteXRecord() {\n let mxcad = MxCpp.getCurrentMxCAD();\n let dict = mxcad.getDatabase().getNamedObjectsDictionary();\n\n let sName = \"MyDict\";\n let idDict = dict.getAt(sName);\n if (idDict.isNull()) {\n let newDict = new McDbDictionary;\n idDict = dict.addObject(sName, newDict);\n }\n let myDict = idDict.getMcDbDictionary();\n if (myDict) {\n\n let xrec = new McDbXrecord();\n let data = new MxCADResbuf();\n data.AddString(\"TestData\");\n xrec.setData(data);\n myDict.addObject(\"MyRecord\", xrec);\n console.log(\"write xrecord ok\");\n }\n}\n\n// 修改对象颜色\nasync function Mx_Test_ChangeColor() {\n let getEntity = new MxCADUiPrEntity();\n\n\n getEntity.setMessage(\"选择标注对象\");\n let id = await getEntity.go();\n if (!id.isValid()) return;\n\n let ent = id.getMcDbEntity();\n if (!ent) return;\n ent.trueColor = new McCmColor(255, 0, 255);\n}\n\n// 设置对象不可见\nlet idVisible: any;\nasync function Mx_Test_ChangeVisible() {\n if (!idVisible) {\n let getEntity = new MxCADUiPrEntity();\n\n\n getEntity.setMessage(\"选择标注对象\");\n let id = await getEntity.go();\n if (!id.isValid()) return;\n\n let ent = id.getMcDbEntity();\n if (!ent) return;\n ent.visible = false;\n idVisible = id;\n }\n else {\n let ent = idVisible.getMcDbEntity();\n if (!ent) return;\n ent.visible = true;\n }\n\n}\n\n\nasync function Mx_Test_ChangeEntityLayer() {\n\n let newLayerName = \"WALL\";\n let mxcad = MxCpp.getCurrentMxCAD();\n if (!mxcad.database.layerTable.has(newLayerName)) {\n console.log(\"no have layer:\" + newLayerName)\n }\n\n let getEntity = new MxCADUiPrEntity();\n\n\n getEntity.setMessage(\"选择对象\");\n let id = await getEntity.go();\n if (!id.isValid()) return;\n\n let ent = id.getMcDbEntity();\n if (!ent) return;\n\n ent.layer = newLayerName;\n\n}\n\nasync function Mx_ChaneEntityDrawOrder() {\n let ss = new MxCADSelectionSet();\n if (!await ss.userSelect(\"\\n选择对象\")) return;\n //得到当前图上对象的最大,小最显示顺序.\n let minmaxOrder = MxCpp.getCurrentDatabase().currentSpace.getMinMaxDrawOrder();\n // 把对象放到最上面。\n let lOrder = minmaxOrder.maxDrawOrder + 1;\n ss.forEach((id) => {\n let ent = id.getMcDbEntity();\n if (ent) {\n ent.drawOrder = lOrder;\n }\n })\n}\n\n\nfunction Mx_MxCompareImp(fileUrl:string){\n // 把要比较的图纸,当着背景加载当前内存中,方便查看不一样的地方.\n let mxcad = MxCpp.getCurrentMxCAD();\n mxcad.mxdraw.makeCurrent();\n mxcad.loadDwgBackground(fileUrl,(isok:boolean)=>{\n let backgroundEntity = mxcad.getBackgroundEntity();\n\n // 暂时隐藏背景图纸的显示。\n backgroundEntity.setShow(fileUrl,false);\n let database = backgroundEntity.getBackgroundDatabase(fileUrl);\n if(database == null){\n return;\n }\n\n // 开始把当前图纸与背景图纸进行比较。\n let cmp = new MxCompare();\n\n if(cmp.do(database) ){\n // 得到比较结果.\n let result = cmp.getResult();\n if(result.length > 0){\n\n //比较有差别,把底图显示出来,方更查看不一样的地方。\n backgroundEntity.setShow(fileUrl,true);\n\n }\n\n console.log(JSON.stringify(result) );\n }\n\n },0xc90696969)\n}\n\nfunction Mx_MxCompare(){\n\n let upLoadFile = false;\n // 选择一个文件 ,和当前图纸比较.\n //upLoadFile = true;\n\n if(upLoadFile){\n getMxCADUi().uploadFile((param)=>{\n if(param){\n Mx_MxCompareImp(param.file_path);\n }\n },false) \n }\n else{\n Mx_MxCompareImp(\"test3.mxweb\");\n }\n}\n\nlet modify:any;\nfunction MxTest_ModifyAllEntityColor(){\n if(modify){\n modify.DoRestore();\n modify = undefined;\n }\n else{\n modify = new MxModifyColor();\n let color = new McCmColor();\n color.setColorIndex(ColorIndexType.kWhite);\n modify.Do(MxCpp.getCurrentDatabase(),color);\n }\n}\n\n\n\nexport function init() {\n MxFun.addCommand(\"TestGetAllEntity\", TestGetAllEntity);\n MxFun.addCommand(\"MxTest_GetSysVars\", MxTest_GetSysVars);\n MxFun.addCommand(\"MxTest_ReadxData\", MxTest_ReadxData);\n MxFun.addCommand(\"MxTest_WritexData\", MxTest_WritexData);\n MxFun.addCommand(\"MxTest_DrawLine\", MxTest_DrawLine);\n MxFun.addCommand(\"MxTest_InsertBlock\", MxTest_InsertBlock);\n\n MxFun.addCommand(\"MxTest_GetAllLayer\", MxTest_GetAllLayer);\n MxFun.addCommand(\"MxTest_AddLayer\", MxTest_AddLayer);\n MxFun.addCommand(\"MxTest_GetAllTextStyle\", MxTest_GetAllTextStyle);\n MxFun.addCommand(\"MxTest_GetAllBlock\", MxTest_GetAllBlock);\n MxFun.addCommand(\"MxTest_GetAllLinetype\", MxTest_GetAllLinetype);\n\n MxFun.addCommand(\"Mx_Test_DrawTable\", Mx_Test_DrawTable);\n MxFun.addCommand(\"Mx_Test_QRCode\", Mx_Test_QRCode);\n MxFun.addCommand(\"MxTest_InsertStamp\", MxTest_InsertStamp);\n MxFun.addCommand(\"MxTest_LineTypeTest\", MxTest_LineTypeTest);\n MxFun.addCommand(\"TestGentEntityOnLayer\", TestGentEntityOnLayer);\n\n MxFun.addCommand(\"MxTest_GetNamedObjectsDictionary\", MxTest_GetNamedObjectsDictionary);\n MxFun.addCommand(\"MxTest_GetObjectExDictionaryData\", MxTest_GetObjectExDictionaryData);\n \n MxFun.addCommand(\"MxTest_WriteXRecord\", MxTest_WriteXRecord);\n MxFun.addCommand(\"MxTest_AddTextStyleTable\", MxTest_AddTextStyleTable);\n MxFun.addCommand(\"Mx_Test_ChangeColor\", Mx_Test_ChangeColor);\n MxFun.addCommand(\"Mx_Test_ChangeVisible\", Mx_Test_ChangeVisible);\n MxFun.addCommand(\"Mx_Test_ChangeEntityLayer\", Mx_Test_ChangeEntityLayer);\n MxFun.addCommand(\"Mx_ChaneEntityDrawOrder\", Mx_ChaneEntityDrawOrder);\n MxFun.addCommand(\"Mx_MxCompare\", Mx_MxCompare);\n MxFun.addCommand(\"MxTest_ModifyAllEntityColor\", MxTest_ModifyAllEntityColor);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nimport { DynamicInputType, MxFun } from \"mxdraw\";\nimport {\n McDbPolyline,\n McGePoint3d,\n MxCADUiPrPoint,\n MxCpp,\n MxTools,\n} from \"mxcad\";\nimport { getMxCADUi } from \".\";\n\nexport async function Mx_Export_DWG() {\n let {\n baseUrl = \"\",\n saveDwgUrl = \"\",\n mxfilepath = \"\",\n } = getMxCADUi().getUploadFileConfig();\n // 把mxweb文件 ,保存到服务器上,然后转换成 dwg文件 ,再下载。\n MxCpp.getCurrentMxCAD().saveFileToUrl(\n saveDwgUrl,\n (iResult: number, sserverResult: string) => {\n try {\n let ret = JSON.parse(sserverResult);\n if (ret.ret == \"ok\") {\n let filePath = baseUrl + mxfilepath + ret.file;\n fetch(filePath).then(async (res) => {\n const blob = await res.blob();\n MxTools.saveAsFileDialog({\n blob,\n filename: ret.file,\n types: [\n {\n description: \"dwg图纸\",\n accept: {\n \"application/octet-stream\": [\".dwg\"],\n },\n },\n ],\n });\n });\n } else {\n console.log(sserverResult);\n }\n } catch {\n console.log(\"Mx: sserverResult error\");\n }\n }\n );\n}\n\nexport async function Mx_Export_MxWeb() {\n let {\n baseUrl = \"\",\n mxfilepath = \"\",\n saveUrl = \"\",\n } = getMxCADUi().getUploadFileConfig();\n\n // 把mxweb文件 ,保存到服务器上,再下载。\n MxCpp.getCurrentMxCAD().saveFileToUrl(\n saveUrl,\n (iResult: number, sserverResult: string) => {\n try {\n let ret = JSON.parse(sserverResult);\n if (ret.ret == \"ok\") {\n let filePath = baseUrl + mxfilepath + ret.file;\n MxTools.downloadFileFromUrl(filePath, ret.file);\n } else {\n console.log(sserverResult);\n }\n } catch {\n console.log(\"Mx: sserverResult error\");\n }\n }\n );\n}\n\n// 直接打开个网上的mxweb文件。\nexport async function Mx_Open_MxWeb() {\n MxCpp.getCurrentMxCAD().openWebFile(\n \"http://localhost:1337/mxcad/file/8c79da20e232495888dbb0da17459399.mxweb\"\n );\n}\n\nexport async function MxTest_NewFile() {\n let mxcad = MxCpp.getCurrentMxCAD();\n mxcad.newFile();\n}\n\n// 指定范围输出pdf\nexport async function Mx_Export_Pdf() {\n // 选择范围.\n let getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定输出范围第一点:\");\n let pt1 = await getPoint.go();\n if (!pt1) return;\n\n getPoint.setMessage(\"\\n指定输出范围第二点:\");\n getPoint.setUserDraw((currentPoint: McGePoint3d, worldDraw) => {\n worldDraw.setColor(0xff0000);\n let pl = new McDbPolyline();\n pl.addVertexAt(pt1);\n pl.addVertexAt(new McGePoint3d(pt1.x, currentPoint.y));\n pl.addVertexAt(currentPoint);\n pl.addVertexAt(new McGePoint3d(currentPoint.x, pt1.y));\n pl.constantWidth = MxFun.screenCoordLong2Doc(2);\n pl.isClosed = true;\n\n worldDraw.drawMcDbEntity(pl);\n\n let points: THREE.Vector3[] = [];\n points.push(pt1.toVector3());\n points.push(new THREE.Vector3(pt1.x, currentPoint.y));\n points.push(currentPoint.toVector3());\n points.push(new THREE.Vector3(currentPoint.x, pt1.y));\n\n worldDraw.setColor(0x003244);\n worldDraw.drawSolid(points, 0.5);\n });\n\n getPoint.setDisableOsnap(true);\n getPoint.setDisableOrthoTrace(true);\n getPoint.setDynamicInputType(DynamicInputType.kXYCoordInput);\n let pt2 = await getPoint.go();\n if (!pt2) {\n return;\n }\n\n let {\n baseUrl = \"\",\n mxfilepath = \"\",\n printPdfUrl = \"\",\n } = getMxCADUi().getUploadFileConfig();\n\n console.log(getMxCADUi().getUploadFileConfig());\n let param = {\n width: \"2100\", // 图纸长\n height: \"2970\", // 图纸宽\n bd_pt1_x: \"\" + pt1.x, // 角点1x\n bd_pt1_y: \"\" + pt1.y, // 角点1y\n bd_pt2_x: \"\" + pt2.x, // 角点2x\n bd_pt2_y: \"\" + pt2.y, // 角点2y\n };\n\n // 把mxweb文件 ,保存到服务器上,再转成pdf。\n MxCpp.getCurrentMxCAD().saveFileToUrl(\n printPdfUrl,\n (iResult: number, sserverResult: string) => {\n try {\n let ret = JSON.parse(sserverResult);\n if (ret.ret == \"ok\") {\n let filePath = baseUrl + mxfilepath + ret.file;\n MxTools.downloadFileFromUrl(filePath, ret.file);\n } else {\n console.log(sserverResult);\n }\n } catch {\n console.log(\"Mx: sserverResult error\");\n }\n },\n undefined,\n JSON.stringify(param)\n );\n}\n\n// 指定范围输出Dwg\nexport async function Mx_Cut_Dwg() {\n // 选择范围.\n let getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定输出范围第一点:\");\n let pt1 = await getPoint.go();\n if (!pt1) return;\n\n getPoint.setMessage(\"\\n指定输出范围第二点:\");\n getPoint.setUserDraw((currentPoint: McGePoint3d, worldDraw) => {\n worldDraw.setColor(0xff0000);\n let pl = new McDbPolyline();\n pl.addVertexAt(pt1);\n pl.addVertexAt(new McGePoint3d(pt1.x, currentPoint.y));\n pl.addVertexAt(currentPoint);\n pl.addVertexAt(new McGePoint3d(currentPoint.x, pt1.y));\n pl.constantWidth = MxFun.screenCoordLong2Doc(2);\n pl.isClosed = true;\n\n worldDraw.drawMcDbEntity(pl);\n\n let points: THREE.Vector3[] = [];\n points.push(pt1.toVector3());\n points.push(new THREE.Vector3(pt1.x, currentPoint.y));\n points.push(currentPoint.toVector3());\n points.push(new THREE.Vector3(currentPoint.x, pt1.y));\n\n worldDraw.setColor(0x003244);\n worldDraw.drawSolid(points, 0.5);\n });\n\n getPoint.setDisableOsnap(true);\n getPoint.setDisableOrthoTrace(true);\n getPoint.setDynamicInputType(DynamicInputType.kXYCoordInput);\n let pt2 = await getPoint.go();\n if (!pt2) {\n return;\n }\n\n let {\n baseUrl = \"\",\n mxfilepath = \"\",\n cutDwgUrl = \"\",\n } = getMxCADUi().getUploadFileConfig();\n\n console.log(getMxCADUi().getUploadFileConfig());\n let param = {\n bd_pt1_x: \"\" + pt1.x,\n bd_pt1_y: \"\" + pt1.y,\n bd_pt2_x: \"\" + pt2.x,\n bd_pt2_y: \"\" + pt2.y,\n };\n\n // 把mxweb文件 ,保存到服务器上,再转成dwg。\n MxCpp.getCurrentMxCAD().saveFileToUrl(\n cutDwgUrl,\n (iResult: number, sserverResult: string) => {\n try {\n let ret = JSON.parse(sserverResult);\n if (ret.ret == \"ok\") {\n let filePath = baseUrl + mxfilepath + ret.file;\n MxTools.downloadFileFromUrl(filePath, ret.file);\n } else {\n console.log(sserverResult);\n }\n } catch {\n console.log(\"Mx: sserverResult error\");\n }\n },\n undefined,\n JSON.stringify(param)\n );\n}\n\n/** 打开指定的文件 */\nexport async function MKY_Open_Mxweb({ param }: { param: string }) {\n MxCpp.getCurrentMxCAD().openWebFile(param);\n}\n\n/** 将画布上的信息以 mxweb 格式导出 */\nexport async function MKY_Download_Mxweb() {\n const cpp = MxCpp.getCurrentMxCAD();\n\n cpp.saveFile(\n cpp.getCurrentFileName(),\n (file) => {\n window.parent.postMessage({\n cmd: \"MKY_Download_Mxweb\",\n file,\n });\n },\n false,\n false\n );\n}\n\nexport function init() {\n MxFun.addCommand(\"Mx_Export_DWG_test\", Mx_Export_DWG);\n MxFun.addCommand(\"Mx_Export_MxWeb\", Mx_Export_MxWeb);\n MxFun.addCommand(\"Mx_Open_MxWeb\", Mx_Open_MxWeb);\n MxFun.addCommand(\"MxTest_NewFile\", MxTest_NewFile);\n MxFun.addCommand(\"Mx_Export_Pdf\", Mx_Export_Pdf);\n MxFun.addCommand(\"Mx_Cut_Dwg\", Mx_Cut_Dwg);\n MxFun.addCommand(\"MKY_Open_Mxweb\", MKY_Open_Mxweb);\n MxFun.addCommand(\"MKY_Download_Mxweb\", MKY_Download_Mxweb);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport {\n MxFun,\n} from \"mxdraw\";\nimport { MxCADUiPrEntity, DxfCode ,McDbAttribute, McDbBlockReference,McGeVector3d, McDbMText, McDbProxyEntity, McDbText, McGePoint3d, MxCADResbuf, MxCADSelectionSet, MxCpp } from \"mxcad\";\n\nasync function MxTest_FindText() {\n\n\n //let sFindText1 = \"STRAT\";\n let sFindText1 = \"0601\";\n let sFindText2 = \"001A\";\n\n let ss = new MxCADSelectionSet();\n let filter = new MxCADResbuf();\n filter.AddMcDbEntityTypes(\"TEXT,MTEXT,INSERT,ACAD_PROXY_ENTITY\");\n ss.allSelect(filter);\n let findPos: any;\n let entBox: any;\n let iCount = ss.count();\n for (let i = 0; i < iCount; i++) {\n let id = ss.item(i);\n let ent = id.getMcDbEntity();\n if (!ent) return;\n\n if (ent instanceof McDbText) {\n let txt = (ent as McDbText);\n if (txt.textString == sFindText1) {\n findPos = txt.position;\n entBox = txt.getBoundingBox();\n break;\n }\n\n }\n else if (ent instanceof McDbMText) {\n let mtxt = (ent as McDbMText);\n if (mtxt.contents == sFindText1) {\n findPos = mtxt.location;\n entBox = mtxt.getBoundingBox();\n break;\n }\n }\n\n else if (ent instanceof McDbBlockReference) {\n let blkRef: McDbBlockReference = ent;\n let aryId = blkRef.getAllAttribute();\n let iFind = 0;\n aryId.forEach((id) => {\n let attribt: McDbAttribute = id.getMcDbEntity() as any;\n if (attribt.textString == sFindText1) {\n iFind++;\n\n }\n else if (attribt.textString == sFindText2) {\n iFind++;\n }\n })\n\n if (iFind == 2) {\n findPos = blkRef.position;\n entBox = blkRef.getBoundingBox();\n break;\n }\n }\n\n else if (ent instanceof McDbProxyEntity) {\n let proxyEntity: McDbProxyEntity = ent;\n let aryText = proxyEntity.getAllTextContent();\n let iFind = 0;\n aryText.forEach((val) => {\n if (val == sFindText1) {\n iFind++;\n }\n });\n\n if (iFind >= 1) {\n entBox = proxyEntity.getBoundingBox();\n if (entBox && entBox.ret) {\n findPos = new McGePoint3d(entBox.minPt.x + (entBox.maxPt.x - entBox.minPt.x) * 0.5, entBox.minPt.y + (entBox.maxPt.y - entBox.minPt.y) * 0.5);\n }\n break;\n }\n }\n }\n\n if (entBox && entBox.ret) {\n\n console.log(entBox);\n let len = entBox.minPt.distanceTo(entBox.maxPt) * 2;\n MxFun.getCurrentDraw().zoomW(new THREE.Vector3(entBox.minPt.x - len, entBox.minPt.y - len, 0),\n new THREE.Vector3(entBox.maxPt.x + len, entBox.maxPt.y + len, 0));\n\n }\n else if (findPos) {\n\n MxFun.getCurrentDraw().zoomCenter(findPos.x, findPos.y);\n }\n else {\n console.log(\"没有找到文字:\" + sFindText1)\n }\n}\n\n// 获取图纸相同文字\nasync function Mx_Test_GetText() {\n // 获取目标文字\n const getText = new MxCADUiPrEntity();\n getText.setMessage(\"请选择目标文字\");\n const ent_id = await getText.go();\n if (!ent_id.id) return;\n const text = ent_id.getMcDbEntity() as McDbText;\n\n // 获取全局文字\n const ss = new MxCADSelectionSet();\n const dataArr = [];\n\n //选择所有图形元素\n ss.allSelect(new MxCADResbuf([DxfCode.kEntityType, \"TEXT\"]));\n ss.forEach(async (id) => {\n let ent = id.getMcDbEntity() as McDbText;\n if (ent.textString == text.textString) {\n const position = ent.position;\n console.log(\"文字位置:\" + \"X:\" + position.x + \"Y:\" + position.y + \"Z:\" + position.z)\n const height = ent.height;\n // 获取文字包围点\n let { minPt, maxPt, ret } = ent.getBoundingBox();\n if (!ret) return;\n // 扩大截图范围\n const x = McGeVector3d.kXAxis.normalize().mult(height * 4);\n const y = McGeVector3d.kYAxis.normalize().mult(height * 4);\n minPt.addvec(x.negate()).addvec(y.negate());\n maxPt.subvec(x).subvec(y);\n \n // 获取截图宽高\n let w = Math.abs(minPt.x - maxPt.x);\n let h = Math.abs(minPt.y - maxPt.y);\n if (w < 1 || h < 1) return;\n let jpg_width = 200;\n let jpg_height = jpg_width * h / w;\n\n dataArr.push({\n width: jpg_width,\n height: jpg_height,\n range_pt1: minPt.toVector3(),\n range_pt2: maxPt.toVector3(),\n });\n\n };\n\n });\n // 获取图片信息\n let str = \"\"\n for (let i = 0; i < dataArr.length; i++) {\n let imageData = await myCreateCanvasImageData({\n ...dataArr[i]\n });\n str += '<img src=\"' + imageData + '\"/>'\n }\n // 截图预览\n let newWindow: any = window.open();\n if (newWindow != null) {\n newWindow.document.write(`<div style=\"display:flex;align-item:center;justify-content:space-evenly;\">${str}</div>`);\n }\n}\n\n// 截图异步函数\nfunction myCreateCanvasImageData(param: any): Promise<String> {\n return new Promise<String>((resolve, reject) => {\n MxFun.getCurrentDraw().createCanvasImageData(\n (imageData: String) => {\n resolve(imageData)\n },\n param\n );\n });\n}\n\nexport function init() {\n MxFun.addCommand(\"MxTest_FindText\", MxTest_FindText);\n MxFun.addCommand(\"Mx_Test_GetText\", Mx_Test_GetText);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IMcDbDwgFiler, McDbCustomEntity, McDbLine, McDbPolyline, McGePoint3d, McGePoint3dArray, MxCADUiPrPoint, MxCADWorldDraw, MxCpp } from \"mxcad\";\nimport {\n MxFun,\n} from \"mxdraw\";\n\n\nclass McDbTestLineCustomEntity extends McDbCustomEntity {\n\n private pt1: McGePoint3d = new McGePoint3d();\n private pt2: McGePoint3d = new McGePoint3d();\n\n constructor(imp?: any) {\n super(imp);\n }\n\n public create(imp: any) {\n return new McDbTestLineCustomEntity(imp)\n }\n\n public getTypeName(): string {\n return \"McDbTestLineCustomEntity\";\n }\n\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\n this.pt1 = filter.readPoint(\"pt1\").val;\n this.pt2 = filter.readPoint(\"pt2\").val;\n return true;\n }\n\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\n filter.writePoint(\"pt1\", this.pt1);\n filter.writePoint(\"pt2\", this.pt2);\n return true;\n }\n\n\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\n this.assertWrite();\n if (iIndex == 0) {\n this.pt1.x += dXOffset;\n this.pt1.y += dYOffset;\n this.pt1.z += dZOffset;\n }\n else if (iIndex == 1) {\n this.pt2.x += dXOffset;\n this.pt2.y += dYOffset;\n this.pt2.z += dZOffset;\n }\n };\n\n public getGripPoints(): McGePoint3dArray {\n let ret = new McGePoint3dArray()\n ret.append(this.pt1);\n ret.append(this.pt2);\n return ret;\n };\n\n\n\n public worldDraw(draw: MxCADWorldDraw): void {\n // let tmpline = new McDbLine(this.pt1, this.pt2);\n let pl= new McDbPolyline()\n pl.addVertexAt(this.pt1)\n pl.addVertexAt(this.pt2)\n draw.drawEntity(pl);\n }\n\n //\n public setPoint1(pt1: McGePoint3d) {\n this.assertWrite();\n this.pt1 = pt1.clone();\n }\n\n public setPoint2(pt2: McGePoint3d) {\n this.assertWrite();\n this.pt2 = pt2.clone();\n }\n\n public getPoint1() {\n return this.pt1;\n }\n\n public getPoint2() {\n return this.pt2;\n }\n}\n\n\nexport async function MxTest_DrawCustomEntity() {\n let mxcad = MxCpp.getCurrentMxCAD();\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定一点:\");\n let pt1 = (await getPoint.go());\n if (!pt1) return;\n\n getPoint.setBasePt(pt1);\n getPoint.setUseBasePt(true);\n\n getPoint.setMessage(\"\\n指定二点:\");\n let pt2 = (await getPoint.go());\n if (!pt2) return;\n\n let myline = new McDbTestLineCustomEntity();\n myline.setPoint1(pt1);\n myline.setPoint2(pt2);\n mxcad.drawEntity(myline);\n}\n\n\nexport function init() {\n new McDbTestLineCustomEntity().rxInit();\n MxFun.addCommand(\"MxTest_DrawCustomEntity\", MxTest_DrawCustomEntity);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport {\n MxFun,\n} from \"mxdraw\";\nimport {McDbBlockReference,McDbBlockTableRecord,McDbCircle,McDbEntity,McDbSpatialFilter,McGePoint3d, McGePoint3dArray, MxCADSelectionSet, MxCpp} from \"mxcad\";\n\nasync function MxTest_SelectEntitysToBlock() {\n\n let ss = new MxCADSelectionSet();\n if(!await ss.userSelect(\"选择要做成块的对象:\") ) return;\n if(ss.count() == 0) return;\n\n let mxcad = MxCpp.getCurrentMxCAD();\n let blkTable = mxcad.getDatabase().getBlockTable();\n let blkRecId = blkTable.add(new McDbBlockTableRecord());\n let blkTableRecord:McDbBlockTableRecord = blkRecId.getMcDbBlockTableRecord() as any;\n if(blkTableRecord == null) return;\n\n let pt1x:any,pt1y:any,pt2x:any,pt2y:any;\n ss.forEach((id)=>{\n let ent = id.getMcDbEntity();\n if(!ent) return;\n\n let cent = ent.clone() as McDbEntity;\n blkTableRecord.appendAcDbEntity(cent);\n \n let entBox = ent.getBoundingBox();\n if(entBox.ret){\n if(!pt1x){\n pt1x = entBox.minPt.x;\n pt1y = entBox.minPt.y;\n pt2x = entBox.maxPt.x;\n pt2y = entBox.maxPt.y;\n }\n else {\n if(pt1x > entBox.minPt.x) pt1x= entBox.minPt.x;\n if(pt1y > entBox.minPt.y) pt1y= entBox.minPt.y;\n if(pt2x < entBox.maxPt.x) pt2x= entBox.maxPt.x;\n if(pt2y < entBox.maxPt.y) pt2y= entBox.maxPt.y;\n }\n }\n })\n if(pt1x === undefined){\n return;\n }\n let insertPtx = pt1x + (pt2x - pt1x) * 0.5;\n let insertPty = pt1y + (pt2y - pt1y) * 0.5;\n // 设置图块的插入基点,在图形对象的中心位置。\n blkTableRecord.origin = new McGePoint3d(insertPtx,insertPty,0);\n\n\n let blkRef = new McDbBlockReference();\n blkRef.blockTableRecordId = blkRecId;\n blkRef.position = new McGePoint3d(insertPtx,insertPty,0);\n\n blkRef = mxcad.drawEntity(blkRef).getMcDbEntity() as McDbBlockReference;\n\n ss.forEach((id)=>{\n let ent = id.getMcDbEntity();\n if(!ent) return;\n ent.erase();\n });\n\n\n}\n\n\n\n\nasync function MxTest_SelectEntitysToSpatialFilterBlock() {\n\n \n let ss = new MxCADSelectionSet();\n if (!await ss.userSelect(\"选择要做成块的对象:\")) return;\n if (ss.count() == 0) return;\n\n let mxcad = MxCpp.getCurrentMxCAD();\n let blkTable = mxcad.getDatabase().getBlockTable();\n let blkRec = new McDbBlockTableRecord();\n let blkRecId = blkTable.add(blkRec);\n let blkTableRecord: McDbBlockTableRecord = blkRecId.getMcDbBlockTableRecord() as any;\n if (blkTableRecord == null) return;\n\n let pt1x: any, pt1y: any, pt2x: any, pt2y: any;\n ss.forEach((id) => {\n let ent = id.getMcDbEntity();\n if (!ent) return;\n\n let cent = ent.clone() as McDbEntity;\n blkTableRecord.appendAcDbEntity(cent);\n\n let entBox = ent.getBoundingBox();\n if (entBox.ret) {\n if (!pt1x) {\n pt1x = entBox.minPt.x;\n pt1y = entBox.minPt.y;\n pt2x = entBox.maxPt.x;\n pt2y = entBox.maxPt.y;\n }\n else {\n if (pt1x > entBox.minPt.x) pt1x = entBox.minPt.x;\n if (pt1y > entBox.minPt.y) pt1y = entBox.minPt.y;\n if (pt2x < entBox.maxPt.x) pt2x = entBox.maxPt.x;\n if (pt2y < entBox.maxPt.y) pt2y = entBox.maxPt.y;\n }\n }\n })\n if (pt1x === undefined) {\n return;\n }\n let insertPtx = pt1x + (pt2x - pt1x) * 0.5;\n let insertPty = pt1y + (pt2y - pt1y) * 0.5;\n // 设置图块的插入基点,在图形对象的中心位置。\n blkTableRecord.origin = new McGePoint3d(insertPtx, insertPty, 0);\n\n\n let blkRef = new McDbBlockReference();\n blkRef.blockTableRecordId = blkRecId;\n blkRef.position = new McGePoint3d(insertPtx + (pt2x - pt1x) * 3, insertPty + (pt2y - pt1y) * 3, 0);\n\n blkRef = mxcad.drawEntity(blkRef).getMcDbEntity() as McDbBlockReference;\n\n\n // 设置一个圆做它的剪切边界.\n let dR = (pt2x - pt1x);\n if (dR < (pt2y - pt1y)) dR = (pt2y - pt1y);\n dR *= 0.3;\n let circle = new McDbCircle(insertPtx, insertPty, 0, dR);\n let samplePoints = circle.getSamplePoints(dR * 0.00001);\n let aryPoint = new McGePoint3dArray();\n samplePoints.forEach((val, _type,dxf) => {\n if (dxf === 1010) {\n const point = new McGePoint3d(val.x, val.y, val.z)\n aryPoint.append(point);\n }\n });\n\n blkRef.createSpatialFilter();\n blkRef.scaleFactors = new McGePoint3d(3,3,3);\n let idSpatialFilter = blkRef.getSpatialFilterId();\n let blkFilter: McDbSpatialFilter =idSpatialFilter.getMcDbObject() as any;\n blkFilter.setBoundary(aryPoint);\n circle.center = blkRef.position;\n circle.radius = circle.radius * 3;\n mxcad.drawEntity(circle);\n}\n\nexport function init() {\n MxFun.addCommand(\"MxTest_SelectEntitysToBlock\", MxTest_SelectEntitysToBlock);\n MxFun.addCommand(\"MxTest_SelectEntitysToSpatialFilterBlock\", MxTest_SelectEntitysToSpatialFilterBlock);\n \n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nimport { MxFun } from \"mxdraw\";\nimport { McGePoint3d, MxCADUiPrPoint, MxCADUtility, MxCpp } from \"mxcad\";\nasync function MxTest_DrawHatchFormPoint() {\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定填充区域内部一点:\");\n getPoint.disableAllTrace(true);\n getPoint.setDisableOsnap(true);\n let pt = (await getPoint.go()) as McGePoint3d;\n if (!pt) return;\n\n let hatch = MxCADUtility.builderHatchFromPoint(pt);\n if (!hatch) {\n MxFun.acutPrintf(\"没有找到闭合区域\\n\")\n return;\n }\n\n let mxcad = MxCpp.getCurrentMxCAD();\n mxcad.drawEntity(hatch);\n}\n\nexport function init() {\n MxFun.addCommand(\"MxTest_DrawHatchFormPoint\", MxTest_DrawHatchFormPoint);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { McCmColor, McDb, McDbEntity, McDbLayerTableRecord, McGePoint3d, MxCpp } from \"mxcad\";\nconst namedColors = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50]\n};\nfunction parseColor(color: string): [number, number, number] | [] {\n\n // 如果是第一种形式,即 \"255, 255, 0\"\n if (/^\\d+,\\s*\\d+,\\s*\\d+$/.test(color)) {\n return color.split(',').map(Number) as [number, number, number];\n }\n\n // 如果是第三种形式,即 \"0x336666\"\n else if (/^0x[0-9a-fA-F]{6}$/.test(color)) {\n const hexValue = parseInt(color, 16);\n return [\n (hexValue >> 16) & 255,\n (hexValue >> 8) & 255,\n hexValue & 255\n ];\n }\n\n // 如果是第二种形式,即 \"#666666\"\n else if (/^#[0-9a-fA-F]{6}$/.test(color)) {\n const hexValue = parseInt(color.slice(1), 16);\n return [\n (hexValue >> 16) & 255,\n (hexValue >> 8) & 255,\n hexValue & 255\n ];\n }\n else if (namedColors[color.toLowerCase()]) {\n const lowerCaseColor = color.toLowerCase();\n if (namedColors[lowerCaseColor]) {\n return namedColors[lowerCaseColor];\n }\n }\n else {\n const color = new McCmColor()\n color.setColorIndex(256)\n return [color.red, color.green, color.blue]\n }\n}\n/** 添加图层 */\nconst addLayer = (layerName: string)=> {\n const layerTable = MxCpp.getCurrentDatabase().layerTable\n if(layerTable.has(layerName)) {\n return\n }\n const layer = new McDbLayerTableRecord()\n layer.color = new McCmColor(0, 0, 0)\n layer.isFrozen = false\n layer.isLocked = false\n layer.isOff = false\n layer.lineWeight = McDb.LineWeight.kLnWtByLayer\n layer.name = layerName\n layerTable.add(layer)\n}\nexport const baseParams = [\n {\n name: \"color\", description: \"颜色\", \"type\": \"str\", \"required\": true\n },\n {\n name: \"layer\", description: \"图层\", \"type\": \"str\", \"required\": true\n },\n {\n name: \"lineweight\", description: \"线重\", \"type\": \"float\", \"required\": true\n }\n]\n/** 根据参数和并entity 基本属性 */\nexport const mergeBaseMcDbEntityProps = (entity: McDbEntity | McDbEntity[], param: any) => {\n if (param.layer) {\n addLayer(param.layer)\n }\n const setMcDbEntityProps = (ent: McDbEntity) => {\n if (param.color) {\n ent.trueColor = new McCmColor(...parseColor(param.color))\n }else {\n ent.trueColor = new McCmColor(MxCpp.getCurrentDatabase().getCurrentlyDrawColor())\n }\n if (param.layer) {\n ent.layer = param.layer\n }else {\n ent.layer = MxCpp.getCurrentDatabase().getCurrentlyLayerName()\n }\n if(param.lineweight) {\n ent.lineweight = param.lineweight\n }\n }\n if (Array.isArray(entity)) {\n entity.forEach(setMcDbEntityProps)\n } else if(entity){\n setMcDbEntityProps(entity)\n }\n}\n\n\nexport const parseParamPoints = (pointsStr: string) => {\n const pointsArr = pointsStr.split(',').map((i: string) => Number(i))\n const points: McGePoint3d[] = []\n let i = 0\n while (i < pointsArr.length) {\n const x = pointsArr[i]\n i++\n const y = pointsArr[i]\n i++\n if (typeof x === \"undefined\" || typeof y === \"undefined\") return points\n const point = new McGePoint3d(x, y)\n points.push(point)\n }\n return points\n}\n\n\nexport const parsePoint = (point: string | [number, number] | { x: number, y: number }) => {\n if(typeof point === \"object\" && \"x\" in point && \"y\" in point) {\n return new McGePoint3d(point.x, point.y)\n }\n if(Array.isArray(point)) {\n return new McGePoint3d(point[0], point[1])\n }else if(typeof point === \"string\"){\n const [x, y] = point.split(\",\").map((i)=> Number(i))\n if(typeof x === \"number\" && typeof y === \"number\") {\n return new McGePoint3d(x, y)\n }\n }\n}","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { MxCpp } from \"mxcad\";\nimport { MxAiModule } from \"./MxAiModule\";\nimport { baseParams, mergeBaseMcDbEntityProps, parsePoint } from \"./base\";\n\n\n//绘制一个直线,开始点100,200,结束点499,121\nclass MxAiDrawLine {\n public call(param: any) {\n console.log(param)\n if (param && param.pt1 && param.pt2) {\n let mxcad = MxCpp.getCurrentMxCAD();\n if(param.pt1) param.pt1 = parsePoint(param.pt1)\n if(param.pt2) param.pt2 = parsePoint(param.pt2)\n\n const objId = mxcad.drawLine(param.pt1.x, param.pt1.y, param.pt2.x, param.pt2.y);\n mergeBaseMcDbEntityProps(objId.getMcDbEntity(), param)\n mxcad.updateDisplay();\n }\n }\n\n public regist_data() {\n return {\n filename: \"drawline.json\",\n name: \"draw_line\",\n description: \"根据直线的开始点和结束点绘制一个直线段\",\n params: [\n {\n name: \"pt1\", description: \"直线开始点\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"pt2\", description: \"直线结束点\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n ...baseParams,\n ]\n }\n }\n\n}\n\nexport function init() {\n MxAiModule.regist(MxAiDrawLine);\n}\n\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { MxCpp } from \"mxcad\";\nimport { baseParams, mergeBaseMcDbEntityProps, parsePoint } from \"./base\";\nimport { MxAiModule } from \"./MxAiModule\";\n\n//绘制一个圆,圆心100,200,半径499\nclass MxAiDrawCircle {\n public call(param: any) {\n console.log(param)\n if (param && param.cen && param.radius) {\n if(param.cen) param.center = parsePoint(param.cen)\n let mxcad = MxCpp.getCurrentMxCAD();\n const objId = mxcad.drawCircle(param.center.x, param.center.y,param.radius);\n mergeBaseMcDbEntityProps(objId.getMcDbEntity(), param);\n mxcad.updateDisplay();\n }\n }\n\n public regist_data() {\n return {\n filename: \"drawcircle.json\",\n name: \"draw_circle\",\n description: \"根据圆心和半径绘制一个圆\",\n params: [\n {\n name: \"center\", description: \"圆的中心点\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"radius\", description: \"圆的半径\", \"type\": \"float\", \"required\": true\n },\n ...baseParams,\n ]\n }\n\n }\n}\n\nexport const init = ()=> {\n MxAiModule.regist(MxAiDrawCircle);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { McGePoint3d } from \"mxcad\";\n\n/**\n * 获取两线之间的交点\n * @param isExtending 为true 得到两条线段无限延伸下的交点\n * */\nexport function findIntersection(p1: McGePoint3d, p2: McGePoint3d, p3: McGePoint3d, p4: McGePoint3d, isExtending?: boolean) {\n const x1 = p1.x, y1 = p1.y;\n const x2 = p2.x, y2 = p2.y;\n const x3 = p3.x, y3 = p3.y;\n const x4 = p4.x, y4 = p4.y;\n\n const denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n\n if (denominator === 0) {\n return null; // 线段平行或共线\n }\n\n const t =\n ((x1 - x3) * (y3 - y4) - (y1 - y3) * (x3 - x4)) / denominator;\n\n const u =\n -((x1 - x2) * (y1 - y3) - (y1 - y2) * (x1 - x3)) / denominator;\n const intersectionX = x1 + t * (x2 - x1);\n const intersectionY = y1 + t * (y2 - y1);\n const point = new McGePoint3d(intersectionX, intersectionY, 0);\n if (isExtending) return point\n if (t > 0 && t < 1 && u > 0 && u < 1) {\n return point\n } else {\n return null;\n }\n}\n\n\n/** 取最近点 */\nexport function getClosestPoint(comparisonPoint: McGePoint3d, p1: McGePoint3d, p2: McGePoint3d) {\n return comparisonPoint.distanceTo(p1) < comparisonPoint.distanceTo(p2) ? p1 : p2\n}\n\n\n// 查看点是否在多边形内\nexport function insidePolygon(points: McGePoint3d[], point: McGePoint3d){\n const x = point.x, y = point.y;\n let inside = false;\n for (let i = 0, j = points.length - 1; i < points.length; j = i++) {\n const xi = points[i].x, yi = points[i].y;\n const xj = points[j].x, yj = points[j].y;\n\n const intersect = ((yi > y) != (yj > y))\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n return inside;\n}\n\n/** 计算两个坐标的角度 */\nexport function angleTo(x1: number, y1: number, x2: number, y2: number) {\n const x = x1 - x2;\n const y = y1 - y2;\n let angle_temp = 0;\n if (x == 0) {\n angle_temp = Math.PI / 2;\n } else {\n angle_temp = Math.atan(Math.abs(y / x));\n }\n\n if (x < 0 && y >= 0) {\n angle_temp = Math.PI - angle_temp;\n } else if (x < 0 && y < 0) {\n angle_temp = Math.PI + angle_temp;\n } else if (x >= 0 && y < 0) {\n angle_temp = Math.PI * 2.0 - angle_temp;\n }\n\n return angle_temp;\n}","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { McDbArc, McGePoint3d, MxCADUiPrDist, MxCADUiPrPoint, MxCpp, _ML_String } from \"mxcad\";\nimport { baseParams, mergeBaseMcDbEntityProps, parsePoint } from \"./base\";\nimport { MxAiModule } from \"./MxAiModule\";\nimport { angleTo } from \"./tools\";\nimport { DetailedResult } from \"mxdraw\";\n\nfunction createArc(center:McGePoint3d, radius: number, startAngle: number, endAngle: number) {\n const arc = new McDbArc()\n arc.center = center\n arc.radius = radius\n arc.startAngle = startAngle\n arc.endAngle = endAngle\n return arc\n}\n\n//绘制一个圆弧 圆心0,0 半径100 开始角30结束角180\n// 三点绘制圆弧第一个点0,0第二个点10000,10000 第二个点180,-9000\nclass MxAiDrawCircleArc {\n async call(param: any) {\n console.log(param)\n let { center, radius, startAngle, endAngle, is3PDraw, point1, point2, point3 } = param\n let mxcad = MxCpp.getCurrentMxCAD();\n mxcad.newFile()\n mxcad.zoomAll()\n const getPoint = new MxCADUiPrPoint()\n const getDist= new MxCADUiPrDist()\n if(is3PDraw) {\n if(point1) point1 = parsePoint(point1)\n if(point2) point2 = parsePoint(point2)\n if(point3) point3 = parsePoint(point3)\n getPoint.setKeyWords(\"\")\n if(!point1) {\n getPoint.setMessage(\"指定圆弧起点\")\n getPoint.setUserDraw((pt, pw)=> {\n if(!point2 || !point3) return\n const arc = new McDbArc()\n arc.computeArc(pt.x,pt.y, point2.x, point2.y, point3.x, point3.y)\n pw.drawMcDbEntity(arc)\n })\n point1 = await getPoint.go()\n if(!point1) return\n }\n if(!point2) {\n getPoint.setMessage(\"指定圆弧第二个点\")\n getPoint.setUserDraw((pt, pw)=> {\n if(!point1 || !point3) return\n const arc = new McDbArc()\n arc.computeArc(point1.x,point1.y, pt.x, pt.y, point3.x, point3.y)\n\n pw.drawMcDbEntity(arc)\n })\n point2 = await getPoint.go()\n if(!point2) return\n }\n if(!point3) {\n\n getPoint.setMessage(\"指定圆弧的端点\")\n getPoint.setUserDraw((pt, pw)=> {\n if(!point1 || !point2) return\n const arc = new McDbArc()\n arc.computeArc(point1.x,point1.y, point2.x, point2.y, pt.x, pt.y)\n pw.drawMcDbEntity(arc)\n })\n point3 = await getPoint.go()\n if(!point3) return\n }\n const arc = new McDbArc()\n console.log(point1.x,point1.y, point2.x, point2.y, point3.x, point3.y)\n arc.computeArc(point1.x,point1.y, point2.x, point2.y, point3.x, point3.y)\n mergeBaseMcDbEntityProps(arc, param)\n mxcad.drawEntity(arc)\n mxcad.updateDisplay()\n }else {\n if(center) center = parsePoint(center)\n if(startAngle) startAngle = startAngle * (Math.PI / 180)\n if(endAngle) endAngle = endAngle * (Math.PI / 180)\n\n if(!center) {\n getPoint.setMessage(\"指定圆弧圆心\")\n getPoint.setKeyWords(\"\")\n getPoint.setUserDraw((pt, pw)=> {\n if(!radius) return\n pw.drawMcDbEntity(createArc(pt, radius, startAngle || 0, endAngle || Math.PI * 2))\n })\n const point = await getPoint.go()\n if(!point) return\n center = point\n }\n if(!radius) {\n getDist.setBasePt(center)\n getDist.setMessage(_ML_String(\"MxAiDrawCircleArc_Radius\", \"指定圆弧半径\"))\n getDist.setKeyWords(\"\")\n getDist.setUserDraw((pt, pw)=> {\n if(!center) return\n const radius = pt.distanceTo(center)\n pw.drawMcDbEntity(createArc(center, radius, startAngle || 0, endAngle || Math.PI * 2))\n })\n radius = await getDist.go()\n if(!radius) return\n }\n if(!startAngle) {\n if(!center) return\n getDist.setBasePt(center)\n getDist.setMessage(_ML_String(\"MxAiDrawCircleArc_StartAngle\", \"指定圆弧开始角\"))\n getDist.setKeyWords(\"\")\n getDist.setUserDraw((pt, pw)=> {\n if(!center) return\n if(!radius) return\n startAngle = angleTo(center.x, center.y, pt.x, pt.y) - Math.PI\n pw.drawMcDbEntity(createArc(center, radius, startAngle || 0, endAngle || Math.PI * 2))\n })\n const val = await getDist.go()\n if(!val) return\n if(getDist.getDetailedResult() === DetailedResult.kCoordIn) {\n startAngle = val * (Math.PI / 180)\n }\n }\n if(!endAngle) {\n if(!center) return\n getDist.setBasePt(center)\n getDist.setMessage(_ML_String(\"MxAiDrawCircleArc_EndAngle\", \"指定圆弧结束角\"))\n getDist.setKeyWords(\"\")\n getDist.setUserDraw((pt, pw)=> {\n if(!center) return\n if(!radius) return\n endAngle = angleTo(center.x, center.y, pt.x, pt.y) - Math.PI\n pw.drawMcDbEntity(createArc(center, radius, startAngle || 0, endAngle || Math.PI * 2))\n })\n const val = await getDist.go()\n if(!val) return\n if(getDist.getDetailedResult() === DetailedResult.kCoordIn) {\n endAngle = val * (Math.PI / 180)\n }\n }\n const arc = createArc(center, radius, startAngle, endAngle)\n mergeBaseMcDbEntityProps(arc, param)\n mxcad.drawEntity(arc)\n mxcad.updateDisplay()\n }\n }\n\n public regist_data() {\n return {\n filename: \"drawcirclearc.json\",\n name: \"draw_circle_arc\",\n description: \"绘制圆弧\",\n params: [\n {\n name: \"center\", description: \"圆弧圆心\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"radius\", description: \"圆弧半径\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"startAngle\", description: \"圆弧开始角\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"endAngle\", description: \"圆弧结束角\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"is3PDraw\", description: \"是否三点绘制\", \"type\": \"boolean\", \"required\": true\n },\n {\n name: \"point1\", description: \"三点绘制圆弧的第一个点(起点)\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"point2\", description: \"三点绘制圆弧的第二个点\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"point3\", description: \"三点绘制圆弧的第三个点(终点)\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n ...baseParams,\n ]\n }\n\n }\n}\n\nexport const init = ()=> {\n MxAiModule.regist(MxAiDrawCircleArc);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { McDbPolyline, McGePoint3d, McGeVector3d, MxCADUiPrDist, MxCADUiPrInt, MxCADUiPrKeyWord, MxCADUiPrPoint, MxCpp, _ML_String, drawPolygon } from \"mxcad\";\nimport { baseParams, mergeBaseMcDbEntityProps, parsePoint } from \"./base\";\nimport { MxAiModule } from \"./MxAiModule\";\n\n/**\n * 计算多边形顶点坐标(基于中点)\n * @param {McGePoint3d} centerPoint - 多边形中心点\n * @param {McGePoint3d} edgeMidPoint - 多边形一条边的中点\n * @param {number} sides - 多边形边数(至少为3)\n * @returns {McGePoint3d[]} 多边形的顶点坐标数组\n */\nfunction computePolygonVerticesFromMidpoint(centerPoint = new McGePoint3d(), edgeMidPoint = new McGePoint3d(), sides = 3): McGePoint3d[] {\n const midX = edgeMidPoint.x;\n const midY = edgeMidPoint.y;\n const centerX = centerPoint.x;\n const centerY = centerPoint.y;\n const numberOfSides = Math.max(3, sides);\n\n // 计算中点到多边形中心的距离\n const distanceToCenter = Math.sqrt((midX - centerX) ** 2 + (midY - centerY) ** 2);\n\n // 计算中点到多边形中心的半径\n const radius = distanceToCenter / Math.cos(Math.PI / numberOfSides);\n\n // 计算起始角度\n const startAngle = Math.atan2(midY - centerY, midX - centerX) - Math.PI / numberOfSides;\n\n const vertices = [];\n\n for (let i = 0; i < numberOfSides; i++) {\n // 计算当前顶点的角度\n const angle = startAngle + (i * 2 * Math.PI / numberOfSides);\n\n // 根据极坐标系转换成直角坐标系的坐标\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n\n // 创建新的顶点对象并加入数组\n vertices.push(new McGePoint3d(x, y));\n }\n\n return vertices;\n}\n\n/**\n * 生成规则多边形的顶点坐标\n * @param {McGePoint3d} centerPoint - 多边形中心点\n * @param {McGePoint3d} vertexPoint - 多边形顶点\n * @param {number} sides - 多边形边数(至少为3)\n * @returns {McGePoint3d[]} 多边形的顶点坐标数组\n */\nfunction computeRegularPolygonVertices(centerPoint = new McGePoint3d(), vertexPoint = new McGePoint3d(), sides = 3): McGePoint3d[] {\n const verticesArray: McGePoint3d[] = [];\n sides = Math.max(3, sides);\n verticesArray.push(vertexPoint);\n\n // 计算每个顶点的角度增量\n const angleIncrement = (Math.PI * 2) / sides;\n\n for (let i = 1; i < sides; i++) {\n // 计算当前顶点对应的角度上的余弦和正弦值\n const cosValue = Math.cos(angleIncrement * i),\n sinValue = Math.sin(angleIncrement * i);\n\n // 复制中心点和顶点,以免修改原始点的值\n const startPt = centerPoint.clone();\n const endPt = vertexPoint.clone();\n\n // 计算相对于中心点的偏移量\n const deltaX = endPt.x - startPt.x;\n const deltaY = endPt.y - startPt.y;\n\n // 根据旋转公式计算新的顶点坐标\n const newX = deltaX * cosValue - deltaY * sinValue + startPt.x;\n const newY = deltaX * sinValue + deltaY * cosValue + startPt.y;\n\n // 创建新的顶点对象并加入数组\n const point = new McGePoint3d(newX, newY);\n verticesArray.push(point);\n }\n\n return verticesArray;\n}\n\n/**\n * 计算多边形顶点坐标(基于边)\n * @param {McGePoint3d} startPoint - 多边形边的起始点\n * @param {McGePoint3d} endPoint - 多边形边的结束点\n * @param {number} sides - 多边形边数(至少为3)\n * @returns {McGePoint3d[]} 多边形的顶点坐标数组\n */\nfunction computePolygonVerticesFromEdge(startPoint: McGePoint3d, endPoint: McGePoint3d, sides: number): McGePoint3d[] {\n // 计算边的长度和角度\n let dx = endPoint.x - startPoint.x;\n let dy = endPoint.y - startPoint.y;\n let length = Math.sqrt(dx * dx + dy * dy);\n let angle = Math.atan2(dy, dx);\n\n // 计算每个顶点的角度增量\n let angleIncrement = (2 * Math.PI) / Math.max(3, sides);\n\n let polygonVertices = [startPoint, endPoint];\n\n for (let i = 0; i < sides; i++) {\n // 计算当前顶点的坐标\n let x = startPoint.x + length * Math.cos(angle + i * angleIncrement);\n let y = startPoint.y + length * Math.sin(angle + i * angleIncrement);\n\n // 更新起始点并加入数组\n startPoint = new McGePoint3d(x, y);\n polygonVertices.push(startPoint);\n }\n\n return polygonVertices;\n}\n//绘制一个正六边形边的开始点0, 0 结束点100,100\n//用圆心绘制一个外切于圆的正五边形 圆心0,0 半径100\nclass MxAiDrawPolygon {\n async call(param: any) {\n MxCpp.getCurrentMxCAD().newFile()\n console.log(param)\n let { isDrawToCenter, sideNum, startPoint, endPoint, radius, centerPoint, isTangentToTheCircle } = param\n if (!sideNum) {\n const getInt = new MxCADUiPrInt()\n getInt.setMessage(\"输入边的数目<5>\")\n getInt.setKeyWords(\"\")\n getInt.clearLastInputPoint()\n sideNum = await getInt.go() || 5 as number\n }\n if(isDrawToCenter) {\n if (!centerPoint) {\n const getPoint = new MxCADUiPrPoint()\n getPoint.setMessage(\"\\n指定正多变形的中心点\")\n getPoint.setKeyWords(\"\")\n getPoint.clearLastInputPoint()\n centerPoint = await getPoint.go()\n if (!centerPoint) return\n } else {\n centerPoint = parsePoint(centerPoint)\n }\n let vet = McGeVector3d.kXAxis\n let vertexPoint: McGePoint3d\n if (!radius) {\n const getPoint = new MxCADUiPrDist()\n getPoint.setMessage(_ML_String(\"MxAiDrawPolygon_radius\", \"指定圆的半径\"))\n getPoint.setKeyWords(\"\")\n getPoint.setBasePt(centerPoint)\n getPoint.setUserDraw((pt, pw) => {\n if(isTangentToTheCircle) {\n const _radius = pt.distanceTo(centerPoint)\n vet = pt.sub(centerPoint)\n const midPoint = centerPoint.clone().addvec(pt.sub(centerPoint).normalize().mult(_radius))\n const points = computePolygonVerticesFromMidpoint(centerPoint, midPoint, sideNum)\n const polygon = new McDbPolyline()\n points.forEach((point)=> {\n polygon.addVertexAt(point)\n })\n polygon.isClosed = true\n pw.drawMcDbEntity(polygon)\n }else {\n vertexPoint = pt\n const polygon = new McDbPolyline()\n computeRegularPolygonVertices(centerPoint, pt, sideNum).forEach((point)=> {\n polygon.addVertexAt(point)\n })\n polygon.isClosed = true\n pw.drawMcDbEntity(polygon)\n }\n\n })\n const _radius = await getPoint.go()\n if (!_radius) return\n radius = _radius\n }\n // 外切于圆\n const polygon = new McDbPolyline()\n polygon.isClosed = true\n if (isTangentToTheCircle) {\n const midPoint = centerPoint.clone().addvec(vet.normalize().mult(radius))\n const points = computePolygonVerticesFromMidpoint(centerPoint, midPoint, sideNum)\n points.forEach((point)=> {\n polygon.addVertexAt(point)\n })\n } else {\n if(!vertexPoint) {\n const vet = McGeVector3d.kXAxis.clone().rotateBy(Math.PI / sideNum).mult(radius)\n vertexPoint = centerPoint.clone().addvec(vet)\n }\n computeRegularPolygonVertices(centerPoint, vertexPoint, sideNum).forEach((point)=> {\n polygon.addVertexAt(point)\n })\n }\n\n MxCpp.getCurrentMxCAD().drawEntity(polygon)\n }else {\n const createStarEndPointPolygon = (currentPoint: McGePoint3d) => {\n const pPolyline = new McDbPolyline()\n const points = computePolygonVerticesFromEdge(startPoint as McGePoint3d, currentPoint, sideNum || 5)\n points.forEach((point) => {\n pPolyline.addVertexAt(point)\n })\n pPolyline.isClosed = true\n return pPolyline\n }\n if (!startPoint) {\n const getPoint = new MxCADUiPrPoint()\n getPoint.clearLastInputPoint()\n getPoint.setMessage(\"\\n指定边的第一个端点\");\n getPoint.setKeyWords(\"\")\n startPoint = await getPoint.go()\n if (!startPoint) return\n getPoint.setUserDraw((currentPoint, pWorldDraw) => {\n pWorldDraw.drawMcDbEntity(createStarEndPointPolygon(currentPoint))\n })\n }else {\n startPoint = parsePoint(startPoint)\n }\n if (!endPoint) {\n const getPoint = new MxCADUiPrPoint()\n getPoint.setBasePt(startPoint)\n getPoint.setMessage(\"\\n指定边的第二个端点\")\n endPoint = await getPoint.go()\n }else {\n endPoint = parsePoint(endPoint)\n }\n if (!endPoint) return\n const polygon = createStarEndPointPolygon(endPoint)\n MxCpp.getCurrentMxCAD().drawEntity(polygon)\n }\n\n }\n\n public regist_data() {\n return {\n filename: \"DrawPolygon.json\",\n name: \"draw_polygon\",\n description: \"绘制正多边形\",\n params: [\n {\n name: \"isDrawToCenter\", description: \"是否用圆绘制多边形\", \"type\": \"boolean\", \"required\": true\n },\n {\n name: \"sideNum\", description: \"边数\", type: \"int\", \"required\": true\n },\n {\n name: \"startPoint\", description: \"边绘制提供开始点\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"endPoint\", description: \"边绘制提供结束点\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"radius\", description: \"圆的半径\", type: \"number\", \"required\": true\n },\n {\n name: \"centerPoint\", description: \"圆心\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"isTangentToTheCircle\", description: \"外切于圆\", \"type\": \"boolean\", \"required\": true\n }\n ]\n }\n\n }\n}\n\n\n// setTimeout(()=> {\n// new MxAiDrawPolygon().call({\n// sideNum: 6,\n// centerPoint: [0, 0],\n// // radius: 100,\n// isTangentToTheCircle: false\n// })\n// }, 2000)\nexport const init = () => {\n MxAiModule.regist(MxAiDrawPolygon);\n\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { McDb, McDbLine, McDbPolyline, McGePoint3d, McGePoint3dArray, McGeVector3d, MxCADUiPrPoint, MxCADUtility, MxCpp } from \"mxcad\";\nimport { MxAiModule } from \"./MxAiModule\";\nimport { baseParams, mergeBaseMcDbEntityProps, parsePoint } from \"./base\";\nconst rotatePoint = (center: McGePoint3d, point: McGePoint3d, angle: number): McGePoint3d => {\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n const translatedX = point.x - center.x;\n const translatedY = point.y - center.y;\n const x = translatedX * cosAngle - translatedY * sinAngle + center.x;\n const y = translatedX * sinAngle + translatedY * cosAngle + center.y;\n const z = point.z;\n return new McGePoint3d(x, y, z);\n};\nconst getRectPoints = (pt1: McGePoint3d, pt3: McGePoint3d, angle = 0)=> {\n const center = new McGePoint3d((pt1.x + pt3.x) / 2, (pt1.y + pt3.y) / 2, (pt1.z + pt3.z) / 2);\n const pt2 = new McGePoint3d(pt1.x, pt3.y, pt1.z);\n const pt4 = new McGePoint3d(pt3.x, pt1.y, pt3.z);\n const rotatedPt2 = rotatePoint(center, pt2, angle);\n const rotatedPt4 = rotatePoint(center, pt4, angle);\n return [pt1, rotatedPt2, pt3, rotatedPt4];\n}\n// 象限\nconst getQuadrant = (pt1: McGePoint3d, pt3: McGePoint3d) => {\n return [(pt3.x >= pt1.x && pt3.y >= pt1.y), (pt3.x < pt1.x && pt3.y >= pt1.y), (pt3.x < pt1.x && pt3.y < pt1.y), (pt3.x >= pt1.x && pt3.y < pt1.y)] as [boolean, boolean, boolean, boolean]\n}\n// 倒角\nfunction calculateRoundedRectangleVertices(points: McGePoint3d[], chamferDistance1: number, chamferDistance2: number) {\n if (chamferDistance1 === 0 && chamferDistance2 === 0) return points\n const [pt1, pt2, pt3, pt4] = points\n\n const width = pt1.distanceTo(pt4)\n const height = pt1.distanceTo(pt2)\n const [_, isPt3InQuadrant2, isPt3InQuadrant3, isPt3InQuadrant4] = getQuadrant(pt1, pt3)\n const chamferDistanceX = isPt3InQuadrant2 || isPt3InQuadrant3 ? -chamferDistance1 : chamferDistance1;\n const chamferDistanceY = isPt3InQuadrant3 || isPt3InQuadrant4 ? -chamferDistance2 : chamferDistance2;\n if ((width - Math.abs(chamferDistanceX) * 2) <= 0) return points\n if ((height - Math.abs(chamferDistanceY) * 2) <= 0) return points\n\n const chamferedPt1 = new McGePoint3d(pt1.x + chamferDistanceX, pt1.y, pt1.z);\n const chamferedPt2 = new McGePoint3d(pt1.x, pt1.y + chamferDistanceY, pt1.z);\n const chamferedPt3 = new McGePoint3d(pt2.x, pt2.y - chamferDistanceY, pt2.z);\n const chamferedPt4 = new McGePoint3d(pt2.x + chamferDistanceX, pt2.y, pt2.z);\n const chamferedPt5 = new McGePoint3d(pt3.x - chamferDistanceX, pt3.y, pt3.z);\n const chamferedPt6 = new McGePoint3d(pt3.x, pt2.y - chamferDistanceY, pt3.z);\n const chamferedPt7 = new McGePoint3d(pt4.x, pt4.y + chamferDistanceY, pt4.z);\n const chamferedPt8 = new McGePoint3d(pt4.x - chamferDistanceX, pt4.y, pt4.z);\n const chamferedPolygon = [\n chamferedPt1,\n chamferedPt2,\n chamferedPt3,\n chamferedPt4,\n chamferedPt5,\n chamferedPt6,\n chamferedPt7,\n chamferedPt8,\n ];\n return chamferedPolygon;\n}\n\nexport function CMxDrawPolylineDragArcDraw_CalcArcBulge(firstPoint: McGePoint3d, nextPoint: McGePoint3d, vecArcTangent: McGeVector3d): number {\n if (firstPoint.isEqualTo(nextPoint))\n return 0.0;\n let midPt = firstPoint.c().addvec(nextPoint.c().sub(firstPoint).mult(0.5));\n\n let vecMid = nextPoint.c().sub(firstPoint);\n vecMid.rotateBy(Math.PI / 2.0, McGeVector3d.kZAxis);\n\n let tmpMidLine = new McDbLine(midPt, midPt.c().addvec(vecMid));\n\n let vecVertical: McGeVector3d = vecArcTangent.c();\n vecVertical.rotateBy(Math.PI / 2.0, McGeVector3d.kZAxis);\n\n let tmpVerticalLine = new McDbLine(firstPoint, firstPoint.c().addvec(vecVertical));\n\n let aryPoint: McGePoint3dArray = tmpMidLine.IntersectWith(tmpVerticalLine, McDb.Intersect.kExtendBoth);\n if (aryPoint.isEmpty())\n return 0.0;\n\n let arcCenPoint = aryPoint.at(0);\n\n let dR = arcCenPoint.distanceTo(firstPoint);\n\n vecMid.normalize();\n vecMid.mult(dR);\n\n let arcMidPt1 = arcCenPoint.c().addvec(vecMid);\n let arcMidPt2 = arcCenPoint.c().subvec(vecMid);\n let vecArcDir1 = arcMidPt1.c().sub(firstPoint);\n let vecArcDir2 = arcMidPt2.c().sub(firstPoint);\n let arcMidPt = arcMidPt1;\n if (vecArcDir1.angleTo1(vecArcTangent) > vecArcDir2.angleTo1(vecArcTangent)) {\n arcMidPt = arcMidPt2;\n }\n return MxCADUtility.calcBulge(firstPoint, arcMidPt, nextPoint).val;\n}\n\n// 绘制矩形两个对角点0, 0, 100, 100\n// 绘制矩形第一个对角点0,0 第二个对角点 800, 800\n// 绘制矩形第一个对角点0,0 第二个对角点 800, 800 倒角50\n// 绘制矩形第一个对角点0,0 第二个对角点 800, 800 第一个倒角50第二个倒角100\n// 绘制矩形第一个对角点0,0 第一个倒角50第二个倒角100\n// 绘制矩形第一个对角点0,0, 第二个对角点 800, 800 圆角50\n// 绘制矩形两个对角点0, 0, 100, 100圆角20\n// 绘制矩形两个对角点0, 0, 100, 100圆角20 线宽10\n// 绘制矩形 矩形面积1000 矩形长度200\n// 绘制矩形第一个对角点0, 0, 面积1000宽度200\n// 绘制矩形第一个对角点0, 0, 长度300 宽度200\n// 绘制矩形两个对角点0, 0, 100, 100旋转角度30度\n// 绘制一个第一个对角点为0,0面积为800长度50的红色矩形\n\nclass MxAiDrawRect {\n async call(param: any) {\n console.log(param)\n MxCpp.getCurrentMxCAD().newFile()\n let { pt1, pt2:pt3, chamfer1Length, chamfer2Length, filletRadius, lineWidth, area, rectLength, rectWidth, rotationAngle } = param\n const createRect = (pt1: McGePoint3d, pt3: McGePoint3d) => {\n const [_pt1, pt2, _pt3, pt4] = getRectPoints(pt1, pt3, rotationAngle)\n const rect = new McDbPolyline()\n rect.addVertexAt(_pt1, 0, lineWidth, lineWidth)\n rect.addVertexAt(pt2, 0, lineWidth, lineWidth)\n rect.addVertexAt(_pt3, 0, lineWidth, lineWidth)\n rect.addVertexAt(pt4, 0, lineWidth, lineWidth)\n rect.isClosed = true\n if(lineWidth) rect.constantWidth = lineWidth\n return rect\n }\n const create = (pt1: McGePoint3d, pt3: McGePoint3d)=> {\n let rect: McDbPolyline\n if(filletRadius) {\n const points = calculateRoundedRectangleVertices(getRectPoints(pt1, pt3, rotationAngle), filletRadius, filletRadius)\n const [_, isPt3InQuadrant2, isPt3InQuadrant3, isPt3InQuadrant4] = getQuadrant(pt1, pt3)\n if (points.length === 8) {\n if(!rect) rect = new McDbPolyline()\n const addArc = (startPoint: McGePoint3d, endPoint: McGePoint3d, key?: McGeVector3d) => {\n let vecArcTangent: McGeVector3d = new McGeVector3d(key);\n const bulge = CMxDrawPolylineDragArcDraw_CalcArcBulge(startPoint, endPoint, vecArcTangent)\n rect.addVertexAt(startPoint, bulge, lineWidth, lineWidth)\n rect.addVertexAt(endPoint, 0, lineWidth, lineWidth)\n }\n const vec1 = new McGeVector3d(-1, 0)\n const vec2 = new McGeVector3d(0, 1)\n const vec3 = new McGeVector3d(1, 0)\n const vec4 = new McGeVector3d(0, -1)\n if (isPt3InQuadrant4) {\n vec2.y = -1\n vec3.x = 1\n vec4.y = 1\n }\n if (isPt3InQuadrant2) {\n vec1.x = 1\n vec2.y = 1\n vec3.x = -1\n vec4.y = -1\n }\n if (isPt3InQuadrant3) {\n vec1.x = 1\n vec2.y = -1\n vec3.x = -1\n vec4.y = 1\n }\n addArc(points[0], points[1], vec1)\n\n addArc(points[2], points[3], vec2)\n\n addArc(points[4], points[5], vec3)\n\n addArc(points[6], points[7], vec4)\n rect.isClosed = true\n }\n }\n else if(chamfer1Length || chamfer2Length) {\n if(!rect) rect = new McDbPolyline()\n const points = calculateRoundedRectangleVertices(getRectPoints(pt1, pt3, rotationAngle), chamfer1Length || chamfer2Length, chamfer2Length || chamfer1Length)\n points.forEach((point)=> {\n rect.addVertexAt(point)\n })\n rect.isClosed = true\n }\n if(!rect) rect = createRect(pt1, pt3)\n if(lineWidth) rect.constantWidth = lineWidth\n return rect\n }\n if(!pt1) {\n const getPoint = new MxCADUiPrPoint()\n getPoint.setMessage(\"指定第一个角点\")\n getPoint.setKeyWords(\"\")\n pt1 = await getPoint.go()\n if(!pt1) return\n }else {\n pt1 = parsePoint(pt1)\n }\n if(area) {\n if(rectLength) {\n rectWidth = area / rectLength\n }\n if(rectWidth) {\n rectLength = area / rectWidth\n }\n }\n if(rectLength && rectWidth) {\n pt3 = new McGePoint3d(pt1.x + rectWidth, pt1.y + rectLength, 0)\n }\n if(!pt3) {\n const getPoint = new MxCADUiPrPoint()\n getPoint.setMessage(\"指定第二个角点\")\n getPoint.setKeyWords(\"\")\n getPoint.setUserDraw((pt, pw)=> {\n pw.drawMcDbEntity(create(pt1, pt))\n })\n pt3 = await getPoint.go()\n if(!pt3) return\n }else {\n pt3 = parsePoint(pt3)\n }\n const rect = create(pt1, pt3)\n mergeBaseMcDbEntityProps(rect, param)\n MxCpp.getCurrentMxCAD().drawEntity(rect)\n }\n\n public regist_data() {\n return {\n filename: \"drawRect.json\",\n name: \"draw_rect\",\n description: \"根据一些信息绘制矩形\",\n params: [\n {\n name: \"pt1\", description: \"一个对角点\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"pt2\", description: \"另一个对角点\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"lineWidth\", description: \"矩形线的宽\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"filletRadius\", description: \"圆角半径\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"chamfer1Length\", description: \"第一个倒角距离\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"chamfer2Length\", description: \"第二个倒角距离\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"rectLength\", description: \"长度\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"rectWidth\", description: \"矩形宽度\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"area\", description: \"面积\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"rotationAngle\", description: \"旋转角度\", \"type\": \"float\", \"required\": true\n },\n ...baseParams,\n ]\n }\n }\n\n}\n\nexport function init() {\n MxAiModule.regist(MxAiDrawRect);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { McDbEllipse, MxCADUiPrDist, MxCADUiPrPoint, MxCpp, McGePoint3d, McGeVector3d, _ML_String } from \"mxcad\";\nimport { baseParams, mergeBaseMcDbEntityProps, parsePoint } from \"./base\";\nimport { MxAiModule } from \"./MxAiModule\";\nimport { DetailedResult } from \"mxdraw\";\nimport { angleTo } from \"./tools\";\n\nconst createEllipse = (endPoint1: McGePoint3d, endPoint2: McGePoint3d, halfAxisLength: number, startAngle: number, endAngle: number) => {\n const ellipse = new McDbEllipse()\n const center = new McGePoint3d((endPoint1.x + endPoint2.x) / 2, (endPoint2.y + endPoint2.y) / 2)\n const majorAxis = endPoint1.sub(endPoint2)\n const minorAxis = majorAxis\n const xRadius = endPoint1.distanceTo(endPoint2) / 2\n const yRadius = halfAxisLength / 2\n const radiusRatio = yRadius / xRadius\n ellipse.center = center\n ellipse.majorAxis = majorAxis\n ellipse.minorAxis = minorAxis\n ellipse.radiusRatio = radiusRatio\n ellipse.startAngle = startAngle\n ellipse.endAngle = endAngle\n return ellipse\n}\n\n//绘制椭圆,端点100,200,另一个端点1000,1000 半轴长1000\nclass MxAiDrawEllipse {\n async call(param: any) {\n let { endPoint1, endPoint2, halfAxisLength } = param\n const mxcad = MxCpp.getCurrentMxCAD();\n mxcad.newFile()\n const getPoint = new MxCADUiPrPoint()\n const getDist = new MxCADUiPrDist()\n if(endPoint1) endPoint1 = parsePoint(endPoint1)\n if(endPoint2) endPoint2 = parsePoint(endPoint2)\n if(!endPoint1) {\n getPoint.setMessage(\"指定椭圆的轴端点1\")\n getPoint.setKeyWords(\"\")\n\n getPoint.setUserDraw((pt, pw)=> {\n if(!endPoint2) return\n if(!halfAxisLength) return\n pw.drawMcDbEntity(createEllipse(pt, endPoint2, halfAxisLength, 0, Math.PI * 2))\n })\n endPoint1 = await getPoint.go()\n if(!endPoint1) return\n\n }\n if(!endPoint2) {\n getPoint.setMessage(\"指定椭圆的轴端点2\")\n getPoint.setKeyWords(\"\")\n\n getPoint.setUserDraw((pt, pw)=> {\n if(!endPoint1) return\n if(!halfAxisLength) return\n pw.drawMcDbEntity(createEllipse(endPoint1, pt, halfAxisLength, 0, Math.PI * 2))\n })\n endPoint2 = await getPoint.go()\n if(!endPoint2) return\n }\n if(!halfAxisLength) {\n getDist.setMessage(\"指定半轴长度\")\n getDist.setKeyWords(\"\")\n const center = new McGePoint3d((endPoint1.x + endPoint2.x) / 2, (endPoint2.y + endPoint2.y) / 2)\n getDist.setBasePt(center)\n getDist.setUserDraw((pt, pw)=> {\n if(!endPoint1) return\n pw.drawMcDbEntity(createEllipse(endPoint1, endPoint2, center.distanceTo(pt), 0, Math.PI * 2))\n })\n halfAxisLength = await getDist.go()\n if(!halfAxisLength) return\n }\n const ellipse = createEllipse(endPoint1, endPoint2, halfAxisLength, 0, Math.PI * 2)\n mergeBaseMcDbEntityProps(ellipse, param)\n mxcad.drawEntity(ellipse)\n }\n\n public regist_data() {\n return {\n filename: \"drawellipse.json\",\n name: \"draw_ellipse\",\n description: \"绘制椭圆\",\n params: [\n {\n name: \"endPoint1\", description: \"椭圆端点1\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"endPoint2\", description: \"椭圆端点2\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"halfAxisLength\", description: \"半轴长度\", \"type\": \"float\", \"required\": true\n },\n ...baseParams,\n ]\n }\n }\n}\n\n//绘制椭圆弧,端点100,200,另一个端点1000,1000 半轴长1000开始角30 结束角120\nclass MxAiDrawEllipseArc {\n async call(param: any) {\n let { endPoint1, endPoint2, halfAxisLength, startAngle, endAngle } = param\n const mxcad = MxCpp.getCurrentMxCAD();\n mxcad.newFile()\n const getPoint = new MxCADUiPrPoint()\n const getDist = new MxCADUiPrDist()\n if(endPoint1) endPoint1 = parsePoint(endPoint1)\n if(endPoint2) endPoint2 = parsePoint(endPoint2)\n if(startAngle) startAngle = startAngle * (Math.PI / 180)\n if(endAngle) endAngle = endAngle * (Math.PI / 180)\n if(!endPoint1) {\n getPoint.setMessage(\"指定椭圆的轴端点1\")\n getPoint.setKeyWords(\"\")\n\n getPoint.setUserDraw((pt, pw)=> {\n if(!endPoint2) return\n if(!halfAxisLength) return\n pw.drawMcDbEntity(createEllipse(pt, endPoint2, halfAxisLength, 0, Math.PI * 2))\n })\n endPoint1 = await getPoint.go()\n if(!endPoint1) return\n\n }\n if(!endPoint2) {\n getPoint.setMessage(\"指定椭圆的轴端点2\")\n getPoint.setKeyWords(\"\")\n\n getPoint.setUserDraw((pt, pw)=> {\n if(!endPoint1) return\n if(!halfAxisLength) return\n pw.drawMcDbEntity(createEllipse(endPoint1, pt, halfAxisLength, 0, Math.PI * 2))\n })\n endPoint2 = await getPoint.go()\n if(!endPoint2) return\n }\n const center = new McGePoint3d((endPoint1.x + endPoint2.x) / 2, (endPoint2.y + endPoint2.y) / 2)\n if(!halfAxisLength) {\n getDist.setMessage(\"指定半轴长度\")\n getDist.setKeyWords(\"\")\n getDist.setBasePt(center)\n getDist.setUserDraw((pt, pw)=> {\n if(!endPoint1) return\n pw.drawMcDbEntity(createEllipse(endPoint1, endPoint2, center.distanceTo(pt), 0, Math.PI * 2))\n })\n halfAxisLength = await getDist.go()\n if(!halfAxisLength) return\n }\n const angle = angleTo(center.x, center.y, endPoint1.x, endPoint1.y)\n if(!startAngle) {\n getDist.setMessage(_ML_String(\"EllipticalArc_startAngle\",\"指定起点角度\"))\n getDist.setKeyWords(\"\")\n getDist.setUserDraw((currentPoint, pWorldDraw) => {\n startAngle = angleTo(center.x, center.y, currentPoint.x, currentPoint.y) - angle - Math.PI\n pWorldDraw.drawMcDbEntity(createEllipse(endPoint1, endPoint2, halfAxisLength, startAngle, Math.PI * 2))\n })\n const val = await getDist.go()\n if (!val) return\n if(getDist.getDetailedResult() == DetailedResult.kCoordIn) {\n startAngle = val * (180 / Math.PI)\n }\n }\n if(!endAngle) {\n getDist.setLastInputPoint(center)\n getDist.setMessage(_ML_String(\"EllipticalArc_endAngle\",\"指定端点角度\"))\n getDist.setKeyWords(\"\")\n getDist.setUserDraw((currentPoint, pWorldDraw) => {\n endAngle = angleTo(center.x, center.y, currentPoint.x, currentPoint.y) - angle - Math.PI\n pWorldDraw.drawMcDbEntity(createEllipse(endPoint1, endPoint2, halfAxisLength, startAngle, endAngle))\n })\n const val1 = await getDist.go()\n if(!val1) return\n if(getDist.getDetailedResult() === DetailedResult.kCoordIn) {\n endAngle = val1 * (180 / Math.PI)\n }\n }\n const ellipse = createEllipse(endPoint1, endPoint2, halfAxisLength, startAngle, endAngle)\n mergeBaseMcDbEntityProps(ellipse, param)\n mxcad.drawEntity(ellipse)\n }\n\n public regist_data() {\n return {\n filename: \"drawellipseArc.json\",\n name: \"draw_ellipse_arc\",\n description: \"绘制椭圆弧\",\n params: [\n {\n name: \"endPoint1\", description: \"椭圆弧端点1\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"endPoint2\", description: \"椭圆弧端点2\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"halfAxisLength\", description: \"半轴长度\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"startAngle\", description: \"开始角度\", \"type\": \"float\", \"required\": true\n },\n {\n name: \"endAngle\", description: \"结束角度\", \"type\": \"float\", \"required\": true\n },\n ...baseParams,\n ]\n }\n }\n}\nexport const init = ()=> {\n MxAiModule.regist(MxAiDrawEllipse);\n MxAiModule.regist(MxAiDrawEllipseArc);\n}\n\n\n","\n///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { McCmColor, McDbLine, McDbPolyline, McGePoint3d, McGeVector3d, MxCADUiPrPoint, MxCpp, MxCADUtility, McObjectId } from \"mxcad\";\nimport { baseParams, mergeBaseMcDbEntityProps, parseParamPoints } from \"../base\";\nimport { findIntersection, getClosestPoint, insidePolygon } from \"../tools\";\n\nclass WallLine {\n static lines = new Set<WallLine>()\n outsidePoints: [McGePoint3d, McGePoint3d]\n insidePoints: [McGePoint3d, McGePoint3d]\n outsideLine: McDbLine\n insideLine: McDbLine\n startPoint: McGePoint3d\n endPoint: McGePoint3d\n width = 50\n startClosedLine: McDbLine;\n endClosedLine: McDbLine;\n startClosedId: McObjectId;\n endClosedId: McObjectId;\n outsideId: McObjectId;\n insideId: McObjectId;\n constructor(start: McGePoint3d, end: McGePoint3d, width = 50) {\n this.update(start, end, width)\n }\n update(start: McGePoint3d, end: McGePoint3d, width = this.width) {\n let dirVector = start.clone().sub(end).normalize()\n dirVector = new McGeVector3d(-dirVector.y, dirVector.x, 0).mult(width / 2)\n const negateDirVector = dirVector.clone().negate()\n this.outsidePoints = [start.clone().addvec(dirVector), end.clone().addvec(dirVector)];\n this.insidePoints = [start.clone().addvec(negateDirVector), end.clone().addvec(negateDirVector)]\n this.width = width\n this.startPoint = start.clone()\n this.endPoint = end.clone()\n if (!this.outsideLine) {\n this.outsideLine = new McDbLine(this.outsidePoints[0], this.outsidePoints[1])\n }\n else {\n this.outsideLine.startPoint = this.outsidePoints[0]\n this.outsideLine.endPoint = this.outsidePoints[1]\n }\n if (!this.insideLine) {\n this.insideLine = new McDbLine(this.insidePoints[0], this.insidePoints[1])\n } else {\n this.insideLine.startPoint = this.insidePoints[0]\n this.insideLine.endPoint = this.insidePoints[1]\n }\n if (!this.startClosedLine) {\n this.startClosedLine = new McDbLine(this.outsidePoints[0], this.insidePoints[0])\n } else {\n this.startClosedLine.startPoint = this.outsidePoints[0]\n this.startClosedLine.endPoint = this.insidePoints[0]\n }\n if (!this.endClosedLine) {\n this.endClosedLine = new McDbLine(this.outsidePoints[1], this.insidePoints[1])\n } else {\n this.endClosedLine.startPoint = this.outsidePoints[1]\n this.endClosedLine.endPoint = this.insidePoints[1]\n }\n }\n\n clone() {\n const line = new WallLine(this.startPoint, this.endPoint, this.width)\n line.insideLine = this.insideLine.clone() as McDbLine\n line.outsideLine = this.outsideLine.clone() as McDbLine\n return line\n }\n hiddenStartClosedLine() {\n this.startClosedLine.visible = false\n }\n hiddenEndClosedLine() {\n this.endClosedLine.visible = false\n }\n\n /** 开始点闭合线与比较墙体内线的交点 (开始-内)*/\n getClosedStartLineToDiffWallInsideLineIntersectionPoint(diffLine: WallLine, is = false) {\n return this.startClosedLine.visible ? findIntersection(diffLine.insideLine.startPoint, diffLine.insideLine.endPoint, this.startClosedLine.startPoint, this.startClosedLine.endPoint, is) : null\n }\n /** 开始点闭合线与比较墙体外线的交点 (开始-外)*/\n getClosedStartLineToDiffWallOutsideLineIntersectionPoint(diffLine: WallLine, is = false) {\n return this.startClosedLine.visible ? findIntersection(diffLine.outsideLine.startPoint, diffLine.outsideLine.endPoint, this.startClosedLine.startPoint, this.startClosedLine.endPoint, is) : null\n }\n /** 结束点闭合线与比较墙体内线的交点 (结束-内)*/\n getClosedEndLineToDiffWallInsideLineIntersectionPoint(diffLine: WallLine, is = false) {\n return this.endClosedLine.visible ? findIntersection(diffLine.insideLine.startPoint, diffLine.insideLine.endPoint, this.endClosedLine.startPoint, this.endClosedLine.endPoint, is) : null\n }\n /** 开始点闭合线与比较墙体外线的交点 (结束-外)*/\n getClosedEndLineToDiffWallOutsideLineIntersectionPoint(diffLine: WallLine, is = false) {\n return this.endClosedLine.visible ? findIntersection(diffLine.outsideLine.startPoint, diffLine.outsideLine.endPoint, this.endClosedLine.startPoint, this.endClosedLine.endPoint, is) : null\n }\n\n /** 内线与比较墙体的内线交点 (内-内)*/\n getInsideToDiffInsideIntersectionPoint(diffLine: WallLine, is = false) {\n return findIntersection(diffLine.insideLine.startPoint, diffLine.insideLine.endPoint, this.insideLine.startPoint, this.insideLine.endPoint, is)\n }\n\n /** 外线与比较墙体的外线交点 (外-外)*/\n getOutsideToDiffOutsideIntersectionPoint(diffLine: WallLine, is = false) {\n return findIntersection(diffLine.outsideLine.startPoint, diffLine.outsideLine.endPoint, this.outsideLine.startPoint, this.outsideLine.endPoint, is)\n }\n\n /** 内线与比较墙体的外线交点 (内-外)*/\n getInsideToDiffOutsideIntersectionPoint(diffLine: WallLine, is = false) {\n return findIntersection(diffLine.outsideLine.startPoint, diffLine.outsideLine.endPoint, this.insideLine.startPoint, this.insideLine.endPoint, is)\n }\n\n /** 外线与比较墙体的内线交点 (外-内)*/\n getOutsideToDiffInsideIntersectionPoint(diffLine: WallLine, is = false) {\n return findIntersection(diffLine.insideLine.startPoint, diffLine.insideLine.endPoint, this.outsideLine.startPoint, this.outsideLine.endPoint, is)\n }\n /** 开始闭合线与比较墙体开始闭合线交点 (开始-开始)*/\n getClosedStartLineToDiffLineClosedStartLineIntersectionPoint(diffLine: WallLine, is = false) {\n return this.startClosedLine.visible ? findIntersection(diffLine.startClosedLine.startPoint, diffLine.startClosedLine.endPoint, this.startClosedLine.startPoint, this.startClosedLine.endPoint, is) : null\n }\n /** 开始闭合线与比较墙体结束闭合线交点 (开始-结束)*/\n getClosedStartLineToDiffLineClosedEndLineIntersectionPoint(diffLine: WallLine, is = false) {\n return this.startClosedLine.visible ? findIntersection(diffLine.endClosedLine.startPoint, diffLine.endClosedLine.endPoint, this.startClosedLine.startPoint, this.startClosedLine.endPoint, is) : null\n }\n /** 结束点闭合线与比较墙体开始闭合线交点 (结束-开始)*/\n getClosedEndLineToDiffLineClosedStartLineIntersectionPoint(diffLine: WallLine, is = false) {\n return this.endClosedLine.visible ? findIntersection(diffLine.startClosedLine.startPoint, diffLine.startClosedLine.endPoint, this.endClosedLine.startPoint, this.endClosedLine.endPoint, is) : null\n }\n /** 结束点闭合线与比较墙体结束点闭合线交点 (结束-结束)*/\n getClosedEndLineToDiffLineClosedEndLineIntersectionPoint(diffLine: WallLine, is = false) {\n return this.endClosedLine.visible ? findIntersection(diffLine.endClosedLine.startPoint, diffLine.endClosedLine.endPoint, this.endClosedLine.startPoint, this.endClosedLine.endPoint, is) : null\n }\n\n // 是否拐角\n isCorner(diffLine: WallLine) {\n const v = diffLine.startPoint.sub(diffLine.endPoint).normalize()\n const v1 = v.clone().mult(diffLine.width)\n const v2 = v.clone().mult(-diffLine.width)\n const pt1 = diffLine.insideLine.startPoint.clone().addvec(v1)\n const pt2 = diffLine.insideLine.startPoint.clone().addvec(v2)\n const pt3 = diffLine.outsideLine.startPoint.clone().addvec(v2)\n const pt4 = diffLine.outsideLine.startPoint.clone().addvec(v1)\n const pt5 = diffLine.insideLine.endPoint.clone().addvec(v1)\n const pt6 = diffLine.insideLine.endPoint.clone().addvec(v2)\n const pt7 = diffLine.outsideLine.endPoint.clone().addvec(v2)\n const pt8 = diffLine.outsideLine.endPoint.clone().addvec(v1)\n const start = insidePolygon([pt1, pt2, pt3, pt4], this.startPoint)\n const end = insidePolygon([pt1, pt2, pt3, pt4], this.endPoint)\n const start1 = insidePolygon([pt5, pt6, pt7, pt8], this.startPoint)\n const end1 = insidePolygon([pt5, pt6, pt7, pt8], this.endPoint)\n return [{\n start,\n end\n }, {\n start: start1,\n end: end1\n }]\n }\n // 处理拐角\n handlingCorners(diffLine: WallLine) {\n const [startCorner, endCorner] = this.isCorner(diffLine)\n if (endCorner.start) {\n this.outsideLine.startPoint = diffLine.outsideLine.endPoint = this.getOutsideToDiffOutsideIntersectionPoint(diffLine, true)\n this.insideLine.startPoint = diffLine.insideLine.endPoint = this.getInsideToDiffInsideIntersectionPoint(diffLine, true)\n this.hiddenStartClosedLine()\n diffLine.hiddenEndClosedLine()\n return\n }\n else if (endCorner.end) {\n this.outsideLine.endPoint = diffLine.insideLine.endPoint = this.getOutsideToDiffInsideIntersectionPoint(diffLine, true)\n this.insideLine.endPoint = diffLine.outsideLine.endPoint = this.getInsideToDiffOutsideIntersectionPoint(diffLine, true)\n this.hiddenEndClosedLine()\n diffLine.hiddenEndClosedLine()\n return\n }\n else if (startCorner.start) {\n this.insideLine.startPoint = diffLine.outsideLine.startPoint = this.getInsideToDiffOutsideIntersectionPoint(diffLine, true)\n this.outsideLine.startPoint = diffLine.insideLine.startPoint = this.getOutsideToDiffInsideIntersectionPoint(diffLine, true)\n this.hiddenStartClosedLine()\n diffLine.hiddenStartClosedLine()\n return\n }\n else if (startCorner.end) {\n this.outsideLine.endPoint = diffLine.outsideLine.startPoint = this.getOutsideToDiffOutsideIntersectionPoint(diffLine, true)\n this.insideLine.endPoint = diffLine.insideLine.startPoint = this.getInsideToDiffInsideIntersectionPoint(diffLine, true)\n this.hiddenEndClosedLine()\n diffLine.hiddenStartClosedLine()\n return\n }\n }\n // 交集处理\n processingIntersection() {\n const diffUpdate: {\n diffLine: WallLine,\n /** ii, io, oo, oi */\n intersectionPoints: (null | McGePoint3d)[]\n }[] = []\n WallLine.lines.forEach((diffLine) => {\n const point = this.getInsideToDiffInsideIntersectionPoint(diffLine)\n const point1 = this.getInsideToDiffOutsideIntersectionPoint(diffLine)\n const point2 = this.getOutsideToDiffOutsideIntersectionPoint(diffLine)\n const point3 = this.getOutsideToDiffInsideIntersectionPoint(diffLine)\n if (point || point1 || point2 || point3) {\n diffUpdate.push({\n diffLine,\n intersectionPoints: [point, point1, point2, point3]\n })\n }\n })\n diffUpdate.forEach(({ diffLine, intersectionPoints }) => {\n const [startCorner, endCorner] = this.isCorner(diffLine)\n const isCorner = startCorner.end || startCorner.start || endCorner.start || endCorner.start\n const [ii, io, oo, oi] = intersectionPoints\n const points = [diffLine.insideLine.startPoint, diffLine.insideLine.endPoint, diffLine.outsideLine.endPoint, diffLine.outsideLine.startPoint]\n const isStart = insidePolygon(points, this.startPoint)\n const isEnd = insidePolygon(points, this.endPoint)\n\n const xiufu = ()=> {\n if (endCorner.start) {\n console.log(\"endCorner.start\")\n if (oo) {\n diffLine.outsideLine.endPoint = this.outsideLine.startPoint = oo\n }\n if (ii) {\n diffLine.insideLine.endPoint = this.insideLine.startPoint = ii\n }\n this.hiddenStartClosedLine()\n diffLine.hiddenEndClosedLine()\n\n }\n else if (endCorner.end) {\n console.log(\"endCorner.end\")\n if (oi) {\n diffLine.insideLine.endPoint = this.outsideLine.endPoint = oi\n }\n if (io) {\n diffLine.outsideLine.endPoint = this.insideLine.endPoint = io\n }\n this.hiddenEndClosedLine()\n diffLine.hiddenEndClosedLine()\n }\n else if (startCorner.start) {\n console.log(\"startCorner.start\")\n if (io) {\n diffLine.outsideLine.startPoint = this.insideLine.startPoint = io\n }\n if (oi) {\n diffLine.insideLine.startPoint = this.outsideLine.startPoint = oi\n }\n\n diffLine.hiddenStartClosedLine()\n this.hiddenStartClosedLine()\n }\n else if (startCorner.end) {\n console.log(\"startCorner.end\")\n if (oo) {\n diffLine.outsideLine.startPoint = this.outsideLine.endPoint = oo\n }\n if (ii) {\n diffLine.insideLine.startPoint = this.insideLine.endPoint = ii\n }\n diffLine.hiddenStartClosedLine()\n this.hiddenEndClosedLine()\n }\n }\n if (ii && io && oo && oi) {\n const point = findIntersection(this.startPoint, this.endPoint, diffLine.startPoint, diffLine.endPoint)\n const wall1 = new WallLine(this.startPoint, point, this.width)\n const wall2 = new WallLine(point, this.endPoint, this.width)\n const diffWall1 = new WallLine(diffLine.startPoint, point, diffLine.width)\n const diffWall2 = new WallLine(point, diffLine.endPoint, diffLine.width)\n wall1.insideLine.startPoint = this.insideLine.startPoint\n wall1.outsideLine.startPoint = this.outsideLine.startPoint\n wall2.insideLine.endPoint = this.insideLine.endPoint\n wall2.outsideLine.endPoint = this.outsideLine.endPoint\n\n diffLine.remove()\n this.remove()\n wall1.draw()\n wall2.draw()\n diffWall1.draw()\n diffWall2.draw()\n } else if ((oo && io) || (ii && oi)) {\n const point = findIntersection(this.startPoint, this.endPoint, diffLine.startPoint, diffLine.endPoint, true)\n const wall1 = new WallLine(diffLine.startPoint, point, diffLine.width)\n wall1.hiddenEndClosedLine()\n const wall2 = new WallLine(point, diffLine.endPoint, diffLine.width)\n wall2.hiddenStartClosedLine()\n diffLine.remove()\n wall1.draw()\n wall2.draw()\n } else {\n if(diffUpdate.length === 1) return this.handlingCorners(diffLine)\n if (endCorner.start) {\n console.log(\"endCorner.start\")\n if (oo) {\n diffLine.outsideLine.endPoint = this.outsideLine.startPoint = oo\n }\n if (ii) {\n diffLine.insideLine.endPoint = this.insideLine.startPoint = ii\n }\n this.hiddenStartClosedLine()\n diffLine.hiddenEndClosedLine()\n\n }\n else if (endCorner.end) {\n console.log(\"endCorner.end\")\n if (oi) {\n diffLine.insideLine.endPoint = this.outsideLine.endPoint = oi\n }\n if (io) {\n diffLine.outsideLine.endPoint = this.insideLine.endPoint = io\n }\n this.hiddenEndClosedLine()\n diffLine.hiddenEndClosedLine()\n }\n else if (startCorner.start) {\n console.log(\"startCorner.start\")\n if (io) {\n diffLine.outsideLine.startPoint = this.insideLine.startPoint = io\n }\n if (oi) {\n diffLine.insideLine.startPoint = this.outsideLine.startPoint = oi\n }\n\n diffLine.hiddenStartClosedLine()\n this.hiddenStartClosedLine()\n }\n else if (startCorner.end) {\n console.log(\"startCorner.end\")\n if (oo) {\n diffLine.outsideLine.startPoint = this.outsideLine.endPoint = oo\n }\n if (ii) {\n diffLine.insideLine.startPoint = this.insideLine.endPoint = ii\n }\n diffLine.hiddenStartClosedLine()\n this.hiddenEndClosedLine()\n }\n }\n\n })\n }\n private isDraw = false;\n draw(isIntersection = true) {\n if (this.isDraw) return\n const mxcad = MxCpp.getCurrentMxCAD();\n if (this.outsideLine) {\n this.outsideLine.erase()\n }\n if (this.insideLine) {\n this.insideLine.erase()\n }\n if (!mxcad) return\n this.outsideLine.trueColor = new McCmColor(255, 0, 0)\n this.outsideId = mxcad.drawEntity(this.outsideLine)\n this.insideLine.trueColor = new McCmColor(0, 255, 255)\n this.insideId = mxcad.drawEntity(this.insideLine)\n const outsideLine = this.outsideId.getMcDbEntity() as McDbLine\n if (outsideLine) this.outsideLine = outsideLine\n const insideLine = this.insideId.getMcDbEntity() as McDbLine\n if (insideLine) this.insideLine = insideLine\n this.startClosedId = mxcad.drawEntity(this.startClosedLine)\n this.endClosedId = mxcad.drawEntity(this.endClosedLine)\n const startClosedLine = this.startClosedId.getMcDbEntity() as McDbLine\n if (startClosedLine) this.startClosedLine = startClosedLine\n const endClosedLine = this.endClosedId.getMcDbEntity() as McDbLine\n if (endClosedLine) this.endClosedLine = endClosedLine\n mxcad.updateDisplay()\n WallLine.lines.add(this)\n this.isDraw = true\n if (isIntersection) this.processingIntersection()\n }\n\n remove() {\n this.endClosedId && this.endClosedId.erase()\n this.startClosedId && this.startClosedId.erase()\n this.insideId && this.insideId.erase()\n this.outsideId && this.outsideId.erase()\n WallLine.lines.delete(this)\n }\n}\n\n//绘制墙壁,1000,1000,3000, 1000, 3000, -1000, 1000, -1000, 1000, 1000 墙宽100\nexport class Wall {\n public call(param: any) {\n if (param && param.points) {\n let mxcad = MxCpp.getCurrentMxCAD();\n const points = parseParamPoints(param.points)\n if (points.length < 2) return\n points.forEach((point, index) => {\n const nextLine = points[index + 1]\n if (!nextLine) return\n const wall = new WallLine(point, nextLine, param.width)\n wall.draw()\n })\n mxcad.updateDisplay()\n }\n }\n\n public regist_data() {\n return {\n filename: \"drawWall.json\",\n name: \"drawWall\",\n description: \"根据坐标点合集绘制墙\",\n params: [\n {\n name: \"points\", description: \"绘制墙的坐标点\", \"type\": \"str\", \"required\": true\n },\n {\n name: \"width\", description: \"绘制墙的宽度\", \"type\": \"float\", \"required\": false\n },\n ...baseParams,\n ]\n }\n }\n}\n\n/*\nsetTimeout(async () => {\n MxCpp.getCurrentMxCAD().newFile()\n const getPoint = new MxCADUiPrPoint()\n let oldPoint\n const lines: WallLine[] = []\n const mxcad = MxCpp.getCurrentMxCAD()\n const line = new WallLine(new McGePoint3d(), new McGePoint3d(), 5000)\n let oldLine: WallLine\n let linePoints: McGePoint3d[] = []\n let i = 0\n while (true) {\n const point = await getPoint.go()\n getPoint.setUserDraw((currentPoint, pW) => {\n if (linePoints.length === 0) {\n return\n }\n line.update(point, currentPoint, 5000)\n pW.setColor(\"#ff0000\")\n pW.drawLine(line.outsidePoints[0].toVector3(), line.outsidePoints[1].toVector3())\n pW.setColor(\"#00ffff\")\n pW.drawLine(line.insidePoints[0].toVector3(), line.insidePoints[1].toVector3())\n pW.setColor(\"#fff\")\n pW.drawLine(line.startPoint.toVector3(), line.endPoint.toVector3())\n })\n linePoints.push(point)\n if (linePoints.length === 2) {\n const [pt1, pt2] = linePoints\n const line = new WallLine(pt1, pt2, 5000)\n // line.processingIntersection()\n line.draw()\n linePoints = []\n getPoint.clearLastInputPoint()\n }\n\n // if (oldPoint) {\n // const line = new WallLine(oldPoint, point, 5000)\n // line.draw()\n // oldLine = line\n // }\n // oldPoint = point.clone()\n mxcad.updateDisplay()\n }\n\n // new Wall().call({\n // points: \"100,200,300,800,600,600, -100, 100, 300, 200, 1000, -200\",\n // width: 100\n // })\n // new Wall().call({\n // points: \"33, 66, 88, 777, 965\",\n // width: 100\n // })\n}, 1000)\n\n*/\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { MxCpp, McDbBlockReference, McGePoint3d } from \"mxcad\"\n\n\n// 放置树,位置66,1000\nexport class Bock {\n async call(param: any) {\n let mxcad = MxCpp.App.getCurrentMxCAD();\n\n if (param.name) {\n const table = mxcad.getDatabase().getBlockTable()\n const blkrecId = table.get(param.name)\n if (!blkrecId) return\n if(!blkrecId.isValid()) return\n let blkRef = new McDbBlockReference();\n blkRef.blockTableRecordId = blkrecId;\n let box = blkRef.getBoundingBox();\n let oldScale = 0\n if (box.ret) {\n let dLen = box.maxPt.distanceTo(box.minPt);\n if (dLen > 0.00001) {\n oldScale = mxcad.getMxDrawObject().screenCoordLong2Doc(100) / dLen\n blkRef.setScale(oldScale);\n }\n }\n blkRef.position = new McGePoint3d(param.pos[0], param.pos[1])\n mxcad.drawEntity(blkRef);\n mxcad.updateDisplay()\n }\n }\n\n public regist_data() {\n return {\n filename: \"insertBock.json\",\n name: \"insertBock\",\n description: \"放置插入某个物品\",\n params: [\n {\n name: \"name\", description: \"要放置插入的物品名称\", \"type\": \"str\", \"required\": true\n },\n {\n name: \"pos\", description: \"要放置插入物品的位置\", \"type\": \"tuple[float, float]\", \"required\": true\n }\n ]\n }\n }\n}\n\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { MxAiModule } from \"../MxAiModule\";\nimport { Wall } from \"./drawWall\";\nimport { Bock } from \"./InsertBock\"\nexport function init() {\n MxAiModule.regist(Wall)\n MxAiModule.regist(Bock)\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { McDbMText, McDbText, McGePoint3d, McObjectId, MxCADUiPrDist, MxCADUiPrPoint, MxCADUiPrString, MxCpp } from \"mxcad\";\nimport { MxAiModule } from \"./MxAiModule\";\nimport { baseParams, mergeBaseMcDbEntityProps, parsePoint } from \"./base\";\n\n\n\n//绘制插入单行文字\"是否\"文字位置0,0\nclass MxAiDrawText {\n async call(param: any) {\n let mxcad = MxCpp.getCurrentMxCAD();\n console.log(param)\n mxcad.newFile()\n let objId: McObjectId\n const isMText = typeof param.isMText === \"undefined\" ? false : param.isMText\n const createMText = () => {\n const mText = new McDbMText()\n mText.textHeight = param.textSize || 100\n mText.location = param.textPos || new McGePoint3d()\n mText.contents = param.textString || \"\"\n return mText\n }\n const createText = () => {\n const text = new McDbText()\n text.height = param.textSize || 100\n text.textString = param.textString || \"\"\n text.position = param.textPos || new McGePoint3d()\n return text\n }\n if (!param.textString) {\n const getStr = new MxCADUiPrString()\n getStr.setMessage(\"请输入文字\")\n const text = await getStr.go()\n if (!text) return\n param.textString = text\n }\n if (!param.textPos) {\n const getPoint = new MxCADUiPrPoint()\n getPoint.clearLastInputPoint()\n getPoint.setMessage(\"请指定文字位置\")\n const point = await getPoint.go()\n getPoint.setUserDraw((pt, pw) => {\n param.textPos = pt\n if (isMText) {\n const mText = createMText()\n pw.drawMcDbEntity(mText)\n } else {\n const text = createText()\n pw.drawMcDbEntity(text)\n }\n })\n if (!point) return\n param.textPos = point\n } else {\n param.textPos = parsePoint(param.textPos)\n }\n if (!param.textSize) {\n const getDist = new MxCADUiPrPoint()\n getDist.clearLastInputPoint()\n getDist.setMessage(\"通过线段长度确定文字高度\")\n const point = await getDist.go()\n if (point) {\n getDist.setUserDraw((pt, pw) => {\n param.textSize = point.distanceTo(pt)\n if (isMText) {\n const mText = createMText()\n pw.drawMcDbEntity(mText)\n } else {\n const text = createText()\n pw.drawMcDbEntity(text)\n }\n })\n const point1 = await getDist.go()\n if (point1) {\n param.textSize = point1.distanceTo(point)\n }\n }\n }\n\n if (isMText) {\n const mText = createMText()\n objId = mxcad.drawEntity(mText)\n } else {\n const text = createText()\n objId = mxcad.drawEntity(text)\n }\n mergeBaseMcDbEntityProps(objId.getMcDbEntity(), param)\n mxcad.updateDisplay();\n }\n\n public regist_data() {\n return {\n filename: \"drawText.json\",\n name: \"draw_text\",\n description: \"绘制或者插入文字或者多行文字(文本)\",\n params: [\n {\n name: \"isMText\", description: \"绘制的文字是否为多行文字\", \"type\": \"boolean\", \"required\": true\n },\n {\n name: \"textString\", description: \"绘制的文字的内容\", \"type\": \"str\", \"required\": true\n },\n {\n name: \"textPos\", description: \"绘制的文字的位置\", \"type\": \"tuple[float, float]\", \"required\": true\n },\n {\n name: \"textSize\", description: \"绘制的文字的高度\", \"type\": \"float\", \"required\": true\n },\n ...baseParams,\n ]\n }\n }\n\n}\n\nexport function init() {\n MxAiModule.regist(MxAiDrawText);\n}\n\n\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { MxCpp } from \"mxcad\";\nimport { MxAiModule } from \"./MxAiModule\";\nimport { MxFun } from \"mxdraw\";\n\n// 撤回2步 恢复1步\nclass MxAiWithdrawAndRestore {\n public call(param: any) {\n console.log(param)\n if(param.isWithdraw) {\n if(typeof param.withdrawNum !== \"number\") param.withdrawNum = 1\n for (let index = 0; index < param.withdrawNum; index++) {\n MxFun.sendStringToExecute(\"Mx_Undo\")\n }\n }\n if(param.isRestore) {\n if(typeof param.restoreNum !== \"number\") param.restoreNum = 1\n for (let index = 0; index < param.restoreNum; index++) {\n MxFun.sendStringToExecute(\"Mx_Redo\")\n }\n }\n }\n\n public regist_data() {\n return {\n filename: \"call_withdraw_restore.json\",\n name: \"call_withdraw_restore\",\n description: \"撤回撤销和恢复\",\n params: [\n {\n name: \"isWithdraw\", description: \"是否要撤回或撤销\", \"type\": \"boolean\", \"required\": true\n },\n {\n name: \"isRestore\", description: \"是否要恢复\", \"type\": \"boolean\", \"required\": true\n },\n {\n name: \"withdrawNum\", description: \"撤回撤销(上)几步\", \"type\": \"int\", \"required\": false\n },\n {\n name: \"restoreNum\", description: \"恢复(前)几步\", \"type\": \"int\", \"required\": false\n }\n ]\n }\n }\n\n}\n\nexport function init() {\n MxAiModule.regist(MxAiWithdrawAndRestore);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { MxCADUiPrString, MxCpp } from \"mxcad\";\nimport { MxFun } from \"mxdraw\";\n\n\nexport class MxAiModuleType {\n\n private aryRegData = [];\n public regist(type: any) {\n let fun = new type();\n let regdata = fun.regist_data();\n MxCpp.Ai.addFunction(regdata.name, fun.call);\n this.aryRegData.push(regdata);\n }\n\n public regist_server(operation_code:string) {\n this.aryRegData.forEach((val) => {\n val.operation_code = operation_code;\n MxCpp.Ai.registTool(val);\n })\n MxCpp.Ai.reloadTools({operation_code:operation_code});\n }\n\n}\nexport let MxAiModule: MxAiModuleType = new MxAiModuleType();\n\n\nasync function Mx_Ai() {\n let getString = new MxCADUiPrString();\n getString.setMessage(\"\\n human:\");\n let str = await getString.go();\n if (!str) return;\n MxCpp.Ai.chat_tool(str);\n}\n\nasync function Mx_AiRegistServer() {\n let getString = new MxCADUiPrString();\n getString.setMessage(\"\\n 输入 server_operate_code:\");\n let str = await getString.go();\n if (!str) return;\n MxAiModule.regist_server(str);\n}\n\n\nimport { init as line_init } from \"./MxAiDrawLine\"\nimport { init as circle_init } from \"./MxAiDrawCircle\"\nimport { init as circle_arc_init } from \"./MxAiDrawCircleArc\"\n\nimport { init as polygon_init } from \"./MxAiDrawPolygon\"\nimport { init as rect_init } from \"./MxAiDrawRect\"\n\nimport { init as ellipse_init } from \"./MxAiDrawEllipse\"\n\nimport { init as interiorDesign_init } from \"./interiorDesignCode\"\nimport { init as text_init } from \"./MxAiDrawText\"\nimport { init as withdrawOrRestore_init } from \"./MxAiWithdrawAndRestore\"\n\nexport function init() {\n MxFun.addCommand(\"Mx_Ai\", Mx_Ai);\n MxFun.addCommand(\"Mx_AiRegistServer\", Mx_AiRegistServer);\n line_init();\n circle_init()\n circle_arc_init()\n polygon_init()\n ellipse_init()\n interiorDesign_init()\n text_init()\n withdrawOrRestore_init()\n rect_init()\n}\n\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nimport { MxFun } from \"mxdraw\";\nimport { McDbAttribute, McDbBlockReference, McDbLine, McGePoint3d, MxCADResbuf, MxCADSelectionSet, MxCADUiPrPoint, MxCADUtility, MxCpp } from \"mxcad\";\n\nfunction FindBlock(pt:McGePoint3d,blks:any):any{\n let dSearch = 40;\n let filter = new MxCADResbuf();\n filter.AddString(\"电杆层\", 0);\n filter.AddString(\"INSERT\", 5020);\n let ss = new MxCADSelectionSet();\n\n // 得到pt位置,范围为dSearch内的图块,图层为\"电杆层\"\n ss.crossingSelect(pt.x - dSearch,pt.y - dSearch,pt.x + dSearch,pt.y + dSearch,filter);\n let aryFind:any[] = [];\n\n // 遍历每个图块,得到图位置,放到一个数组中。\n ss.forEach((id) => {\n let ent = id.getMcDbEntity();\n if (ent) {\n let blkRef = (ent as McDbBlockReference);\n if(blks[blkRef.getObjectID().id]){\n aryFind.push({dist:blkRef.position.distanceTo(pt),blk:blks[blkRef.getObjectID().id]});\n }\n }\n });\n\n if(aryFind.length == 0) return undefined;\n\n // 对数组按查找点到图块位置的距离排序.\n aryFind.sort((a,b)=>{\n return a.dist - b.dist;\n });\n\n // 得到与查找点最近的图块,并返回.\n if(aryFind[0].dist < dSearch){\n return aryFind[0].blk;\n }\n return false;\n}\n\nfunction FindLine(key:any,blks:any,lines:any){\n\n let blkdata = blks[key];\n let blkref:McDbBlockReference = blkdata.ref;\n\n let dSearch = 40;\n let filter = new MxCADResbuf();\n filter.AddString(\"0\", 0);\n filter.AddString(\"LINE\", 5020);\n let ss = new MxCADSelectionSet();\n\n // 得到图块位置,范围为dSearch内的直线。\n ss.crossingSelect(blkref.position.x - dSearch,blkref.position.y - dSearch,blkref.position.x + dSearch,blkref.position.y + dSearch,filter);\n\n // 遍历每个直线 。\n ss.forEach((id) => {\n let ent = id.getMcDbEntity();\n if (ent) {\n let line = (ent as McDbLine);\n let nexPoint:McGePoint3d = line.endPoint;\n\n // 得到直线与图块连接的端点坐标.\n let dist = line.startPoint.distanceTo(blkref.position);\n if(dist > line.endPoint.distanceTo(blkref.position)){\n dist = line.endPoint.distanceTo(blkref.position);\n nexPoint = line.startPoint;\n }\n\n if(dist < dSearch){\n if(!line[line.getObjectID().id] ){\n // 查找直线另一端的图块.\n let nexBlk = FindBlock(nexPoint,blks);\n if(nexBlk ){\n // 两端都找到图块,就算找到一个目标直线了.\n lines[line.getObjectID().id] = {tag1:blkdata.tag,tag2:nexBlk.tag,handle:line.getHandle()};\n }\n }\n }\n }\n });\n\n}\n\n// demo/test_search.dwg\nasync function MxTest_UserGetData() {\n\n let ss = new MxCADSelectionSet();\n let filter = new MxCADResbuf();\n filter.AddString(\"电杆层\", 0);\n filter.AddString(\"INSERT\", 5020);\n\n // 得到图上所在\"电杆层\"上的图块。\n ss.allSelect(filter);\n\n let blks:any = {};\n\n // 遍历每个图块.\n ss.forEach((id) => {\n let ent = id.getMcDbEntity();\n if (ent) {\n let blkRef = (ent as McDbBlockReference);\n let aryId = blkRef.getAllAttribute();\n let obj:any = {};\n aryId.forEach((id) => {\n let attribt: McDbAttribute = id.getMcDbEntity() as any;\n // 得到杆号\n if (attribt.tag == \"杆号\") {\n obj.tag = attribt.textString;\n }\n });\n\n if(obj.tag){\n // 得到一个目标图块 。\n obj.handle = blkRef.getHandle();\n blks[id.id]= {ref:blkRef,tag:obj.tag};\n console.log(obj);\n }\n }\n })\n\n let lines:any = {};\n Object.keys(blks).forEach((key)=>{\n // 根所图块位置,查找与它连接的直线 。\n FindLine(key,blks,lines);\n });\n\n Object.keys(lines).forEach((key)=>{\n console.log(lines[key]);\n });\n\n}\n\nexport function init() {\n MxFun.addCommand(\"MxTest_UserGetData\", MxTest_UserGetData);\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { MxFun } from \"mxdraw\";\nimport {\n MxCpp,\n McDbLine,\n McGePoint3d,\n McDbCustomEntity,\n IMcDbDwgFiler,\n MxCADWorldDraw,\n McGePoint3dArray,\n MxCADUiPrPoint,\n McGeVector3d,\n McDbText,\n McDb,\n MxCADResbuf,\n MxCADSelectionSet,\n McObjectId,\n McDbCircle,\n\n} from \"mxcad\"\n\n// LineText\nclass McDbLineText extends McDbCustomEntity {\n\n private pt1: McGePoint3d = new McGePoint3d();\n private pt2: McGePoint3d = new McGePoint3d();\n private _text: string = \"\";\n private _textsize: number = 10;\n\n constructor(imp?: any) {\n super(imp);\n }\n\n public create(imp: any) {\n return new McDbLineText(imp)\n }\n\n public getTypeName(): string {\n return \"McDbLineText\";\n }\n\n public set text(val: string) {\n this._text = val;\n }\n\n public get text(): string {\n return this._text;\n }\n\n public set textsize(val: number) {\n this._textsize = val;\n }\n\n public get textsize(): number {\n return this._textsize;\n }\n\n\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\n this.pt1 = filter.readPoint(\"pt1\").val;\n this.pt2 = filter.readPoint(\"pt2\").val;\n this._text = filter.readString(\"text\").val;\n this._textsize = filter.readDouble(\"textsize\").val;\n\n\n return true;\n }\n\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\n filter.writePoint(\"pt1\", this.pt1);\n filter.writePoint(\"pt2\", this.pt2);\n filter.writeString(\"text\", this._text);\n filter.writeDouble(\"textsize\", this._textsize);\n return true;\n }\n\n private fineLink(pt: McGePoint3d): any {\n let ret: any = {};\n let myId = this.getObjectID();\n let dSearch = this._textsize * 0.5;;\n let filter = new MxCADResbuf();\n filter.AddString(\"McDbCustomEntity\", 5020);\n\n let ss = new MxCADSelectionSet();\n ss.crossingSelect(pt.x - dSearch, pt.y - dSearch, pt.x + dSearch, pt.y + dSearch, filter);\n ss.forEach((id) => {\n if (id == myId)\n return;\n let ent = id.getMcDbEntity();\n if (!ent) return;\n if (ent instanceof McDbLineText) {\n let line = (ent as McDbLineText);\n let linkPoint = line.getPoint1();\n let link_pos = 0;\n\n // 得到直线与图块连接的端点坐标.\n let dist = line.getPoint1().distanceTo(pt);\n if (dist > line.getPoint2().distanceTo(pt)) {\n dist = line.getPoint2().distanceTo(pt);\n linkPoint = line.getPoint2();\n link_pos = 1;\n }\n if (dist < dSearch) {\n ret[id.id] = { link_point: linkPoint,link_pos:link_pos };\n }\n }\n });\n return ret;\n }\n\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\n this.assertWrite();\n\n let pt:McGePoint3d = this.pt1.clone();\n let new_pt:McGePoint3d = pt;\n if (iIndex == 0) {\n this.pt1.x += dXOffset;\n this.pt1.y += dYOffset;\n this.pt1.z += dZOffset;\n new_pt = this.pt1;\n }\n else if (iIndex == 1) {\n pt = this.pt2.clone();\n\n this.pt2.x += dXOffset;\n this.pt2.y += dYOffset;\n this.pt2.z += dZOffset;\n new_pt = this.pt2;\n }\n\n if (this.getObjectID().isValid()) {\n\n // 同步,与连接的其它对象。\n let linkobj = this.fineLink(pt)\n Object.keys(linkobj).forEach((id_val:any)=>{\n let idFind = new McObjectId(id_val);\n let lineFind = (idFind.getMcDbEntity() as McDbLineText);\n\n if(linkobj[id_val].link_pos == 0){\n lineFind.setPoint1(new_pt);\n }\n else{\n lineFind.setPoint2(new_pt);\n }\n });\n }\n };\n\n public getGripPoints(): McGePoint3dArray {\n let ret = new McGePoint3dArray()\n ret.append(this.pt1);\n ret.append(this.pt2);\n return ret;\n };\n\n\n\n public worldDraw(draw: MxCADWorldDraw): void {\n\n let circle_r = this._textsize * 0.4;\n let vec2 = this.pt2.sub(this.pt1);\n vec2.normalize().mult(circle_r);\n\n let tmpline = new McDbLine(this.pt1.clone().addvec(vec2), this.pt2.clone().subvec(vec2));\n draw.drawEntity(tmpline);\n\n let vec = this.pt2.sub(this.pt1).mult(0.5);\n let midpt = this.pt1.clone().addvec(vec);\n\n\n if (vec.dotProduct(McGeVector3d.kXAxis) < 0) {\n vec.negate();\n }\n\n let ange = vec.angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);\n\n let str = this._text;\n if (str.length == 0) {\n str = this.pt1.distanceTo(this.pt2).toFixed(2);\n }\n vec.perpVector();\n if (vec.dotProduct(McGeVector3d.kYAxis) < 0) {\n vec.negate();\n }\n vec.normalize().mult(this._textsize * 0.2);\n\n let text = new McDbText();\n text.textString = str;\n text.position = midpt.clone().addvec(vec);\n text.alignmentPoint = midpt.clone().addvec(vec);\n text.rotation = ange;\n text.verticalMode = McDb.TextVertMode.kTextBottom;\n text.horizontalMode = McDb.TextHorzMode.kTextCenter;\n text.height = this._textsize;\n\n draw.drawEntity(text)\n\n\n let circle1 = new McDbCircle();\n circle1.center = this.pt1;\n circle1.radius = circle_r;\n draw.drawEntity(circle1);\n\n let circle2= new McDbCircle();\n circle2.center = this.pt2;\n circle2.radius = circle_r;\n draw.drawEntity(circle2);\n\n }\n\n //\n public setPoint1(pt1: McGePoint3d) {\n this.assertWrite();\n this.pt1 = pt1.clone();\n }\n\n public setPoint2(pt2: McGePoint3d) {\n this.assertWrite();\n this.pt2 = pt2.clone();\n }\n\n public getPoint1() {\n return this.pt1;\n }\n\n public getPoint2() {\n return this.pt2;\n }\n}\n\nexport async function MxTest_LineText() {\n /*\n let mxcad = MxCpp.getCurrentMxCAD();\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定一点:\");\n let pt1 = (await getPoint.go());\n if (!pt1) return;\n\n getPoint.setBasePt(pt1);\n getPoint.setUseBasePt(true);\n\n getPoint.setMessage(\"\\n指定二点:\");\n let pt2 = (await getPoint.go());\n if (!pt2) return;\n\n let myline = new McDbLineText();\n myline.setPoint1(pt1);\n myline.setPoint2(pt2);\n myline.textsize = mxcad.mxdraw.screenCoordLong2Doc(10);\n\n mxcad.drawEntity(myline);\n */\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n let pt1 = new McGePoint3d(100,100,0);\n let pt2 = new McGePoint3d(200,150,0);\n let pt3 = new McGePoint3d(400,50,0);\n let pt4 = new McGePoint3d(600,60,0);\n let pt5 = new McGePoint3d(200,300,0);\n\n let textsize = 5;\n\n let myline1 = new McDbLineText();\n myline1.setPoint1(pt1);\n myline1.setPoint2(pt2);\n myline1.textsize = textsize;\n myline1.text = \"xxxx\";\n mxcad.drawEntity(myline1);\n\n\n let myline2 = new McDbLineText();\n myline2.setPoint1(pt2);\n myline2.setPoint2(pt3);\n myline2.textsize = textsize;\n mxcad.drawEntity(myline2);\n\n let myline3 = new McDbLineText();\n myline3.setPoint1(pt3);\n myline3.setPoint2(pt4);\n myline3.textsize = textsize;\n mxcad.drawEntity(myline3);\n\n\n let myline4 = new McDbLineText();\n myline4.setPoint1(pt2);\n myline4.setPoint2(pt5);\n myline4.textsize = textsize;\n mxcad.drawEntity(myline4);\n\n\n //把所有的实体都放到当前显示视区\n mxcad.zoomW(new McGePoint3d(-300,-300,0),new McGePoint3d(650,500,0));\n\n //更新视区显示\n mxcad.updateDisplay();\n}\n\n\n\nexport function init() {\n\n MxFun.addCommand(\"MxTest_LineText\", MxTest_LineText);\n new McDbLineText().rxInit();\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n\nimport { init as init_getdata } from \"./getdata\"\nimport { init as linetext_custom } from \"./linetext_custom/entity\"\n///////////////////////////////////////////////////////////////////////////////\nexport function init() {\n init_getdata();\n linetext_custom();\n}\n","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { DynamicInputType, MxFun } from \"mxdraw\";\r\nimport {\r\n MxCpp,\r\n McDbLine,\r\n McGePoint3d,\r\n McDbCustomEntity,\r\n IMcDbDwgFiler,\r\n MxCADWorldDraw,\r\n McGePoint3dArray,\r\n McDbPoint,\r\n MxCADUiPrPoint,\r\n McObjectId,\r\n McDbPolyline,\r\n McDbHatch,\r\n MxCADSelectionSet,\r\n MxCADResbuf,\r\n} from \"mxcad\"\r\n\r\nclass McDbGisEntity extends McDbCustomEntity {\r\n public create(imp?: any): McDbCustomEntity {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n public getTypeName(): string {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n};\r\n\r\n// Point\r\nclass McDbGisPoint extends McDbGisEntity {\r\n\r\n private pt: McGePoint3d = new McGePoint3d();\r\n\r\n\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n\r\n public create(imp: any) {\r\n return new McDbGisPoint(imp)\r\n }\r\n\r\n public getTypeName(): string {\r\n return \"McDbGisPoint\";\r\n }\r\n\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.pt = filter.readPoint(\"pt\").val;\r\n return true;\r\n }\r\n\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoint(\"pt\", this.pt);\r\n return true;\r\n }\r\n\r\n\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n if (iIndex == 0) {\r\n this.pt.x += dXOffset;\r\n this.pt.y += dYOffset;\r\n this.pt.z += dZOffset;\r\n }\r\n\r\n };\r\n\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n ret.append(this.pt);\r\n return ret;\r\n };\r\n\r\n\r\n\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n draw.drawEntity(new McDbPoint(this.pt));\r\n }\r\n\r\n //\r\n public setPoint(pt: McGePoint3d) {\r\n this.assertWrite();\r\n this.pt = pt.clone();\r\n }\r\n\r\n public getPoint(): McGePoint3d {\r\n return this.pt;\r\n }\r\n}\r\n\r\n\r\n// MultiPoint\r\nclass McDbGisMultiPoint extends McDbGisEntity {\r\n\r\n private pts: McGePoint3d[] = [];\r\n\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n\r\n public create(imp: any) {\r\n return new McDbGisMultiPoint(imp)\r\n }\r\n\r\n public getTypeName(): string {\r\n return \"McDbGisMultiPoint\";\r\n }\r\n\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.pts = filter.readPoints(\"pts\").val;\r\n return true;\r\n }\r\n\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoints(\"pts\", this.pts);\r\n return true;\r\n }\r\n\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n if (iIndex >= 0 && iIndex < this.pts.length) {\r\n this.pts[iIndex].x += dXOffset;\r\n this.pts[iIndex].y += dYOffset;\r\n this.pts[iIndex].z += dZOffset;\r\n }\r\n };\r\n\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n this.pts.forEach(val => {\r\n ret.append(val);\r\n })\r\n return ret;\r\n };\r\n\r\n\r\n\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n this.pts.forEach(val => {\r\n draw.drawEntity(new McDbPoint(val));\r\n })\r\n }\r\n\r\n //\r\n public setPoint(index: number, pt: McGePoint3d) {\r\n this.assertWrite();\r\n if (index >= 0 && index < this.pts.length) {\r\n this.pts[index] = pt.clone();\r\n }\r\n }\r\n\r\n public getPoint(index: number): McGePoint3d {\r\n if (index >= 0 && index < this.pts.length) {\r\n return this.pts[index];\r\n }\r\n else {\r\n return new McGePoint3d();\r\n }\r\n }\r\n\r\n public addPoint(pt: McGePoint3d) {\r\n this.pts.push(pt.clone());\r\n }\r\n\r\n public removeAllPoint(): void {\r\n this.pts = [];\r\n }\r\n\r\n public getPointCount(): number {\r\n return this.pts.length;\r\n }\r\n}\r\n\r\n\r\n\r\n// LineString\r\nclass McDbGisLineString extends McDbGisEntity {\r\n\r\n private pts: McGePoint3d[] = [];\r\n\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n\r\n public create(imp: any) {\r\n return new McDbGisLineString(imp)\r\n }\r\n\r\n public getTypeName(): string {\r\n return \"McDbGisLineString\";\r\n }\r\n\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.pts = filter.readPoints(\"pts\").val;\r\n return true;\r\n }\r\n\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoints(\"pts\", this.pts);\r\n return true;\r\n }\r\n\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n if (iIndex >= 0 && iIndex < this.pts.length) {\r\n this.pts[iIndex].x += dXOffset;\r\n this.pts[iIndex].y += dYOffset;\r\n this.pts[iIndex].z += dZOffset;\r\n }\r\n };\r\n\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n this.pts.forEach(val => {\r\n ret.append(val);\r\n })\r\n return ret;\r\n };\r\n\r\n\r\n\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n let pl = new McDbPolyline();\r\n this.pts.forEach(val => {\r\n pl.addVertexAt(val);\r\n })\r\n draw.drawEntity(pl);\r\n }\r\n\r\n //\r\n public setPoint(index: number, pt: McGePoint3d) {\r\n this.assertWrite();\r\n if (index >= 0 && index < this.pts.length) {\r\n this.pts[index] = pt.clone();\r\n }\r\n }\r\n\r\n public getPoint(index: number): McGePoint3d {\r\n if (index >= 0 && index < this.pts.length) {\r\n return this.pts[index];\r\n }\r\n else {\r\n return new McGePoint3d();\r\n }\r\n }\r\n\r\n public addPoint(pt: McGePoint3d) {\r\n this.pts.push(pt.clone());\r\n }\r\n\r\n public removeAllPoint(): void {\r\n this.pts = [];\r\n }\r\n\r\n public getPointCount(): number {\r\n return this.pts.length;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n// MultiLineString\r\nclass McDbGisMultiLineString extends McDbGisEntity {\r\n private ptss: McGePoint3d[][] = [];\r\n\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n\r\n public create(imp: any) {\r\n return new McDbGisMultiLineString(imp)\r\n }\r\n\r\n public getTypeName(): string {\r\n return \"McDbGisMultiLineString\";\r\n }\r\n\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.ptss = [];\r\n let ptss_n = filter.readLong(\"ptss_n\");\r\n for (let i = 0; i < ptss_n.val; i++) {\r\n let pts = filter.readPoints(\"ptss_\" + i);\r\n if (pts.ret) {\r\n this.ptss.push(pts.val);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writeLong(\"ptss_n\", this.ptss.length);\r\n this.ptss.forEach((pts, index) => {\r\n filter.writePoints(\"ptss_\" + index, pts);\r\n })\r\n return true;\r\n }\r\n\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n let iCount = 0;\r\n for (let i = 0; i < this.ptss.length; i++) {\r\n let pts = this.ptss[i];\r\n for (let j = 0; j < pts.length; j++) {\r\n if (iCount == iIndex) {\r\n this.ptss[i][j].x += dXOffset;\r\n this.ptss[i][j].y += dYOffset;\r\n this.ptss[i][j].z += dZOffset;\r\n i = this.ptss.length;\r\n break;\r\n }\r\n iCount++;\r\n }\r\n }\r\n };\r\n\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n this.ptss.forEach(pts => {\r\n pts.forEach((pt) => {\r\n ret.append(pt);\r\n })\r\n })\r\n return ret;\r\n };\r\n\r\n\r\n\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n\r\n for (let i = 0; i < this.ptss.length; i++) {\r\n let pts = this.ptss[i];\r\n let pl = new McDbPolyline();\r\n pts.forEach(val => {\r\n pl.addVertexAt(val);\r\n })\r\n draw.drawEntity(pl);\r\n }\r\n }\r\n\r\n public addPoints(pts: McGePoint3d[]) {\r\n this.ptss.push(pts);\r\n }\r\n\r\n public removeAllPoint(): void {\r\n this.ptss = [];\r\n }\r\n\r\n public getPointsCount(): number {\r\n return this.ptss.length;\r\n }\r\n\r\n public getPoints(index: number): McGePoint3d[] {\r\n if (index >= 0 && index < this.ptss.length) {\r\n return this.ptss[index];\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n}\r\n\r\n// Polygon\r\nclass McDbGisPolygon extends McDbGisEntity {\r\n private ptss: McGePoint3d[][] = [];\r\n\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n\r\n public create(imp: any) {\r\n return new McDbGisPolygon(imp)\r\n }\r\n\r\n public getTypeName(): string {\r\n return \"McDbGisPolygon\";\r\n }\r\n\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.ptss = [];\r\n let ptss_n = filter.readLong(\"ptss_n\");\r\n for (let i = 0; i < ptss_n.val; i++) {\r\n let pts = filter.readPoints(\"ptss_\" + i);\r\n if (pts.ret) {\r\n this.ptss.push(pts.val);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writeLong(\"ptss_n\", this.ptss.length);\r\n this.ptss.forEach((pts, index) => {\r\n filter.writePoints(\"ptss_\" + index, pts);\r\n })\r\n return true;\r\n }\r\n\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n let iCount = 0;\r\n for (let i = 0; i < this.ptss.length; i++) {\r\n let pts = this.ptss[i];\r\n for (let j = 0; j < pts.length; j++) {\r\n if (iCount == iIndex) {\r\n this.ptss[i][j].x += dXOffset;\r\n this.ptss[i][j].y += dYOffset;\r\n this.ptss[i][j].z += dZOffset;\r\n i = this.ptss.length;\r\n break;\r\n }\r\n iCount++;\r\n }\r\n }\r\n };\r\n\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n this.ptss.forEach(pts => {\r\n pts.forEach((pt) => {\r\n ret.append(pt);\r\n })\r\n })\r\n return ret;\r\n };\r\n\r\n\r\n\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n let solid = new McDbHatch();\r\n for (let i = 0; i < this.ptss.length; i++) {\r\n let pts = this.ptss[i];\r\n if (pts.length > 2) {\r\n solid.appendLoop(new McGePoint3dArray(pts));\r\n }\r\n }\r\n if (solid.numLoops > 0) {\r\n draw.drawEntity(solid);\r\n }\r\n }\r\n\r\n public addPoints(pts: McGePoint3d[]) {\r\n this.ptss.push(pts);\r\n }\r\n\r\n public removeAllPoint(): void {\r\n this.ptss = [];\r\n }\r\n\r\n public getPointsCount(): number {\r\n return this.ptss.length;\r\n }\r\n\r\n public getPoints(index: number): McGePoint3d[] {\r\n if (index >= 0 && index < this.ptss.length) {\r\n return this.ptss[index];\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n}\r\n\r\n\r\n//\r\nexport async function MxGis_DrawPoint() {\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"点取一个点坐标\");\r\n let pt = await getPoint.go();\r\n if (pt) {\r\n let point = new McDbGisPoint();\r\n point.setPoint(pt);\r\n mxcad.drawEntity(point);\r\n }\r\n}\r\n\r\nexport async function MxGis_DrawMultiPoint() {\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"点取一个点坐标\");\r\n let points = new McDbGisMultiPoint();\r\n let aryTmpEntityId: McObjectId[] = [];\r\n while (true) {\r\n getPoint.clearLastInputPoint();\r\n getPoint.setDynamicInputType(DynamicInputType.kXYCoordInput);\r\n let pt = await getPoint.go();\r\n if (pt) {\r\n points.addPoint(pt);\r\n let point = new McDbPoint(pt);\r\n aryTmpEntityId.push(mxcad.drawEntity(point));\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n\r\n if (points.getPointCount() > 0) {\r\n mxcad.drawEntity(points)\r\n }\r\n\r\n aryTmpEntityId.forEach(id => {\r\n id.erase();\r\n })\r\n}\r\n\r\nexport async function MxGis_DrawLineString() {\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"点取一个点坐标\");\r\n let lines = new McDbGisLineString();\r\n let aryTmpEntityId: McObjectId[] = [];\r\n let prvPoint: any = undefined;\r\n while (true) {\r\n if (prvPoint) {\r\n getPoint.setBasePt(prvPoint);\r\n getPoint.setUseBasePt(true);\r\n }\r\n getPoint.setDynamicInputType(DynamicInputType.kXYCoordInput);\r\n let pt = await getPoint.go();\r\n if (pt) {\r\n lines.addPoint(pt);\r\n\r\n if (prvPoint) {\r\n let line = new McDbLine();\r\n line.startPoint = prvPoint;\r\n line.endPoint = pt;\r\n aryTmpEntityId.push(mxcad.drawEntity(line));\r\n }\r\n prvPoint = pt;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n\r\n if (lines.getPointCount() > 1) {\r\n mxcad.drawEntity(lines)\r\n }\r\n\r\n aryTmpEntityId.forEach(id => {\r\n id.erase();\r\n })\r\n}\r\n\r\nexport async function MxGis_DrawMultiLineString() {\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"点取一个点坐标\");\r\n getPoint.setKeyWords(\"[下一段线(N)]\")\r\n let lines = new McDbGisMultiLineString();\r\n\r\n let pts: McGePoint3d[] = [];\r\n let aryTmpEntityId: McObjectId[] = [];\r\n let prvPoint: any = undefined;\r\n\r\n while (true) {\r\n if (prvPoint) {\r\n getPoint.setBasePt(prvPoint);\r\n }\r\n else {\r\n getPoint.setUseBasePt(false);\r\n }\r\n\r\n getPoint.setDynamicInputType(DynamicInputType.kXYCoordInput);\r\n let pt = await getPoint.go();\r\n\r\n if (getPoint.isKeyWordPicked(\"N\")) {\r\n if (pts.length > 1) {\r\n lines.addPoints(pts);\r\n }\r\n pts = [];\r\n prvPoint = undefined;\r\n }\r\n else {\r\n if (pt) {\r\n pts.push(pt);\r\n\r\n if (prvPoint) {\r\n let line = new McDbLine();\r\n line.startPoint = prvPoint;\r\n line.endPoint = pt;\r\n aryTmpEntityId.push(mxcad.drawEntity(line));\r\n }\r\n prvPoint = pt;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n if (pts.length > 1) {\r\n lines.addPoints(pts);\r\n }\r\n\r\n if (lines.getPointsCount() > 0) {\r\n mxcad.drawEntity(lines);\r\n }\r\n\r\n aryTmpEntityId.forEach(id => {\r\n id.erase();\r\n })\r\n}\r\n\r\nexport async function MxGis_DrawPolygon() {\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"点取一个点坐标\");\r\n let polygon = new McDbGisPolygon();\r\n\r\n let pts: McGePoint3d[] = [];\r\n let aryTmpEntityId: McObjectId[] = [];\r\n let prvPoint: any = undefined;\r\n\r\n while (true) {\r\n if (prvPoint) {\r\n getPoint.setBasePt(prvPoint);\r\n }\r\n else {\r\n getPoint.setUseBasePt(false);\r\n }\r\n if (pts.length > 2) {\r\n getPoint.setKeyWords(\"[闭合(C)/退出(E)]\")\r\n }\r\n\r\n getPoint.setDynamicInputType(DynamicInputType.kXYCoordInput);\r\n let pt = await getPoint.go();\r\n\r\n if (getPoint.isKeyWordPicked(\"C\")) {\r\n\r\n let line = new McDbLine();\r\n line.startPoint = pts[0];\r\n line.endPoint = pts[pts.length - 1];\r\n aryTmpEntityId.push(mxcad.drawEntity(line));\r\n\r\n if (pts.length > 2) {\r\n polygon.addPoints(pts);\r\n }\r\n pts = [];\r\n prvPoint = undefined;\r\n }\r\n else if (getPoint.isKeyWordPicked(\"E\")) {\r\n break;\r\n }\r\n else {\r\n if (pt) {\r\n pts.push(pt);\r\n\r\n if (prvPoint) {\r\n let line = new McDbLine();\r\n line.startPoint = prvPoint;\r\n line.endPoint = pt;\r\n aryTmpEntityId.push(mxcad.drawEntity(line));\r\n }\r\n prvPoint = pt;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n if (pts.length > 2) {\r\n polygon.addPoints(pts);\r\n }\r\n\r\n if (polygon.getPointsCount() > 0) {\r\n mxcad.drawEntity(polygon);\r\n }\r\n\r\n aryTmpEntityId.forEach(id => {\r\n id.erase();\r\n })\r\n\r\n}\r\n\r\nexport function MxGis_Get_geojson() {\r\n let ss = new MxCADSelectionSet();\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"McDbCustomEntity\");\r\n ss.allSelect(filter);\r\n let genjson = { \"type\": \"FeatureCollection\", \"features\": [] };\r\n\r\n ss.forEach((id) => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n\r\n if (ent instanceof McDbGisPoint) {\r\n let point = (ent as McDbGisPoint);\r\n let pt = point.getPoint();\r\n let feature = {\r\n \"type\": \"Feature\",\r\n \"properties\": {},\r\n \"geometry\": {\r\n \"type\": \"Point\",\r\n \"coordinates\": [pt.x, pt.y, pt.z]\r\n }\r\n };\r\n genjson.features.push(feature);\r\n }\r\n else if (ent instanceof McDbGisMultiPoint) {\r\n let points = (ent as McDbGisMultiPoint);\r\n let pts = [];\r\n let len = points.getPointCount();\r\n for (let i = 0; i < len; i++) {\r\n let pt = points.getPoint(i);\r\n pts.push([pt.x, pt.y, pt.z]);\r\n }\r\n\r\n let feature = {\r\n \"type\": \"Feature\",\r\n \"properties\": {},\r\n \"geometry\": {\r\n \"type\": \"MultiPoint\",\r\n \"coordinates\": pts\r\n }\r\n };\r\n genjson.features.push(feature);\r\n }\r\n else if (ent instanceof McDbGisLineString) {\r\n let line = (ent as McDbGisLineString);\r\n\r\n let pts = [];\r\n let len = line.getPointCount();\r\n for (let i = 0; i < len; i++) {\r\n let pt = line.getPoint(i);\r\n pts.push([pt.x, pt.y, pt.z]);\r\n }\r\n\r\n let feature = {\r\n \"type\": \"Feature\",\r\n \"properties\": {},\r\n \"geometry\": {\r\n \"type\": \"LineString\",\r\n \"coordinates\": pts\r\n }\r\n };\r\n genjson.features.push(feature);\r\n }\r\n else if (ent instanceof McDbGisMultiLineString) {\r\n let lines = (ent as McDbGisMultiLineString);\r\n let ptss = [];\r\n let len = lines.getPointsCount();\r\n for (let i = 0; i < len; i++) {\r\n let pts = lines.getPoints(i);\r\n let ary = [];\r\n for (let j = 0; j < pts.length; j++) {\r\n let pt = pts[j];\r\n ary.push([pt.x, pt.y, pt.z]);\r\n }\r\n ptss.push(ary);\r\n }\r\n\r\n let feature = {\r\n \"type\": \"Feature\",\r\n \"properties\": {},\r\n \"geometry\": {\r\n \"type\": \"MultiLineString\",\r\n \"coordinates\": ptss\r\n }\r\n };\r\n genjson.features.push(feature);\r\n }\r\n else if (ent instanceof McDbGisPolygon) {\r\n let lines = (ent as McDbGisPolygon);\r\n let ptss = [];\r\n let len = lines.getPointsCount();\r\n for (let i = 0; i < len; i++) {\r\n let pts = lines.getPoints(i);\r\n let ary = [];\r\n for (let j = 0; j < pts.length; j++) {\r\n let pt = pts[j];\r\n ary.push([pt.x, pt.y, pt.z]);\r\n }\r\n ptss.push(ary);\r\n }\r\n\r\n let feature = {\r\n \"type\": \"Feature\",\r\n \"properties\": {},\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": ptss\r\n }\r\n };\r\n genjson.features.push(feature);\r\n }\r\n })\r\n console.log(JSON.stringify(genjson));\r\n}\r\n\r\n\r\n\r\n\r\nexport function init() {\r\n MxFun.addCommand(\"MxGis_DrawPoint\", MxGis_DrawPoint);\r\n MxFun.addCommand(\"MxGis_DrawMultiPoint\", MxGis_DrawMultiPoint);\r\n MxFun.addCommand(\"MxGis_DrawLineString\", MxGis_DrawLineString);\r\n MxFun.addCommand(\"MxGis_DrawMultiLineString\", MxGis_DrawMultiLineString);\r\n MxFun.addCommand(\"MxGis_DrawPolygon\", MxGis_DrawPolygon);\r\n MxFun.addCommand(\"MxGis_Get_geojson\", MxGis_Get_geojson);\r\n\r\n new McDbGisPoint().rxInit();\r\n new McDbGisMultiPoint().rxInit();\r\n new McDbGisLineString().rxInit();\r\n new McDbGisMultiLineString().rxInit();\r\n new McDbGisPolygon().rxInit();\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { MrxDbgUiPrBaseReturn, MxFun } from \"mxdraw\";\r\nimport {\r\n McDbCustomEntity, McGePoint3d, IMcDbDwgFiler, McGePoint3dArray, MxCADWorldDraw, McDbLine,MxCADResbuf,DxfCode,\r\n McDbPolyline, MxCADUiPrPoint, MxCpp, McDbCircle, McDb, McDbCurve, McDbText, MxCADUiPrString, MxCADUiPrKeyWord, MxCADSelectionSet, McDbRotatedDimension,\r\n} from \"mxcad\";\r\n\r\n\r\n// 审图标注框\r\nclass McDbRectBoxLeadComment extends McDbCustomEntity {\r\n /** 云线角点1 */\r\n private pt1: McGePoint3d;\r\n /** 云线角点2 */\r\n private pt2: McGePoint3d;\r\n /** 审图标注点 */\r\n private pt3: McGePoint3d;\r\n /** 审图标注内容 */\r\n private _text: string = \"\";\r\n /** 字高 */\r\n private _textsize: number = 20;\r\n /** 云线半圆弧半径 */\r\n private _radius: number = 15;\r\n\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n public create(imp: any) {\r\n return new McDbRectBoxLeadComment(imp)\r\n }\r\n public getTypeName(): string {\r\n return \"McDbRectBoxLeadComment\";\r\n }\r\n\r\n //设置或获取文本值\r\n public set text(val: string) {\r\n this._text = val;\r\n }\r\n public get text(): string {\r\n return this._text;\r\n }\r\n //设置或获取文本大小\r\n public set textsize(val: number) {\r\n this._textsize = val;\r\n }\r\n public get textsize(): number {\r\n return this._textsize;\r\n }\r\n //设置或获取云线半圆弧半径\r\n public set radius(val: number) {\r\n this._radius = val;\r\n }\r\n public get radius(): number {\r\n return this._radius;\r\n }\r\n\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.pt1 = filter.readPoint(\"pt1\").val;\r\n this.pt2 = filter.readPoint(\"pt2\").val;\r\n this.pt3 = filter.readPoint(\"pt3\").val;\r\n this._text = filter.readString(\"text\").val;\r\n this._textsize = filter.readDouble(\"textsize\").val;\r\n return true;\r\n }\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoint(\"pt1\", this.pt1);\r\n filter.writePoint(\"pt2\", this.pt2);\r\n filter.writePoint(\"pt3\", this.pt3);\r\n filter.writeString(\"text\", this._text);\r\n filter.writeDouble(\"textsize\", this._textsize);\r\n return true;\r\n }\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n if (iIndex === 0) {\r\n this.pt1.x += dXOffset;\r\n this.pt1.y += dYOffset;\r\n this.pt1.z += dZOffset;\r\n } else if (iIndex === 1) {\r\n this.pt2.x += dXOffset;\r\n this.pt2.y += dYOffset;\r\n this.pt2.z += dZOffset;\r\n } else if (iIndex === 2) {\r\n this.pt3.x += dXOffset;\r\n this.pt3.y += dYOffset;\r\n this.pt3.z += dZOffset;\r\n }\r\n };\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray();\r\n ret.append(this.pt1);\r\n ret.append(this.pt2);\r\n ret.append(this.pt3);\r\n return ret;\r\n };\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n const radius = this._radius;\r\n\r\n // 根据弧线半径,重新计算云线角点\r\n if (this.pt1.x < this.pt2.x) {\r\n const dist = this.pt2.x - this.pt1.x;\r\n const num = parseInt((dist / (radius * 2)).toString());\r\n this.pt2.x = this.pt1.x + radius * 2 * num;\r\n } else {\r\n const dist = this.pt1.x - this.pt2.x;\r\n const num = parseInt((dist / (radius * 2)).toString());\r\n this.pt1.x = this.pt2.x + radius * 2 * num;\r\n }\r\n\r\n if (this.pt1.y < this.pt2.y) {\r\n const dist = this.pt2.y - this.pt1.y;\r\n const num = parseInt((dist / (radius * 2)).toString());\r\n this.pt2.y = this.pt1.y + radius * 2 * num;\r\n } else {\r\n const dist = this.pt1.y - this.pt2.y;\r\n const num = parseInt((dist / (radius * 2)).toString());\r\n this.pt1.y = this.pt2.y + radius * 2 * num;\r\n }\r\n // 审图框线\r\n const pl = new McDbPolyline();\r\n pl.isClosed = true;\r\n pl.addVertexAt(this.pt1);\r\n pl.addVertexAt(new McGePoint3d(this.pt2.x, this.pt1.y));\r\n pl.addVertexAt(this.pt2);\r\n pl.addVertexAt(new McGePoint3d(this.pt1.x, this.pt2.y));\r\n\r\n // 根据审图框线与半径获取出云线所有圆弧的圆心\r\n const length = pl.getLength().val;\r\n let num = length / radius;\r\n // 获取圆心\r\n const circleCenterArr: McGePoint3d[] = [];\r\n for (let i = 1; i <= num; i++) {\r\n const pt = pl.getPointAtDist(radius * i).val;\r\n circleCenterArr.push(pt)\r\n }\r\n\r\n // 根据圆心与圆弧半径绘制云线圆弧\r\n circleCenterArr.forEach((center, index) => {\r\n const circle = new McDbCircle(center.x, center.y, center.z, radius);\r\n if (index % 2 === 0) {\r\n const ptArr: McGePoint3d[] = []\r\n circle.IntersectWith(pl, McDb.Intersect.kOnBothOperands).forEach(pt => {\r\n ptArr.push(pt)\r\n });\r\n circle.splitCurves(ptArr).forEach(e => {\r\n const pt = (e as McDbCurve).getPointAtDist((e as McDbCurve).getLength().val / 2).val;\r\n if (pt.x < Math.min(...[this.pt1.x, this.pt2.x]) || pt.x > Math.max(...[this.pt1.x, this.pt2.x])) {\r\n draw.drawEntity(e as McDbCurve);\r\n }\r\n if (pt.y < Math.min(...[this.pt1.y, this.pt2.y]) || pt.y > Math.max(...[this.pt1.y, this.pt2.y])) {\r\n draw.drawEntity(e as McDbCurve);\r\n }\r\n })\r\n }\r\n });\r\n /**\r\n * 绘制标注\r\n */\r\n const distanceArr: number[] = []\r\n for (let i = 0; i < pl.numVerts(); i++) {\r\n const dist = pl.getPointAt(i).val.distanceTo(this.pt3);\r\n distanceArr.push(dist);\r\n };\r\n const index = distanceArr.indexOf(Math.min(...distanceArr));\r\n const pt = pl.getPointAt(index).val;\r\n\r\n const pl_text = new McDbPolyline();\r\n pl_text.addVertexAt(pt);\r\n pl_text.addVertexAt(this.pt3);\r\n if (this._text) {\r\n const text = new McDbText();\r\n text.textString = this._text;\r\n text.position = text.alignmentPoint = this.pt3;\r\n text.height = 20;\r\n draw.drawEntity(text);\r\n const { minPt, maxPt, ret } = text.getBoundingBox();\r\n if (!ret) return;\r\n\r\n const textWidth = maxPt.x - minPt.x;\r\n pl_text.addVertexAt(new McGePoint3d(this.pt3.x + textWidth, this.pt3.y));\r\n draw.drawEntity(pl_text);\r\n } else {\r\n draw.drawEntity(pl_text);\r\n }\r\n\r\n }\r\n public setPoint1(pt1: McGePoint3d) {\r\n this.assertWrite();\r\n this.pt1 = pt1.clone();\r\n }\r\n public setPoint2(pt2: McGePoint3d) {\r\n this.assertWrite();\r\n this.pt2 = pt2.clone();\r\n }\r\n public setPoint3(pt3: McGePoint3d) {\r\n this.assertWrite();\r\n this.pt3 = pt3.clone();\r\n }\r\n public getPoint1() {\r\n return this.pt1;\r\n }\r\n public getPoint2() {\r\n return this.pt2;\r\n }\r\n public getPoint3() {\r\n return this.pt3;\r\n }\r\n}\r\n\r\n// 审图标注\r\nasync function Mx_Approval() {\r\n // 创建审图批注\r\n const rectBoxLeadComment = new McDbRectBoxLeadComment();\r\n // 设置审批意见\r\n const getContent = new MxCADUiPrString();\r\n getContent.setMessage(\"请输入审批意见\");\r\n let content = await getContent.go();\r\n if (!content) content = \"审批意见XXXX\"\r\n rectBoxLeadComment.text = content;\r\n\r\n // 设置云线框角点\r\n const getPt1 = new MxCADUiPrPoint();\r\n getPt1.setMessage(\"指定云线框起始点\");\r\n const pt1 = await getPt1.go();\r\n if (!pt1) return;\r\n const getPt2 = new MxCADUiPrPoint();\r\n getPt2.setMessage(\"指定云线框终止点\");\r\n getPt2.setUserDraw((pt, pw) => {\r\n rectBoxLeadComment.setPoint1(pt1);\r\n rectBoxLeadComment.setPoint2(pt);\r\n rectBoxLeadComment.setPoint3(pt);\r\n pw.drawMcDbEntity(rectBoxLeadComment);\r\n })\r\n const pt2 = await getPt2.go();\r\n if (!pt2) return;\r\n rectBoxLeadComment.setPoint2(pt2);\r\n\r\n // 设置审图标注点\r\n const getPt3 = new MxCADUiPrPoint();\r\n getPt3.setMessage(\"指定审图标注点\");\r\n getPt3.setUserDraw((pt, pw) => {\r\n rectBoxLeadComment.setPoint3(pt);\r\n pw.drawMcDbEntity(rectBoxLeadComment);\r\n })\r\n const pt3 = await getPt3.go();\r\n if (!pt3) return;\r\n rectBoxLeadComment.setPoint3(pt3);\r\n\r\n // 绘制审图标注对象\r\n MxCpp.getCurrentMxCAD().drawEntity(rectBoxLeadComment);\r\n}\r\n\r\n// 新创建 McDbTestAnnotatedRectangle 类继承 McDbCustomEntity\r\nclass McDbTestAnnotatedRectangle extends McDbCustomEntity {\r\n // 定义McDbTestLineCustomEntity内部的点对象 \r\n // 矩形角点pt1、pt2\r\n private pt1: McGePoint3d = new McGePoint3d();\r\n private pt2: McGePoint3d = new McGePoint3d();\r\n // 构造函数\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n // 创建函数\r\n public create(imp: any) {\r\n return new McDbTestAnnotatedRectangle(imp)\r\n }\r\n // 获取类名\r\n public getTypeName(): string {\r\n return \"McDbTestRectangle\";\r\n }\r\n // 读取自定义实体数据pt1、pt2\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.pt1 = filter.readPoint(\"pt1\").val;\r\n this.pt2 = filter.readPoint(\"pt2\").val;\r\n return true;\r\n }\r\n // 写入自定义实体数据pt1、pt2\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoint(\"pt1\", this.pt1);\r\n filter.writePoint(\"pt2\", this.pt2);\r\n return true;\r\n }\r\n\r\n // 移动自定义对象的夹点\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n if (iIndex == 0) {\r\n this.pt1.x += dXOffset;\r\n this.pt1.y += dYOffset;\r\n this.pt1.z += dZOffset;\r\n }\r\n else if (iIndex == 1) {\r\n this.pt2.x += dXOffset;\r\n this.pt2.y += dYOffset;\r\n this.pt2.z += dZOffset;\r\n }\r\n };\r\n // 获取自定义对象的夹点\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n ret.append(this.pt1);\r\n ret.append(this.pt2);\r\n return ret;\r\n };\r\n // 绘制实体\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n const pl = new McDbPolyline();\r\n pl.isClosed = true;\r\n pl.addVertexAt(this.pt1);\r\n pl.addVertexAt(new McGePoint3d(this.pt2.x, this.pt1.y));\r\n pl.addVertexAt(this.pt2);\r\n pl.addVertexAt(new McGePoint3d(this.pt1.x, this.pt2.y));\r\n draw.drawEntity(pl);\r\n\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n const pt3 = new McGePoint3d(this.pt2.x, this.pt1.y);\r\n mxcad.addDimStyle(\"MyDimStyle\", \"41,0.18,141,0.09,40,200\", \"77,1,271,3\", \"\", \"\");\r\n mxcad.drawDimStyle = \"MyDimStyle\";\r\n const id = mxcad.drawDimAligned(this.pt1.x, this.pt1.y + 20, pt3.x, pt3.y + 20, (this.pt1.x + pt3.x) / 2, this.pt1.y + 20);\r\n draw.drawEntity(id.getMcDbEntity());\r\n id.erase();\r\n const _id = mxcad.drawDimAligned(this.pt2.x + 20, this.pt2.y, pt3.x + 20, pt3.y, pt3.x + 20, (this.pt2.y + pt3.y) / 2);\r\n draw.drawEntity(_id.getMcDbEntity());\r\n _id.erase();\r\n }\r\n // 设置pt1\r\n public setPoint1(pt1: McGePoint3d) {\r\n this.assertWrite();\r\n this.pt1 = pt1.clone();\r\n }\r\n // 设置pt2\r\n public setPoint2(pt2: McGePoint3d) {\r\n this.assertWrite();\r\n this.pt2 = pt2.clone();\r\n }\r\n // 获取pt1\r\n public getPoint1() {\r\n return this.pt1;\r\n }\r\n // 获取pt2\r\n public getPoint2() {\r\n return this.pt2;\r\n }\r\n}\r\n\r\n// 矩形标注\r\nasync function Mx_AnnotatedRectangle() {\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"\\n指定第一个角点:\");\r\n let pt1 = await getPoint.go();\r\n if (!pt1) return;\r\n const myRect = new McDbTestAnnotatedRectangle();\r\n myRect.setPoint1(pt1);\r\n\r\n getPoint.setMessage(\"\\n指定第二个角点:\");\r\n getPoint.setUserDraw((pt, pw) => {\r\n myRect.setPoint2(pt);\r\n pw.drawMcDbEntity(myRect);\r\n })\r\n let pt2 = await getPoint.go();\r\n if (!pt2) return;\r\n\r\n myRect.setPoint2(pt2);\r\n mxcad.drawEntity(myRect);\r\n}\r\n\r\n// 等分点标注\r\nexport class MxDbTestDivide extends McDbCustomEntity {\r\n // 定义MxDbTestDivide内部的点对象 \r\n // 等分点圆心,半径\r\n private center: McGePoint3d = new McGePoint3d();\r\n private _radius: number = 1;\r\n // 构造函数\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n // 创建函数\r\n public create(imp: any) {\r\n return new MxDbTestDivide(imp)\r\n }\r\n // 获取类名\r\n public getTypeName(): string {\r\n return \"MxDbTestDivide\";\r\n }\r\n //设置或获取云线半圆弧半径\r\n public set radius(val: number) {\r\n this._radius = val;\r\n }\r\n public get radius(): number {\r\n return this._radius;\r\n }\r\n // 读取自定义实体数据pt1、pt2\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.center = filter.readPoint(\"center\").val;\r\n this._radius = filter.readDouble(\"radius\").val;\r\n return true;\r\n }\r\n // 写入自定义实体数据pt1、pt2\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoint(\"center\", this.center);\r\n filter.writeDouble(\"radius\", this._radius);\r\n return true;\r\n }\r\n\r\n // 移动自定义对象的夹点\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n this.center.x += dXOffset;\r\n this.center.y += dYOffset;\r\n this.center.z += dZOffset;\r\n };\r\n // 获取自定义对象的夹点\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n ret.append(this.center);\r\n return ret;\r\n };\r\n // 绘制实体\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n const circle = new McDbCircle(this.center.x,this.center.y,this.center.z, this._radius);\r\n draw.drawEntity(circle);\r\n const { minPt, maxPt, ret } = circle.getBoundingBox();\r\n if(!ret) return;\r\n const line1 = new McDbLine(minPt,maxPt);\r\n const line2 = new McDbLine(new McGePoint3d(minPt.x,maxPt.y,0), new McGePoint3d(maxPt.x,minPt.y,0));\r\n draw.drawEntity(line1);\r\n draw.drawEntity(line2);\r\n }\r\n // 设置圆心\r\n public setCenter(pt: McGePoint3d) {\r\n this.assertWrite();\r\n this.center = pt.clone();\r\n }\r\n // 获取圆心\r\n public getCenter() {\r\n return this.center;\r\n }\r\n}\r\n\r\n// 对齐\r\nasync function Mx_Alignment(){\r\n // 选择要对齐水平标注或竖直标注[水平(H)/竖直(V)]<H>:\r\n const getKey = new MxCADUiPrKeyWord;\r\n getKey.setMessage(`选择要对齐水平标注或竖直标注:`)\r\n getKey.setKeyWords(\"[水平(H)/竖直(V)]\");\r\n const keyVal = await getKey.go();\r\n if(!keyVal) return;\r\n \r\n // 选择对齐标注\r\n const ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择对齐标注:\")) return;\r\n if (ss.count() == 0) return;\r\n const alignArr:McDbRotatedDimension[] = [];\r\n ss.forEach(id=>{\r\n const ent = id.getMcDbEntity();\r\n if(ent.objectName === 'McDbRotatedDimension'){\r\n const rDim = ent.clone() as McDbRotatedDimension;\r\n const xDist = Math.abs(rDim.xLine1Point.x - rDim.xLine2Point.x).toFixed(0);\r\n const yDist = Math.abs(rDim.xLine1Point.y - rDim.xLine2Point.y).toFixed(0);\r\n const xNum = Math.abs(rDim.dimLinePoint.x - rDim.xLine1Point.x) + Math.abs(rDim.dimLinePoint.x - rDim.xLine2Point.x);\r\n const yNum = Math.abs(rDim.dimLinePoint.y - rDim.xLine1Point.y) + Math.abs(rDim.dimLinePoint.y - rDim.xLine2Point.y);\r\n\r\n if(keyVal === 'H' && xNum.toFixed(0) == xDist){\r\n alignArr.push(ent as McDbRotatedDimension)\r\n };\r\n if(keyVal === 'V' && yNum.toFixed(0) == yDist){\r\n alignArr.push(ent as McDbRotatedDimension)\r\n };\r\n }\r\n });\r\n if(alignArr.length === 0) return;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n // 设置尺寸线位置\r\n const getPt1 = new MxCADUiPrPoint();\r\n getPt1.setMessage('设置尺寸线位置');\r\n const pt1 = await getPt1.go();\r\n if(!pt1) return;\r\n alignArr.forEach(ent=>{\r\n ent.dimLinePoint = pt1;\r\n });\r\n mxcad.updateDisplay();\r\n\r\n // 设置尺寸线界限\r\n const getPt2 = new MxCADUiPrPoint();\r\n getPt2.setMessage('设置尺寸线界限');\r\n const pt2 = await getPt2.go();\r\n if(!pt2) return;\r\n alignArr.forEach(ent=>{\r\n if(keyVal === 'H'){\r\n ent.xLine1Point = new McGePoint3d(ent.xLine1Point.x,pt2.y);\r\n ent.xLine2Point = new McGePoint3d(ent.xLine2Point.x,pt2.y);\r\n }else if(keyVal === 'V'){\r\n ent.xLine1Point = new McGePoint3d(pt2.x, ent.xLine1Point.y);\r\n ent.xLine2Point = new McGePoint3d(pt2.x, ent.xLine2Point.y);\r\n }\r\n });\r\n mxcad.updateDisplay();\r\n}\r\n\r\nexport function init() {\r\n new McDbRectBoxLeadComment().rxInit();\r\n new McDbTestAnnotatedRectangle().rxInit();\r\n new MxDbTestDivide().rxInit();\r\n MxFun.addCommand(\"Mx_Approval\", Mx_Approval);\r\n MxFun.addCommand(\"Mx_AnnotatedRectangle\", Mx_AnnotatedRectangle);\r\n MxFun.addCommand(\"Mx_Alignment\", Mx_Alignment);\r\n}","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { MxFun, MrxDbgUiPrBaseReturn, MxDbRect, DynamicInputType } from \"mxdraw\";\r\nimport {\r\n MxCpp, MxCADSelectionSet, MxCADUiPrPoint, MxCADUiPrInt, McDbEntity,\r\n MxCADResbuf, McGePoint3d, McGeMatrix3d, MxCADUtility, McDbArc, McDbCircle,\r\n McObjectId, MxCADUiPrAngle, McGeVector3d, McDbPolyline, McCmColor, McDbLine,\r\n McDb, McDbCurve, MxCADUiPrEntity, McDbObject, MxCADUiPrDist, MxCADUiPrKeyWord,\r\n MxCADUiPrString, McDbHatch, DxfCode, McDbBlockTableRecord, McDbBlockReference,\r\n McGePoint3dArray,\r\n McDbSpatialFilter,\r\n IMcDbDwgFiler,\r\n McDbCustomEntity,\r\n McDbMText,\r\n MxCADWorldDraw\r\n} from \"mxcad\";\r\nimport { MxDbTestDivide } from \"./annotationsTools\"\r\n// 多重复制\r\nasync function Mx_Multicopy() {\r\n // 选择集选择多重复制对象\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择对象:\")) return;\r\n if (ss.count() == 0) return;\r\n\r\n const objIds = [];\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const getBasePt = new MxCADUiPrPoint();\r\n getBasePt.setMessage('指定基点');\r\n const basePt = await getBasePt.go();\r\n if (!basePt) return;\r\n while (true) {\r\n const getNextPt = new MxCADUiPrPoint();\r\n getNextPt.setMessage('指定第二个点\\n');\r\n // 设置关键字列表\r\n if (objIds.length > 0) {\r\n getNextPt.setKeyWords('[阵列(A)/退出(E)/放弃(U)]');\r\n } else {\r\n getNextPt.setKeyWords('[阵列(A)/退出(E)]');\r\n }\r\n // 动态绘制\r\n getNextPt.setUserDraw((pt, pw) => {\r\n pw.drawLine(pt.toVector3(), basePt.toVector3())\r\n ss.forEach((id) => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n let ent_clone = ent.clone() as McDbEntity;\r\n ent_clone.move(basePt, pt);\r\n pw.drawMcDbEntity(ent_clone);\r\n })\r\n })\r\n const nextPt = await getNextPt.go();\r\n // 根据用户输入状态进行对应操作\r\n if (getNextPt.getStatus() === MrxDbgUiPrBaseReturn.kKeyWord) {\r\n // 输入关键字\r\n if (getNextPt.isKeyWordPicked(\"E\")) {\r\n // 退出\r\n return;\r\n } else if (getNextPt.isKeyWordPicked(\"U\")) {\r\n // 放弃、撤回\r\n if (objIds.length > 0) {\r\n objIds[objIds.length - 1].forEach(id => {\r\n id.erase()\r\n });\r\n objIds.pop();\r\n } else {\r\n return;\r\n }\r\n } else if (getNextPt.isKeyWordPicked(\"A\")) {\r\n // 阵列 即对目标对象多次平移\r\n const getNum = new MxCADUiPrInt();\r\n getNum.clearLastInputPoint()\r\n getNum.setMessage('输入要进行阵列的项目数\\n');\r\n const num = await getNum.go() || 1;\r\n let arr: McGePoint3d[] = []\r\n getNextPt.setUserDraw((pt, pw) => {\r\n pw.drawLine(pt.toVector3(), basePt.toVector3())\r\n arr.length = 0;\r\n let lastPt = pt.clone()\r\n arr.push(lastPt)\r\n for (let i = 0; i < num - 1; i++) {\r\n lastPt = lastPt.clone().addvec(pt.sub(basePt))\r\n arr.push(lastPt)\r\n }\r\n ss.forEach((id) => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n arr.forEach(item => {\r\n let matrix = new McGeMatrix3d();\r\n let event_clone = ent.clone() as McDbEntity;\r\n matrix.clone();\r\n matrix.setToTranslation(item.sub(basePt));//平移\r\n event_clone.transformBy(matrix);\r\n pw.drawMcDbEntity(event_clone);\r\n })\r\n })\r\n })\r\n let nextPt = await getNextPt.go();\r\n if (!nextPt) return;\r\n objIds.push([])\r\n ss.forEach((id) => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n arr.forEach(item => {\r\n let matrix = new McGeMatrix3d();\r\n let event_clone = ent.clone() as McDbEntity;\r\n matrix.clone();\r\n matrix.setToTranslation(item.sub(basePt));//平移\r\n event_clone.transformBy(matrix);\r\n objIds[objIds.length - 1].push(mxcad.drawEntity(event_clone));\r\n })\r\n })\r\n }\r\n } else if (getNextPt.getStatus() === MrxDbgUiPrBaseReturn.kOk) {\r\n // 未输入关键字\r\n if (!nextPt) return\r\n objIds.push([])\r\n ss.forEach((id) => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n let ent_clone = ent.clone() as McDbEntity;\r\n ent_clone.move(basePt, nextPt);\r\n objIds[objIds.length - 1].push(mxcad.drawEntity(ent_clone))\r\n })\r\n } else {\r\n return\r\n }\r\n }\r\n\r\n}\r\n\r\n// 弧转圆\r\nasync function Mx_ArcToCircle() {\r\n // 筛选圆弧\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"ARC\");\r\n let aryId = await MxCADUtility.userSelect(\"选择圆弧对象\", filter);\r\n if (aryId.length == 0) {\r\n return;\r\n }\r\n // 获取圆弧圆心、半径\r\n aryId.forEach(async (id) => {\r\n let event: any = await id.getMcDbEntity();\r\n let arc = event as McDbArc;\r\n let centerPt = arc.center;\r\n let radius = arc.radius;\r\n let cricle = new McDbCircle();\r\n cricle.center = centerPt;\r\n cricle.radius = radius;\r\n event.erase();\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n mxcad.drawEntity(cricle);\r\n })\r\n}\r\n\r\n// 复制旋转\r\nasync function Mx_CopyRotation() {\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n // 选择复制对象\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择复制旋转对象:\")) return;\r\n if (ss.count() == 0) return;\r\n const getBasePt = new MxCADUiPrPoint();\r\n getBasePt.setMessage('指定基点');\r\n const basePt = await getBasePt.go();\r\n const getNextPt = new MxCADUiPrPoint();\r\n getNextPt.setMessage('请指定目标点\\n');\r\n getNextPt.setUserDraw((pt, pw) => {\r\n pw.drawLine(pt.toVector3(), basePt.toVector3())\r\n ss.forEach((id) => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n let ent_clone = ent.clone() as McDbEntity;\r\n ent_clone.move(basePt, pt);\r\n pw.drawMcDbEntity(ent_clone);\r\n })\r\n })\r\n const nextPt = await getNextPt.go();\r\n if (!nextPt) return;\r\n let objs: McObjectId[] = [];\r\n ss.forEach((id) => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n let ent_clone = ent.clone() as McDbEntity;\r\n ent_clone.move(basePt, nextPt);\r\n objs.push(mxcad.drawEntity(ent_clone));\r\n })\r\n\r\n // 指定旋转角度\r\n let getAngle = new MxCADUiPrAngle();\r\n getAngle.setMessage('请指定旋转角度')\r\n getAngle.setBasePt(nextPt);\r\n getAngle.setUserDraw((pt, pw) => {\r\n pw.drawLine(pt.toVector3(), nextPt.toVector3())\r\n objs.forEach(id => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n let event_clone = ent.clone() as McDbEntity;\r\n let a = pt.sub(nextPt).angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis)\r\n event_clone.rotate(nextPt, a)\r\n pw.drawMcDbEntity(event_clone);\r\n })\r\n })\r\n let val = await getAngle.go();\r\n if (!val) return;\r\n const angle = getAngle.value();\r\n objs.forEach(id => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n let event_clone = ent.clone() as McDbEntity;\r\n event_clone.rotate(nextPt, angle)\r\n mxcad.drawEntity(event_clone);\r\n ent.erase();\r\n })\r\n}\r\n\r\n// 圆转多边\r\nasync function Mx_CricleTotoll() {\r\n // 选中圆\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"CIRCLE\");\r\n let aryId = await MxCADUtility.userSelect(\"选择要转成多边形的对象\", filter);\r\n if (aryId.length == 0) {\r\n return;\r\n }\r\n\r\n // 设置多边形\r\n let getNum = new MxCADUiPrInt();\r\n getNum.setMessage('设置多边形边数');\r\n let num = await getNum.go() || 5;\r\n getNum.clearLastInputPoint()\r\n if (!num) return;\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"\\n输入选项\")\r\n getPoint.setKeyWords(\"[内接于圆(I)/外切于圆(C)]\")\r\n getPoint.clearLastInputPoint()\r\n await getPoint.go();\r\n let tollType = 'inside'\r\n if (getPoint.isKeyWordPicked(\"i\")) tollType = 'inside'\r\n if (getPoint.isKeyWordPicked(\"c\")) tollType = 'outside'\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n aryId.forEach(async (id) => {\r\n let event: any = await id.getMcDbEntity();\r\n let cricle = event as McDbCircle;\r\n let arr1: McGePoint3d[] = [];\r\n if (tollType === 'inside') {\r\n // 多边形内切圆\r\n for (let i = 0; i < num; i++) {\r\n let point = cricle.getPointAtDist(cricle.getLength().val / num * i);\r\n if (point.ret) arr1.push(point.val)\r\n }\r\n let pl1 = new McDbPolyline();\r\n arr1.forEach(i => {\r\n pl1.addVertexAt(i)\r\n })\r\n pl1.isClosed = true;\r\n mxcad.drawEntity(pl1);\r\n } else if (tollType === 'outside') {\r\n // 多边形外切圆\r\n /**\r\n * 知道三个角加一条边求其他两边\r\n * 一条边:r\r\n * 三个角 90 360/num*2 \r\n */\r\n let angle = 90 - (360 / (num * 2))\r\n let sinValue = Math.sin(angle * Math.PI / 180); // 返回0.5\r\n let R = cricle.radius / sinValue;\r\n let r = new McDbCircle();\r\n r.center = cricle.center;\r\n r.radius = R;\r\n let arr2: McGePoint3d[] = [];\r\n for (let i = 0; i < num; i++) {\r\n let point = r.getPointAtDist(r.getLength().val / num * i);\r\n if (point.ret) arr2.push(point.val)\r\n }\r\n let pl2 = new McDbPolyline();\r\n arr2.forEach(i => {\r\n pl2.addVertexAt(i)\r\n })\r\n pl2.isClosed = true;\r\n mxcad.drawEntity(pl2);\r\n }\r\n event.erase()\r\n })\r\n}\r\n\r\n// 改颜色\r\nasync function Mx_ChangeColor() {\r\n let aryId = await MxCADUtility.userSelect(\"选择要修改颜色的对象\");\r\n if (aryId.length == 0) {\r\n return;\r\n }\r\n const getColor = new MxCADUiPrInt();\r\n getColor.setMessage('输入颜色索引(0~256)');\r\n let colorNum = await getColor.go() || 20;\r\n let color = new McCmColor();\r\n color.setColorIndex(colorNum);\r\n aryId.forEach(async (id) => {\r\n let event = id.getMcDbEntity() as McDbEntity;\r\n event.trueColor = color;\r\n })\r\n}\r\n\r\n// 圆弧切角\r\nasync function Mx_ArcToAngle() {\r\n // 选中圆弧\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"ARC\");\r\n let aryId = await MxCADUtility.userSelect(\"选择圆弧对象\", filter);\r\n if (aryId.length == 0) {\r\n return;\r\n };\r\n\r\n aryId.forEach(async (id) => {\r\n // 获取圆弧实体\r\n let event = await id.getMcDbEntity();\r\n if (!event) return\r\n let arc = (event.clone()) as McDbArc\r\n /**\r\n * 获取圆弧开始点与结束点\r\n * 并根据两点获取切向量\r\n */\r\n let dist = arc.getLength();\r\n let startPt = arc.getStartPoint().val;\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let circle = new McDbCircle();\r\n circle.center = arc.center;\r\n circle.radius = arc.radius;\r\n let d = circle.getDistAtPoint(startPt);\r\n let endPt = circle.getPointAtDist(dist.val + d.val).val;\r\n let vec_start = arc.getFirstDeriv(startPt);\r\n if (!vec_start.ret) return;\r\n let pt1 = startPt.clone();\r\n pt1.addvec(vec_start.val);\r\n let vec_end = arc.getFirstDeriv(endPt);\r\n if (!vec_end.ret) return;\r\n let pt2 = endPt.clone();\r\n pt2.addvec(vec_end.val);\r\n\r\n // 延长两条切向量取交点\r\n let line_1 = new McDbLine();\r\n line_1.startPoint = startPt;\r\n line_1.endPoint = pt1;\r\n let line_2 = new McDbLine();\r\n line_2.startPoint = endPt;\r\n line_2.endPoint = pt2;\r\n let intPt = line_1.IntersectWith(line_2, McDb.Intersect.kExtendBoth);\r\n if (intPt.length() === 0) return\r\n let lastPt = intPt.at(0)\r\n line_1.endPoint = lastPt;\r\n line_2.endPoint = lastPt;\r\n mxcad.drawEntity(line_1)\r\n mxcad.drawEntity(line_2)\r\n })\r\n}\r\n\r\n// 临时隐藏\r\nasync function Mx_TemHiding() {\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n const getKey = new MxCADUiPrKeyWord();\r\n getKey.setMessage(\"\\n输入选项\")\r\n getKey.setKeyWords(\"[隐藏(A)/隐藏未选(B)/全部显示(C)]\");\r\n const keyVal = await getKey.go();\r\n if (!keyVal) return;\r\n if (keyVal === 'A' || keyVal === 'B') {\r\n let aryId = await MxCADUtility.userSelect(\"选择目标的对象\");\r\n if (aryId.length == 0) {\r\n return;\r\n }\r\n let arr: number[] = [];\r\n aryId.forEach((obj_id: McObjectId) => arr.push(obj_id.id))\r\n if (keyVal === 'A') {\r\n aryId.forEach(async (id) => {\r\n let event = await id.getMcDbEntity() as McDbEntity;\r\n let event_clone = event.clone() as McDbEntity;\r\n event_clone.visible = false;\r\n mxcad.drawEntity(event_clone);\r\n event.erase()\r\n })\r\n } else if (keyVal === 'B') {\r\n // 获取图纸所有对象id,遍历筛除选择对象的id\r\n let selectArr = new MxCADSelectionSet();\r\n selectArr.allSelect();\r\n selectArr.forEach(async obj_id => {\r\n if (!arr.includes(obj_id.id)) {\r\n let event = await obj_id.getMcDbEntity();\r\n let event_clone = event.clone() as McDbEntity;\r\n event_clone.visible = false;\r\n mxcad.drawEntity(event_clone);\r\n event.erase()\r\n }\r\n })\r\n }\r\n } else if (keyVal === 'C') {\r\n let selectArr = new MxCADSelectionSet();\r\n selectArr.allSelect();\r\n selectArr.forEach(async id => {\r\n let event: any = await id.getMcDbEntity();\r\n let event_clone = event.clone()\r\n if (event_clone.visible === false) {\r\n event_clone.visible = true;\r\n mxcad.drawEntity(event_clone);\r\n event.erase()\r\n }\r\n })\r\n } else {\r\n return;\r\n }\r\n}\r\n\r\n// 方框删除\r\nasync function Mx_BoxDel() {\r\n // 绘制方框\r\n const getPoint = new MxCADUiPrPoint();\r\n let drawColor = MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor();\r\n getPoint.setMessage(\"\\n指定删除方框第一点:\");\r\n let pt1 = await getPoint.go();\r\n if (!pt1) {\r\n return;\r\n }\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let rect = new MxDbRect();\r\n rect.pt1 = pt1.toVector3();\r\n // 在点取第二点时,设置动态绘制.\r\n getPoint.setUserDraw((currentPoint: McGePoint3d, worldDraw) => {\r\n rect.pt2 = currentPoint.toVector3();\r\n rect.setColor(drawColor);\r\n worldDraw.drawCustomEntity(rect);\r\n });\r\n getPoint.setMessage(\"\\n指定删除方框第二点:\");\r\n getPoint.setDynamicInputType(DynamicInputType.kXYCoordInput);\r\n let pt2 = await getPoint.go();\r\n if (!pt2) {\r\n return;\r\n }\r\n rect.pt2 = pt2.toVector3();\r\n let pl = new McDbPolyline();\r\n pl.addVertexAt(pt1);\r\n pl.addVertexAt(new McGePoint3d(pt1.x, pt2.y));\r\n pl.addVertexAt(pt2);\r\n pl.addVertexAt(new McGePoint3d(pt2.x, pt1.y));\r\n pl.isClosed = true;\r\n let d_id = mxcad.drawEntity(pl);\r\n\r\n // 根据方框角点设置选择集删除对象\r\n const ss = new MxCADSelectionSet();\r\n ss.crossingSelect(pt1.x, pt1.y, pt2.x, pt2.y);\r\n ss.getIds().forEach(id => {\r\n if (id && id.id !== d_id.id) {\r\n // 获取并打断与方框相交的对象,删除框内对象\r\n let event = id.getMcDbEntity() as McDbCurve;\r\n let points = event.IntersectWith(pl, McDb.Intersect.kOnBothOperands);\r\n if (points.length() === 0) {\r\n id.erase()\r\n } else {\r\n let PointsArr: McGePoint3d[] = []\r\n points.forEach(val => PointsArr.push(val))\r\n event.splitCurves(PointsArr).forEach(e => {\r\n mxcad.drawEntity(e as McDbEntity)\r\n })\r\n id.erase()\r\n }\r\n }\r\n })\r\n\r\n // 累加选择,精确删除方框内的实体\r\n while (true) {\r\n const getPoint = new MxCADUiPrPoint()\r\n getPoint.setMessage(\"\\n选择需要精确删除的实体\")\r\n const point = await getPoint.go()\r\n if (!point) break;\r\n let objId = MxCADUtility.findEntAtPoint(point.x, point.y, point.z, -1)\r\n mxcad.addCurrentSelect(objId)\r\n }\r\n const objIds = MxCADUtility.getCurrentSelect()\r\n objIds.forEach((objId: McObjectId) => {\r\n objId.erase()\r\n })\r\n mxcad.mxdraw.clearMxCurrentSelect()\r\n\r\n}\r\n\r\n// 角度复制\r\nasync function Mx_AngleCopy() {\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const angleCopyObj = new MxCADUiPrEntity();//角度复制对象\r\n angleCopyObj.setMessage(\"\\n请选择角度复制对象\")\r\n const angleCopyObj_id = await angleCopyObj.go();\r\n if (angleCopyObj_id === null) return;\r\n const angleCopyEvent = (await angleCopyObj_id.getMcDbEntity()) as McDbEntity;//角度复制的实例对象\r\n\r\n const getNum = new MxCADUiPrInt();\r\n getNum.setMessage(\"\\n请输入角度复制数量\");\r\n const num = await getNum.go() || 1;\r\n\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"\\n请输入角度复制的基点\");\r\n const point = await getPoint.go(); //角度复制的基点\r\n if (!point) return;\r\n\r\n const getAngle = new MxCADUiPrAngle();\r\n getAngle.setMessage(\"\\n请输入复制角度\");\r\n getAngle.setBasePt(point);\r\n getAngle.setUserDraw((pt, pw) => {\r\n const angle = pt.sub(point).angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);\r\n for (let i = 1; i < num + 1; i++) {\r\n let event_clone = angleCopyEvent.clone() as McDbEntity;\r\n event_clone.rotate(point, angle * i);\r\n pw.drawMcDbEntity(event_clone)\r\n }\r\n })\r\n let a = await getAngle.go();\r\n if (!a) return;\r\n const angle = getAngle.value();\r\n for (let i = 1; i < num + 1; i++) {\r\n let event_clone = angleCopyEvent.clone() as McDbEntity;\r\n event_clone.rotate(point, angle * i);\r\n mxcad.drawEntity(event_clone)\r\n }\r\n}\r\n\r\n// 顶点复制\r\nasync function Mx_VertexRep() {\r\n // 选择顶点对象\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"LWPOLYLINE\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择顶点对象\", filter);\r\n if (aryIds.length == 0) return;\r\n\r\n // 选择复制对象\r\n let copyIds = await MxCADUtility.userSelect(\"请选择复制对象\");\r\n if (copyIds.length == 0) return;\r\n\r\n // 选择复制基点\r\n const getBasePt = new MxCADUiPrPoint();\r\n getBasePt.setMessage(\"请确定复制基点\");\r\n const basePt = await getBasePt.go();\r\n if (!basePt) return;\r\n\r\n // 平移对象到顶点\r\n const mxcad = MxCpp.getCurrentMxCAD()\r\n aryIds.forEach(id => {\r\n let event = id.getMcDbEntity() as McDbPolyline;\r\n if (!event) return\r\n let num = event.numVerts();\r\n for (let i = 0; i < num; i++) {\r\n const pt = event.getPointAt(i).val;\r\n copyIds.forEach(obj_id => {\r\n const e = obj_id.getMcDbEntity() as McDbEntity;\r\n const e_clone = e.clone() as McDbEntity;\r\n e_clone.move(basePt, pt);\r\n mxcad.drawEntity(e_clone)\r\n })\r\n }\r\n })\r\n}\r\n\r\n// 交点打断\r\nasync function Mx_IntersectBreak() {\r\n // 选择参考曲线\r\n let eventObj = new MxCADUiPrEntity();\r\n eventObj.setMessage(\"请选择参考曲线\");\r\n let eventObj_id = await eventObj.go();\r\n let event = await eventObj_id.getMcDbEntity()//获取实例对象\r\n if (event === null) return;\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n let curve = event.clone();\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"CIRCLE,ARC,LINE,LWPOLYLINE,ELLIPSE\");\r\n let aryId = await MxCADUtility.userSelect(\"选择打断对象\", filter);//选中对象的id\r\n if (aryId.length == 0) return;\r\n let dTol = mxcad.mxdraw.viewCoordLong2Cad(0.5);// 设置精度值\r\n aryId.forEach(async (id) => {\r\n if (id.id !== eventObj_id.id) {\r\n let breakEvent: McDbCurve = (await id.getMcDbEntity()) as McDbCurve;\r\n let breakArr = breakEvent.IntersectWith(curve as McDbEntity, McDb.Intersect.kOnBothOperands);//与实体相交的点集合\r\n if (breakArr.length() != 0) {\r\n //有交点的对象\r\n let arr: McGePoint3d[] = [];//交点数组\r\n breakArr.forEach((item: McGePoint3d) => {\r\n arr.push(item)\r\n })\r\n let breakPoint: McGePoint3d[] = [];\r\n arr.forEach(pt => {\r\n let closePoint = breakEvent.getClosestPointTo(pt, false);//曲线上离鼠标位置最近的点\r\n if (!closePoint.ret) return;\r\n let vec = breakEvent.getFirstDeriv(closePoint.val);//断点所在位置的向量\r\n if (!vec.ret) return;\r\n vec.val.normalize().mult(MxFun.viewCoordLong2Cad(10));//断开的距离\r\n let pt1 = closePoint.val.clone();\r\n pt1.addvec(vec.val);\r\n let pt2 = closePoint.val.clone();\r\n pt2.subvec(vec.val);\r\n\r\n // 如果是曲线端点相交,则需要特殊处理\r\n const startPt = breakEvent.getPointAtDist(0).val;\r\n const endPt = breakEvent.getPointAtDist(breakEvent.getLength().val).val;\r\n if (startPt.distanceTo(closePoint.val) < dTol || endPt.distanceTo(closePoint.val) < dTol) {\r\n const num = breakEvent.getDistAtPoint(pt1);\r\n breakPoint.push(closePoint.val)\r\n num.ret ? breakPoint.push(pt1) : breakPoint.push(pt2);\r\n } else {\r\n breakPoint.push(pt1);\r\n breakPoint.push(pt2);\r\n }\r\n });\r\n let breakcurve = breakEvent.splitCurves(breakPoint);\r\n if (breakcurve.empty()) {\r\n breakEvent.highlight(false);\r\n return;\r\n }\r\n breakcurve.forEach((obj: McDbObject, index: number) => {\r\n if (index % 2 == 0) mxcad.drawEntity(obj as McDbEntity);\r\n });\r\n breakEvent.erase()\r\n }\r\n }\r\n })\r\n}\r\n\r\n// 双向偏移\r\nasync function Mx_DoubleOff() {\r\n let mxcad = MxCpp.App.getCurrentMxCAD();\r\n\r\n //获取偏移对象\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"CIRCLE,ARC,LINE,LWPOLYLINE,ELLIPSE\");\r\n let getEvent = new MxCADUiPrEntity();\r\n getEvent.setFilter(filter);\r\n getEvent.setMessage('指定偏移对象');\r\n let event_id = await getEvent.go();\r\n if (!event_id) return;\r\n\r\n //获取偏移距离\r\n const getOffDist = new MxCADUiPrDist();\r\n getOffDist.setMessage('请输入偏移距离');\r\n const distVal = await getOffDist.go();\r\n if (!distVal) return;\r\n const offDist = getOffDist.value();\r\n let event = (await event_id.getMcDbEntity()) as McDbCurve;\r\n // 获取曲线两侧的点作为偏移点\r\n const startPt = event.getStartPoint().val;\r\n const vec = event.getFirstDeriv(startPt).val;\r\n const vecP = vec.rotateBy(McGeVector3d.kYAxis.angleTo1(McGeVector3d.kXAxis))\r\n const nextPt1 = startPt.clone().addvec(vecP)\r\n const nextPt2 = startPt.clone().subvec(vecP)\r\n let objArr1 = event.offsetCurves(offDist, nextPt1);\r\n if (objArr1.length() === 0) return;\r\n objArr1.forEach((obj: McDbObject) => {\r\n mxcad.drawEntity(obj as McDbEntity);\r\n });\r\n let objArr2 = event.offsetCurves(offDist, nextPt2);\r\n if (objArr2.length() === 0) return;\r\n objArr2.forEach((obj: McDbObject) => {\r\n mxcad.drawEntity(obj as McDbEntity);\r\n });\r\n}\r\n\r\n// 伸缩\r\nasync function Mx_Telescoping() {\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"ARC,LINE,LWPOLYLINE\");\r\n const getEvent = new MxCADUiPrEntity();\r\n getEvent.setFilter(filter);\r\n getEvent.setMessage('指定伸缩对象(选择直线、多段线、圆弧)');\r\n const event_id = await getEvent.go();\r\n if (!event_id) return;\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n const event = event_id.getMcDbEntity();\r\n if (event instanceof McDbArc) {\r\n // 圆弧\r\n const event_clone = event.clone() as McDbArc;\r\n const center = event_clone.center;\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage('伸缩至');\r\n event.visible = false;\r\n getPoint.setUserDraw((pt, pw) => {\r\n event_clone.endAngle = pt.sub(center).angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);\r\n pw.drawMcDbEntity(event_clone)\r\n })\r\n const point = await getPoint.go();\r\n event.visible = true;\r\n if (!point) return\r\n event.endAngle = point.sub(center).angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);\r\n mxcad.updateDisplay();\r\n } else if (event instanceof McDbLine) {\r\n // 直线\r\n const event_clone = event.clone() as McDbLine;\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage('伸缩至');\r\n event.visible = false;\r\n let endPt: McGePoint3d;\r\n getPoint.setUserDraw((pt, pw) => {\r\n endPt = event_clone.getClosestPointTo(pt, true).val\r\n event_clone.endPoint = endPt;\r\n pw.drawMcDbEntity(event_clone)\r\n })\r\n const point = await getPoint.go();\r\n event.visible = true;\r\n if (!point) return\r\n event.endPoint = endPt;\r\n mxcad.updateDisplay();\r\n } else if (event instanceof McDbPolyline) {\r\n // 多段线\r\n const event_clone = event.clone() as McDbPolyline;\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage('伸缩至');\r\n event.visible = false;\r\n let endPt: McGePoint3d;\r\n const num = event.numVerts()\r\n const bulge = event.getBulgeAt(num - 1)\r\n const widths = event.getWidthsAt(num - 1)\r\n getPoint.setUserDraw((pt, pw) => {\r\n endPt = event_clone.getClosestPointTo(pt, true).val;\r\n event_clone.setPointAt(num - 1, endPt);\r\n event_clone.setBulgeAt(num - 1, bulge);\r\n event_clone.setWidthsAt(num - 1, widths.val1, widths.val2);\r\n pw.drawMcDbEntity(event_clone)\r\n });\r\n const point = await getPoint.go();\r\n event.visible = true;\r\n if (!point) return\r\n event.setPointAt(num - 1, endPt);\r\n event.setBulgeAt(num - 1, bulge);\r\n event.setWidthsAt(num - 1, widths.val1, widths.val2);\r\n mxcad.updateDisplay();\r\n }\r\n // else if (event instanceof McDbEllipse) {\r\n // // 椭圆弧\r\n // // const getPoint = new MxCADUiPrPoint();\r\n // // getPoint.setMessage('伸缩至');\r\n // // const center = event.center;\r\n // // const event_clone = event.clone() as McDbEllipse;\r\n // // getPoint.setUserDraw((pt, pw) => {\r\n // // let closePt = event_clone.getClosestPointTo(pt, true).val;\r\n // // })\r\n // // const point = await getPoint.go();\r\n // }\r\n}\r\n\r\n// 改圆大小\r\nasync function Mx_EitCircle() {\r\n // 框选圆\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"CIRCLE\");\r\n let aryIds = await MxCADUtility.userSelect(\"选择对象\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n // 设置圆半径\r\n const getRadius = new MxCADUiPrDist();\r\n getRadius.setMessage('请输入圆半径');\r\n // 动态绘制圆\r\n // 以选中的第一个圆为参考圆\r\n const c = aryIds[0].getMcDbEntity() as McDbCircle;\r\n getRadius.setBasePt(c.center)\r\n getRadius.setUserDraw((pt, pw) => {\r\n const r = pt.distanceTo(c.center);\r\n aryIds.forEach((id: McObjectId) => {\r\n const circle = id.getMcDbEntity();\r\n const circle_clone = circle.clone() as McDbCircle;\r\n circle_clone.radius = r;\r\n pw.drawMcDbEntity(circle_clone)\r\n })\r\n })\r\n const radiusVal = await getRadius.go();\r\n if (!radiusVal) return;\r\n const radius = getRadius.value();\r\n aryIds.forEach((id: McObjectId) => {\r\n const circle = id.getMcDbEntity() as McDbCircle;\r\n circle.radius = radius;\r\n })\r\n}\r\n\r\n// 线型比例\r\nasync function Mx_LayerTypeScale() {\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"LWPOLYLINE,ARC,LINE,CIRCLE,ELLIPSE\");\r\n let aryId = await MxCADUtility.userSelect(\"选择要修改线型比例的对象\", filter);\r\n if (aryId.length == 0) {\r\n return;\r\n }\r\n const getScale = new MxCADUiPrString();\r\n getScale.setMessage('请输入线型比例');\r\n const scaleVal = await getScale.go();\r\n if (!scaleVal) return;\r\n const scale = Number(getScale.value());\r\n if (!scale) return;\r\n aryId.forEach(async (id) => {\r\n let event = id.getMcDbEntity();\r\n event.linetypeScale = scale;\r\n })\r\n}\r\n\r\n// 按弧阵列\r\n/**\r\n * 指定对象的平移和旋转\r\n * 平移距离:指定对象到指定圆弧位置的距离\r\n * 旋转方向:阵列点垂直向量与Y轴的夹角\r\n */\r\nasync function Mx_ArcOrder() {\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n\r\n // 设置阵列间距\r\n const getDist = new MxCADUiPrDist();\r\n getDist.setMessage('请输入阵列间距');\r\n const distVal = await getDist.go();\r\n if (!distVal) return;\r\n const dist = getDist.value();\r\n\r\n // 指定圆弧\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"ARC\");\r\n const arcEventObj = new MxCADUiPrEntity();\r\n arcEventObj.setFilter(filter);\r\n arcEventObj.setMessage('请选择圆弧')\r\n const arcEvent_id = await arcEventObj.go();\r\n if (!arcEvent_id.id) return;\r\n const arcEvent: McDbArc = arcEvent_id.getMcDbEntity() as McDbArc;\r\n\r\n // 指定排列对象\r\n const aryIds = await MxCADUtility.userSelect(\"选择排列对象\");\r\n if (aryIds.length == 0) {\r\n return;\r\n }\r\n // 指定排列基点\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage('指定排列基点')\r\n const point = await getPoint.go();\r\n if (!point) return;\r\n\r\n // 排列\r\n aryIds.forEach(async (orderObj_id) => {\r\n let orderEvent = orderObj_id.getMcDbEntity() as McDbEntity;\r\n let eventInd = arcEvent.getLength().val / dist;// 根据阵列距离得出阵列数\r\n if (eventInd < 1) return;\r\n for (let i = 0; i < eventInd; i++) {\r\n let orderEvent_clone = orderEvent.clone() as McDbEntity;\r\n let evePt = arcEvent.getPointAtDist(i * dist);\r\n if (!evePt.ret) return;\r\n let v = evePt.val.sub(point)//平移距离和方向\r\n let matrix = new McGeMatrix3d();\r\n matrix.setToTranslation(v);\r\n orderEvent_clone.transformBy(matrix);\r\n let tangentV = arcEvent.getFirstDeriv(evePt.val).val;//曲线阵列点切向量\r\n let verticalV = tangentV.rotateBy(McGeVector3d.kYAxis.angleTo1(McGeVector3d.kXAxis));//阵列点垂直向量\r\n let angle = verticalV.negate().angleTo2(McGeVector3d.kYAxis, McGeVector3d.kNegateZAxis);//旋转角度\r\n orderEvent_clone.rotate(evePt.val, angle)\r\n mxcad.drawEntity(orderEvent_clone);\r\n }\r\n })\r\n}\r\n\r\n// pl圆角\r\n/**\r\n * 将pl打断成n段直线\r\n * 根据圆角半径求圆心\r\n */\r\nasync function Mx_PlRoundCorners() {\r\n // 选择目标pl\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"LWPOLYLINE\");\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择目标多段线:\", filter)) return;\r\n if (ss.count() == 0) return;\r\n\r\n // 设置圆角半径s\r\n const getRadius = new MxCADUiPrDist();\r\n getRadius.setMessage('请输入圆角半径<5>');\r\n let radius: number = 5;\r\n const radiusVal = await getRadius.go();\r\n if (radiusVal) {\r\n radius = getRadius.value();\r\n }\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n ss.forEach(id => {\r\n const pl = id.getMcDbEntity() as McDbPolyline;\r\n\r\n const pl_new = new McDbPolyline();\r\n pl_new.trueColor = pl.trueColor;\r\n pl_new.isClosed = pl.isClosed;\r\n pl_new.colorIndex = pl.colorIndex;\r\n pl_new.layerId = pl.layerId;\r\n const num = pl.numVerts();\r\n const vertPts: McGePoint3d[] = [];\r\n for (let i = 0; i < num; i++) {\r\n vertPts.push(pl.getPointAt(i).val);\r\n };\r\n\r\n if (pl.isClosed === true) {\r\n // 闭合曲线多一条线\r\n vertPts.push(...[vertPts[0], vertPts[1]])\r\n }\r\n vertPts.forEach((pt1, index) => {\r\n if (index + 2 >= vertPts.length) return;\r\n const pt2 = vertPts[index + 1];\r\n const pt3 = vertPts[index + 2];\r\n const line1 = new McDbLine(pt2, pt1);\r\n const line2 = new McDbLine(pt2, pt3);\r\n\r\n // 获取圆角起始点\r\n const angle = pt1.sub(pt2).angleTo2(pt3.sub(pt2), McGeVector3d.kNegateZAxis);\r\n let b = radius * Math.sin(Math.PI / 2 - angle / 2) / Math.sin(angle / 2);\r\n if (b < 0) b = -b;\r\n const p1 = line1.getPointAtDist(b).val;\r\n const p2 = line2.getPointAtDist(b).val;\r\n\r\n // 获取圆角中点\r\n line1.rotate(p1, Math.PI / 2);\r\n line2.rotate(p2, Math.PI / 2);\r\n const pointsVal = line1.IntersectWith(line2, McDb.Intersect.kExtendBoth);\r\n if (!pointsVal.length()) return;\r\n const center = pointsVal.at(0);\r\n\r\n const line = new McDbLine(center, pt2);\r\n const midPt = line.getPointAtDist(radius).val;\r\n\r\n let retB = MxCADUtility.calcBulge(p1, midPt, p2).val;//三点计算当前弧线的凸度\r\n\r\n if (index === 0 && pl.isClosed === false) {\r\n let w = pl.getWidthsAt(index)\r\n pl_new.addVertexAt(pt1, 0, w.val1, w.val2);\r\n }\r\n let widths;\r\n if (pl.isClosed === true && index + 2 === vertPts.length - 1) {\r\n widths = pl.getWidthsAt(index);\r\n } else {\r\n widths = pl.getWidthsAt(index + 1);\r\n }\r\n pl_new.addVertexAt(p1, retB, widths.val1, widths.val2);\r\n pl_new.addVertexAt(p2, 0, widths.val1, widths.val2);\r\n\r\n if (index + 2 === vertPts.length - 1 && pl.isClosed === false) {\r\n pl_new.addVertexAt(pt3, 0, widths.val1, widths.val2);\r\n }\r\n })\r\n pl.erase();\r\n mxcad.drawEntity(pl_new);\r\n })\r\n}\r\n\r\n// 填充比例\r\nasync function Mx_FillRatio() {\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n\r\n const ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择填充对象\")) return;\r\n if (ss.count() == 0) return;\r\n\r\n // 获取填充比例\r\n const getRatio = new MxCADUiPrString();\r\n getRatio.setMessage('请输入填充比例');\r\n const ratioVal = await getRatio.go();\r\n if (!ratioVal) return;\r\n const ratio = Number(getRatio.value());\r\n if (!ratio) return;\r\n\r\n ss.forEach(id => {\r\n const tmp = id.getMcDbEntity();\r\n if (tmp instanceof McDbHatch) {\r\n let tmp_clone = tmp.clone() as McDbHatch;\r\n tmp_clone.patternScale = tmp_clone.patternSpace = ratio;\r\n const num = tmp_clone.numPatternDefinitions;\r\n for (let i = 0; i < num; i++) {\r\n const def = tmp_clone.getPatternDefinitionAt(i);\r\n const strArr = Object.values(def);\r\n strArr.shift();\r\n const str = strArr.toString();\r\n mxcad.addPatternDefinition(`test${i}`, `((${str}))`);\r\n mxcad.drawPatternDefinition = `test${i}`;\r\n };\r\n mxcad.drawHatch(tmp_clone, ratio);\r\n tmp.erase();\r\n }\r\n });\r\n mxcad.updateDisplay();\r\n}\r\n\r\n// 继承填充\r\nasync function Mx_InheritanceFill() {\r\n const getEnt = new MxCADUiPrEntity();\r\n getEnt.setMessage('请选择原填充图形');\r\n const entId = await getEnt.go();\r\n if (!entId.id) return;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const ent = entId.getMcDbEntity();\r\n if (ent instanceof McDbHatch) {\r\n const patternName = ent.patternName();\r\n const type = ent.patternType();\r\n console.log(patternName)\r\n while (true) {\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage('请点击填充图形内部任意一点');\r\n const point = await getPoint.go();\r\n if (!point) return;\r\n const hatch = MxCADUtility.builderHatchFromPoint(point);\r\n if (!hatch) {\r\n MxFun.acutPrintf(\"没有找到闭合区域\\n\")\r\n return;\r\n }\r\n hatch.setPattern(type, patternName);\r\n hatch.patternScale = ent.patternScale;\r\n hatch.patternAngle = ent.patternAngle;\r\n mxcad.drawEntity(hatch);\r\n console.log(111, hatch)\r\n }\r\n\r\n }\r\n}\r\n\r\n// pl线反向\r\nasync function Mx_PlReverse() {\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes('LWPOLYLINE');\r\n\r\n const getEntity = new MxCADUiPrEntity();\r\n getEntity.setMessage('请选择线对象');\r\n getEntity.setFilter(filter);\r\n const entId = await getEntity.go();\r\n console.log(entId)\r\n if (!entId.id) return;\r\n const ent = entId.getMcDbEntity() as McDbPolyline;\r\n const vertNum = ent.numVerts();\r\n const pl = new McDbPolyline();\r\n for (let i = vertNum - 1; i >= 0; i--) {\r\n const pt = ent.getPointAt(i).val;\r\n if (i > 0) {\r\n const widths = ent.getWidthsAt(i - 1);\r\n const bulge = ent.getBulgeAt(i - 1);\r\n pl.addVertexAt(pt, -bulge, widths.val2, widths.val1);\r\n } else {\r\n const widths = ent.getWidthsAt(i);\r\n const bulge = ent.getBulgeAt(i);\r\n pl.addVertexAt(pt, -bulge, widths.val2, widths.val2);\r\n }\r\n }\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n pl.isClosed = ent.isClosed;\r\n mxcad.drawEntity(pl);\r\n ent.erase()\r\n}\r\n\r\n//得到所有直线对象\r\nasync function Mx_TestGetAllLineByLayer() {\r\n let ss = new MxCADSelectionSet();\r\n ss.allSelect(new MxCADResbuf([DxfCode.kEntityType, \"LINE\"]));\r\n console.log(\"得到对象数目:\" + ss.count());\r\n ss.forEach(id => {\r\n const ent = id.getMcDbEntity();\r\n ent.highlight(true);\r\n });\r\n MxCpp.getCurrentMxCAD().updateDisplay();\r\n}\r\n\r\n// 等分\r\nasync function Mx_Bisection() {\r\n // 设置模式\r\n const getPrefModel = new MxCADUiPrKeyWord();\r\n getPrefModel.setMessage(\"选择等分模式\");\r\n getPrefModel.setKeyWords(\"[定距等分(ME)/定数等分(DIV)/偏移等分(O)/复制等分(CO)]\");\r\n let model = await getPrefModel.go();\r\n if (!model) return;\r\n\r\n // 设置过滤器\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes('LINE');\r\n\r\n // 获取需要等分的线段\r\n const getEnt = new MxCADUiPrEntity();\r\n getEnt.setFilter(filter);\r\n if (model === \"O\") {\r\n getEnt.setMessage('请选择偏移等分对象');\r\n } else if (model === \"CO\") {\r\n getEnt.setMessage('请选择复制等分对象');\r\n } else {\r\n getEnt.setMessage('请选择需要等分的线段');\r\n }\r\n const entId = await getEnt.go();\r\n if (!entId.id) return;\r\n const line = entId.getMcDbEntity() as McDbLine;\r\n const length = line.getLength().val;\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n\r\n //根据不同模式等分线段\r\n if (model === \"ME\") {\r\n // 设置等分距离\r\n const getDist = new MxCADUiPrDist();\r\n getDist.setMessage(\"请设置等分距离\");\r\n const val = await getDist.go();\r\n if (!val) return;\r\n const dist = getDist.value();\r\n\r\n // 根据距离确定等分点\r\n const num = length / dist;\r\n for (let i = 1; i < num; i++) {\r\n const point = line.getPointAtDist(i * dist).val;\r\n const dividept = new MxDbTestDivide();\r\n dividept.setCenter(point);\r\n mxcad.drawEntity(dividept);\r\n }\r\n } else if (model === \"DIV\") {\r\n // 设置等分的数量\r\n const getCount = new MxCADUiPrInt();\r\n getCount.setMessage(\"请设置等分的数量\");\r\n const val = await getCount.go();\r\n if (!val) return;\r\n const count = getCount.value();\r\n\r\n // 根据等分数量获取等分距离并得到等分点\r\n const dist = length / count;\r\n for (let i = 1; i < count; i++) {\r\n const point = line.getPointAtDist(i * dist).val;\r\n const dividept = new MxDbTestDivide();\r\n dividept.setCenter(point);\r\n mxcad.drawEntity(dividept);\r\n }\r\n } else if (model === \"O\") {\r\n // 指定偏移距离\r\n const getDist = new MxCADUiPrDist();\r\n getDist.setMessage(\"请设置偏移距离\");\r\n const val = await getDist.go();\r\n if (!val) return;\r\n const dist = getDist.value();\r\n\r\n let num = 1;\r\n while (true) {\r\n // 指定偏移点\r\n const getOffPoint = new MxCADUiPrPoint();\r\n getOffPoint.setMessage(\"请指定偏移点\");\r\n getOffPoint.setUserDraw((pt, pw) => {\r\n line.offsetCurves(dist * num, pt).forEach(obj => {\r\n pw.drawMcDbEntity(obj as McDbEntity);\r\n })\r\n })\r\n const offPoint = await getOffPoint.go();\r\n if (!offPoint) return;\r\n line.offsetCurves(dist * num, offPoint).forEach(obj => {\r\n mxcad.drawEntity(obj as McDbEntity);\r\n num++;\r\n })\r\n }\r\n } else if (model === \"CO\") {\r\n // 指定复制基点\r\n const getBasePt = new MxCADUiPrPoint();\r\n getBasePt.setMessage(\"请指定复制基点\");\r\n const basePt = await getBasePt.go();\r\n if (!basePt) return;\r\n\r\n // 指定复制数量\r\n const getCount = new MxCADUiPrInt();\r\n getCount.setMessage(\"请指定复制等分数量\");\r\n const val = await getCount.go();\r\n if (!val) return;\r\n const count = getCount.value();\r\n\r\n // 指定端点\r\n const getEndPt = new MxCADUiPrPoint();\r\n getEndPt.setMessage(\"请指定复制等分端点\");\r\n // 动态绘制\r\n getEndPt.setUserDraw((pt, pw) => {\r\n const l = new McDbLine(basePt, pt);\r\n pw.drawMcDbEntity(l);\r\n const dist = l.getLength().val / count;\r\n for (let i = 1; i < count + 1; i++) {\r\n const ent = line.clone() as McDbLine;\r\n ent.move(basePt, l.getPointAtDist(dist * i).val);\r\n pw.drawMcDbEntity(ent)\r\n }\r\n })\r\n const endPt = await getEndPt.go();\r\n if (!endPt) return;\r\n\r\n // 根据端点与基点以及复制数量确定等分点\r\n const l = new McDbLine(basePt, endPt);\r\n const dist = l.getLength().val / count;\r\n for (let i = 1; i < count + 1; i++) {\r\n const ent = line.clone() as McDbLine;\r\n ent.move(basePt, l.getPointAtDist(dist * i).val);\r\n mxcad.drawEntity(ent)\r\n }\r\n }\r\n\r\n}\r\n\r\n// 矩形缩放\r\n/**\r\n * 将选中的实体整合成块\r\n * 根据矩形的大小设置缩放因子\r\n */\r\nasync function Mx_RectangularScaling() {\r\n // 获取需要缩放的实体\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"请选择需要矩形缩放的实体:\")) return;\r\n if (ss.count() == 0) return;\r\n\r\n // 将目标实体整合成块对象\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let blkTable = mxcad.getDatabase().getBlockTable();\r\n let blkRecId = blkTable.add(new McDbBlockTableRecord());//图块记录\r\n let blkTableRecord: McDbBlockTableRecord = blkRecId.getMcDbBlockTableRecord() as any;\r\n if (blkTableRecord == null) return;\r\n\r\n ss.forEach(id => {\r\n const ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n const ent_clone = ent.clone() as McDbEntity;\r\n blkTableRecord.appendAcDbEntity(ent_clone);\r\n })\r\n\r\n let blkRef = new McDbBlockReference();\r\n blkRef.blockTableRecordId = blkRecId;\r\n // 通过计算实体包围盒设置块基点\r\n const { ret, maxPt, minPt } = blkRef.getBoundingBox();\r\n if (!ret) return;\r\n const line = new McDbLine(minPt, maxPt);\r\n const length = line.getLength().val;\r\n blkTableRecord.origin = line.getPointAtDist(length / 2).val;\r\n\r\n // 选择矩形的两个角点\r\n const getPt1 = new MxCADUiPrPoint();\r\n getPt1.setMessage(\"请指定矩形的角点1\");\r\n const pt1 = await getPt1.go();\r\n if (!pt1) return;\r\n const getPt2 = new MxCADUiPrPoint();\r\n getPt2.setMessage(\"请指定矩形角点2\");\r\n getPt2.setUserDraw((pt, pw) => {\r\n let pl = new McDbPolyline();\r\n pl.addVertexAt(pt1);\r\n pl.addVertexAt(new McGePoint3d(pt1.x, pt.y));\r\n pl.addVertexAt(pt);\r\n pl.addVertexAt(new McGePoint3d(pt.x, pt1.y));\r\n pl.isClosed = true;\r\n pw.drawMcDbEntity(pl);\r\n })\r\n const pt2 = await getPt2.go();\r\n if (!pt2) return;\r\n\r\n // 计算缩放因子\r\n const scaleX = Math.abs(pt1.x - pt2.x) / Math.abs(minPt.x - maxPt.x);\r\n const scaleY = Math.abs(pt1.y - pt2.y) / Math.abs(minPt.y - maxPt.y);\r\n blkRef.scaleFactors = new McGePoint3d(scaleX, scaleY, 0);\r\n const l = new McDbLine(pt1, pt2);\r\n blkRef.position = l.getPointAtDist(l.getLength().val / 2).val;\r\n mxcad.drawEntity(blkRef);\r\n}\r\n\r\n// 自定义局部放大类\r\nclass McDbTestEnlarge extends McDbCustomEntity {\r\n // 定义McDbTestReactArea内部的点对象 \r\n // 放大中心点\r\n private center: McGePoint3d = new McGePoint3d();\r\n // 放大范围\r\n private radius: number = 20;\r\n // 放大倍数\r\n private scale: number = 50;\r\n // 插入点\r\n private position: McGePoint3d = new McGePoint3d();\r\n // 构造函数\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n // 创建函数\r\n public create(imp: any) {\r\n return new McDbTestEnlarge(imp)\r\n }\r\n // 获取类名\r\n public getTypeName(): string {\r\n return \"McDbTestEnlarge\";\r\n }\r\n //设置或获取放大中心点\r\n public set enlargeCenter(val: McGePoint3d) {\r\n this.center = val;\r\n }\r\n public get enlargeCenter(): McGePoint3d {\r\n return this.center;\r\n }\r\n //设置或获取放大范围\r\n public set enlargeRadius(val: number) {\r\n this.radius = val;\r\n }\r\n public get enlargeRadius(): number {\r\n return this.radius;\r\n }\r\n //设置或获取放大倍数\r\n public set enlargeScale(val: number) {\r\n this.scale = val;\r\n }\r\n public get enlargeScale(): number {\r\n return this.scale;\r\n }\r\n // 读取自定义实体数据pt1、pt2\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.center = filter.readPoint(\"center\").val;\r\n this.position = filter.readPoint(\"position\").val;\r\n this.radius = filter.readDouble(\"radius\").val;\r\n this.scale = filter.readDouble(\"scale\").val;\r\n return true;\r\n }\r\n // 写入自定义实体数据pt1、pt2\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoint(\"center\", this.center);\r\n filter.writePoint(\"position\", this.position);\r\n filter.writeDouble(\"radius\", this.radius);\r\n filter.writeDouble(\"scale\", this.scale);\r\n return true;\r\n }\r\n\r\n // 移动自定义对象的夹点\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n if (iIndex == 0) {\r\n this.center.x += dXOffset;\r\n this.center.y += dYOffset;\r\n this.center.z += dZOffset;\r\n }\r\n else if (iIndex == 1) {\r\n this.position.x += dXOffset;\r\n this.position.y += dYOffset;\r\n this.position.z += dZOffset;\r\n }\r\n };\r\n // 获取自定义对象的夹点\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n ret.append(this.center);\r\n ret.append(this.position);\r\n return ret;\r\n };\r\n // 绘制实体\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n const circle = new McDbCircle();\r\n circle.center = this.center;\r\n circle.radius = this.radius;\r\n draw.drawEntity(circle);\r\n\r\n const { minPt, maxPt, ret } = circle.getBoundingBox();\r\n if (!ret) return;\r\n let ss = new MxCADSelectionSet();\r\n ss.crossingSelect(minPt.x, minPt.y, maxPt.x, maxPt.y)\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n let blkTable = mxcad.getDatabase().getBlockTable();\r\n let blkRec = new McDbBlockTableRecord();\r\n let blkRecId = blkTable.add(blkRec);\r\n let blkTableRecord: McDbBlockTableRecord = blkRecId.getMcDbBlockTableRecord() as any;\r\n if (blkTableRecord == null) return;\r\n\r\n ss.forEach((id) => {\r\n let ent = id.getMcDbEntity();\r\n if (!ent) return;\r\n let cent = ent.clone() as McDbEntity;\r\n blkTableRecord.appendAcDbEntity(cent);\r\n });\r\n // 设置图块的插入基点,在图形对象的中心位置。\r\n blkTableRecord.origin = new McGePoint3d(this.center.x, this.center.y, 0);\r\n let blkRef = new McDbBlockReference();\r\n blkRef.blockTableRecordId = blkRecId;\r\n blkRef.position = this.position;\r\n const blkRefId = mxcad.drawEntity(blkRef);\r\n blkRef = blkRefId.getMcDbEntity() as McDbBlockReference;\r\n\r\n // 设置一个圆做它的剪切边界.\r\n let samplePoints = circle.getSamplePoints(this.radius * 0.00001);\r\n let aryPoint = new McGePoint3dArray();\r\n samplePoints.forEach((val, _type, dxf) => {\r\n if (dxf === 1010) {\r\n const point = new McGePoint3d(val.x, val.y, val.z);\r\n aryPoint.append(point);\r\n }\r\n });\r\n blkRef.createSpatialFilter();\r\n blkRef.setScale(this.scale);\r\n let idSpatialFilter = blkRef.getSpatialFilterId();\r\n let blkFilter: McDbSpatialFilter = idSpatialFilter.getMcDbObject() as any;\r\n blkFilter.setBoundary(aryPoint);\r\n draw.drawEntity(blkRef);\r\n blkRefId.erase();\r\n\r\n const vec = this.position.sub(this.center).normalize();\r\n const pt1 = this.center.clone().addvec(vec.mult(this.radius));\r\n const pt2 = this.position.clone().subvec(vec.mult(this.scale));\r\n const line = new McDbLine(pt1, pt2);\r\n draw.drawEntity(line)\r\n }\r\n // 获取position\r\n public setPosition(pt: McGePoint3d) {\r\n this.assertWrite();\r\n this.position = pt.clone();\r\n }\r\n // 获取position\r\n public getPosition() {\r\n return this.position;\r\n }\r\n}\r\n// 局部放大功能\r\nasync function Mx_Enlarge() {\r\n\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage('请选择放大中心点');\r\n const point = await getPoint.go();\r\n if (!point) return;\r\n\r\n // 设置放大范围\r\n const getDist = new MxCADUiPrDist();\r\n getDist.setMessage('请选择放大范围');\r\n getDist.setBasePt(point);\r\n getDist.setUserDraw((pt, pw) => {\r\n const radius = point.distanceTo(pt);\r\n const circle = new McDbCircle(point.x, point.y, point.z, radius);\r\n pw.drawMcDbEntity(circle);\r\n });\r\n const distVal = await getDist.go();\r\n if (!distVal) return;\r\n const dist = getDist.value();\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const circle1 = new McDbCircle(point.x, point.y, point.z, dist);\r\n // 设置放大倍数\r\n const getAmplifyDist = new MxCADUiPrDist();\r\n getAmplifyDist.setMessage('请设置放大倍数');\r\n getAmplifyDist.setBasePt(point);\r\n getAmplifyDist.setUserDraw((pt, pw) => {\r\n const radius = point.distanceTo(pt);\r\n const circle = new McDbCircle(point.x, point.y, point.z, radius);\r\n pw.drawMcDbEntity(circle);\r\n pw.drawMcDbEntity(circle1);\r\n });\r\n const aDistVal = await getAmplifyDist.go();\r\n if (!aDistVal) return;\r\n const aDist = getAmplifyDist.value();\r\n\r\n // 设置放大插入点\r\n const getInsertPt = new MxCADUiPrPoint();\r\n getInsertPt.setMessage('请选择放大插入点');\r\n getInsertPt.setUserDraw((pt, pw) => {\r\n const circle = new McDbCircle(pt.x, pt.y, pt.z, aDist);\r\n pw.drawMcDbEntity(circle);\r\n pw.drawMcDbEntity(circle1);\r\n })\r\n const insertPt = await getInsertPt.go();\r\n if (!insertPt) return;\r\n\r\n const enlarge = new McDbTestEnlarge();\r\n enlarge.enlargeCenter = point;\r\n enlarge.enlargeRadius = dist;\r\n enlarge.enlargeScale = aDist / dist;\r\n enlarge.setPosition(insertPt);\r\n mxcad.drawEntity(enlarge)\r\n}\r\n\r\n// 打断\r\nasync function Mx_Interrupt() {\r\n // 选中需要打断的曲线\r\n const getCurve = new MxCADUiPrEntity();\r\n getCurve.setMessage('请选择一条需要打断的曲线');\r\n const filter = new MxCADResbuf([DxfCode.kEntityType, \"LWPOLYLINE,LINE,ARC,CIRCLE,ELLIPSE\"]);\r\n getCurve.setFilter(filter);\r\n const curveId = await getCurve.go();\r\n if (!curveId.id) return;\r\n const curve = curveId.getMcDbEntity() as McDbCurve;\r\n curve.highlight(true);\r\n\r\n // 选取曲线的打断点\r\n const getBreakPoint = new MxCADUiPrPoint();\r\n getBreakPoint.setMessage('请在曲线上选取打断点');\r\n const pointsArr: McGePoint3d[] = [];\r\n const radius = MxFun.screenCoordLong2Doc(5)\r\n while (true) {\r\n // 动态绘制打断点\r\n getBreakPoint.setUserDraw((pt, pw) => {\r\n if (pointsArr.length > 0) {\r\n pointsArr.forEach(pt => {\r\n const circle = new McDbCircle();\r\n circle.center = pt;\r\n circle.radius = radius;\r\n pw.drawMcDbEntity(circle)\r\n })\r\n };\r\n pw.drawCircle(new THREE.Vector3(pt.x, pt.y), radius)\r\n })\r\n const point = await getBreakPoint.go();\r\n if (!point) break;\r\n pointsArr.push(point);\r\n }\r\n\r\n // 打断曲线\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n if (pointsArr.length === 0) return;\r\n curve.splitCurves(pointsArr).forEach(obj => {\r\n mxcad.drawEntity(obj as McDbCurve)\r\n });\r\n curve.highlight(false);\r\n curveId.erase();\r\n mxcad.updateDisplay();\r\n}\r\n\r\nexport function init() {\r\n new McDbTestEnlarge().rxInit();\r\n MxFun.addCommand(\"Mx_Multicopy\", Mx_Multicopy);\r\n MxFun.addCommand(\"Mx_ArcToCircle\", Mx_ArcToCircle);\r\n MxFun.addCommand(\"Mx_CopyRotation\", Mx_CopyRotation);\r\n MxFun.addCommand(\"Mx_CricleTotoll\", Mx_CricleTotoll);\r\n MxFun.addCommand(\"Mx_ChangeColor\", Mx_ChangeColor);\r\n MxFun.addCommand(\"Mx_ArcToAngle\", Mx_ArcToAngle);\r\n MxFun.addCommand(\"Mx_TemHiding\", Mx_TemHiding);\r\n MxFun.addCommand(\"Mx_BoxDel\", Mx_BoxDel);\r\n MxFun.addCommand(\"Mx_AngleCopy\", Mx_AngleCopy);\r\n MxFun.addCommand(\"Mx_VertexRep\", Mx_VertexRep);\r\n MxFun.addCommand(\"Mx_IntersectBreak\", Mx_IntersectBreak);\r\n MxFun.addCommand(\"Mx_DoubleOff\", Mx_DoubleOff);\r\n MxFun.addCommand(\"Mx_Telescoping\", Mx_Telescoping);\r\n MxFun.addCommand(\"Mx_EitCircle\", Mx_EitCircle);\r\n MxFun.addCommand(\"Mx_LayerTypeScale\", Mx_LayerTypeScale);\r\n MxFun.addCommand(\"Mx_ArcOrder\", Mx_ArcOrder);\r\n MxFun.addCommand(\"Mx_PlRoundCorners\", Mx_PlRoundCorners);\r\n MxFun.addCommand(\"Mx_PlReverse\", Mx_PlReverse);\r\n MxFun.addCommand(\"Mx_TestGetAllLineByLayer\", Mx_TestGetAllLineByLayer);\r\n MxFun.addCommand(\"Mx_Bisection\", Mx_Bisection);\r\n MxFun.addCommand(\"Mx_RectangularScaling\", Mx_RectangularScaling);\r\n MxFun.addCommand(\"Mx_Enlarge\", Mx_Enlarge);\r\n MxFun.addCommand(\"Mx_Interrupt\", Mx_Interrupt);\r\n // MxFun.addCommand(\"Mx_FillRatio\", Mx_FillRatio);\r\n // MxFun.addCommand(\"Mx_InheritanceFill\", Mx_InheritanceFill);\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { MxFun } from \"mxdraw\";\r\nimport {\r\n MxCADUiPrInt, MxCADUiPrEntity, McDbLine, McDbText, McDbMText, McGeVector3d, MxCpp, MxCADResbuf, MxCADUtility,\r\n MxCADUiPrString, McDb, MxCADUiPrKeyWord, MxCADUiPrPoint, McGePoint3d, McDbPolyline, MxCADUiPrDist, McDbEntity,\r\n McGeMatrix3d, MxCADSelectionSet, McObjectId, McDbArc, DxfCode,\r\n McDbCurve,\r\n McDbCircle\r\n} from \"mxcad\";\r\nimport { useModalVisible } from '../Modal/hooks';\r\n\r\n// 按线对齐\r\nasync function Mx_AlignByLine() {\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"LINE\");\r\n const getLineObj = new MxCADUiPrEntity();\r\n getLineObj.setMessage(\"请选择目标对齐线对象(选择直线)\");\r\n getLineObj.setFilter(filter);\r\n const lineObj_id = await getLineObj.go();\r\n if (!lineObj_id.id) return;\r\n const lineObj = lineObj_id.getMcDbEntity() as McDbLine;\r\n const getTextObj = new MxCADUiPrEntity();\r\n\r\n let filter2 = new MxCADResbuf();\r\n filter2.AddMcDbEntityTypes(\"TEXT\");\r\n getTextObj.setMessage(\"请选择目标文字对象\");\r\n getTextObj.setFilter(filter2);\r\n const textObj_id = await getTextObj.go();\r\n if (!textObj_id.id) return;\r\n const textObj = textObj_id.getMcDbEntity() as McDbText;\r\n\r\n const line_v = lineObj.getFirstDeriv(lineObj.getStartPoint().val);// 直线初始点切向量\r\n let angle1 = line_v.val.angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);//直线与水平方向角度\r\n let angle2 = textObj.rotation;//文字初始角度\r\n textObj.rotate(textObj.position, angle1 - angle2)\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n mxcad.updateDisplay()\r\n}\r\n\r\n// 改字高\r\nasync function Mx_TextHeight() {\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT, MTEXT\");\r\n const aryIds = await MxCADUtility.userSelect(\"选择文字对象\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n const getHeight = new MxCADUiPrString();\r\n getHeight.setMessage(\"请设置字高\");\r\n const height = await getHeight.go();\r\n if (!height || !Number(height)) return;\r\n aryIds.forEach(id => {\r\n const text = id.getMcDbEntity() as McDbText;\r\n text.height = Number(height);\r\n })\r\n MxCpp.getCurrentMxCAD().updateDisplay()\r\n}\r\n\r\n// 改字宽\r\nasync function Mx_TextWidth() {\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT, MTEXT\");\r\n const aryIds = await MxCADUtility.userSelect(\"选择文字对象\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n const getWidth = new MxCADUiPrString();\r\n getWidth.setMessage(\"请设置字宽\");\r\n const width = await getWidth.go();\r\n if (!width || !Number(width)) return;\r\n aryIds.forEach(id => {\r\n const text = id.getMcDbEntity() as McDbText;\r\n text.widthFactor = Number(width);\r\n })\r\n MxCpp.getCurrentMxCAD().updateDisplay()\r\n}\r\n\r\n// 刷内容\r\nasync function Mx_BrushCon() {\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT\");\r\n const getCopyObj = new MxCADUiPrEntity();\r\n getCopyObj.setMessage(\"请选择源文字\");\r\n getCopyObj.setFilter(filter);\r\n const copyObj_id = await getCopyObj.go();\r\n if (!copyObj_id?.id) return;\r\n const copyObj = copyObj_id.getMcDbEntity() as McDbText;\r\n let aryId = await MxCADUtility.userSelect(\"请选择目标文字\", filter);\r\n if (aryId.length == 0) {\r\n return;\r\n }\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n aryId.forEach(id => {\r\n let event = id.getMcDbEntity();\r\n let event_clone = event.clone() as McDbText;\r\n event_clone.textString = copyObj.textString\r\n mxcad.drawEntity(event_clone);\r\n id.erase();\r\n })\r\n}\r\n\r\n// 换内容\r\nasync function Mx_ReplaceCon() {\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT\");\r\n const getFirstObj = new MxCADUiPrEntity();\r\n getFirstObj.setFilter(filter);\r\n getFirstObj.setMessage(\"请选择第一个文字\");\r\n const firstObj_id = await getFirstObj.go();\r\n if (!firstObj_id?.id) return;\r\n const firstObj = firstObj_id.getMcDbEntity() as McDbText;\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n const getSecondObj = new MxCADUiPrEntity();\r\n getSecondObj.setFilter(filter);\r\n getSecondObj.setMessage(\"请选择第二个文字\");\r\n const secondObj_id = await getSecondObj.go();\r\n if (!secondObj_id?.id) return;\r\n const secondObj = secondObj_id.getMcDbEntity() as McDbText;\r\n let str1 = firstObj.textString;\r\n let str2 = secondObj.textString;\r\n let event1 = firstObj.clone() as McDbText;\r\n let event2 = secondObj.clone() as McDbText;\r\n event1.textString = str2;\r\n event2.textString = str1;\r\n mxcad.drawEntity(event1)\r\n mxcad.drawEntity(event2)\r\n firstObj_id.erase();\r\n secondObj_id.erase();\r\n}\r\n\r\n// 左右对齐\r\nasync function Mx_AlignLeft() {\r\n // 选择对齐文字\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择需要对齐的文字\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n // 设置对齐选项\r\n const getKeyWord = new MxCADUiPrKeyWord();\r\n getKeyWord.setMessage(\"请选择对齐方式\");\r\n getKeyWord.setKeyWords(\"[左(L)/中(M)/右(R)]\");\r\n const keyWord = await getKeyWord.go();\r\n if (!keyWord) return;\r\n\r\n // 选择对齐基点\r\n const getBasePt = new MxCADUiPrPoint();\r\n getBasePt.setMessage(\"请选择对齐基点\");\r\n const basePt = await getBasePt.go();\r\n if (!basePt) return;\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n if (keyWord === 'L') {\r\n // 左对齐\r\n aryIds.forEach(id => {\r\n const text = id.getMcDbEntity() as McDbText;\r\n const text_clone = text.clone() as McDbText;\r\n const aPt = text.alignmentPoint;\r\n const pt = text.position;\r\n text_clone.horizontalMode = McDb.TextHorzMode.kTextLeft;\r\n text_clone.alignmentPoint = new McGePoint3d(basePt.x, aPt.y);\r\n text_clone.position = new McGePoint3d(basePt.x, pt.y);\r\n mxcad.drawEntity(text_clone);\r\n id.erase();\r\n })\r\n } else if (keyWord === 'R') {\r\n // 右对齐\r\n aryIds.forEach(id => {\r\n const text = id.getMcDbEntity() as McDbText;\r\n const text_clone = text.clone() as McDbText;\r\n const aPt = text.alignmentPoint;\r\n const pt = text.position;\r\n text_clone.horizontalMode = McDb.TextHorzMode.kTextRight;\r\n text_clone.alignmentPoint = new McGePoint3d(basePt.x, aPt.y);\r\n text_clone.position = new McGePoint3d(basePt.x, pt.y);\r\n mxcad.drawEntity(text_clone);\r\n id.erase();\r\n })\r\n } else if (keyWord === 'M') {\r\n // 居中对齐\r\n aryIds.forEach(id => {\r\n const text = id.getMcDbEntity() as McDbText;\r\n const text_clone = text.clone() as McDbText;\r\n const aPt = text.alignmentPoint;\r\n const pt = text.position;\r\n text_clone.horizontalMode = McDb.TextHorzMode.kTextCenter;\r\n text_clone.alignmentPoint = new McGePoint3d(basePt.x, aPt.y);\r\n text_clone.position = new McGePoint3d(basePt.x, pt.y);\r\n mxcad.drawEntity(text_clone);\r\n id.erase();\r\n })\r\n }\r\n}\r\n\r\n// 上下对齐\r\nasync function Mx_AlignUp() {\r\n // 选择对齐文字\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择需要对齐的文字\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n\r\n // 选择对齐基点\r\n const getBasePt = new MxCADUiPrPoint();\r\n getBasePt.setMessage(\"请选择对齐基点\");\r\n const basePt = await getBasePt.go();\r\n if (!basePt) return;\r\n\r\n aryIds.forEach(id => {\r\n const text = id.getMcDbEntity() as McDbText;\r\n const pt = text.position;\r\n text.alignmentPoint = text.position = new McGePoint3d(pt.x, basePt.y);\r\n });\r\n\r\n MxCpp.getCurrentMxCAD().updateDisplay();\r\n\r\n}\r\n\r\n// 文字反转\r\nasync function Mx_TextReversal() {\r\n // 选择需要反转的文字\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择需要反转的文字\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n aryIds.forEach(id => {\r\n const event = id.getMcDbEntity() as McDbText;\r\n const event_clone = event.clone() as McDbText;\r\n\r\n // 将文字中心点做旋转基点\r\n let bound = event.getBoundingBox();\r\n if (!bound.ret) return;\r\n const maxPt: McGePoint3d = bound.maxPt;\r\n const minPt: McGePoint3d = bound.minPt;\r\n const line = new McDbLine(minPt, maxPt);\r\n const midPt = line.getPointAtDist(line.getLength().val / 2).val;\r\n\r\n // 文字在自身旋转角度上再旋转180度\r\n const angle = McGeVector3d.kXAxis.angleTo1(new McGeVector3d(-1, 0, 0)) + event.rotation\r\n event_clone.rotate(midPt, angle);\r\n id.erase()\r\n mxcad.drawEntity(event_clone);\r\n })\r\n}\r\n\r\n// 去空格\r\nasync function Mx_TextTrim() {\r\n // 选择需要去空格的对象\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT, MTEXT\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择需要去空格的文字\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n\r\n // 去除文字空格\r\n aryIds.forEach(id => {\r\n const event = id.getMcDbEntity();\r\n let event_clone: McDbText | McDbMText;\r\n if (event instanceof McDbText) {\r\n event_clone = event.clone() as McDbText;\r\n event_clone.textString = event.textString.replace(/\\s+/g, '');\r\n } else if (event instanceof McDbMText) {\r\n event_clone = event.clone() as McDbMText;\r\n event_clone.contents = event.contents.replace(/\\s+/g, '');\r\n }\r\n id.erase()\r\n MxCpp.App.getCurrentMxCAD().drawEntity(event_clone);\r\n })\r\n}\r\n\r\n// 文字加框\r\nasync function Mx_TextTraming() {\r\n // 选择文字对象\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT, MTEXT\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择文字对象\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n\r\n aryIds.forEach(id => {\r\n const event = id.getMcDbEntity();\r\n // 获取文字的两个角点\r\n let bound = event.getBoundingBox();\r\n if (!bound.ret) return;\r\n const maxPt: McGePoint3d = bound.maxPt;\r\n const minPt: McGePoint3d = bound.minPt;\r\n // 获取其他两个角点\r\n const pt1 = new McGePoint3d(minPt.x, maxPt.y);\r\n const pt2 = new McGePoint3d(maxPt.x, minPt.y);\r\n // 为文字框设置内边距\r\n const vec1 = minPt.clone().sub(maxPt).normalize().mult(2);\r\n const vec2 = pt1.clone().sub(pt2).normalize().mult(2);\r\n // 绘制文字框\r\n const pl = new McDbPolyline();\r\n pl.addVertexAt(minPt.addvec(vec1));\r\n pl.addVertexAt(pt1.addvec(vec2));\r\n pl.addVertexAt(maxPt.subvec(vec1));\r\n pl.addVertexAt(pt2.subvec(vec2));\r\n pl.isClosed = true;\r\n MxCpp.getCurrentMxCAD().drawEntity(pl);\r\n })\r\n}\r\n\r\n// 下划线\r\nasync function Mx_Underline() {\r\n // 选择文字对象\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择文字对象\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n\r\n // 设置下划线宽度\r\n const getWidth = new MxCADUiPrInt();\r\n getWidth.setMessage(\"请输入下划线宽度\\n\");\r\n const width = await getWidth.go() || 0;\r\n\r\n // 设置下划线距离\r\n const getDist = new MxCADUiPrDist();\r\n getDist.setMessage(\"请设置下划线距离\\n\");\r\n const val = await getDist.go();\r\n let dist: number = 0;\r\n if (val) {\r\n dist = getDist.value();\r\n }\r\n\r\n // 设置下划线延长距离\r\n const getExDist = new MxCADUiPrDist();\r\n getExDist.setMessage(\"请设置下划线延长距离\\n\");\r\n const ex_val = await getExDist.go();\r\n let exDist: number = 0;\r\n if (ex_val) {\r\n exDist = getExDist.value();\r\n }\r\n\r\n aryIds.forEach(id => {\r\n const event = id.getMcDbEntity() as McDbText;\r\n // 获取文字的两个角点\r\n let bound = event.getBoundingBox();\r\n if (!bound.ret) return;\r\n const maxPt: McGePoint3d = bound.maxPt;\r\n const minPt: McGePoint3d = bound.minPt;\r\n\r\n // 延长下划线\r\n const line1 = new McDbLine(minPt.x, minPt.y, 0, maxPt.x, minPt.y, 0);\r\n const line2 = new McDbLine(maxPt.x, minPt.y, 0, minPt.x, minPt.y, 0);\r\n const length = line2.getLength().val;\r\n const pt1 = line1.getPointAtDist(length + exDist).val;\r\n const pt2 = line2.getPointAtDist(length + exDist).val;\r\n const pl = new McDbPolyline();\r\n pl.addVertexAt(pt1, 0, width, width);\r\n pl.addVertexAt(pt2, 0, width, width);\r\n\r\n // 平移\r\n const closePt = pl.getClosestPointTo(maxPt, true).val;\r\n // 转换向量长度\r\n const vex = closePt.clone().sub(maxPt);\r\n vex.normalize().mult(dist)\r\n const toPt = closePt.clone().addvec(vex);\r\n const matrix = new McGeMatrix3d();\r\n matrix.setToTranslation(toPt.sub(closePt));\r\n pl.transformBy(matrix)\r\n MxCpp.getCurrentMxCAD().drawEntity(pl)\r\n })\r\n\r\n}\r\n\r\n// 图名线\r\nasync function Mx_TitleLine() {\r\n // 选择文字对象\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择文字对象\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n\r\n aryIds.forEach(id => {\r\n const event = id.getMcDbEntity();\r\n // 获取文字的两个角点\r\n let bound = event.getBoundingBox();\r\n if (!bound.ret) return;\r\n const maxPt: McGePoint3d = bound.maxPt;\r\n const minPt: McGePoint3d = bound.minPt;\r\n // 利用多段线绘制图名线\r\n const pl1 = new McDbPolyline();\r\n pl1.addVertexAt(minPt, 0, 2, 2);\r\n pl1.addVertexAt(new McGePoint3d(maxPt.x, minPt.y), 0, 2, 2);\r\n const pl2 = new McDbPolyline();\r\n pl2.addVertexAt(minPt);\r\n pl2.addVertexAt(new McGePoint3d(maxPt.x, minPt.y));\r\n // 平移\r\n const closePt = pl1.getClosestPointTo(maxPt, true).val;\r\n // 转换向量长度\r\n const vex1 = closePt.clone().sub(maxPt);\r\n const vex2 = closePt.clone().sub(maxPt);\r\n vex1.normalize().mult(2)\r\n vex2.normalize().mult(4)\r\n const toPt1 = closePt.clone().addvec(vex1);\r\n const toPt2 = closePt.clone().addvec(vex2);\r\n const matrix1 = new McGeMatrix3d();\r\n const matrix2 = new McGeMatrix3d();\r\n matrix1.setToTranslation(toPt1.sub(closePt));\r\n pl1.transformBy(matrix1);\r\n matrix2.setToTranslation(toPt2.sub(closePt));\r\n pl2.transformBy(matrix2);\r\n MxCpp.getCurrentMxCAD().drawEntity(pl1);\r\n MxCpp.getCurrentMxCAD().drawEntity(pl2);\r\n })\r\n}\r\n\r\n// 大小写\r\nasync function Mx_Case() {\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择文字对象\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n // 设置关键词列表\r\n const getKey = new MxCADUiPrKeyWord;\r\n getKey.setMessage('请选择操作选项\\n');\r\n getKey.setKeyWords(\"[大写(C)/小写(S)/句首大写(I)]\");\r\n const key = await getKey.go();\r\n if (!key) return;\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n if (key === 'C') {\r\n aryIds.forEach(id => {\r\n const event = id.getMcDbEntity() as McDbText;\r\n const str = event.textString;\r\n const event_clone = event.clone() as McDbText;\r\n event_clone.textString = str.toUpperCase();\r\n console.log(event_clone.textString)\r\n event.erase();\r\n mxcad.drawEntity(event_clone)\r\n })\r\n } else if (key === 'S') {\r\n aryIds.forEach(id => {\r\n const event = id.getMcDbEntity() as McDbText;\r\n const str = event.textString;\r\n const event_clone = event.clone() as McDbText;\r\n event_clone.textString = str.toLowerCase();\r\n console.log(event_clone.textString)\r\n event.erase();\r\n mxcad.drawEntity(event_clone)\r\n })\r\n } else if (key === 'I') {\r\n aryIds.forEach(id => {\r\n const event = id.getMcDbEntity() as McDbText;\r\n const str = event.textString;\r\n const event_clone = event.clone() as McDbText;\r\n event_clone.textString = str.charAt(0).toUpperCase() + str.slice(1);\r\n event.erase();\r\n mxcad.drawEntity(event_clone)\r\n })\r\n }\r\n}\r\n\r\n// 数字求和\r\nasync function Mx_NumSum() {\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"TEXT\");\r\n let aryIds = await MxCADUtility.userSelect(\"请选择数字对象\", filter);\r\n if (aryIds.length == 0) {\r\n return;\r\n };\r\n let num_arr: number[] = []\r\n aryIds.forEach(id => {\r\n const text = id.getMcDbEntity() as McDbText;\r\n const num = Number(text.textString);\r\n if (isNaN(num)) return;\r\n num_arr.push(num);\r\n })\r\n\r\n if (num_arr.length !== aryIds.length) return;\r\n let sum = num_arr.reduce((acc, curr) => acc + curr, 0);\r\n\r\n const getPoint = new MxCADUiPrPoint();\r\n const text = new McDbText();\r\n text.textString = sum.toString();\r\n text.height = 10;\r\n getPoint.setMessage('请选择文字插入点\\n');\r\n getPoint.setUserDraw((pt, pw) => {\r\n text.position = pt;\r\n text.alignmentPoint = pt;\r\n pw.drawMcDbEntity(text);\r\n })\r\n const point = await getPoint.go();\r\n if (!point) return;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n text.position = point;\r\n text.alignmentPoint = point;\r\n mxcad.drawEntity(text);\r\n}\r\n\r\n// 选特定字\r\nasync function Mx_SSWords() {\r\n const filter = new MxCADResbuf();\r\n // 添加对象类型,选择集只选择文字类型的对象\r\n filter.AddMcDbEntityTypes(\"TEXT\")\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择要查找的范围:\", filter)) return;\r\n if (ss.count() == 0) return;\r\n // 设置查找模式\r\n const getKey = new MxCADUiPrKeyWord();\r\n getKey.setMessage('请选择查找模式\\n');\r\n getKey.setKeyWords(\"[等于(A)/包含(B)/前缀为(C)/后缀为(D)]\");\r\n const key = await getKey.go();\r\n if (!key) return;\r\n // 设置关键字\r\n const getStr = new MxCADUiPrString();\r\n getStr.setMessage('请输入关键字\\n');\r\n const string = await getStr.go();\r\n if (!string) return;\r\n\r\n // 选中对象\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n let objArr: McObjectId[] = [];\r\n ss.forEach((id: McObjectId) => {\r\n const obj = id.getMcDbEntity() as McDbText;\r\n const str = obj.textString;\r\n if (key === 'A') {\r\n if (str === string) {\r\n objArr.push(id);\r\n }\r\n } else if (key === 'B') {\r\n if (str.includes(string)) {\r\n objArr.push(id);\r\n }\r\n } else if (key === 'C') {\r\n if (str.startsWith(string)) {\r\n objArr.push(id);\r\n }\r\n } else if (key === 'D') {\r\n if (str.endsWith(string)) {\r\n objArr.push(id);\r\n }\r\n }\r\n });\r\n if (objArr.length > 0) {\r\n objArr.forEach(id => {\r\n mxcad.addCurrentSelect(id)\r\n })\r\n }\r\n}\r\n\r\n// 前后缀\r\nasync function Mx_Prefix() {\r\n const filter = new MxCADResbuf();\r\n // 添加对象类型,选择集只选择文字类型的对象\r\n filter.AddMcDbEntityTypes(\"TEXT\")\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择要操作的范围:\", filter)) return;\r\n if (ss.count() == 0) return;\r\n // 设置操作方式\r\n const getPrefType = new MxCADUiPrKeyWord();\r\n getPrefType.setMessage(\"选择操作方式\");\r\n getPrefType.setKeyWords(\"[添加(A)/删除(D)]\");\r\n let type = await getPrefType.go();\r\n if (!type) return;\r\n\r\n // 设置模式\r\n const getPrefModel = new MxCADUiPrKeyWord();\r\n getPrefModel.setMessage(\"选择操作位置\");\r\n getPrefModel.setKeyWords(\"[前缀(P)/后缀(S)]\");\r\n let model = await getPrefModel.go();\r\n if (!model) return;\r\n\r\n // 设置内容\r\n const getPrefixStr = new MxCADUiPrString();\r\n getPrefixStr.setMessage(\"请输入内容\");\r\n const string = await getPrefixStr.go();\r\n if (!string) return;\r\n\r\n // 开始操作\r\n ss.forEach(id => {\r\n const obj = id.getMcDbEntity() as McDbText;\r\n const str = obj.textString;\r\n if (type === 'A') {\r\n // 添加\r\n if (model === 'P') {\r\n // 前缀\r\n obj.textString = string + str;\r\n } else if (model === 'S') {\r\n // 后缀\r\n obj.textString = str + string;\r\n }\r\n } else if (type === 'D') {\r\n // 删除\r\n if (model === 'P') {\r\n // 前缀\r\n if (str.startsWith(string)) {\r\n obj.textString = str.slice(string.length)\r\n }\r\n } else if (model === 'S') {\r\n // 后缀\r\n if (str.endsWith(string)) {\r\n obj.textString = str.slice(0, -string.length);\r\n }\r\n }\r\n }\r\n });\r\n}\r\n\r\n// 连接文字\r\nasync function Mx_ConnectText() {\r\n const filter = new MxCADResbuf();\r\n // 添加对象类型,选择集只选择文字类型的对象\r\n filter.AddMcDbEntityTypes('TEXT');\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n while (true) {\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage('请选择文本\\n');\r\n const point = await getPoint.go();\r\n if (!point) break;\r\n let objId = MxCADUtility.findEntAtPoint(point.x, point.y, point.z, -1, filter);\r\n mxcad.addCurrentSelect(objId);\r\n }\r\n\r\n const objIds = MxCADUtility.getCurrentSelect();\r\n if (!objIds.length) return;\r\n let str: string = '';\r\n objIds.forEach((objId: McObjectId, index: number) => {\r\n const text = objId.getMcDbEntity() as McDbText;\r\n str += text.textString;\r\n if (index !== 0) {\r\n objId.erase()\r\n }\r\n })\r\n const event = objIds.at(0).getMcDbEntity() as McDbText;\r\n event.textString = str;\r\n // 清除选择\r\n mxcad.mxdraw.clearMxCurrentSelect()\r\n}\r\n\r\n// 文字竖向\r\nasync function Mx_VerticalText() {\r\n const filter = new MxCADResbuf();\r\n // 添加对象类型,选择集只选择文字类型的对象\r\n filter.AddMcDbEntityTypes('TEXT');\r\n const getEvent = new MxCADUiPrEntity();\r\n getEvent.setMessage('请选择文本\\n');\r\n const ent_id = await getEvent.go();\r\n if (!ent_id) return;\r\n\r\n const text = ent_id.getMcDbEntity() as McDbText;\r\n const str = text.textString.split('').join('\\\\P');\r\n\r\n const mText = new McDbMText();\r\n mText.contents = str;\r\n mText.textHeight = text.height;\r\n mText.location = text.position;\r\n mText.trueColor = text.trueColor;\r\n mText.colorIndex = text.colorIndex;\r\n mText.layerId = text.layerId;\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n ent_id.erase();\r\n mxcad.drawEntity(mText);\r\n\r\n}\r\n\r\n// 按弧对齐\r\nasync function Mx_AlignByArc() {\r\n // 获取目标文本\r\n const filter = new MxCADResbuf();\r\n // 添加对象类型,选择集只选择文字类型的对象\r\n filter.AddMcDbEntityTypes('TEXT');\r\n const getText = new MxCADUiPrEntity();\r\n getText.setFilter(filter);\r\n getText.setMessage('请选择文本\\n');\r\n const ent_id = await getText.go();\r\n if (!ent_id.id) return;\r\n const text = ent_id.getMcDbEntity() as McDbText;\r\n text.highlight(true);\r\n\r\n\r\n // 获取参考圆弧\r\n const filter2 = new MxCADResbuf();\r\n filter2.AddMcDbEntityTypes('ARC');\r\n const getArc = new MxCADUiPrEntity();\r\n getArc.setFilter(filter2);\r\n getArc.setMessage('请选择圆弧\\n');\r\n const arc_id = await getArc.go();\r\n if (!arc_id.id) return;\r\n const arc = arc_id.getMcDbEntity() as McDbArc;\r\n arc.highlight(true);\r\n\r\n // 切割文字,并在圆弧上取点\r\n const textArr: string[] = text.textString.split('');\r\n textArr.reverse();\r\n const dist: number = arc.getLength().val / (textArr.length - 1);\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n for (let i = 0; i < textArr.length; i++) {\r\n const point = arc.getPointAtDist(dist * i).val;\r\n const t = new McDbText();\r\n t.textString = textArr[i];\r\n t.position = t.alignmentPoint = point;\r\n t.horizontalMode = McDb.TextHorzMode.kTextMid;\r\n t.trueColor = text.trueColor;\r\n t.colorIndex = text.colorIndex;\r\n t.height = text.height;\r\n t.widthFactor = text.widthFactor;\r\n t.rotation = text.rotation;\r\n mxcad.drawEntity(t)\r\n };\r\n text.highlight(false);\r\n arc.highlight(false);\r\n}\r\n\r\n// 修改全局文字样式\r\nasync function Mx_EditTextStyle() {\r\n // 获取全局文字样式表\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const textSyleTable = mxcad.getDatabase().getTextStyleTable();\r\n //获取文字样式表记录的文字样式名\r\n const recIds = textSyleTable.getAllRecordId();\r\n let name: string = \"\";\r\n let list: McObjectId[] = [];\r\n recIds.forEach((id, index) => {\r\n const rec = id.getMcDbTextStyleTableRecord()\r\n name += `${rec.name}(${index})/`;\r\n list.push(id)\r\n })\r\n // 设置文字样式\r\n const getKey = new MxCADUiPrKeyWord;\r\n getKey.setMessage(`请选择文字样式:`)\r\n getKey.setKeyWords(`[${name}]`)\r\n const keyVal = await getKey.go();\r\n\r\n // 修改全局文字的文字样式\r\n const ss = new MxCADSelectionSet();\r\n //选择所有图形元素\r\n ss.allSelect(new MxCADResbuf([DxfCode.kEntityType, \"TEXT, MTEXT\"]));\r\n ss.forEach((id) => {\r\n let ent = id.getMcDbEntity();\r\n ent.textStyleId = list[Number(keyVal)];\r\n });\r\n MxCpp.getCurrentMxCAD().updateDisplay();\r\n}\r\n\r\n// 提取文字\r\nasync function Mx_ExtractText() {\r\n const filter = new MxCADResbuf([DxfCode.kEntityType, \"MTEXT,TEXT\"]);\r\n const ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"请设置文字提取范围\", filter)) return;\r\n if (ss.count() == 0) return;\r\n\r\n let content: string = '';\r\n ss.forEach(id => {\r\n const ent = id.getMcDbEntity();\r\n const objName = ent.objectName;\r\n if (objName === 'McDbText') {\r\n const _clone = ent.clone() as McDbText;\r\n content += `${_clone.textString}\\n`;\r\n } else if (objName === 'McDbMText') {\r\n const _clone = ent.clone() as McDbMText;\r\n content += _clone.contents.replace('\\\\P', `\\n`);\r\n }\r\n });\r\n const { isDialogVisible, excelText } = useModalVisible();\r\n isDialogVisible.value = true;\r\n excelText.value = content;\r\n}\r\n\r\nexport function init() {\r\n MxFun.addCommand(\"Mx_AlignByLine\", Mx_AlignByLine);\r\n MxFun.addCommand(\"Mx_TextHeight\", Mx_TextHeight);\r\n MxFun.addCommand(\"Mx_TextWidth\", Mx_TextWidth);\r\n MxFun.addCommand(\"Mx_BrushCon\", Mx_BrushCon);\r\n MxFun.addCommand(\"Mx_ReplaceCon\", Mx_ReplaceCon);\r\n MxFun.addCommand(\"Mx_AlignLeft\", Mx_AlignLeft);\r\n MxFun.addCommand(\"Mx_AlignUp\", Mx_AlignUp);\r\n MxFun.addCommand(\"Mx_TextReversal\", Mx_TextReversal);\r\n MxFun.addCommand(\"Mx_TextTrim\", Mx_TextTrim);\r\n MxFun.addCommand(\"Mx_TextTraming\", Mx_TextTraming);\r\n MxFun.addCommand(\"Mx_Underline\", Mx_Underline);\r\n MxFun.addCommand(\"Mx_TitleLine\", Mx_TitleLine);\r\n MxFun.addCommand(\"Mx_Case\", Mx_Case);\r\n MxFun.addCommand(\"Mx_NumSum\", Mx_NumSum);\r\n MxFun.addCommand(\"Mx_SSWords\", Mx_SSWords);\r\n MxFun.addCommand(\"Mx_Prefix\", Mx_Prefix);\r\n MxFun.addCommand(\"Mx_ConnectText\", Mx_ConnectText);\r\n MxFun.addCommand(\"Mx_VerticalText\", Mx_VerticalText);\r\n MxFun.addCommand(\"Mx_AlignByArc\", Mx_AlignByArc);\r\n MxFun.addCommand(\"Mx_EditTextStyle\", Mx_EditTextStyle);\r\n MxFun.addCommand(\"Mx_ExtractText\", Mx_ExtractText);\r\n}","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { MxFun, DetailedResult } from \"mxdraw\";\r\nimport {\r\n MxCADUiPrInt, MxCADUiPrEntity, McDbLine, McGeVector3d, MxCpp, MxCADResbuf, MxCADUiPrString,\r\n MxCADUiPrKeyWord, MxCADUiPrPoint, McDbPolyline, MxCADUiPrDist, McGeMatrix3d,\r\n MxCADSelectionSet, McDbBlockReference, McDbBlockTableRecord, McCmColor, ColorIndexType,\r\n} from \"mxcad\";\r\nimport { MxDrawTable } from \"../drawTable\";\r\n\r\n// 改块名\r\nasync function Mx_ChangeBN() {\r\n // 选择目标块\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n const getBlockObj = new MxCADUiPrEntity();\r\n getBlockObj.setMessage(\"请选择目标块对象\");\r\n getBlockObj.setFilter(filter);\r\n const blockObj_id = await getBlockObj.go();\r\n if (!blockObj_id.id) return;\r\n\r\n // 修改块名\r\n const getBlockName = new MxCADUiPrString();\r\n getBlockName.setMessage(\"请输入新块名\");\r\n const blockName = await getBlockName.go();\r\n if (!blockName) return;\r\n\r\n const blkRec = (blockObj_id.getMcDbEntity() as McDbBlockReference).blockTableRecordId.getMcDbBlockTableRecord();\r\n console.log('原块名', blkRec.name);\r\n blkRec.name = blockName;\r\n console.log('新块名', blkRec.name);\r\n}\r\n\r\n// 改块基点\r\nasync function Mx_BlkPt() {\r\n // 选择目标块\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n const getBlockEvent = new MxCADUiPrEntity()\r\n getBlockEvent.setMessage('选择需要修改基点的块');\r\n getBlockEvent.setFilter(filter);\r\n const block_id = await getBlockEvent.go();\r\n if (!block_id.id) return;\r\n // 块实体\r\n const blkRef = block_id.getMcDbEntity() as McDbBlockReference;\r\n // 获取基点\r\n const getPoint = new MxCADUiPrPoint();\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n getPoint.setMessage('设置基点');\r\n const pt = await getPoint.go();\r\n if (!pt) return;\r\n // 图形记录对象\r\n let blkTableRecord: McDbBlockTableRecord = blkRef.blockTableRecordId.getMcDbBlockTableRecord() as McDbBlockTableRecord;\r\n\r\n let ptOrigin = blkTableRecord.origin.clone();\r\n\r\n let mat = blkRef.blockTransform;\r\n ptOrigin.transformBy(mat);\r\n\r\n const vec = pt.sub(ptOrigin);\r\n mat.invert();\r\n pt.transformBy(mat);\r\n\r\n blkTableRecord.origin = pt;\r\n blkRef.position = blkRef.position.addvec(vec);\r\n mxcad.updateDisplay()\r\n}\r\n\r\nfunction Mx_ModyfBlockRecordEntityColor(blkRec: McDbBlockTableRecord) {\r\n blkRec.getAllEntityId().forEach(id => {\r\n let ent = id.getMcDbEntity();\r\n ent.colorIndex = ColorIndexType.kByblock;\r\n if (ent instanceof McDbBlockReference) {\r\n let blkref = ent as McDbBlockReference;\r\n Mx_ModyfBlockRecordEntityColor(blkref.blockTableRecordId.getMcDbBlockTableRecord());\r\n }\r\n })\r\n}\r\n\r\n// 改块颜色\r\nasync function Mx_BlkColor() {\r\n // 选择目标块\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n const getBlockEvent = new MxCADUiPrEntity()\r\n getBlockEvent.setMessage('选择需要修改颜色的块');\r\n getBlockEvent.setFilter(filter);\r\n const block_id = await getBlockEvent.go();\r\n if (!block_id.id) return;\r\n // 块实体\r\n const blkRef = block_id.getMcDbEntity() as McDbBlockReference;\r\n let blkRec = blkRef.blockTableRecordId.getMcDbBlockTableRecord();\r\n Mx_ModyfBlockRecordEntityColor(blkRec);\r\n\r\n // 设置块颜色\r\n const getColor = new MxCADUiPrInt();\r\n getColor.setMessage('输入颜色索引(0~256)');\r\n let colorNum = await getColor.go() || 0;\r\n let color = new McCmColor();\r\n color.setColorIndex(colorNum);\r\n blkRef.trueColor = color;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n mxcad.updateDisplay()\r\n}\r\n\r\n// 刷块\r\nasync function Mx_BushBlk() {\r\n // 选择目标块\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n const getBlockEvent = new MxCADUiPrEntity()\r\n getBlockEvent.setMessage('请选择源块');\r\n getBlockEvent.setFilter(filter);\r\n const block_id = await getBlockEvent.go();\r\n if (!block_id.id) return;\r\n // 块实体\r\n const blkRef = block_id.getMcDbEntity() as McDbBlockReference;\r\n\r\n // 选择要刷的块\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择要刷的目标块:\", filter)) return;\r\n if (ss.count() == 0) return;\r\n\r\n ss.forEach(id => {\r\n const event = id.getMcDbEntity() as McDbBlockReference;\r\n const clone = blkRef.clone() as McDbBlockReference;\r\n clone.position = event.position;\r\n id.erase();\r\n MxCpp.getCurrentMxCAD().drawEntity(clone);\r\n })\r\n}\r\n\r\n// 块连线\r\nasync function Mx_ConBlk() {\r\n // 选择连接方式\r\n const getType = new MxCADUiPrKeyWord();\r\n getType.setMessage('选择连接方式');\r\n getType.setKeyWords('[手动逐个连线(H)/自动批量连线(A)]')\r\n const type = await getType.go();\r\n if (!type) return;\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n if (type === 'A') {\r\n // 选择要连接的块\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择要刷的目标块:\", filter)) return;\r\n if (ss.count() == 0) return;\r\n const pl = new McDbPolyline();\r\n ss.forEach(id => {\r\n const blkRef = id.getMcDbEntity() as McDbBlockReference;\r\n pl.addVertexAt(blkRef.position)\r\n });\r\n mxcad.drawEntity(pl)\r\n } else if (type === 'H') {\r\n const pl = new McDbPolyline();\r\n // 手动逐个连线\r\n while (true) {\r\n const getBlockEvent = new MxCADUiPrEntity()\r\n getBlockEvent.setMessage('请选择连线的块');\r\n getBlockEvent.setFilter(filter);\r\n getBlockEvent.setUserDraw((pt, pw) => {\r\n const _clone = pl.clone() as McDbPolyline;\r\n _clone.addVertexAt(pt);\r\n pw.drawMcDbEntity(_clone)\r\n })\r\n const block_id = await getBlockEvent.go();\r\n if (!block_id.id) break;\r\n const blkRef = block_id.getMcDbEntity() as McDbBlockReference;\r\n pl.addVertexAt(blkRef.position);\r\n }\r\n mxcad.drawEntity(pl);\r\n }\r\n\r\n\r\n}\r\n\r\n// 块中心线\r\nasync function Mx_BlkCenterLine() {\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n // 选择目标块\r\n const getBlockEvent = new MxCADUiPrEntity()\r\n getBlockEvent.setMessage('请选择连线的块');\r\n getBlockEvent.setFilter(filter);\r\n const block_id = await getBlockEvent.go();\r\n if (!block_id.id) return;\r\n // 块实体\r\n const blkRef = block_id.getMcDbEntity() as McDbBlockReference;\r\n let blkBox = blkRef.getBoundingBox();\r\n const pl = new McDbPolyline();\r\n pl.addVertexAt(blkBox.minPt);\r\n pl.addVertexAt(blkBox.maxPt);\r\n // 块中心点\r\n const midPt = pl.getPointAtDist(pl.getLength().val / 2).val;\r\n\r\n // 设置中心线长度\r\n const getDist = new MxCADUiPrDist();\r\n getDist.setMessage('设置中心线长度');\r\n getDist.setBasePt(midPt);\r\n getDist.setUserDraw((pt, pw) => {\r\n const dist = pt.distanceTo(midPt);\r\n let line1 = new McDbLine(midPt.x + dist, midPt.y, midPt.z, midPt.x - dist, midPt.y, midPt.z);\r\n let line1_clone = line1.clone() as McDbLine;\r\n line1_clone.rotate(midPt, Math.PI / 2);\r\n pw.drawMcDbEntity(line1_clone);\r\n pw.drawMcDbEntity(line1);\r\n })\r\n const val = await getDist.go();\r\n let dist: number = 10;\r\n if (val) {\r\n dist = getDist.value();\r\n }\r\n const mxcad = MxCpp.App.getCurrentMxCAD()\r\n let line1 = new McDbLine(midPt.x + dist, midPt.y, midPt.z, midPt.x - dist, midPt.y, midPt.z,);\r\n line1.trueColor = new McCmColor(255, 0, 0);\r\n let line1_clone = line1.clone() as McDbLine;\r\n line1_clone.rotate(midPt, Math.PI / 2);\r\n mxcad.drawEntity(line1_clone);\r\n mxcad.drawEntity(line1);\r\n}\r\n\r\n// 多块旋转\r\nasync function Mx_BlkRotate() {\r\n // 选择目标块\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择要旋转的目标块:\", filter)) return;\r\n if (ss.count() == 0) return;\r\n\r\n const baseEnt = ss.item(0).getMcDbEntity() as McDbBlockReference\r\n // 设置旋转角度\r\n const getAngle = new MxCADUiPrDist();\r\n getAngle.setMessage('设置旋转角度');\r\n getAngle.setBasePt(baseEnt.position);\r\n let angle: number = 0;\r\n getAngle.setUserDraw((pt, pw) => {\r\n angle = pt.sub(baseEnt.position).angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);\r\n ss.forEach(id => {\r\n const blkRef = id.getMcDbEntity();\r\n const _clone = blkRef.clone() as McDbBlockReference;\r\n _clone.rotate(_clone.position, angle);\r\n pw.drawMcDbEntity(_clone)\r\n })\r\n })\r\n const val = await getAngle.go();\r\n if (!val) return;\r\n if (getAngle.getDetailedResult() === DetailedResult.kCoordIn) {\r\n angle = val * Math.PI / 180\r\n }\r\n // 旋转块\r\n ss.forEach(id => {\r\n const blkRef = id.getMcDbEntity() as McDbBlockReference;\r\n blkRef.rotate(blkRef.position, angle);\r\n })\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n mxcad.updateDisplay()\r\n}\r\n\r\n// 多块缩放\r\nasync function Mx_BlkScale() {\r\n // 选择目标块\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择要旋转的目标块:\", filter)) return;\r\n if (ss.count() == 0) return;\r\n\r\n // 设置缩放比例\r\n const getScale = new MxCADUiPrDist();\r\n getScale.setMessage('请设置缩放比例');\r\n let baseEvn = ss.item(0).getMcDbEntity() as McDbBlockReference;\r\n getScale.setBasePt(baseEvn.position);\r\n getScale.setUserDraw((pt, pw) => {\r\n const scale = pt.distanceTo(baseEvn.position);\r\n ss.forEach(id => {\r\n const blkRef = id.getMcDbEntity();\r\n const _clone = blkRef.clone() as McDbBlockReference;\r\n let mat = new McGeMatrix3d();\r\n mat.setToScaling(scale, _clone.position);\r\n _clone.transformBy(mat);\r\n pw.drawMcDbEntity(_clone);\r\n })\r\n })\r\n const val = await getScale.go();\r\n if (!val) return;\r\n const scale = getScale.value() || 1;\r\n\r\n // 缩放块\r\n ss.forEach(id => {\r\n const blkRef = id.getMcDbEntity() as McDbBlockReference;\r\n let mat = new McGeMatrix3d();\r\n mat.setToScaling(scale, blkRef.position);\r\n blkRef.transformBy(mat);\r\n })\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n mxcad.updateDisplay()\r\n}\r\n\r\n// 刷块角度\r\nasync function Mx_BlkAngle() {\r\n // 选择目标块\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n const getBlockEvent = new MxCADUiPrEntity()\r\n getBlockEvent.setMessage('请选择源块');\r\n getBlockEvent.setFilter(filter);\r\n const block_id = await getBlockEvent.go();\r\n if (!block_id.id) return;\r\n // 块实体\r\n const blkRef = block_id.getMcDbEntity() as McDbBlockReference;\r\n const angle = blkRef.rotation;\r\n\r\n // 选择要刷的块\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"选择要刷的目标块:\", filter)) return;\r\n if (ss.count() == 0) return;\r\n\r\n ss.forEach(id => {\r\n const ent = id.getMcDbEntity() as McDbBlockReference;\r\n ent.rotation = angle;\r\n });\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n mxcad.updateDisplay();\r\n}\r\n\r\n// 按块选择\r\nasync function Mx_BlkSelect() {\r\n // 选择目标块\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n const getBlockEvent = new MxCADUiPrEntity()\r\n getBlockEvent.setMessage('请选择源块');\r\n getBlockEvent.setFilter(filter);\r\n const block_id = await getBlockEvent.go();\r\n if (!block_id.id) return;\r\n // 块实体\r\n const blkRef = block_id.getMcDbEntity() as McDbBlockReference;\r\n const blkName = blkRef.blockName;\r\n\r\n // 选择范围\r\n let ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"请设置选择范围:\", filter)) return;\r\n if (ss.count() == 0) return;\r\n\r\n ss.forEach(id => {\r\n const ent = id.getMcDbEntity() as McDbBlockReference;\r\n const entName = ent.blockName;\r\n if (entName == blkName) {\r\n MxCpp.getCurrentMxCAD().addCurrentSelect(id)\r\n }\r\n })\r\n}\r\n\r\n// 按块全选\r\nasync function Mx_BlkAllSelect() {\r\n // 选择目标块\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n const getBlockEvent = new MxCADUiPrEntity()\r\n getBlockEvent.setMessage('请选择目标块');\r\n getBlockEvent.setFilter(filter);\r\n const block_id = await getBlockEvent.go();\r\n if (!block_id.id) return;\r\n // 块实体\r\n const blkRef = block_id.getMcDbEntity() as McDbBlockReference;\r\n const blkName = blkRef.blockName;\r\n\r\n // 全局选择目标块\r\n let ss = new MxCADSelectionSet();\r\n ss.allSelect(filter);\r\n if (ss.count() == 0) return;\r\n ss.forEach(id => {\r\n const ent = id.getMcDbEntity() as McDbBlockReference;\r\n const entName = ent.blockName;\r\n if (entName == blkName) {\r\n MxCpp.getCurrentMxCAD().addCurrentSelect(id)\r\n }\r\n })\r\n}\r\n\r\n// 统计单块\r\nasync function Mx_SSBlk() {\r\n // 设置过滤器\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n\r\n const getEntity = new MxCADUiPrEntity();\r\n getEntity.setMessage('请选择目标块');\r\n getEntity.setFilter(filter);\r\n const blk_id = await getEntity.go();\r\n if (!blk_id.id) return;\r\n const blkRef = blk_id.getMcDbEntity() as McDbBlockReference;\r\n const blkName = blkRef.blockName;\r\n // 设置统计范围\r\n const ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"请设置统计范围\", filter)) return;\r\n if (ss.count() == 0) return;\r\n\r\n let num: number = 0;\r\n ss.forEach(id => {\r\n const ent = id.getMcDbEntity() as McDbBlockReference;\r\n const entName = ent.blockName;\r\n if (entName == blkName) {\r\n num += 1;\r\n }\r\n })\r\n\r\n console.log(`找到块${blkName}:共${num}个`)\r\n}\r\n\r\n// 统计多块\r\nasync function Mx_SMBlk() {\r\n // 设置过滤器\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n // 设置统计范围\r\n const ss = new MxCADSelectionSet();\r\n if (!await ss.userSelect(\"请设置统计范围\", filter)) return;\r\n if (ss.count() == 0) return;\r\n\r\n let blkName_arr = [];\r\n ss.forEach(id => {\r\n const ent = id.getMcDbEntity() as McDbBlockReference;\r\n const blkName = ent.blockName;\r\n blkName_arr.push(blkName);\r\n });\r\n let sticBlkArr = [];\r\n Array.from(new Set(blkName_arr)).forEach(name => {\r\n const num = blkName_arr.filter(blkName => blkName === name).length;\r\n sticBlkArr.push({ blkName: name, num })\r\n })\r\n let draw = new MxDrawTable();\r\n draw.data.addColumn(\"名称\", 100);\r\n draw.data.addColumn(\"数量\", 30);\r\n sticBlkArr.forEach(item => {\r\n draw.data.addRow([item.blkName, item.num])\r\n })\r\n\r\n let getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"\\n指定表格插入点:\");\r\n let pt = await getPoint.go();\r\n if (!pt) return;\r\n\r\n let lScale = MxFun.screenCoordLong2Doc(100) / 200;\r\n draw.draw(pt, lScale);\r\n}\r\n\r\n// 修改块图层\r\nasync function Mx_BlkLayer() {\r\n // 设置过滤器\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n\r\n const getEntity = new MxCADUiPrEntity();\r\n getEntity.setMessage(\"请选择目标块\");\r\n getEntity.setFilter(filter);\r\n const blk_id = await getEntity.go();\r\n if (!blk_id.id) return;\r\n const blkRef = blk_id.getMcDbEntity() as McDbBlockReference;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n\r\n const layerId = mxcad.addLayer(\"测试图层\")\r\n blkRef.layerId = layerId;\r\n console.log(blkRef.layer);\r\n mxcad.updateDisplay();\r\n}\r\nexport function init() {\r\n MxFun.addCommand(\"Mx_ChangeBN\", Mx_ChangeBN);\r\n MxFun.addCommand(\"Mx_BushBlk\", Mx_BushBlk);\r\n MxFun.addCommand(\"Mx_ConBlk\", Mx_ConBlk);\r\n MxFun.addCommand(\"Mx_BlkCenterLine\", Mx_BlkCenterLine);\r\n MxFun.addCommand(\"Mx_BlkPt\", Mx_BlkPt);\r\n MxFun.addCommand(\"Mx_BlkColor\", Mx_BlkColor);\r\n MxFun.addCommand(\"Mx_BlkRotate\", Mx_BlkRotate);\r\n MxFun.addCommand(\"Mx_BlkScale\", Mx_BlkScale);\r\n MxFun.addCommand(\"Mx_BlkAngle\", Mx_BlkAngle);\r\n MxFun.addCommand(\"Mx_BlkSelect\", Mx_BlkSelect);\r\n MxFun.addCommand(\"Mx_BlkAllSelect\", Mx_BlkAllSelect);\r\n MxFun.addCommand(\"Mx_SSBlk\", Mx_SSBlk);\r\n MxFun.addCommand(\"Mx_SMBlk\", Mx_SMBlk);\r\n MxFun.addCommand(\"Mx_BlkLayer\", Mx_BlkLayer);\r\n}","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { MxFun } from \"mxdraw\";\r\nimport {\r\n MxCADUiPrEntity, MxCpp, MxCADResbuf, MxCADUiPrPoint, McDb,\r\n McDbText, McDbCurve, McGePoint3d, MxCADUtility, McDbLine, McDbMText,\r\n McDbPolyline, MxCADUiPrDist, McDbBlockReference, McDbBlockTableRecord,\r\n MxCADUiPrString,\r\n IMcDbDwgFiler,\r\n McDbCustomEntity,\r\n McGePoint3dArray,\r\n MxCADWorldDraw,\r\n DxfCode,\r\n McObjectId,\r\n McDbArc,\r\n McCmColor,\r\n McDbCircle,\r\n McGeVector3d,\r\n McDb2LineAngularDimension,\r\n} from \"mxcad\";\r\n\r\n// 统计长度\r\nasync function Mx_StaLength() {\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n const strLen = new McDbText();\r\n strLen.height = 10;\r\n let pt = new McGePoint3d();\r\n\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"CIRCLE,ARC,LINE,LWPOLYLINE,ELLIPSE\");\r\n let aryId = await MxCADUtility.userSelect(\"选择目标曲线\", filter);\r\n if (aryId.length == 0) {\r\n return;\r\n }\r\n let length = 0;\r\n aryId.forEach(async (id) => {\r\n let event = id.getMcDbEntity() as McDbCurve;\r\n length += event.getLength().val\r\n });\r\n strLen.textString = length.toFixed(2).toString();\r\n const getSumPoint = new MxCADUiPrPoint();\r\n getSumPoint.setMessage('指定长度标注点');\r\n getSumPoint.setUserDraw((pt, pw) => {\r\n strLen.position = pt;\r\n strLen.alignmentPoint = pt;\r\n pw.drawMcDbEntity(strLen);\r\n })\r\n pt = await getSumPoint.go();\r\n if (!pt) return;\r\n strLen.alignmentPoint = pt;\r\n strLen.position = pt;\r\n mxcad.drawEntity(strLen)\r\n}\r\n\r\n// 统计面积\r\nasync function Mx_StaArea() {\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n const strLen = new McDbText();\r\n strLen.height = 10;\r\n let pt = new McGePoint3d();\r\n\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"CIRCLE,LWPOLYLINE,ELLIPSE\");\r\n let aryId = await MxCADUtility.userSelect(\"选择目标对象\", filter);\r\n if (aryId.length == 0) {\r\n return;\r\n }\r\n let area = 0;\r\n aryId.forEach(async (id) => {\r\n let event = id.getMcDbEntity() as McDbCurve;\r\n area += event.getArea().val\r\n });\r\n strLen.textString = area.toFixed(2).toString();\r\n const getSumPoint = new MxCADUiPrPoint();\r\n getSumPoint.setMessage('指定长度标注点');\r\n getSumPoint.setUserDraw((pt, pw) => {\r\n strLen.position = pt;\r\n strLen.alignmentPoint = pt;\r\n pw.drawMcDbEntity(strLen);\r\n })\r\n pt = await getSumPoint.go();\r\n if (!pt) return;\r\n strLen.alignmentPoint = pt;\r\n strLen.position = pt;\r\n mxcad.drawEntity(strLen)\r\n}\r\n\r\n// 标斜率\r\nasync function Mx_StandardSlope() {\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"LINE\");\r\n\r\n const getLine = new MxCADUiPrEntity();\r\n getLine.setFilter(filter);\r\n getLine.setMessage(\"请选择目标斜率对象\");\r\n const line_id = await getLine.go();\r\n if (!line_id.id) return;\r\n const line = line_id.getMcDbEntity() as McDbLine;\r\n\r\n const getHeight = new MxCADUiPrDist();\r\n getHeight.setMessage(\"请设置标注文字高度\");\r\n const val = await getHeight.go();\r\n if (!val) return;\r\n const height = getHeight.value();\r\n\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage('指定斜率标注点');\r\n let blkRef = new McDbBlockReference();\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n getPoint.setUserDraw((pt, pw) => {\r\n const pt1 = line.getClosestPointTo(pt, true).val;\r\n const pt2 = new McGePoint3d(pt1.x, pt1.y + height * 4);\r\n const l = new McDbLine(pt1, pt2);\r\n const l_clone = l.clone() as McDbLine;\r\n l_clone.rotate(pt2, Math.PI * 1 / 2);\r\n const pt3 = line.IntersectWith(l_clone, McDb.Intersect.kExtendBoth).at(0);\r\n const pt0 = line.getClosestPointTo(pt1, false).val\r\n const pl = new McDbPolyline();\r\n pl.isClosed = true;\r\n pl.addVertexAt(pt0);\r\n pl.addVertexAt(pt1);\r\n pl.addVertexAt(pt2);\r\n pl.addVertexAt(pt3);\r\n\r\n const text = new McDbText();\r\n text.height = height;\r\n text.position = l.getPointAtDist(l.getLength().val / 2).val;\r\n text.alignmentPoint = text.position;\r\n text.rotation = - Math.PI / 2;\r\n text.horizontalMode = McDb.TextHorzMode.kTextMid;\r\n text.textString = '1000';//基准数字\r\n\r\n const text1 = new McDbText();\r\n const l1 = new McDbLine(pt3, pt2);\r\n text1.height = height;\r\n text1.position = l1.getPointAtDist(pt3.distanceTo(pt2) / 2).val;\r\n text1.alignmentPoint = text1.position;\r\n text1.horizontalMode = McDb.TextHorzMode.kTextMid;\r\n text1.textString = (1000 * pt3.distanceTo(pt2) / l.getLength().val).toFixed(0).toString();\r\n\r\n // 整装成块\r\n let blkTable = mxcad.getDatabase().getBlockTable();\r\n let blkRecId = blkTable.add(new McDbBlockTableRecord());//图块记录\r\n let blkTableRecord: McDbBlockTableRecord = blkRecId.getMcDbBlockTableRecord() as any;\r\n if (blkTableRecord == null) return;\r\n blkTableRecord.appendAcDbEntity(pl);\r\n blkTableRecord.appendAcDbEntity(text);\r\n blkTableRecord.appendAcDbEntity(text1);\r\n blkTableRecord.name = '斜率test'\r\n\r\n blkTableRecord.origin = pt1;\r\n blkRef.blockTableRecordId = blkRecId;\r\n blkRef.position = pt1;\r\n pw.drawMcDbEntity(blkRef)\r\n });\r\n const pt = await getPoint.go();\r\n if (!pt) return;\r\n mxcad.drawEntity(blkRef);\r\n}\r\n\r\n// 自定义测量坐标标注类\r\nclass McDbTestCoordinateLabeling extends McDbCustomEntity {\r\n // 定义McDbTestCoordinateLabeling内部的点对象 \r\n // 点对象\r\n private point: McGePoint3d = new McGePoint3d();\r\n // 标注点\r\n private position: McGePoint3d = new McGePoint3d();\r\n // 字高\r\n private height: number = 30;\r\n // 构造函数\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n // 创建函数\r\n public create(imp: any) {\r\n return new McDbTestCoordinateLabeling(imp)\r\n }\r\n // 获取类名\r\n public getTypeName(): string {\r\n return \"McDbTestCoordinateLabeling\";\r\n }\r\n //设置或获取测量点坐标\r\n public set coordinatePoint(val: McGePoint3d) {\r\n this.point = val.clone();\r\n }\r\n public get coordinatePoint(): McGePoint3d {\r\n return this.point;\r\n }\r\n //设置或获取字高\r\n public set coordinateHeight(val: number) {\r\n this.height = val;\r\n }\r\n public get coordinateHeight(): number {\r\n return this.height;\r\n }\r\n // 读取自定义实体数据point、position、height\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.point = filter.readPoint(\"point\").val;\r\n this.position = filter.readPoint(\"position\").val;\r\n this.height = filter.readDouble(\"height\").val;\r\n return true;\r\n }\r\n // 写入自定义实体数据point、position、height\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoint(\"point\", this.point);\r\n filter.writePoint(\"position\", this.position);\r\n filter.writeDouble(\"height\", this.height);\r\n return true;\r\n }\r\n\r\n // 移动自定义对象的夹点\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n if (iIndex === 0) {\r\n this.point.x += dXOffset;\r\n this.point.y += dYOffset;\r\n this.point.z += dZOffset;\r\n } else {\r\n this.position.x += dXOffset;\r\n this.position.y += dYOffset;\r\n this.position.z += dZOffset;\r\n }\r\n };\r\n // 获取自定义对象的夹点\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n ret.append(this.point);\r\n ret.append(this.position);\r\n return ret;\r\n };\r\n // 绘制实体\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n const text = new McDbMText();\r\n text.textHeight = MxFun.screenCoordLong2Doc(this.height);\r\n text.attachment = McDb.AttachmentPoint.kMiddleLeft;\r\n text.contents = `X=${(this.point.x).toFixed(3)}\\\\PY=${(this.point.y).toFixed(3)}`;\r\n text.location = this.position;\r\n draw.drawEntity(text);\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const id = mxcad.drawEntity(text);\r\n const { maxPt, minPt } = id.getMcDbEntity().getBoundingBox();\r\n id.erase();\r\n\r\n const length = Math.abs(maxPt.x - minPt.x);\r\n const pt3 = new McGePoint3d(this.position.x + length * 1.2, this.position.y);\r\n const pl = new McDbPolyline();\r\n pl.addVertexAt(this.point);\r\n pl.addVertexAt(this.position);\r\n pl.addVertexAt(pt3);\r\n draw.drawEntity(pl);\r\n }\r\n // 获取position\r\n public setPosition(pt: McGePoint3d) {\r\n this.assertWrite();\r\n this.position = pt.clone();\r\n }\r\n // 获取position\r\n public getPosition() {\r\n return this.position;\r\n }\r\n}\r\n\r\n// 坐标标注\r\nasync function Mx_CoordAnnotation() {\r\n\r\n const getPoint1 = new MxCADUiPrPoint();\r\n getPoint1.setMessage('请选择目标坐标点');\r\n const pt1 = await getPoint1.go();\r\n if (!pt1) return;\r\n\r\n const coord = new McDbTestCoordinateLabeling();\r\n coord.coordinatePoint = pt1;\r\n const getPoint2 = new MxCADUiPrPoint();\r\n getPoint2.setMessage('请指定标注位置');\r\n getPoint2.setUserDraw((pt, pw) => {\r\n coord.setPosition(pt);\r\n pw.drawMcDbEntity(coord);\r\n });\r\n const pt2 = await getPoint2.go();\r\n if (!pt2) return;\r\n coord.setPosition(pt2);\r\n MxCpp.getCurrentMxCAD().drawEntity(coord);\r\n}\r\n\r\n// 智能标高\r\nasync function Mx_Elevation() {\r\n\r\n const getPoint1 = new MxCADUiPrPoint();\r\n getPoint1.setMessage('指定起点');\r\n const pt1 = await getPoint1.go();\r\n if (!pt1) return;\r\n\r\n // 标注文字\r\n const height = 10;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const text = new McDbText();\r\n text.height = height;\r\n text.textString = pt1.y.toFixed(2);\r\n text.position = pt1;\r\n const id = mxcad.drawEntity(text);\r\n\r\n let line1: McDbLine;\r\n let pl: McDbPolyline;\r\n let textHt: McDbText;\r\n setTimeout(async () => {\r\n // 获取标注文字长度\r\n const minBox = id.getMcDbEntity().getBoundingBox();\r\n const w = minBox.maxPt.distanceTo(new McGePoint3d(minBox.minPt.x, minBox.maxPt.y));\r\n id.erase();\r\n\r\n const getPoint2 = new MxCADUiPrPoint();\r\n getPoint2.setMessage('指定终点');\r\n getPoint2.setUserDraw((pt, pw) => {\r\n line1 = new McDbLine(pt1, new McGePoint3d(pt1.x + height, pt1.y, 0));\r\n line1.startPoint = pt1;\r\n line1.endPoint = line1.getClosestPointTo(pt, true).val;\r\n pw.drawMcDbEntity(line1);\r\n\r\n const p1 = new McGePoint3d(pt.x, pt1.y + height, 0);\r\n const p2 = line1.getPointAtDist(line1.getLength().val - height).val;\r\n const p3 = line1.getPointAtDist(line1.getLength().val - height * 2).val;\r\n pl = new McDbPolyline();\r\n pl.addVertexAt(p1);\r\n pl.addVertexAt(p2);\r\n pl.addVertexAt(new McGePoint3d(p3.x, p3.y + height, 0));\r\n if (pt.x > pt1.x) {\r\n pl.addVertexAt(new McGePoint3d(p1.x + w, p1.y, 0));\r\n } else {\r\n pl.addVertexAt(new McGePoint3d(p1.x - w, p1.y, 0));\r\n }\r\n pw.drawMcDbEntity(pl);\r\n\r\n textHt = text.clone() as McDbText;\r\n textHt.position = textHt.alignmentPoint = p1;\r\n // 根据文字所在位置确定文字对齐方式\r\n if (pt.x > pt1.x) {\r\n text.horizontalMode = McDb.TextHorzMode.kTextLeft;\r\n } else {\r\n text.horizontalMode = McDb.TextHorzMode.kTextRight;\r\n }\r\n pw.drawMcDbEntity(textHt);\r\n })\r\n const pt2 = await getPoint2.go();\r\n if (!pt2) return;\r\n\r\n const getPosition = new MxCADUiPrPoint();\r\n getPosition.setMessage('指定标注方向');\r\n getPosition.setUserDraw((pt, pw) => {\r\n const pl_clone = pl.clone() as McDbPolyline;\r\n const text_clone = textHt.clone() as McDbText;\r\n if (pt.y < line1.endPoint.y) {\r\n pl_clone.mirror(pl.getPointAt(1).val, line1.endPoint);\r\n const p = pl_clone.getPointAt(0).val;\r\n text_clone.position = text_clone.alignmentPoint = new McGePoint3d(p.x, p.y - height, 0)\r\n }\r\n pw.drawMcDbEntity(text_clone);\r\n pw.drawMcDbEntity(pl_clone);\r\n pw.drawMcDbEntity(line1);\r\n })\r\n\r\n const position = await getPosition.go();\r\n if (!position) return;\r\n // 设置标注方向\r\n if (position.y < line1.endPoint.y) {\r\n pl.mirror(pl.getPointAt(1).val, line1.endPoint);\r\n const p = pl.getPointAt(0).val;\r\n textHt.position = textHt.alignmentPoint = new McGePoint3d(p.x, p.y - height, 0)\r\n }\r\n\r\n mxcad.drawEntity(line1);\r\n mxcad.drawEntity(textHt);\r\n mxcad.drawEntity(pl);\r\n\r\n }, 0)\r\n}\r\n\r\n// 粗糙度\r\nasync function Mx_Roughness() {\r\n // 设置标注文字内容\r\n const getStr = new MxCADUiPrString();\r\n getStr.setMessage('请设置文字内容');\r\n const str = await getStr.go();\r\n if (!str) return;\r\n const text = new McDbText();\r\n text.textString = str;\r\n text.height = 10;\r\n text.position = text.alignmentPoint = new McGePoint3d(0, 0, 0);\r\n text.horizontalMode = McDb.TextHorzMode.kTextMid;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const id = mxcad.drawEntity(text);\r\n\r\n setTimeout(async () => {\r\n // 获取文字宽度\r\n const minBox = id.getMcDbEntity().getBoundingBox();\r\n const w = minBox.maxPt.distanceTo(new McGePoint3d(minBox.minPt.x, minBox.maxPt.y));\r\n id.erase();\r\n\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage('请指定标注位置');\r\n let pl: McDbPolyline;\r\n let _clone: McDbText;\r\n getPoint.setUserDraw((pt, pw) => {\r\n const midPt = new McGePoint3d(pt.x, pt.y + w, 0);\r\n const startPt = new McGePoint3d(midPt.x - w / 2, midPt.y, 0);\r\n const endPt = new McGePoint3d(midPt.x + w / 2, midPt.y, 0);\r\n const line = new McDbLine(pt, endPt);\r\n const lastPt = line.getPointAtDist(line.getLength().val + w).val;\r\n pl = new McDbPolyline();\r\n pl.addVertexAt(endPt);\r\n pl.addVertexAt(startPt);\r\n pl.addVertexAt(pt);\r\n pl.addVertexAt(lastPt);\r\n pw.drawMcDbEntity(pl);\r\n\r\n _clone = text.clone() as McDbText;\r\n _clone.position = _clone.alignmentPoint = midPt;\r\n pw.drawMcDbEntity(_clone)\r\n });\r\n\r\n const pt = await getPoint.go();\r\n if (!pt) return;\r\n\r\n mxcad.drawEntity(pl);\r\n mxcad.drawEntity(_clone);\r\n }, 0)\r\n\r\n}\r\n\r\n// 自定义面积标注类\r\nclass McDbTestAreaComment extends McDbCustomEntity {\r\n /** 点数组 */\r\n private ptArr: McGePoint3d[] = [];\r\n /** 标注点 */\r\n private pt: McGePoint3d;\r\n /** 字高 */\r\n private height: number = 30;\r\n /** 凸度数组 */\r\n private dbulges: number[] = [];\r\n /** 测量对象是否为矩形 */\r\n private isReactFlag: boolean = false;\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n public create(imp: any) {\r\n return new McDbTestAreaComment(imp)\r\n }\r\n /** 获取类名 */\r\n public getTypeName(): string {\r\n return \"McDbTestAreaComment\";\r\n }\r\n //设置或获取文本字高\r\n public set textHeight(val: number) {\r\n this.height = val;\r\n }\r\n public get textHeight(): number {\r\n return this.height;\r\n }\r\n //设置或获取测量对象是否为矩形\r\n public set isReact(val: boolean) {\r\n this.isReactFlag = val;\r\n }\r\n public get isReact(): boolean {\r\n return this.isReactFlag;\r\n }\r\n /** 读取数据 */\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.ptArr = filter.readPoints('ptArr').val;\r\n this.pt = filter.readPoint('pt').val;\r\n const _dbulges = filter.readString(\"dbulges\").val;\r\n this.dbulges = _dbulges.split(',').map(Number);\r\n this.isReactFlag = filter.readLong(\"isReactFlag\").val ? true : false;\r\n return true;\r\n }\r\n /** 写入数据 */\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoints(\"ptArr\", this.ptArr);\r\n filter.writePoint(\"pt\", this.pt);\r\n const _dbulges = this.dbulges.toString();\r\n filter.writeString(\"dbulges\", _dbulges);\r\n filter.writeLong(\"isReactFlag\", this.isReactFlag ? 1 : 0);\r\n return true;\r\n }\r\n /** 移动夹点 */\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n this.ptArr.forEach((point, index) => {\r\n if (index === iIndex) {\r\n point.x += dXOffset;\r\n point.y += dYOffset;\r\n point.z += dZOffset;\r\n }\r\n });\r\n if (iIndex === this.ptArr.length) {\r\n this.pt.x += dXOffset;\r\n this.pt.y += dYOffset;\r\n this.pt.z += dZOffset;\r\n }\r\n };\r\n /** 获取夹点 */\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray();\r\n this.ptArr.forEach(point => {\r\n ret.append(point);\r\n })\r\n ret.append(this.pt);\r\n return ret;\r\n };\r\n /** 动态绘制 */\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n const pl = new McDbPolyline();\r\n pl.isClosed = true;\r\n if (this.isReactFlag) {\r\n // 测量的是矩形,得到的就是矩形的两个角点\r\n pl.addVertexAt(this.ptArr[0], 0, 0.1, 0.1);\r\n pl.addVertexAt(new McGePoint3d(this.ptArr[1].x, this.ptArr[0].y), 0, 0.1, 0.1);\r\n pl.addVertexAt(this.ptArr[1], 0, 0.1, 0.1);\r\n pl.addVertexAt(new McGePoint3d(this.ptArr[0].x, this.ptArr[1].y), 0, 0.1, 0.1);\r\n } else {\r\n // 测量的是多边形\r\n this.ptArr.forEach((pt, index) => {\r\n pl.addVertexAt(pt, this.dbulges[index], 0.1, 0.1);\r\n });\r\n }\r\n // 获取对象数据信息\r\n const area = pl.getArea().val;\r\n const length = pl.getLength().val;\r\n // 构造对文本对象\r\n const text = new McDbMText();\r\n text.contents = `面积:${area.toFixed(2)}\\\\P周长:${length.toFixed(2)} `;\r\n text.attachment = McDb.AttachmentPoint.kMiddleCenter;\r\n text.location = this.pt;\r\n text.textHeight = MxFun.screenCoordLong2Doc(this.height);\r\n // 设置标注颜色\r\n text.trueColor = this.trueColor;\r\n draw.trueColor = this.trueColor;\r\n // 绘制标注对象\r\n draw.drawEntity(text);\r\n draw.drawEntity(pl);\r\n }\r\n /** 设置标注点 */\r\n public setPoint(pt: McGePoint3d) {\r\n this.assertWrite();\r\n this.pt = pt.clone();\r\n }\r\n /** 增加顶点 */\r\n public addVertex(pt: McGePoint3d, dbulge?: number) {\r\n this.assertWrite();\r\n this.ptArr.push(pt.clone());\r\n this.dbulges.push(dbulge ? dbulge : 0);\r\n }\r\n /** 获取标注点 */\r\n public getPoint() {\r\n return this.pt;\r\n }\r\n\r\n}\r\n\r\n// 面积\r\nasync function Mx_Area() {\r\n const ptArr: McGePoint3d[] = [];\r\n\r\n const getPt1 = new MxCADUiPrPoint();\r\n getPt1.setMessage('请选择面积的第一个点');\r\n const pt1 = await getPt1.go();\r\n if (!pt1) return;\r\n ptArr.push(pt1);\r\n\r\n while (true) {\r\n const getPt = new MxCADUiPrPoint();\r\n getPt.setMessage('请选择下一个点');\r\n getPt.setKeyWords(\"[回退(B)/结束(O)]\");\r\n getPt.setUserDraw((pt, pw) => {\r\n const draw_pl = new McDbPolyline();\r\n ptArr.forEach(point => {\r\n draw_pl.addVertexAt(point, 0, 0.1, 0.1);\r\n });\r\n draw_pl.addVertexAt(pt);\r\n pw.drawMcDbEntity(draw_pl);\r\n });\r\n const pt = await getPt.go();\r\n const key = getPt.keyWordPicked();\r\n if (key === 'B') {\r\n if (ptArr.length > 1) {\r\n ptArr.pop();\r\n }\r\n } else if (key === 'O') {\r\n break;\r\n } else {\r\n if (!pt) break;\r\n ptArr.push(pt);\r\n }\r\n };\r\n\r\n if (ptArr.length < 3) return;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const area = new McDbTestAreaComment();\r\n ptArr.forEach((point) => {\r\n area.addVertex(point, 0);\r\n });\r\n const position = new MxCADUiPrPoint();\r\n position.setMessage('请选择面积标注的位置');\r\n position.setUserDraw((pt, pw) => {\r\n pw.setColor(0xFF0000)\r\n area.setPoint(pt);\r\n pw.drawMcDbEntity(area);\r\n })\r\n const positionPt = await position.go();\r\n if (!positionPt) return;\r\n area.setPoint(positionPt);\r\n area.trueColor = new McCmColor(255, 0, 0)\r\n mxcad.drawEntity(area);\r\n}\r\n\r\n// 矩形面积\r\nasync function Mx_ReactArea() {\r\n const getPt1 = new MxCADUiPrPoint();\r\n getPt1.setMessage('请选择矩形的角点1');\r\n const pt1 = await getPt1.go();\r\n if (!pt1) return;\r\n\r\n const getPt2 = new MxCADUiPrPoint();\r\n getPt2.setMessage('请选择矩形的角点2');\r\n getPt2.setUserDraw((pt, pw) => {\r\n const pl = new McDbPolyline();\r\n pl.isClosed = true;\r\n pl.addVertexAt(pt1);\r\n pl.addVertexAt(new McGePoint3d(pt.x, pt1.y));\r\n pl.addVertexAt(pt);\r\n pl.addVertexAt(new McGePoint3d(pt1.x, pt.y));\r\n pw.drawMcDbEntity(pl);\r\n })\r\n const pt2 = await getPt2.go();\r\n if (!pt2) return;\r\n\r\n const reactArea = new McDbTestAreaComment();\r\n reactArea.isReact = true;\r\n reactArea.addVertex(pt1);\r\n reactArea.addVertex(pt2);\r\n\r\n const getPos = new MxCADUiPrPoint();\r\n getPos.setMessage('请设置面积标注的位置');\r\n getPos.setUserDraw((pt, pw) => {\r\n pw.setColor(0xFF0000)\r\n reactArea.setPoint(pt);\r\n pw.drawMcDbEntity(reactArea);\r\n });\r\n const position = await getPos.go();\r\n if (!position) return;\r\n reactArea.setPoint(position);\r\n reactArea.trueColor = new McCmColor(255, 0, 0)\r\n MxCpp.getCurrentMxCAD().drawEntity(reactArea);\r\n}\r\n\r\n// 点到直线的距离\r\nasync function Mx_DistFromPointToLine() {\r\n const getPt = new MxCADUiPrPoint();\r\n getPt.setMessage('请选择一个测量点');\r\n const pt = await getPt.go();\r\n if (!pt) return;\r\n\r\n // 设置过滤器 \r\n const filter = new MxCADResbuf([DxfCode.kEntityType, \"LINE\"]);\r\n const getEnt = new MxCADUiPrEntity();\r\n getEnt.setMessage('请选择一条直线')\r\n getEnt.setFilter(filter);\r\n const entId = await getEnt.go();\r\n if (!entId.id) return;\r\n const line = entId.getMcDbEntity() as McDbLine;\r\n\r\n // 获取垂点\r\n const verPt = line.getClosestPointTo(pt, true).val;\r\n\r\n let id!: McObjectId;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const getPos = new MxCADUiPrPoint();\r\n getPos.setMessage('请设置尺寸线的位置');\r\n getPos.setUserDraw((point, pw) => {\r\n id && id.erase()\r\n id = mxcad.drawDimAligned(pt.x, pt.y, verPt.x, verPt.y, point.x, point.y);\r\n });\r\n const position = await getPos.go();\r\n if (!position) {\r\n id && id.erase()\r\n return\r\n };\r\n id && id.erase();\r\n mxcad.drawDimAligned(pt.x, pt.y, verPt.x, verPt.y, position.x, position.y);\r\n}\r\n\r\n// 自定义弧长标注类\r\nclass McDbTestArcComment extends McDbCustomEntity {\r\n /** 圆弧圆心 */\r\n private center: McGePoint3d = new McGePoint3d();\r\n /** 圆弧半径 */\r\n private radius: number;\r\n /** 圆弧开始角度 */\r\n private startAngle: number;\r\n /** 圆弧结束角度 */\r\n private endAngle: number;\r\n /** 弧线标注点 */\r\n private position: McGePoint3d = new McGePoint3d();\r\n /** 弧线标注文本高度 */\r\n private height: number = 30;\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n public create(imp: any) {\r\n return new McDbTestArcComment(imp)\r\n }\r\n /** 获取类名 */\r\n public getTypeName(): string {\r\n return \"McDbTestArcComment\";\r\n }\r\n //设置或获取标注圆弧圆心\r\n public set arcCenter(val: McGePoint3d) {\r\n this.center = val.clone();\r\n }\r\n public get arcCenter(): McGePoint3d {\r\n return this.center;\r\n }\r\n //设置或获取标注圆弧半径\r\n public set arcRadius(val: number) {\r\n this.radius = val;\r\n }\r\n public get arcRadius(): number {\r\n return this.radius;\r\n }\r\n //设置或获取标注文本高度\r\n public set textHeight(val: number) {\r\n this.height = val;\r\n }\r\n public get textHeight(): number {\r\n return this.height;\r\n }\r\n //设置或获取标注圆弧起始角度\r\n public set arcStartAngle(val: number) {\r\n this.startAngle = val;\r\n }\r\n public get arcStartAngle(): number {\r\n return this.startAngle;\r\n }\r\n public set arcEndAngle(val: number) {\r\n this.endAngle = val;\r\n }\r\n public get arcEndAngle(): number {\r\n return this.endAngle;\r\n }\r\n /** 读取数据 */\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.position = filter.readPoint('position').val;\r\n this.center = filter.readPoint('center').val;\r\n this.startAngle = filter.readDouble('startAngle').val;\r\n this.endAngle = filter.readDouble('endAngle').val;\r\n this.radius = filter.readDouble('radius').val;\r\n this.height = filter.readDouble('textHeight').val;\r\n return true;\r\n }\r\n /** 写入数据 */\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoint(\"position\", this.position);\r\n filter.writePoint(\"center\", this.center);\r\n filter.writeDouble(\"startAngle\", this.startAngle);\r\n filter.writeDouble(\"endAngle\", this.endAngle);\r\n filter.writeDouble(\"radius\", this.radius);\r\n filter.writeDouble(\"textHeight\", this.height);\r\n return true;\r\n }\r\n /** 移动夹点 */\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n this.position.x += dXOffset;\r\n this.position.y += dYOffset;\r\n this.position.z += dZOffset;\r\n };\r\n /** 获取夹点 */\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray();\r\n ret.append(this.position);\r\n return ret;\r\n };\r\n // 绘制标注样式线段\r\n private drawLine(pt1: McGePoint3d, pt2: McGePoint3d): any {\r\n const vec = pt2.sub(pt1).normalize().mult(MxFun.screenCoordLong2Doc(this.height * 0.4));\r\n const _pt = pt2.clone().addvec(vec);\r\n const _ptClone = pt2.clone().subvec(vec);\r\n const line = new McDbLine(_pt, _ptClone)\r\n line.rotate(pt2, Math.PI / 4);\r\n return { line, pt: _pt };\r\n }\r\n private pt1: McGePoint3d\r\n private pt2: McGePoint3d\r\n private dbulge: number\r\n /** 动态绘制 */\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n // 获取测量目标圆弧基础信息\r\n const arc = new McDbArc();\r\n arc.center = this.center;\r\n arc.startAngle = this.startAngle;\r\n arc.endAngle = this.endAngle;\r\n arc.radius = this.radius;\r\n const length = arc.getLength().val;\r\n const startPt = arc.getPointAtDist(0).val;\r\n const endPt = arc.getPointAtDist(length).val;\r\n\r\n // 构造标注圆弧长度文本信息\r\n const lText = new McDbText();\r\n lText.textString = `${length.toFixed(2)}`;\r\n lText.height = MxFun.screenCoordLong2Doc(this.height);\r\n lText.horizontalMode = McDb.TextHorzMode.kTextCenter;\r\n lText.position = lText.alignmentPoint = this.position;\r\n // 弧线偏移\r\n const closePt = arc.getClosestPointTo(this.position, true).val;\r\n const dist = closePt.distanceTo(this.position);\r\n arc.offsetCurves(dist, this.position).forEach(obj => {\r\n const offsetEnt = obj.clone() as McDbArc;\r\n const length = offsetEnt.getLength().val;\r\n this.pt1 = offsetEnt.getPointAtDist(0).val;\r\n this.pt2 = offsetEnt.getPointAtDist(length).val;\r\n const midPt = offsetEnt.getPointAtDist(length / 2).val;\r\n this.dbulge = MxCADUtility.calcBulge(this.pt1, midPt, this.pt2).val;\r\n })\r\n // 绘制标注样式\r\n const pl = new McDbPolyline();\r\n pl.addVertexAt(this.pt1, this.dbulge);\r\n pl.addVertexAt(this.pt2);\r\n // 调整文本角度\r\n const angle = this.pt1.sub(this.pt2).angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);\r\n lText.rotation = angle === Math.PI ? 0 : angle;\r\n\r\n const { line: line1, pt: _pt1 } = this.drawLine(startPt, this.pt1);\r\n const { line: line2, pt: _pt2 } = this.drawLine(endPt, this.pt2);\r\n pl.trueColor = lText.trueColor = line1.trueColor = line2.trueColor = this.trueColor;\r\n draw.drawEntity(pl);\r\n draw.drawEntity(lText);\r\n draw.drawEntity(line1);\r\n draw.drawEntity(line2);\r\n draw.drawEntity(new McDbLine(startPt, _pt1))\r\n draw.drawEntity(new McDbLine(endPt, _pt2))\r\n }\r\n /** 设置标注点 */\r\n public setPosition(pt: McGePoint3d) {\r\n this.assertWrite();\r\n this.position = pt.clone();\r\n }\r\n /** 获取标注点 */\r\n public getPoint() {\r\n return this.position;\r\n }\r\n\r\n}\r\n\r\n// 弧长\r\nasync function Mx_ArcLength() {\r\n const filter = new MxCADResbuf([DxfCode.kEntityType, \"ARC\"]);\r\n const getEnt = new MxCADUiPrEntity();\r\n getEnt.setMessage('请选择一条弧线');\r\n getEnt.setFilter(filter);\r\n const entId = await getEnt.go();\r\n if (!entId.id) return;\r\n\r\n const arc = entId.getMcDbEntity() as McDbArc;\r\n const mArc = new McDbTestArcComment();\r\n mArc.arcCenter = arc.center;\r\n mArc.arcStartAngle = arc.startAngle;\r\n mArc.arcEndAngle = arc.endAngle;\r\n mArc.arcRadius = arc.radius;\r\n\r\n // 指定标注位置\r\n const getPos = new MxCADUiPrPoint();\r\n getPos.setMessage(\"请指定尺寸线位置\");\r\n getPos.setUserDraw((pt, pw) => {\r\n pw.setColor(0xFF0000);\r\n mArc.setPosition(pt);\r\n pw.drawMcDbEntity(mArc)\r\n });\r\n const position = await getPos.go();\r\n if (!position) return;\r\n mArc.setPosition(position);\r\n mArc.trueColor = new McCmColor(255, 0, 0);\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n mxcad.drawEntity(mArc);\r\n}\r\n\r\n// 自定义测量圆类\r\nclass McDbTestMeasuringCircle extends McDbCustomEntity {\r\n // 定义McDbTestMeasuringCircle内部的点对象 \r\n // 圆心\r\n private center: McGePoint3d = new McGePoint3d();\r\n // 标注点\r\n private position: McGePoint3d = new McGePoint3d();\r\n // 圆半径\r\n private radius: number;\r\n // 构造函数\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n // 创建函数\r\n public create(imp: any) {\r\n return new McDbTestMeasuringCircle(imp)\r\n }\r\n // 获取类名\r\n public getTypeName(): string {\r\n return \"McDbTestMeasuringCircle\";\r\n }\r\n //设置或获取圆半径\r\n public set circleRadius(val: number) {\r\n this.radius = val;\r\n }\r\n public get circleRadius(): number {\r\n return this.radius;\r\n }\r\n // 读取自定义实体数据pt1、pt2\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.center = filter.readPoint(\"center\").val;\r\n this.position = filter.readPoint(\"position\").val;\r\n this.radius = filter.readDouble(\"radius\").val;\r\n return true;\r\n }\r\n // 写入自定义实体数据pt1、pt2\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n filter.writePoint(\"center\", this.center);\r\n filter.writePoint(\"position\", this.position);\r\n filter.writeDouble(\"radius\", this.radius);\r\n return true;\r\n }\r\n\r\n // 移动自定义对象的夹点\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n this.position.x += dXOffset;\r\n this.position.y += dYOffset;\r\n this.position.z += dZOffset;\r\n };\r\n // 获取自定义对象的夹点\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n ret.append(this.position);\r\n return ret;\r\n };\r\n // 绘制实体\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n const circle = new McDbCircle();\r\n circle.center = this.center;\r\n circle.radius = this.radius;\r\n const length = circle.getLength().val;\r\n const radius = circle.radius;\r\n const area = Math.PI * radius * radius;\r\n\r\n const mText = new McDbMText();\r\n mText.contents = `半径:${radius.toFixed(2)} \\\\P 周长:${length.toFixed(2)} \\\\P 面积:${area.toFixed(2)}`\r\n mText.textHeight = radius / 6;\r\n mText.attachment = McDb.AttachmentPoint.kMiddleCenter;\r\n mText.location = this.position;\r\n mText.trueColor = circle.trueColor = this.trueColor;\r\n draw.drawEntity(mText);\r\n draw.drawEntity(circle);\r\n }\r\n // 设置pt1\r\n public setCenter(pt: McGePoint3d) {\r\n this.assertWrite();\r\n this.center = pt.clone();\r\n }\r\n // 获取pt1\r\n public getCenter() {\r\n return this.center;\r\n }\r\n // 获取position\r\n public setPosition(pt: McGePoint3d) {\r\n this.assertWrite();\r\n this.position = pt.clone();\r\n }\r\n // 获取position\r\n public getPosition() {\r\n return this.position;\r\n }\r\n}\r\n\r\n// 测量圆\r\nasync function Mx_MeasuringCircle() {\r\n const filter = new MxCADResbuf([DxfCode.kEntityType, \"CIRCLE\"]);\r\n const getEnt = new MxCADUiPrEntity();\r\n getEnt.setMessage(\"请选择一个圆对象\");\r\n getEnt.setFilter(filter);\r\n const entId = await getEnt.go();\r\n if (!entId.id) return;\r\n\r\n const circle = entId.getMcDbEntity() as McDbCircle;\r\n circle.highlight(true);\r\n const mCircle = new McDbTestMeasuringCircle();\r\n mCircle.setCenter(circle.center);\r\n mCircle.circleRadius = circle.radius;\r\n\r\n\r\n const getPt = new MxCADUiPrPoint();\r\n getPt.setMessage('请指定文字位置');\r\n getPt.setUserDraw((pt, pw) => {\r\n pw.setColor(0xFF0000);\r\n mCircle.setPosition(pt);\r\n pw.drawMcDbEntity(mCircle);\r\n });\r\n const point = await getPt.go();\r\n if (!point) return;\r\n mCircle.setPosition(point);\r\n mCircle.trueColor = new McCmColor(255, 0, 0)\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n mxcad.drawEntity(mCircle);\r\n circle.highlight(false);\r\n};\r\n\r\n// 自定义连续测量类\r\nclass McDbTestConMeasurement extends McDbCustomEntity {\r\n // 定义McDbTestConMeasurement内部的点对象 \r\n // 测量点数组\r\n private points: McGePoint3d[] = [];\r\n private dbulges: number[] = [];\r\n // 文字点位置\r\n private position: McGePoint3d = new McGePoint3d();\r\n // 文字高度\r\n private height: number = 30;\r\n /** 标注颜色 */\r\n private dimColor: McCmColor = new McCmColor(255, 0, 0);\r\n /** 标注线段宽度 */\r\n private width: number = 0.1;\r\n /** 是否显示分段长度 */\r\n private showSegLength: boolean = false;\r\n\r\n // 构造函数\r\n constructor(imp?: any) {\r\n super(imp);\r\n }\r\n // 创建函数\r\n public create(imp: any) {\r\n return new McDbTestConMeasurement(imp)\r\n }\r\n // 获取类名\r\n public getTypeName(): string {\r\n return \"McDbTestConMeasurement\";\r\n }\r\n //设置或获取文本字高\r\n public set textHeight(val: number) {\r\n this.height = val;\r\n }\r\n public get textHeight(): number {\r\n return this.height;\r\n }\r\n /** 设置或获取标注颜色\r\n * val:颜色rgb值数组\r\n */\r\n public set color(val: McCmColor) {\r\n this.dimColor = val.clone();\r\n }\r\n public get color(): McCmColor {\r\n return this.dimColor;\r\n }\r\n /** 设置线段宽度 */\r\n public set conWidth(val: number) {\r\n this.width = MxFun.screenCoordLong2Doc(val);\r\n }\r\n public get conWidth(): number {\r\n return this.width;\r\n }\r\n /** 显示分段长度 */\r\n public set isShowSegLength(val: boolean) {\r\n this.showSegLength = val;\r\n }\r\n public get isShowSegLength(): boolean {\r\n return this.showSegLength;\r\n }\r\n // 读取自定义实体数据\r\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\r\n this.points = filter.readPoints(\"points\").val;\r\n this.position = filter.readPoint(\"position\").val;\r\n const _dbulges = filter.readString(\"dbulges\").val;\r\n this.dbulges = _dbulges.split(',').map(Number);\r\n const _dimColor = filter.readString(\"dimColor\").val;\r\n this.dimColor = new McCmColor(..._dimColor.split(',').map(Number));\r\n this.width = filter.readDouble(\"conWidth\").val;\r\n this.showSegLength = filter.readLong('showSegLength').val === 1;\r\n return true;\r\n }\r\n // 写入自定义实体数据\r\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\r\n const _dbulges = this.dbulges.toString();\r\n const _color = `${this.dimColor.red},${this.dimColor.green},${this.dimColor.blue}`;\r\n const _showSegLength = this.showSegLength ? 1 : 0;\r\n filter.writePoints(\"points\", this.points);\r\n filter.writePoint(\"position\", this.position);\r\n filter.writeString(\"dbulges\", _dbulges);\r\n filter.writeString(\"dimColor\", _color);\r\n filter.writeDouble(\"conWidth\", this.width);\r\n filter.writeLong('showSegLength', _showSegLength)\r\n return true;\r\n }\r\n\r\n // 移动自定义对象的夹点\r\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\r\n this.assertWrite();\r\n if (iIndex < this.points.length) {\r\n this.points[iIndex].x += dXOffset;\r\n this.points[iIndex].y += dYOffset;\r\n this.points[iIndex].z += dZOffset;\r\n } else {\r\n this.position.x += dXOffset;\r\n this.position.y += dYOffset;\r\n this.position.z += dZOffset;\r\n }\r\n };\r\n // 获取自定义对象的夹点\r\n public getGripPoints(): McGePoint3dArray {\r\n let ret = new McGePoint3dArray()\r\n this.points.forEach(pt => {\r\n ret.append(pt)\r\n });\r\n ret.append(this.position);\r\n return ret;\r\n };\r\n // 绘制实体\r\n public worldDraw(draw: MxCADWorldDraw): void {\r\n const pl = new McDbPolyline();\r\n const lengthArr = [];\r\n this.points.forEach((pt, index) => {\r\n let width = this.width;\r\n if (index === this.points.length - 1) width = 0;\r\n pl.addVertexAt(pt, this.dbulges[index], width, width);\r\n if (index > 0) {\r\n const pt1 = this.points[index - 1];\r\n const l = new McDbPolyline();\r\n l.addVertexAt(pt1, this.dbulges[index - 1]);\r\n l.addVertexAt(pt, this.dbulges[index]);\r\n const length = l.getLength().val;\r\n const position = l.getPointAtDist(length / 2).val;\r\n const text = new McDbText();\r\n text.textString = `${length.toFixed(2)}`;\r\n text.height = MxFun.screenCoordLong2Doc(this.height * 0.6);\r\n text.horizontalMode = McDb.TextHorzMode.kTextCenter;\r\n // 旋转角度\r\n let vec;\r\n if (pt1.x <= pt.x) {\r\n vec = pt.sub(pt1);\r\n } else {\r\n vec = pt1.sub(pt);\r\n }\r\n // 取垂直向量\r\n const perpVec = vec.clone().perpVector().normalize();\r\n const textNum = MxFun.screenCoordLong2Doc(this.height * 0.15);\r\n const line = new McDbLine(pt1, pt);\r\n const midPt = line.getPointAtDist(line.getLength().val / 2).val;\r\n if (midPt.y >= position.y) {\r\n position.addvec(perpVec.mult(textNum));\r\n } else {\r\n position.subvec(perpVec.mult(textNum));\r\n };\r\n text.position = text.alignmentPoint = position;\r\n const angle = vec.angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);\r\n text.rotation = angle === Math.PI ? 0 : angle;\r\n lengthArr.push(text)\r\n }\r\n });\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const plId = mxcad.drawEntity(pl);\r\n const length = (plId.getMcDbEntity() as McDbPolyline).getLength().val;\r\n const endPt = this.points[this.points.length - 1];\r\n const vec = pl.getFirstDeriv(endPt).val;\r\n const _vec = vec.clone();\r\n _vec.rotateBy(Math.PI / 4).normalize().mult(this.width * 5);\r\n const pt1 = endPt.clone().addvec(_vec);\r\n const pt2 = endPt.clone().subvec(_vec)\r\n const line = new McDbPolyline();\r\n line.addVertexAt(pt1, 0, this.width, this.width);\r\n line.addVertexAt(pt2);\r\n plId.erase();\r\n const text = new McDbText();\r\n text.textString = `${length.toFixed(2)}`;\r\n text.height = MxFun.screenCoordLong2Doc(this.height);\r\n const num = MxFun.screenCoordLong2Doc(4)\r\n text.position = text.alignmentPoint = new McGePoint3d(this.position.x + num, this.position.y + num);\r\n text.horizontalMode = McDb.TextHorzMode.kTextLeft;\r\n const textId = mxcad.drawEntity(text);\r\n const { minPt, maxPt } = textId.getMcDbEntity().getBoundingBox();\r\n textId.erase();\r\n const lastPoint = new McGePoint3d(this.position.x + Math.abs(minPt.x - maxPt.x) + num * 6, this.position.y);\r\n pl.addVertexAt(this.position);\r\n pl.addVertexAt(lastPoint);\r\n if (this.showSegLength) {\r\n lengthArr.forEach(ent => {\r\n draw.drawEntity(ent);\r\n })\r\n }\r\n draw.trueColor = this.dimColor;\r\n draw.drawEntity(pl);\r\n draw.drawEntity(text);\r\n draw.drawEntity(line);\r\n }\r\n // 设置pt1\r\n public addVertex(pt: McGePoint3d, dbulge: number) {\r\n this.assertWrite();\r\n this.dbulges.push(dbulge);\r\n this.points.push(pt);\r\n }\r\n // 获取pt1\r\n public getPoints() {\r\n return this.points;\r\n }\r\n // 获取position\r\n public setPosition(pt: McGePoint3d) {\r\n this.assertWrite();\r\n this.position = pt.clone();\r\n }\r\n // 获取position\r\n public getPosition() {\r\n return this.position;\r\n }\r\n}\r\n\r\n/**\r\n * 设置系统变量\r\n * 关闭正交,格栅\r\n * 打开所有对象追踪\r\n * @param param:0 恢复 1设置\r\n */\r\nlet orginSet = [];\r\nfunction setSystemVariables(param: number) {\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n if (param === 1) {\r\n orginSet.push(\r\n {\r\n name: \"ORTHOMODE\",\r\n value: mxcad.getSysVarLong(\"ORTHOMODE\"),\r\n },\r\n {\r\n name: \"GRIDMODE\",\r\n value: mxcad.getSysVarLong(\"GRIDMODE\"),\r\n },\r\n {\r\n name: \"OSMODE\",\r\n value: mxcad.getSysVarLong(\"OSMODE\"),\r\n }\r\n )\r\n // 关闭正交、格栅、打开所有对象追踪\r\n mxcad.setSysVarLong(\"ORTHOMODE\", 0);\r\n mxcad.setSysVarLong(\"GRIDMODE\", 0);\r\n mxcad.setSysVarLong(\"OSMODE\", 16383);\r\n } else if (param === 0) {\r\n orginSet.forEach(item => {\r\n mxcad.setSysVarLong(item.name, item.value);\r\n })\r\n }\r\n}\r\n\r\n// 连续取点(含弧线凸度)\r\nasync function ContinuousSampling() {\r\n // 设置系统变量\r\n setSystemVariables(1);\r\n let ptArr = []; // 测量点数组\r\n let flag = false; // 第一次点击是否为圆弧标注\r\n const filter = new MxCADResbuf([DxfCode.kEntityType, \"ARC\"]); // 筛选弧线\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n let dTol = mxcad.mxdraw.viewCoordLong2Cad(0.5);// 设置精度值\r\n\r\n // 记录最后选择的圆弧id\r\n let arcId = null;\r\n while (true) {\r\n // 循环取测量点\r\n const getPt = new MxCADUiPrPoint();\r\n getPt.setMessage(\"请选择直线的端点或弧线\");\r\n getPt.setKeyWords(\"[回退(B)/结束(O)]\");\r\n if (ptArr.length > 0) getPt.setBasePt(ptArr[ptArr.length - 1].pt);\r\n getPt.setUserDraw((pt, pw) => {\r\n const pl = new McDbPolyline();\r\n ptArr.forEach(obj => {\r\n pl.addVertexAt(obj.pt, obj.dbulge, 0.1, 0.1);\r\n });\r\n pw.drawMcDbEntity(pl)\r\n })\r\n const pt = await getPt.go();\r\n const key = getPt.keyWordPicked();\r\n if (key === \"B\") {\r\n // 回退\r\n if (ptArr.length > 1) ptArr.pop();\r\n arcId = null;\r\n } else if (key === \"O\") {\r\n // 结束\r\n break;\r\n } else {\r\n // 添加测量点\r\n if (!pt) break;\r\n const entId = MxCADUtility.findEntAtPoint(pt.x, pt.y, pt.z, -1, filter);\r\n if (!entId.id) {\r\n arcId = null;\r\n if (flag) {\r\n // 第一次是弧线\r\n const res = ptArr.filter(item => item.pt.distanceTo(pt) < dTol);\r\n if (!res.length) {\r\n alert('请选择连续的线段!')\r\n }\r\n } else {\r\n ptArr.push({ pt, dbulge: 0 })\r\n }\r\n } else {\r\n const arc = entId.getMcDbEntity() as McDbArc;\r\n const length = arc.getLength().val;\r\n const startPt = arc.getPointAtDist(0).val;\r\n const endPt = arc.getPointAtDist(length).val;\r\n\r\n if (startPt.distanceTo(pt) < dTol || endPt.distanceTo(pt) < dTol) {\r\n // pt为圆弧端点\r\n if (flag) {\r\n // 第一次点击为圆弧\r\n const dbulge = -ptArr[0].dbulge;\r\n const pt1 = ptArr[ptArr.length - 2].pt;\r\n const pt2 = ptArr[ptArr.length - 1].pt;\r\n if (pt1.distanceTo(pt) < dTol) {\r\n ptArr.slice(0, ptArr.length - 2);\r\n ptArr.push({ pt: pt2, dbulge });\r\n ptArr.push({ pt: pt1, dbulge: 0 });\r\n };\r\n flag = false;\r\n arcId = entId;\r\n } else {\r\n ptArr.push({ pt, dbulge: 0 })\r\n }\r\n } else {\r\n // pt为圆弧上的点\r\n if (ptArr.length > 0) {\r\n const lastPt = ptArr[ptArr.length - 1].pt;\r\n if (startPt.distanceTo(lastPt) < dTol || endPt.distanceTo(lastPt) < dTol) {\r\n if (arcId?.id === entId.id) {\r\n console.log('点击同一个圆弧');\r\n ptArr.pop();\r\n const preItem = ptArr[ptArr.length - 1]\r\n // 三点确定凸度 lastPt pt 以及两点的中间点 \r\n const l1 = arc.getDistAtPoint(preItem.pt).val;\r\n const l2 = arc.getDistAtPoint(pt).val;\r\n let midPt = arc.getPointAtDist(l1 + (l2 - l1) / 2).val; // 两点的中间点\r\n let arcTest = new McDbArc();\r\n arcTest.computeArc(preItem.pt.x, preItem.pt.y, midPt.x, midPt.y, pt.x, pt.y);//三点画圆弧\r\n if (arcTest.getLength().val > arc.getLength().val) {\r\n const _clone = arcTest.clone() as McDbArc;\r\n arcTest.startAngle = _clone.endAngle;\r\n arcTest.endAngle = _clone.startAngle;\r\n midPt = arcTest.getPointAtDist(arcTest.getLength().val / 2).val;\r\n }\r\n preItem.dbulge = MxCADUtility.calcBulge(preItem.pt, midPt, pt).val;\r\n ptArr.push({ pt, dbulge: 0 });\r\n arcId = null;\r\n } else {\r\n const point = startPt.distanceTo(lastPt) < dTol ? endPt : startPt; // 结束点\r\n ptArr[ptArr.length - 1].dbulge = MxCADUtility.calcBulge(lastPt, pt, point).val;\r\n ptArr.push({ pt: point, dbulge: 0 });\r\n arcId = entId;\r\n }\r\n } else {\r\n alert(\"请选择连续的线段!\")\r\n }\r\n } else {\r\n // 第一次点击就是arc\r\n const dbulge = MxCADUtility.calcBulge(startPt, pt, endPt).val;\r\n ptArr.push({ pt: startPt, dbulge });\r\n ptArr.push({ pt: endPt, dbulge: 0 });\r\n flag = true;\r\n arcId = entId;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n // 恢复初始系统变量\r\n setSystemVariables(0)\r\n return ptArr\r\n}\r\n\r\n// 连续测量\r\nasync function Mx_ContinueMeasurement() {\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const ptArr = await ContinuousSampling();\r\n if(ptArr.length < 2) return;\r\n // 绘制测量标注\r\n const plDim = new McDbTestConMeasurement();\r\n ptArr.forEach(item => {\r\n plDim.addVertex(item.pt, item.dbulge)\r\n });\r\n const getPos = new MxCADUiPrPoint();\r\n getPos.setMessage(\"请指定文字的位置\");\r\n getPos.setUserDraw((pt, pw) => {\r\n plDim.setPosition(pt);\r\n pw.drawMcDbEntity(plDim)\r\n });\r\n const position = await getPos.go();\r\n if (!position) return;\r\n plDim.setPosition(position);\r\n mxcad.drawEntity(plDim);\r\n}\r\n\r\n// 查看分段长度\r\nasync function Mx_CountList() {\r\n const getEnt = new MxCADUiPrEntity();\r\n getEnt.setMessage('请选择一个连续测量的标注');\r\n const entId = await getEnt.go();\r\n if (!entId.id) return;\r\n const ent = entId.getMcDbEntity();\r\n if (!(ent instanceof McDbCustomEntity)) return;\r\n if (ent.getTypeName() === 'McDbTestConMeasurement') {\r\n const _clone = ent.clone() as McDbTestConMeasurement;\r\n _clone.isShowSegLength = !_clone.isShowSegLength;\r\n MxCpp.getCurrentMxCAD().drawEntity(_clone);\r\n entId.erase();\r\n }\r\n\r\n}\r\n\r\n// 面积含弧线\r\nasync function Mx_AreaArc() {\r\n\r\n const ptArr = await ContinuousSampling()\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const area = new McDbTestAreaComment();\r\n ptArr.forEach(item => {\r\n area.addVertex(item.pt, item.dbulge);\r\n });\r\n const position = new MxCADUiPrPoint();\r\n position.setMessage('请选择面积标注的位置');\r\n position.setUserDraw((pt, pw) => {\r\n area.setPoint(pt);\r\n pw.drawMcDbEntity(area);\r\n })\r\n const positionPt = await position.go();\r\n if (!positionPt) return;\r\n area.setPoint(positionPt);\r\n area.trueColor = new McCmColor(255, 0, 0);\r\n mxcad.drawEntity(area);\r\n\r\n}\r\n\r\n// 测量角度\r\nasync function Mx_MeasuringAngle(){\r\n // 设置过滤器,过滤出直线\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes('LINE')\r\n \r\n const getLine1 = new MxCADUiPrEntity();\r\n getLine1.setMessage('请选择一条直线');\r\n getLine1.setFilter(filter);\r\n const entId1 = await getLine1.go();\r\n if(!entId1) return;\r\n const line1 = entId1.getMcDbEntity() as McDbLine;\r\n line1.highlight(true);\r\n\r\n const getLine2 = new MxCADUiPrEntity();\r\n getLine2.setMessage('请选择第二条直线');\r\n getLine2.setFilter(filter);\r\n const entId2 = await getLine2.go();\r\n if(!entId2) return;\r\n const line2 = entId2.getMcDbEntity() as McDbLine;\r\n line2.highlight(true);\r\n\r\n const getPos = new MxCADUiPrPoint();\r\n getPos.setMessage(\"请设置角度标注的位置\");\r\n const dimStyleId = MxCpp.getCurrentMxCAD().addDimStyle(\"MyDimStyle2\", \"41,0.18,141,0.09,40,20\", \"77,1,271,3\", \"\", \"\");\r\n const angleDim = new McDb2LineAngularDimension();\r\n angleDim.xLine1Start = line1.startPoint;\r\n angleDim.xLine1End= line1.endPoint;\r\n angleDim.xLine2Start = line2.startPoint;\r\n angleDim.xLine2End = line2.endPoint;\r\n angleDim.dimensionStyle = dimStyleId;\r\n line1.highlight(false);\r\n line2.highlight(false);\r\n\r\n getPos.setUserDraw((pt, pw) => {\r\n angleDim.arcPoint = pt;\r\n pw.drawMcDbEntity(angleDim)\r\n });\r\n const position = await getPos.go();\r\n if(!position) return;\r\n angleDim.arcPoint = position;\r\n MxCpp.getCurrentMxCAD().drawEntity(angleDim)\r\n}\r\nexport function init() {\r\n new McDbTestAreaComment().rxInit();\r\n new McDbTestConMeasurement().rxInit();\r\n new McDbTestMeasuringCircle().rxInit();\r\n new McDbTestArcComment().rxInit();\r\n new McDbTestCoordinateLabeling().rxInit();\r\n MxFun.addCommand(\"Mx_StaLength\", Mx_StaLength);\r\n MxFun.addCommand(\"Mx_StaArea\", Mx_StaArea);\r\n MxFun.addCommand(\"Mx_StandardSlope\", Mx_StandardSlope);\r\n MxFun.addCommand(\"Mx_CoordAnnotation\", Mx_CoordAnnotation);\r\n MxFun.addCommand(\"Mx_Elevation\", Mx_Elevation);\r\n MxFun.addCommand(\"Mx_Roughness\", Mx_Roughness);\r\n MxFun.addCommand(\"Mx_Area\", Mx_Area);\r\n MxFun.addCommand(\"Mx_ReactArea\", Mx_ReactArea);\r\n MxFun.addCommand(\"Mx_DistFromPointToLine\", Mx_DistFromPointToLine);\r\n MxFun.addCommand(\"Mx_ArcLength\", Mx_ArcLength);\r\n MxFun.addCommand(\"Mx_MeasuringCircle\", Mx_MeasuringCircle);\r\n MxFun.addCommand(\"Mx_ContinueMeasurement\", Mx_ContinueMeasurement);\r\n MxFun.addCommand(\"Mx_CountList\", Mx_CountList);\r\n MxFun.addCommand(\"Mx_AreaArc\", Mx_AreaArc);\r\n MxFun.addCommand(\"Mx_MeasuringAngle\", Mx_MeasuringAngle);\r\n}","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { MxFun, MxDbRect, DynamicInputType } from \"mxdraw\";\r\nimport {\r\n MxCpp, MxCADUiPrPoint, MxCADUiPrInt, McDbEntity,\r\n MxCADResbuf, McGePoint3d, MxCADUtility, McDbArc, McDbCircle,\r\n McObjectId, McGeVector3d, McDbPolyline, McCmColor, McDbLine,\r\n McDb, McDbCurve, MxCADUiPrEntity, McDbObject, MxCADUiPrDist, MxCADUiPrKeyWord,\r\n McDbText, MxCADUiPrString, McDbBlockTableRecord, McDbBlockReference, McGeMatrix3d,\r\n} from \"mxcad\";\r\n\r\n// 星形\r\nasync function Mx_DrawStart() {\r\n const starVert = new MxCADUiPrInt()\r\n starVert.setMessage(\"\\n请输入星形顶点数:\")\r\n const starNum = await starVert.go()\r\n if (!starNum) return;\r\n const getCenter = new MxCADUiPrPoint()\r\n getCenter.setMessage(\"\\n指定星形中心点:\")\r\n const center = await getCenter.go()\r\n if (!center) return;\r\n const getRadius1 = new MxCADUiPrDist();\r\n getRadius1.setBasePt(center);\r\n getRadius1.setMessage('请设置星形的内半径:')\r\n const rVal = await getRadius1.go();\r\n let radius1;\r\n if (!rVal) radius1 = 5;\r\n else radius1 = getRadius1.value();\r\n const circle1 = new McDbCircle(center.x, center.y, center.z, radius1)\r\n\r\n let pointsArr: McGePoint3d[] = []\r\n const getRadius2 = new MxCADUiPrDist();\r\n getRadius2.setBasePt(center);\r\n getRadius2.setMessage('\\n指定星形的外半径:')\r\n getRadius2.setUserDraw((pt, pw) => {\r\n let circle2 = new McDbCircle(center.x, center.y, center.z, pt.distanceTo(center));\r\n let length1 = circle1.getLength();\r\n let length2 = circle2.getLength();\r\n if (!length1 || !length2) return;\r\n let pointArr: McGePoint3d[] = [];\r\n for (let i = 0; i < starNum * 2; i++) {\r\n let point1 = circle1.getPointAtDist(length1.val / (starNum * 2) * i);\r\n if (!point1.ret) return\r\n let point2 = circle2.getPointAtDist(length2.val / (starNum * 2) * i);\r\n if (!point2.ret) return\r\n if (i % 2 === 0) {\r\n pointArr.push(point1.val)\r\n } else {\r\n pointArr.push(point2.val)\r\n }\r\n }\r\n let pl = new McDbPolyline();\r\n pointArr.forEach(pt => {\r\n pl.addVertexAt(pt)\r\n })\r\n pl.isClosed = true\r\n pw.drawMcDbEntity(pl)\r\n pointsArr = [...pointArr]\r\n })\r\n const rVal2 = await getRadius2.go()\r\n if (!rVal2) return;\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let pl = new McDbPolyline();\r\n pointsArr.forEach(pt => {\r\n pl.addVertexAt(pt)\r\n })\r\n pl.isClosed = true;\r\n mxcad.drawEntity(pl)\r\n}\r\n\r\n// 凹凸线\r\nasync function Mx_ConcavoVex() {\r\n let width = 5;\r\n const getWidth = new MxCADUiPrDist();\r\n getWidth.setMessage(\"\\n请输入凹凸线宽度<5>\");\r\n const widthVal = await getWidth.go()\r\n if (widthVal) {\r\n width = getWidth.value()\r\n }\r\n\r\n let height = 10;\r\n const getHeight = new MxCADUiPrDist();\r\n getHeight.setMessage(\"\\n请输入凹凸线高度<10>\");\r\n const heightVal = await getHeight.go();\r\n if (heightVal) {\r\n height = getHeight.value()\r\n }\r\n\r\n let getFirstPoint = new MxCADUiPrPoint();\r\n getFirstPoint.setMessage(\"请点击确定起始点\");\r\n let firstPoint: any = await getFirstPoint.go();\r\n if (!firstPoint) return\r\n let getSecondPoint = new MxCADUiPrPoint();\r\n getSecondPoint.setMessage(\"请点击确定终点\");\r\n getSecondPoint.setUserDraw((pt, pw) => {\r\n let line = new McDbLine(firstPoint.x, firstPoint.y, firstPoint.z, pt.x, pt.y, pt.z);\r\n pw.drawMcDbEntity(line)\r\n });\r\n let secondPoint: any = await getSecondPoint.go();\r\n if (!secondPoint) return\r\n\r\n /**\r\n * 根据绘制直线上下偏移,并在两条偏移线上取点\r\n * 最终用Pl线连接\r\n */\r\n let line = new McDbLine(firstPoint.x, firstPoint.y, firstPoint.z, secondPoint.x, secondPoint.y, secondPoint.z);\r\n let line_clone = line.clone() as McDbLine;\r\n let length = line.getLength();\r\n let midPt = line.getPointAtDist(length.val / 2).val;\r\n let angle = McGeVector3d.kYAxis.angleTo1(McGeVector3d.kXAxis)\r\n line_clone.rotate(midPt, angle);\r\n let offPt1 = line_clone.getPointAtDist(length.val / 2 + height / 2).val;\r\n let offPt2 = line_clone.getPointAtDist(length.val / 2 - height / 2).val;\r\n let objArr1 = line.offsetCurves(height / 2, offPt1);\r\n let objArr2 = line.offsetCurves(height / 2, offPt2);\r\n let mxcad = MxCpp.App.getCurrentMxCAD();\r\n if (objArr1.length() === 0 || objArr2.length() === 0) return;\r\n let line_1: McDbLine\r\n let line_2: McDbLine\r\n objArr1.forEach((obj: McDbObject) => {\r\n line_1 = obj.clone() as McDbLine;\r\n });\r\n objArr2.forEach((obj: McDbObject) => {\r\n line_2 = obj.clone() as McDbLine;\r\n });\r\n let ptArr: McGePoint3d[] = [];\r\n let num = length.val / width;\r\n for (let i = 0; i < num; i++) {\r\n if (i % 2 === 0) {\r\n ptArr.push(line_1.getPointAtDist(width * i).val)\r\n ptArr.push(line_2.getPointAtDist(width * i).val)\r\n } else {\r\n ptArr.push(line_2.getPointAtDist(width * i).val)\r\n ptArr.push(line_1.getPointAtDist(width * i).val)\r\n }\r\n }\r\n let pl = new McDbPolyline;\r\n ptArr.forEach(pt => {\r\n pl.addVertexAt(pt)\r\n })\r\n let endPt = line.getPointAtDist(width * (parseInt(num.toString()))).val;\r\n pl.setPointAt(0, line.startPoint);\r\n pl.setPointAt(ptArr.length - 1, endPt);\r\n mxcad.drawEntity(pl)\r\n\r\n}\r\n\r\n// 锯齿线\r\nasync function Mx_ZigzagLine() {\r\n let width = 5;\r\n const getWidth = new MxCADUiPrDist();\r\n getWidth.setMessage(\"\\n请输入锯齿线宽度<5>\");\r\n const widthVal = await getWidth.go();\r\n if (widthVal) {\r\n width = getWidth.value()\r\n }\r\n\r\n let height = 10;\r\n const getHeight = new MxCADUiPrDist();\r\n getHeight.setMessage(\"\\n请输入锯齿线高度<10>\");\r\n const heightVal = await getHeight.go();\r\n if (heightVal) {\r\n height = getHeight.value()\r\n }\r\n\r\n let getFirstPoint = new MxCADUiPrPoint();\r\n getFirstPoint.setMessage(\"请点击确定起始点\");\r\n let firstPoint: any = await getFirstPoint.go();\r\n if (!firstPoint) return\r\n let getSecondPoint = new MxCADUiPrPoint();\r\n getSecondPoint.setMessage(\"请点击确定终点\");\r\n getSecondPoint.setUserDraw((pt, pw) => {\r\n let line = new McDbLine(firstPoint.x, firstPoint.y, firstPoint.z, pt.x, pt.y, pt.z);\r\n pw.drawMcDbEntity(line)\r\n });\r\n let secondPoint: any = await getSecondPoint.go();\r\n if (!secondPoint) return\r\n let line = new McDbLine(firstPoint.x, firstPoint.y, firstPoint.z, secondPoint.x, secondPoint.y, secondPoint.z);\r\n let line_clone = line.clone() as McDbLine;\r\n let length = line.getLength();\r\n let midPt = line.getPointAtDist(length.val / 2).val;\r\n let angle = McGeVector3d.kYAxis.angleTo1(McGeVector3d.kXAxis)\r\n line_clone.rotate(midPt, angle);\r\n let offPt1 = line_clone.getPointAtDist(length.val / 2 + height / 2).val;\r\n let offPt2 = line_clone.getPointAtDist(length.val / 2 - height / 2).val;\r\n let objArr1 = line.offsetCurves(height / 2, offPt1);\r\n let objArr2 = line.offsetCurves(height / 2, offPt2);\r\n let mxcad = MxCpp.App.getCurrentMxCAD();\r\n if (objArr1.length() === 0 || objArr2.length() === 0) return;\r\n let line_1: McDbLine\r\n let line_2: McDbLine\r\n objArr1.forEach((obj: McDbObject) => {\r\n line_1 = obj.clone() as McDbLine;\r\n });\r\n objArr2.forEach((obj: McDbObject) => {\r\n line_2 = obj.clone() as McDbLine;\r\n });\r\n let ptArr: McGePoint3d[] = [];\r\n let num = length.val / (width / 2);\r\n for (let i = 0; i < num; i++) {\r\n if (i % 2 === 0) {\r\n ptArr.push(line_1.getPointAtDist(width / 2 * i).val)\r\n } else {\r\n ptArr.push(line_2.getPointAtDist(width / 2 * i).val)\r\n }\r\n }\r\n let pl = new McDbPolyline;\r\n ptArr.forEach(pt => {\r\n pl.addVertexAt(pt)\r\n })\r\n let endPt = line.getPointAtDist(width / 2 * (parseInt(num.toString()))).val;\r\n pl.setPointAt(0, line.startPoint);\r\n pl.setPointAt(ptArr.length - 1, endPt);\r\n mxcad.drawEntity(pl)\r\n}\r\n\r\n// 中心矩形\r\nasync function Mx_CenterRect() {\r\n let width = 5;\r\n const getWidth = new MxCADUiPrDist();\r\n getWidth.setMessage(\"\\n请输入矩形宽度<5>\");\r\n const widthVal = await getWidth.go();\r\n if (widthVal) {\r\n width = getWidth.value()\r\n }\r\n\r\n let height = 10;\r\n const getHeight = new MxCADUiPrDist();\r\n getHeight.setMessage(\"\\n请输入矩形高度<10>\");\r\n const heightVal = await getHeight.go();\r\n if (heightVal) {\r\n height = getHeight.value()\r\n }\r\n\r\n // 根据中心点计算矩形的四个顶点\r\n const getPoints = (centerPt:McGePoint3d) : McGePoint3d[]=>{\r\n const ptArr = [];\r\n ptArr.push(new McGePoint3d(centerPt.x + width / 2, centerPt.y + height / 2, centerPt.z)) ;\r\n ptArr.push(new McGePoint3d(centerPt.x - width / 2, centerPt.y + height / 2, centerPt.z)) ;\r\n ptArr.push(new McGePoint3d(centerPt.x - width / 2, centerPt.y - height / 2, centerPt.z)) ;\r\n ptArr.push(new McGePoint3d(centerPt.x + width / 2, centerPt.y - height / 2, centerPt.z)) ;\r\n return ptArr;\r\n }\r\n const getCenterPt = new MxCADUiPrPoint();\r\n getCenterPt.setMessage(\"请点击确定矩形中心\");\r\n getCenterPt.setUserDraw((pt, pw)=>{\r\n const ptArr = getPoints(pt);\r\n let pl = new McDbPolyline;\r\n ptArr.forEach(pt=>{\r\n pl.addVertexAt(pt)\r\n });\r\n pl.isClosed = true;\r\n pw.drawMcDbEntity(pl)\r\n })\r\n const centerPt = await getCenterPt.go();\r\n if (!centerPt) return;\r\n const ptArr = getPoints(centerPt);\r\n let pl = new McDbPolyline;\r\n ptArr.forEach(pt=>{\r\n pl.addVertexAt(pt)\r\n })\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n pl.isClosed = true;\r\n mxcad.drawEntity(pl);\r\n}\r\n\r\n// 折断线\r\nasync function Mx_BreakLine() {\r\n\r\n let width = 10;\r\n const getWidth = new MxCADUiPrDist();\r\n getWidth.setMessage(\"\\n请设置断口宽度<10>\");\r\n const widthVal = await getWidth.go();\r\n if (widthVal) {\r\n width = getWidth.value()\r\n }\r\n\r\n let dist = 5;\r\n const getDist = new MxCADUiPrDist();\r\n getDist.setMessage(\"\\n请设置两头延长长度<5>\");\r\n const distVal = await getDist.go();\r\n if (distVal) {\r\n dist = getDist.value()\r\n }\r\n\r\n console.log(dist)\r\n const getFristPoint = new MxCADUiPrPoint();\r\n getFristPoint.setMessage(\"请点击确定起点\");\r\n const pt1 = await getFristPoint.go();\r\n if (!pt1) return\r\n const getNextPoint = new MxCADUiPrPoint();\r\n getNextPoint.setMessage('请点击下一个点');\r\n getNextPoint.setUserDraw((pt, pw) => {\r\n const line = new McDbLine(pt1.x, pt1.y, pt1.z, pt.x, pt.y, pt.z);\r\n pw.drawMcDbEntity(line)\r\n })\r\n const pt2 = await getNextPoint.go();\r\n if (!pt2) return\r\n const line = new McDbLine(pt1.x, pt1.y, pt1.z, pt2.x, pt2.y, pt2.z);\r\n const midPt = line.getPointAtDist(line.getLength().val / 2).val;\r\n let vec = line.getFirstDeriv(midPt);\r\n let vex_clone = vec.val.clone()\r\n if (!vec.ret) return;\r\n vec.val.normalize().mult(width / 2);//转换向量长度 断口宽度\r\n vex_clone.normalize().mult(dist);//转换向量长度 两头延长长度\r\n pt1.subvec(vex_clone)\r\n pt2.addvec(vex_clone)\r\n let pt3 = midPt.clone();\r\n pt3.addvec(vec.val);\r\n let pt4 = midPt.clone();\r\n pt4.subvec(vec.val);\r\n let line1 = new McDbLine(midPt.x, midPt.y, midPt.z, pt3.x, pt3.y, pt3.z);\r\n let angle = McGeVector3d.kXAxis.angleTo1(McGeVector3d.kYAxis);\r\n let line1_clone = line1.clone() as McDbLine;\r\n line1_clone.rotate(line1.getPointAtDist(line1.getLength().val / 2).val, angle);\r\n let pt5 = line1_clone.getPointAtDist(2 * line1_clone.getLength().val).val\r\n let line2 = new McDbLine(midPt.x, midPt.y, midPt.z, pt4.x, pt4.y, pt4.z);\r\n let line2_clone = line2.clone() as McDbLine;\r\n line2_clone.rotate(line2_clone.getPointAtDist(line2_clone.getLength().val / 2).val, angle);\r\n let pt6 = line2_clone.getPointAtDist(2 * line2_clone.getLength().val).val\r\n const pl = new McDbPolyline();\r\n pl.addVertexAt(pt1);\r\n pl.addVertexAt(pt4);\r\n pl.addVertexAt(pt6);\r\n pl.addVertexAt(pt5);\r\n pl.addVertexAt(pt3);\r\n pl.addVertexAt(pt2);\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n mxcad.drawEntity(pl);\r\n}\r\n\r\n// 圆中心线\r\nasync function Mx_CCLine() {\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"CIRCLE\");\r\n let aryId = await MxCADUtility.userSelect(\"选择目标对象\", filter);\r\n if (aryId.length == 0) {\r\n return;\r\n };\r\n aryId.forEach(async (id) => {\r\n let event = (await id.getMcDbEntity()) as McDbCircle;\r\n let center = event.center;\r\n let radius = event.radius;\r\n let mxcad = MxCpp.App.getCurrentMxCAD();\r\n let line1 = new McDbLine(center.x + radius * 1.3, center.y, center.z, center.x - radius * 1.3, center.y, center.z);\r\n line1.trueColor = new McCmColor(255, 0, 0)\r\n let line2 = new McDbLine(center.x, center.y + radius * 1.3, center.z, center.x, center.y - radius * 1.3, center.z);\r\n line2.trueColor = new McCmColor(255, 0, 0);\r\n mxcad.drawEntity(line1)\r\n mxcad.drawEntity(line2)\r\n })\r\n}\r\n\r\n// 管道\r\nasync function Mx_Piping() {\r\n\r\n let diameter = 10\r\n const getDiameter = new MxCADUiPrDist();\r\n getDiameter.setMessage(\"\\n请输入管径<10>\");\r\n const diameterVal = await getDiameter.go();\r\n if (diameterVal) {\r\n diameter = getDiameter.value()\r\n }\r\n\r\n let outLen = 10\r\n const getOutLen = new MxCADUiPrDist();\r\n getOutLen.setMessage(\"\\n请输入长出管口长度<5>\");\r\n const outLenVal = await getOutLen.go();\r\n if (outLenVal) {\r\n outLen = getOutLen.value()\r\n }\r\n\r\n let getFristPoint = new MxCADUiPrPoint();\r\n getFristPoint.setMessage(\"请点击确定起点\");\r\n const fristPt = await getFristPoint.go();\r\n if (!fristPt) return;\r\n const getSecondPoint = new MxCADUiPrPoint();\r\n getSecondPoint.setMessage(\"请点击确定终点\");\r\n getSecondPoint.setUserDraw((pt, pw) => {\r\n const line = new McDbLine(fristPt.x, fristPt.y, fristPt.z, pt.x, pt.y, pt.z);\r\n pw.drawMcDbEntity(line)\r\n })\r\n const secondPt = await getSecondPoint.go();\r\n if (!secondPt) return\r\n\r\n // 上下偏移取线\r\n const line = new McDbLine(fristPt.x, fristPt.y, fristPt.z, secondPt.x, secondPt.y, secondPt.z);\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n let length = line.getLength().val;\r\n let startPt = line.getPointAtDist(length + outLen);\r\n let endPt = line.getPointAtDist(0 - outLen);\r\n let midPt = line.getPointAtDist(length / 2).val;\r\n let angle = McGeVector3d.kXAxis.angleTo1(McGeVector3d.kYAxis);\r\n let line_clone = line.clone() as McDbLine;\r\n line_clone.rotate(midPt, angle);\r\n let pt1 = line_clone.getPointAtDist(length / 2 + diameter / 2).val\r\n let pt2 = line_clone.getPointAtDist(length / 2 - diameter / 2).val\r\n line.offsetCurves(diameter / 2, pt1).forEach(e => {\r\n (e as McDbEntity).trueColor = new McCmColor(0, 255, 0)\r\n mxcad.drawEntity(e as McDbEntity)\r\n })\r\n line.offsetCurves(diameter / 2, pt2).forEach(e => {\r\n (e as McDbEntity).trueColor = new McCmColor(0, 255, 0)\r\n mxcad.drawEntity(e as McDbEntity)\r\n })\r\n\r\n // 设置中线的线型\r\n let lintype = mxcad.addLinetypeEx(\"TestMyLine\", '25,-5');\r\n if (!lintype.isValid()) return;\r\n line.linetypeId = lintype;\r\n line.endPoint = endPt.val;\r\n line.startPoint = startPt.val;\r\n line.trueColor = new McCmColor(255, 0, 0);\r\n mxcad.drawEntity(line);\r\n}\r\n\r\n// 剖管符\r\nasync function Mx_CutPipeline() {\r\n\r\n const getFirstPoint = new MxCADUiPrPoint();\r\n getFirstPoint.setMessage('指定剖管线起点');\r\n const pt1 = await getFirstPoint.go();\r\n if (!pt1) return\r\n const getNextPoint = new MxCADUiPrPoint();\r\n getNextPoint.setMessage('指定剖管线终点');\r\n getNextPoint.setUserDraw((pt, pw) => {\r\n let line = new McDbLine(pt1.x, pt1.y, pt1.z, pt.x, pt.y, pt.z);\r\n pw.drawMcDbEntity(line)\r\n })\r\n const pt2 = await getNextPoint.go();\r\n if (!pt2) return;\r\n const line = new McDbLine(pt1.x, pt1.y, pt1.z, pt2.x, pt2.y, pt2.z);\r\n const length = line.getLength().val;\r\n const dist = length / 8;\r\n const midPt = line.getPointAtDist(length / 2).val;\r\n const line_clone = line.clone() as McDbLine;\r\n line_clone.rotate(midPt, Math.PI / 2);\r\n const offPt1 = line_clone.getPointAtDist(length / 2 + dist).val;\r\n const offPt2 = line_clone.getPointAtDist(length / 2 - dist).val;\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n let line_1: McDbLine\r\n (line.clone() as McDbLine).offsetCurves(dist, offPt1).forEach(event => {\r\n line_1 = event as McDbLine;\r\n })//偏移距离,偏移点\r\n let line_2: any\r\n (line.clone() as McDbLine).offsetCurves(dist, offPt2).forEach(event => {\r\n line_2 = event as McDbLine;\r\n })//偏移距离,偏移点\r\n const pointArr1: McGePoint3d[] = [];\r\n const pointArr2: McGePoint3d[] = [];\r\n for (let i = 0; i < 4; i++) {\r\n if (i % 2 !== 0) {\r\n pointArr1.push(line_1.getPointAtDist(i * dist * 2).val)\r\n pointArr2.push(line_2.getPointAtDist(i * dist * 2).val)\r\n }\r\n }\r\n let objectId: McObjectId\r\n let arc1 = new McDbArc()\r\n arc1.computeArc(pt1.x, pt1.y, pointArr1[0].x, pointArr1[0].y, midPt.x, midPt.y);\r\n mxcad.drawEntity(arc1);\r\n let arc2 = new McDbArc()\r\n arc2.computeArc(pt1.x, pt1.y, pointArr2[0].x, pointArr2[0].y, midPt.x, midPt.y);\r\n mxcad.drawEntity(arc2)\r\n let arc3 = new McDbArc()\r\n arc3.computeArc(midPt.x, midPt.y, pointArr2[1].x, pointArr2[1].y, pt2.x, pt2.y);\r\n objectId = mxcad.drawEntity(arc3)\r\n let getKey = new MxCADUiPrKeyWord;\r\n while (true) {\r\n getKey.setMessage(\"选择剖管线圆弧方向\")\r\n getKey.setKeyWords(\"[左边(L)/右边(R)]\")\r\n const keyWord = await getKey.go();\r\n if (!keyWord) return;\r\n if (keyWord == 'L') {\r\n let arc3 = new McDbArc()\r\n objectId.erase();\r\n arc3.computeArc(midPt.x, midPt.y, pointArr2[1].x, pointArr2[1].y, pt2.x, pt2.y);\r\n objectId = mxcad.drawEntity(arc3)\r\n } else if (keyWord == 'R') {\r\n objectId.erase();\r\n let arc3 = new McDbArc()\r\n arc3.computeArc(midPt.x, midPt.y, pointArr1[1].x, pointArr1[1].y, pt2.x, pt2.y);\r\n objectId = mxcad.drawEntity(arc3);\r\n }\r\n }\r\n}\r\n\r\n// 焊缝线\r\nasync function Mx_WelLine() {\r\n // 选择模式\r\n const getKeyWord = new MxCADUiPrKeyWord();\r\n getKeyWord.setMessage(\"选择模式\");\r\n getKeyWord.setKeyWords(\"[直线焊缝(L)/弧线焊缝(A)]\");\r\n const keyWord = await getKeyWord.go();\r\n if (!keyWord) return;\r\n\r\n // 获取焊缝半径\r\n let radius = 5;\r\n const getRadius = new MxCADUiPrDist();\r\n getRadius.setMessage(\"\\n请输入焊缝半径<5>\");\r\n const radiusVal = await getRadius.go();\r\n if (radiusVal) {\r\n radius = getRadius.value()\r\n }\r\n\r\n // 根据选择模式绘制曲线\r\n let curve = new McDbCurve()\r\n if (keyWord === 'L') {\r\n let getFirstPoint = new MxCADUiPrPoint();\r\n getFirstPoint.setMessage(\"请点击确定起始点\");\r\n let firstPoint: any = await getFirstPoint.go();\r\n if (!firstPoint) return;\r\n let getSecondPoint = new MxCADUiPrPoint();\r\n getSecondPoint.setMessage(\"请点击确定终点\");\r\n getSecondPoint.setUserDraw((pt, pw) => {\r\n let line = new McDbLine(firstPoint.x, firstPoint.y, firstPoint.z, pt.x, pt.y, pt.z);\r\n pw.drawMcDbEntity(line)\r\n });\r\n let secondPoint = await getSecondPoint.go();\r\n if (!secondPoint) return\r\n curve = new McDbLine(firstPoint.x, firstPoint.y, firstPoint.z, secondPoint.x, secondPoint.y, secondPoint.z);\r\n } else if (keyWord === 'A') {\r\n let getFristPoint = new MxCADUiPrPoint();\r\n getFristPoint.setMessage('指定起点');\r\n let fristPoint = (await getFristPoint.go()) as McGePoint3d;\r\n if (!fristPoint) return\r\n let getSecondPoint = new MxCADUiPrPoint();\r\n getSecondPoint.setMessage('指定圆弧的第二个点')\r\n getSecondPoint.setUserDraw((pt, pw) => {\r\n pw.drawLine(fristPoint.toVector3(), pt.toVector3())\r\n })\r\n let secondPoint = await getSecondPoint.go();\r\n if (!secondPoint) return;\r\n let getThirdPoint = new MxCADUiPrPoint();\r\n getThirdPoint.setMessage('指定圆弧的端点')\r\n getThirdPoint.setUserDraw((pt, pw) => {\r\n let arc = new McDbArc();\r\n arc.computeArc(fristPoint.x, fristPoint.y, secondPoint.x, secondPoint.y, pt.x, pt.y);//三点画圆弧\r\n pw.drawMcDbEntity(arc)\r\n });\r\n let thirdPoint = await getThirdPoint.go();\r\n if (!thirdPoint) return\r\n let arc = new McDbArc();\r\n arc.computeArc(fristPoint.x, fristPoint.y, secondPoint.x, secondPoint.y, thirdPoint.x, thirdPoint.y);//三点画圆弧\r\n curve = arc;\r\n }\r\n\r\n // 将曲线转化为焊缝线\r\n const mxcad = MxCpp.App.getCurrentMxCAD()\r\n let length = curve.getLength().val;\r\n let num = length / radius;\r\n let arcArr: McDbCurve[] = [];\r\n let center: McGePoint3d;\r\n let r: number;\r\n if (keyWord === 'A') {\r\n center = (curve as McDbArc).center;\r\n r = (curve as McDbArc).radius;\r\n }\r\n for (let i = 0; i < num; i++) {\r\n let pt = curve.getPointAtDist(radius * i).val;\r\n let circle = new McDbCircle(pt.x, pt.y, pt.z, radius);\r\n const intPts = circle.IntersectWith(curve, McDb.Intersect.kExtendBoth);\r\n if (!intPts.length()) return;\r\n let ptArr: McGePoint3d[] = [];\r\n intPts.forEach(pt => { ptArr.push(pt) });\r\n // 如果是圆弧模式,取远离圆心的那一段圆弧;\r\n let mergeArr: McDbCurve[] = [];\r\n let res: McDbCurve[] = [];\r\n circle.splitCurves(ptArr).forEach((obj: McDbCurve, index: number) => {\r\n if (keyWord === 'L') {\r\n if (index % 2 !== 0) {\r\n arcArr.push(obj)\r\n }\r\n } else if (keyWord === 'A') {\r\n let c = obj.clone() as McDbCurve;\r\n let midPt = c.getPointAtDist(c.getLength().val / 2).val;\r\n if (midPt.distanceTo(center) > r) {\r\n mergeArr.push(c);\r\n } else {\r\n res.push(c)\r\n }\r\n }\r\n });\r\n if (mergeArr.length === 1 && keyWord === 'A') {\r\n arcArr.push(mergeArr[0]);\r\n } else if (keyWord === 'A' && mergeArr.length > 1) {\r\n res[0].rotate(circle.center, Math.PI);\r\n arcArr.push(res[0])\r\n }\r\n }\r\n arcArr.forEach((item, index) => {\r\n if (index === 0) {\r\n mxcad.drawEntity(item)\r\n } else {\r\n let intPts = item.IntersectWith(arcArr[index - 1], McDb.Intersect.kExtendThis);\r\n if (intPts.length() === 0) return;\r\n let arr: McGePoint3d[] = [];\r\n intPts.forEach(pt => { arr.push(pt) });\r\n let objArr = []\r\n item.splitCurves(arr).forEach((obj: McDbCurve, index: number) => {\r\n objArr.push({ obj_cur: obj, lenth: obj.getLength().val })\r\n })\r\n let lengthArr = objArr.map(item => item.lenth)\r\n mxcad.drawEntity(objArr[lengthArr.indexOf(Math.max(...lengthArr))].obj_cur)\r\n }\r\n })\r\n\r\n}\r\n\r\n// 中垂线\r\nasync function Mx_PerpLine() {\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"LINE,LWPOLYLINE\");\r\n let aryId = await MxCADUtility.userSelect(\"选择对象\", filter);\r\n if (aryId.length == 0) {\r\n return;\r\n };\r\n aryId.forEach(async (id) => {\r\n let event = await id.getMcDbEntity();\r\n if (!event) return\r\n let line = (event.clone()) as McDbLine\r\n let dist = line.getLength();\r\n let minPt = line.getPointAtDist(dist.val / 2).val;\r\n let vec = line.getFirstDeriv(minPt);\r\n if (!vec.ret) return;\r\n let angle1 = McGeVector3d.kYAxis.angleTo1(McGeVector3d.kXAxis);\r\n line.rotate(minPt, angle1)\r\n let mxcad = MxCpp.App.getCurrentMxCAD();\r\n line.trueColor = new McCmColor(255, 0, 0);\r\n mxcad.drawEntity(line)\r\n })\r\n}\r\n\r\n// 楼梯\r\nasync function Mx_StairLine() {\r\n let width = 25;\r\n const getWidth = new MxCADUiPrDist();\r\n getWidth.setMessage(\"请输入宽度<25>\");\r\n const widthval = await getWidth.go();\r\n if (widthval) {\r\n width = getWidth.value()\r\n }\r\n\r\n let height = 15;\r\n const getHeight = new MxCADUiPrDist();\r\n getHeight.setMessage(\"请输入高度<15>\");\r\n const heightVal = await getHeight.go();\r\n if (heightVal) {\r\n height = getHeight.value()\r\n }\r\n\r\n const getNum = new MxCADUiPrInt();\r\n getNum.setMessage(\"请输入楼梯级数<10>\");\r\n const num = await getNum.go() || 10;\r\n\r\n const l = Math.sqrt(width * width + height * height);\r\n const getFristPoint = new MxCADUiPrPoint();\r\n getFristPoint.setMessage(\"请点击确定起点\");\r\n const fristPt = await getFristPoint.go();\r\n if (!fristPt) return;\r\n const getSecondPoint = new MxCADUiPrPoint();\r\n getSecondPoint.setMessage(\"请点击确定终点\");\r\n getSecondPoint.setUserDraw((pt, pw) => {\r\n const line = new McDbLine(fristPt.x, fristPt.y, fristPt.z, pt.x, pt.y, pt.z);\r\n pw.drawMcDbEntity(line)\r\n })\r\n const secondPt = await getSecondPoint.go();\r\n if (!secondPt) return\r\n const line = new McDbLine(fristPt.x, fristPt.y, fristPt.z, secondPt.x, secondPt.y, secondPt.z);\r\n const pointArr: McGePoint3d[] = []\r\n for (let i = 0; i < num + 1; i++) {\r\n let pt = line.getPointAtDist(l * i).val;\r\n pointArr.push(pt);\r\n }\r\n const pl = new McDbPolyline;\r\n pointArr.forEach((pt, index) => {\r\n pl.addVertexAt(pt)\r\n if (index != pointArr.length - 1) {\r\n let nextPt = new McGePoint3d(pt.x, pointArr[index + 1].y, pt.z)\r\n pl.addVertexAt(nextPt)\r\n }\r\n })\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n mxcad.drawEntity(pl)\r\n}\r\n\r\n// 实心圆\r\nasync function Mx_SolidCircle() {\r\n const getCenter = new MxCADUiPrPoint();\r\n getCenter.setMessage('请确定圆心位置\\n');\r\n const center = await getCenter.go();\r\n if (!center) return;\r\n const getRadius = new MxCADUiPrDist();\r\n getRadius.setBasePt(center);\r\n getRadius.setMessage('请输入圆半径');\r\n getRadius.setUserDraw((pt, pw) => {\r\n const r = pt.distanceTo(center);\r\n const circle = new McDbCircle();\r\n circle.center = center;\r\n circle.radius = r;\r\n pw.drawMcDbEntity(circle)\r\n })\r\n const radiusVal = await getRadius.go();\r\n if (!radiusVal) return;\r\n const radius = getRadius.value();\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n mxcad.pathCircle(center.x, center.y, radius);\r\n mxcad.drawPathToHatch();\r\n}\r\n\r\n// 保温棉\r\nasync function Mx_CottonInsulation() {\r\n let width = 5;\r\n const getWidth = new MxCADUiPrDist();\r\n getWidth.setMessage(\"\\n请输入保温棉宽度<5>\");\r\n const widthVal = await getWidth.go();\r\n if (widthVal) {\r\n width = getWidth.value()\r\n }\r\n\r\n let height = 10;\r\n const getHeight = new MxCADUiPrDist();\r\n getHeight.setMessage(\"\\n请输入保温棉高度<10>\");\r\n const heightVal = await getHeight.go();\r\n if (heightVal) {\r\n height = getHeight.value()\r\n }\r\n\r\n const getFristPoint = new MxCADUiPrPoint();\r\n getFristPoint.setMessage(\"请点击确定起点\");\r\n const fristPt = await getFristPoint.go();\r\n if (!fristPt) return\r\n const getNextPoint = new MxCADUiPrPoint();\r\n getNextPoint.setMessage('请点击下一个点');\r\n getNextPoint.setUserDraw((pt, pw) => {\r\n const line = new McDbLine(fristPt.x, fristPt.y, fristPt.z, pt.x, pt.y, pt.z);\r\n pw.drawMcDbEntity(line)\r\n })\r\n const nextPt = await getNextPoint.go();\r\n if (!nextPt) return\r\n const line = new McDbLine(fristPt.x, fristPt.y, fristPt.z, nextPt.x, nextPt.y, nextPt.z);\r\n if (fristPt.y < nextPt.y) {\r\n line.startPoint = new McGePoint3d(nextPt.x, nextPt.y, nextPt.z);\r\n line.endPoint = new McGePoint3d(fristPt.x, fristPt.y, fristPt.z);;\r\n }\r\n const midPt = line.getPointAtDist(line.getLength().val / 2).val;\r\n const line_clone = line.clone() as McDbLine;\r\n line_clone.rotate(midPt, Math.PI / 2);\r\n const pt1 = line_clone.getPointAtDist(line.getLength().val / 2 + height / 2).val;\r\n const pt2 = line_clone.getPointAtDist(line.getLength().val / 2 - height / 2).val;\r\n let line1: any;\r\n let line2: any;\r\n line.offsetCurves(height / 2, pt1).forEach(e => {\r\n line1 = e;\r\n })\r\n line.offsetCurves(height / 2, pt2).forEach(e => {\r\n line2 = e;\r\n })\r\n let num = line.getLength().val / width * 2;\r\n let ptArr: McGePoint3d[] = [];\r\n let center1: McGePoint3d[] = [];\r\n let center2: McGePoint3d[] = [];\r\n for (let i = 0; i < num; i++) {\r\n if (i % 2 == 0) {\r\n let pt = line2.getPointAtDist(i * (width / 2)).val;\r\n let center = line1.getPointAtDist(i * (width / 2)).val;\r\n center1.push(center);\r\n ptArr.push(pt);\r\n } else {\r\n let pt = line1.getPointAtDist(i * (width / 2)).val;\r\n let center = line2.getPointAtDist(i * (width / 2)).val;\r\n center2.push(center);\r\n ptArr.push(pt);\r\n }\r\n };\r\n const pl = new McDbPolyline();\r\n ptArr.forEach(pt => {\r\n pl.addVertexAt(pt)\r\n })\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n mxcad.drawEntity(pl);\r\n center1.forEach(pt => {\r\n const arc = new McDbArc();\r\n arc.center = pt;\r\n arc.radius = width / 2;\r\n arc.startAngle = -(new McGeVector3d(line.endPoint.x - line.startPoint.x, line.endPoint.y - line.startPoint.y)).angleTo1(McGeVector3d.kXAxis);\r\n arc.endAngle = (new McGeVector3d(line.startPoint.x - line.endPoint.x, line.startPoint.y - line.endPoint.y)).angleTo1(McGeVector3d.kXAxis);\r\n mxcad.drawEntity(arc);\r\n })\r\n center2.forEach(pt => {\r\n const arc = new McDbArc();\r\n arc.center = pt;\r\n arc.radius = width / 2;\r\n arc.startAngle = (new McGeVector3d(line.startPoint.x - line.endPoint.x, line.startPoint.y - line.endPoint.y)).angleTo1(McGeVector3d.kXAxis);\r\n arc.endAngle = -(new McGeVector3d(line.endPoint.x - line.startPoint.x, line.endPoint.y - line.startPoint.y)).angleTo1(McGeVector3d.kXAxis);\r\n mxcad.drawEntity(arc)\r\n })\r\n}\r\n\r\n// 中心线\r\nasync function Mx_CenterLine() {\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"LINE\");\r\n const obj1 = new MxCADUiPrEntity();\r\n obj1.setFilter(filter);\r\n obj1.setMessage(\"请选择第一条线\");\r\n const line1_id = await obj1.go();\r\n if (!line1_id.id) return;\r\n const line1 = line1_id.getMcDbEntity() as McDbLine;\r\n const line1_clone = new McDbLine(line1.startPoint, line1.endPoint)\r\n\r\n\r\n const obj2 = new MxCADUiPrEntity();\r\n obj2.setFilter(filter);\r\n obj2.setMessage(\"请选择第二条线\");\r\n const line2_id = await obj2.go();\r\n if (!line2_id.id) return;\r\n const line2 = line2_id.getMcDbEntity() as McDbLine;\r\n const line2_clone = new McDbLine(line2.startPoint, line2.endPoint)\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n let points = line1.IntersectWith(line2_clone, McDb.Intersect.kExtendBoth);\r\n console.log(points.length())\r\n if (points.length() === 0) {\r\n /**\r\n * 若两条线段平行,选最短的一条线段旋转90度与另一条直线相交\r\n * 得到两条直线间距离dist\r\n * 最短的直线偏移 1/2dist\r\n */\r\n const l1 = line1.getLength().val > line2.getLength().val ? line2.clone() as McDbLine : line1.clone() as McDbLine;\r\n const l2 = line1.getLength().val > line2.getLength().val ? line1_clone : line2_clone;\r\n const l_clone = l1.clone() as McDbLine;\r\n const midPt = l1.getPointAtDist(l1.getLength().val / 2).val\r\n l1.rotate(midPt, Math.PI / 2);\r\n points = l1.IntersectWith(l2, McDb.Intersect.kExtendBoth);\r\n if (!points.length()) return;\r\n // 偏移距离\r\n const offDist = points.at(0).distanceTo(midPt) / 2;\r\n l_clone.offsetCurves(offDist, points.at(0)).forEach((obj: McDbEntity) => {\r\n obj.trueColor = new McCmColor(255, 0, 0);\r\n mxcad.drawEntity(obj);\r\n })\r\n } else {\r\n // 若两条线段相交,中心线即为两条直线的角平分线\r\n /**\r\n * 求两直线交点,短直线长为圆半径画圆\r\n * 若两条直线已经相交,取长度长的那一边做角平分线\r\n */\r\n const circle = new McDbCircle();\r\n let radius: number;\r\n let event: McDbLine;\r\n let dist_1 = line1_clone.endPoint.distanceTo(points.at(0));\r\n let dist_2 = line1_clone.startPoint.distanceTo(points.at(0));\r\n if (dist_1 !== 0 && dist_2 !== 0) {\r\n if (dist_1 > dist_2) {\r\n line1_clone.startPoint = points.at(0);\r\n } else {\r\n line1_clone.endPoint = points.at(0);\r\n }\r\n }\r\n let dist_3 = line2_clone.endPoint.distanceTo(points.at(0));\r\n let dist_4 = line2_clone.startPoint.distanceTo(points.at(0));\r\n if (dist_3 !== 0 && dist_4 !== 0) {\r\n if (dist_4 > dist_3) {\r\n line2_clone.startPoint = points.at(0);\r\n } else {\r\n line2_clone.endPoint = points.at(0);\r\n }\r\n }\r\n if (line1_clone.getLength().val > line2_clone.getLength().val) {\r\n radius = line2_clone.getLength().val;\r\n event = new McDbLine(line2.startPoint, line2_clone.endPoint);\r\n } else {\r\n radius = line1.getLength().val;\r\n event = new McDbLine(line1_clone.startPoint, line1_clone.endPoint);\r\n }\r\n\r\n circle.center = points.at(0);\r\n circle.radius = radius;\r\n\r\n /**\r\n * 圆与直线交点形成的圆弧中点与直线交点即为角平分线\r\n */\r\n let pt1 = circle.IntersectWith(line1_clone, McDb.Intersect.kOnBothOperands);\r\n let pt2 = circle.IntersectWith(line2_clone, McDb.Intersect.kOnBothOperands);\r\n if (!pt1.length() || !pt2.length()) return;\r\n let startAngle = pt1.at(0).sub(points.at(0)).angleTo2(McGeVector3d.kXAxis)\r\n let endAngle = pt2.at(0).sub(points.at(0)).angleTo2(McGeVector3d.kXAxis)\r\n let arc = new McDbArc();\r\n arc.center = points.at(0);\r\n arc.radius = radius;\r\n arc.startAngle = startAngle;\r\n arc.endAngle = endAngle;\r\n const pt = arc.getPointAtDist(arc.getLength().val / 2).val\r\n const centerLine = new McDbLine(points.at(0), pt);\r\n\r\n const getPt = new MxCADUiPrPoint();\r\n getPt.setMessage(\"请选择终点\");\r\n getPt.setUserDraw((pt, pw) => {\r\n let p = centerLine.getClosestPointTo(pt, true).val;\r\n let _clone = centerLine.clone() as McDbLine;\r\n _clone.endPoint = p;\r\n pw.drawMcDbEntity(_clone)\r\n });\r\n const point = await getPt.go();\r\n if (!point) return;\r\n centerLine.endPoint = centerLine.getClosestPointTo(point, true).val;\r\n centerLine.trueColor = new McCmColor(255, 0, 0);\r\n mxcad.drawEntity(centerLine)\r\n }\r\n}\r\n\r\n// 开洞\r\n/**\r\n * 选中矩形\r\n * 将离鼠标点设为最近的顶点index\r\n */\r\nasync function Mx_DoHole() {\r\n // 获取目标矩形\r\n let filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"LWPOLYLINE\");\r\n const getObj = new MxCADUiPrEntity();\r\n getObj.setFilter(filter);\r\n getObj.setMessage(\"请选择目标矩形\");\r\n const rect_id = await getObj.go();\r\n if (!rect_id.id) return;\r\n\r\n // 遍历回去顶点\r\n const rect = rect_id.getMcDbEntity() as McDbPolyline;\r\n let pointsArr: McGePoint3d[] = []\r\n const num: number = rect.numVerts()\r\n for (let i = 0; i < num; i++) {\r\n pointsArr.push(rect.getPointAt(i).val)\r\n }\r\n\r\n // 获取最近顶点\r\n const getPoint = new MxCADUiPrPoint()\r\n let index: number;\r\n getPoint.setUserDraw((pt, pw) => {\r\n let disArr: number[] = []\r\n pointsArr.forEach(point => {\r\n disArr.push(point.distanceTo(pt))\r\n })\r\n index = disArr.findIndex(value => value === Math.min(...disArr))\r\n let obj_clone = rect.clone() as McDbPolyline\r\n obj_clone.setPointAt(index, pt)\r\n pw.drawMcDbEntity(obj_clone)\r\n })\r\n const point = await getPoint.go()\r\n if (!point) return\r\n let obj_clone = rect.clone() as McDbPolyline\r\n obj_clone.setPointAt(index, point)\r\n MxCpp.getCurrentMxCAD().drawEntity(obj_clone);\r\n}\r\n\r\n// 指北针\r\nasync function Mx_Compass() {\r\n const getCenter = new MxCADUiPrPoint();\r\n getCenter.setMessage('设置指北针中心点');\r\n const center = await getCenter.go();\r\n if (!center) return;\r\n\r\n // 获取指北针半径\r\n const getRadius = new MxCADUiPrDist();\r\n getRadius.setMessage('设置指北针半径');\r\n getRadius.setBasePt(center);\r\n getRadius.setUserDraw((pt, pw) => {\r\n const r = pt.distanceTo(center);\r\n pw.drawCircle(center.toVector3(), r);\r\n })\r\n const radiusVal = await getRadius.go();\r\n if (!radiusVal) return;\r\n const radius = getRadius.value();\r\n\r\n // 圆盘\r\n const mxcad = MxCpp.App.getCurrentMxCAD();\r\n const cricle = new McDbCircle();\r\n cricle.trueColor = new McCmColor(0, 255, 0)\r\n cricle.center = center;\r\n cricle.radius = radius;\r\n mxcad.drawEntity(cricle);\r\n\r\n // 指针\r\n const pt1 = new McGePoint3d(center.x, center.y + radius);\r\n const pt2 = new McGePoint3d(center.x, center.y - radius);\r\n const line = new McDbLine();\r\n line.startPoint = pt1;\r\n line.endPoint = pt2;\r\n const line_clone1 = line.clone() as McDbLine;\r\n line_clone1.rotate(pt1, Math.PI / 30);\r\n const line_clone2 = line.clone() as McDbLine;\r\n line_clone2.rotate(pt1, -Math.PI / 30);\r\n let pt3: McGePoint3d;\r\n let pt4: McGePoint3d;\r\n line_clone1.IntersectWith(cricle, McDb.Intersect.kOnBothOperands).forEach(pt => {\r\n if (pt.x !== pt1.x && pt.y !== pt1.y) {\r\n pt3 = pt\r\n }\r\n })\r\n line_clone2.IntersectWith(cricle, McDb.Intersect.kOnBothOperands).forEach(pt => {\r\n if (pt.x !== pt1.x && pt.y !== pt1.y) {\r\n pt4 = pt\r\n }\r\n })\r\n let dBulge = MxCADUtility.calcBulge(pt3, pt2, pt4)\r\n mxcad.pathMoveToEx(pt3.x, pt3.y, 0, 0, dBulge.val);\r\n //路径的一下个点\r\n mxcad.pathLineTo(pt4.x, pt4.y);\r\n //路径的一下个点\r\n mxcad.pathLineTo(pt1.x, pt1.y);\r\n //路径的一下个点\r\n mxcad.pathLineTo(pt3.x, pt3.y);\r\n mxcad.drawColor = new McCmColor(25, 255, 0);\r\n //把路径变成一个填充\r\n mxcad.drawPathToHatch(1);\r\n const text = new McDbText();\r\n text.height = radius / 3;\r\n text.position = new McGePoint3d(center.x, center.y + radius * 1.2);\r\n text.alignmentPoint = text.position;\r\n text.textString = 'N';\r\n text.horizontalMode = McDb.TextHorzMode.kTextMid;\r\n text.trueColor = new McCmColor(25, 255, 0);\r\n mxcad.drawEntity(text)\r\n}\r\n\r\n// 提示框\r\nasync function Mx_MassegeBox() {\r\n\r\n // 选择提示框指向\r\n const getType = new MxCADUiPrKeyWord();\r\n getType.setMessage('选择提示框指向');\r\n getType.setKeyWords('[向上(U)/向下(D)]');\r\n const keyWord = await getType.go();\r\n if (!keyWord) return;\r\n\r\n // 绘制方框\r\n const getPoint = new MxCADUiPrPoint();\r\n let drawColor = MxCpp.getCurrentMxCAD().getCurrentDatabaseDrawColor();\r\n getPoint.setMessage(\"\\n指定消息框第一点:\");\r\n let pt1 = await getPoint.go();\r\n if (!pt1) {\r\n return;\r\n }\r\n let mxcad = MxCpp.getCurrentMxCAD();\r\n let rect = new MxDbRect();\r\n rect.pt1 = pt1.toVector3();\r\n // 在点取第二点时,设置动态绘制矩形\r\n getPoint.setUserDraw((currentPoint: McGePoint3d, worldDraw) => {\r\n rect.pt2 = currentPoint.toVector3();\r\n rect.setColor(drawColor);\r\n worldDraw.drawCustomEntity(rect);\r\n });\r\n getPoint.setMessage(\"\\n指定消息框第二点:\");\r\n getPoint.setDynamicInputType(DynamicInputType.kXYCoordInput);\r\n let pt2 = await getPoint.go();\r\n if (!pt2) {\r\n return;\r\n }\r\n rect.pt2 = pt2.toVector3();\r\n\r\n // 根据绘制方向确定指向点\r\n let pl = new McDbPolyline();\r\n pl.isClosed = true;\r\n let line: McDbLine;\r\n if ((pt1.y > pt2.y && keyWord === 'U') || (pt1.y < pt2.y && keyWord === 'D')) {\r\n line = new McDbLine(pt1, new McGePoint3d(pt2.x, pt1.y));\r\n pl.addVertexAt(new McGePoint3d(pt2.x, pt1.y));\r\n pl.addVertexAt(pt2);\r\n pl.addVertexAt(new McGePoint3d(pt1.x, pt2.y));\r\n pl.addVertexAt(pt1);\r\n } else if ((pt1.y > pt2.y && keyWord === 'D') || (pt1.y < pt2.y && keyWord === 'U')) {\r\n line = new McDbLine(pt2, new McGePoint3d(pt1.x, pt2.y));\r\n pl.addVertexAt(new McGePoint3d(pt1.x, pt2.y));\r\n pl.addVertexAt(pt1);\r\n pl.addVertexAt(new McGePoint3d(pt2.x, pt1.y));\r\n pl.addVertexAt(pt2);\r\n }\r\n const dist = pt1.distanceTo(pt2) / 6 //指向缺口,可自定义\r\n const p1 = line.getPointAtDist(dist).val;\r\n const p2 = line.getPointAtDist(line.getLength().val - dist).val;\r\n line.startPoint = p1;\r\n line.endPoint = p2;\r\n const getEndPoint = new MxCADUiPrPoint();\r\n getEndPoint.setMessage(\"\\n设置消息框指向:\");\r\n\r\n let pt3, pt4: McGePoint3d\r\n getEndPoint.setUserDraw((pt, pw) => {\r\n const closePt = line.getClosestPointTo(pt, false).val;\r\n let vec = pl.getFirstDeriv(closePt);\r\n if (!vec.ret) return;\r\n vec.val.normalize().mult(dist / 4);\r\n pt3 = closePt.clone();\r\n pt3.addvec(vec.val);\r\n pt4 = closePt.clone();\r\n pt4.subvec(vec.val);\r\n let _clone = pl.clone() as McDbPolyline;\r\n _clone.addVertexAt(pt4);\r\n _clone.addVertexAt(pt);\r\n _clone.addVertexAt(pt3);\r\n pw.drawMcDbEntity(_clone)\r\n })\r\n let endPt = await getEndPoint.go();\r\n if (!endPt) return;\r\n pl.addVertexAt(pt4);\r\n pl.addVertexAt(endPt);\r\n pl.addVertexAt(pt3);\r\n mxcad.drawEntity(pl);\r\n}\r\n\r\n// 基准符\r\nasync function Mx_DatumSymbol() {\r\n\r\n const getString = new MxCADUiPrString;\r\n getString.setMessage(\"请设置基准符文字\");\r\n const str = await getString.go();\r\n if (!str) return;\r\n\r\n const getDist = new MxCADUiPrDist();\r\n getDist.setMessage(\"请设置文字高度\");\r\n const heightVal = await getDist.go();\r\n if (!heightVal) return;\r\n const height = getDist.value();\r\n\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"请设置基准符位置\");\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n\r\n let blkRef = new McDbBlockReference();\r\n\r\n getPoint.setUserDraw((pt, pw) => {\r\n // 基线\r\n const baseLine = new McDbPolyline();\r\n baseLine.addVertexAt(new McGePoint3d(pt.x + height, pt.y, 0), 0, 2, 2);\r\n baseLine.addVertexAt(new McGePoint3d(pt.x - height, pt.y, 0));\r\n // 竖线\r\n const line = new McDbLine(pt, new McGePoint3d(pt.x, pt.y + height * (8 / 7), 0));\r\n const circle = new McDbCircle();\r\n circle.center = new McGePoint3d(pt.x, pt.y + height * (15 / 7), 0);\r\n circle.radius = height;\r\n // 文字\r\n const text = new McDbText();\r\n text.textString = str;\r\n text.height = height;\r\n text.position = text.alignmentPoint = new McGePoint3d(pt.x, pt.y + height * (25 / 14), 0);\r\n text.horizontalMode = McDb.TextHorzMode.kTextMid;\r\n // 整装成块\r\n let blkTable = mxcad.getDatabase().getBlockTable();\r\n let blkRecId = blkTable.add(new McDbBlockTableRecord());//图块记录\r\n let blkTableRecord: McDbBlockTableRecord = blkRecId.getMcDbBlockTableRecord() as any;\r\n if (blkTableRecord == null) return;\r\n\r\n blkTableRecord.appendAcDbEntity(baseLine);\r\n blkTableRecord.appendAcDbEntity(line);\r\n blkTableRecord.appendAcDbEntity(circle);\r\n blkTableRecord.appendAcDbEntity(text);\r\n blkTableRecord.name = '基准符'\r\n\r\n blkTableRecord.origin = pt;\r\n blkRef.blockTableRecordId = blkRecId;\r\n blkRef.position = pt;\r\n pw.drawMcDbEntity(blkRef)\r\n })\r\n const pt = await getPoint.go();\r\n if (!pt) return;\r\n mxcad.drawEntity(blkRef);\r\n}\r\n\r\n// 同心圆\r\nasync function Mx_ConcentricCircles() {\r\n const getPoint = new MxCADUiPrPoint();\r\n getPoint.setMessage(\"请设置圆心\");\r\n let pt = await getPoint.go();\r\n if (!pt) return;\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n for (let i = 1; i < 4; i++) {\r\n const circle = new McDbCircle();\r\n circle.center = pt;\r\n circle.radius = 10 * i;\r\n mxcad.drawEntity(circle);\r\n }\r\n}\r\n\r\n// 齿轮\r\nasync function Mx_Gear() {\r\n // 设置齿轮圆心\r\n const getCenter = new MxCADUiPrPoint();\r\n getCenter.setMessage('请设置齿轮圆心');\r\n const center = await getCenter.go();\r\n if (!center) return;\r\n\r\n // 设置齿轮半径\r\n const getRadius = new MxCADUiPrDist();\r\n getRadius.setBasePt(center);\r\n getRadius.setMessage('请设置齿轮半径');\r\n getRadius.setUserDraw((pt, pw) => {\r\n const circle = new McDbCircle();\r\n circle.center = center;\r\n circle.radius = pt.distanceTo(center);\r\n pw.drawMcDbEntity(circle);\r\n });\r\n const val = await getRadius.go();\r\n let radius: number = 10;\r\n if (val) {\r\n radius = getRadius.value();\r\n };\r\n\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const circle = new McDbCircle();\r\n circle.center = center;\r\n circle.radius = radius;\r\n\r\n // 根据齿轮数阵列锯齿\r\n const gearNum = 30;//设置齿轮数\r\n const dist = circle.getLength().val / (gearNum * 2);\r\n const midPt = new McGePoint3d(center.x, center.y + radius, center.z);\r\n const l = circle.getDistAtPoint(midPt).val;\r\n const pt1 = circle.getPointAtDist(l + dist / 2).val;\r\n const pt2 = circle.getPointAtDist(l - dist / 2).val;\r\n // 基础锯齿\r\n const entArr: McDbEntity[] = [];\r\n const pl = new McDbPolyline();\r\n pl.addVertexAt(pt1);\r\n pl.addVertexAt(new McGePoint3d(pt1.x, pt1.y + 5, pt1.z));\r\n pl.addVertexAt(new McGePoint3d(pt2.x, pt2.y + 5, pt2.z));\r\n pl.addVertexAt(pt2);\r\n entArr.push(pl);\r\n // 平移旋转\r\n for (let i = 0; i < gearNum * 2; i++) {\r\n let orderEvent_clone = pl.clone() as McDbEntity;\r\n let evePt = circle.getPointAtDist(l + i * dist);\r\n if (!evePt.ret) return;\r\n let v = evePt.val.sub(midPt)//平移距离和方向\r\n let matrix = new McGeMatrix3d();\r\n matrix.setToTranslation(v);\r\n orderEvent_clone.transformBy(matrix);\r\n let tangentV = circle.getFirstDeriv(evePt.val).val;//曲线阵列点切向量\r\n let verticalV = tangentV.rotateBy(McGeVector3d.kYAxis.angleTo1(McGeVector3d.kXAxis));//阵列点垂直向量\r\n let angle = verticalV.negate().angleTo2(McGeVector3d.kYAxis, McGeVector3d.kNegateZAxis);//旋转角度\r\n orderEvent_clone.rotate(evePt.val, angle);\r\n entArr.push(orderEvent_clone)\r\n }\r\n\r\n // 绘制阵列后的锯齿\r\n const pointArr: McGePoint3d[] = [];\r\n entArr.forEach((ent, index) => {\r\n if (index % 2 !== 0) {\r\n const pts = ent.IntersectWith(circle, McDb.Intersect.kOnBothOperands);\r\n pts.forEach((pt) => {\r\n pointArr.push(pt)\r\n })\r\n mxcad.drawEntity(ent)\r\n }\r\n })\r\n\r\n // 根据锯齿点切割\r\n const arc = new McDbArc();\r\n const p = new McGePoint3d(center.x, center.y - radius, center.z)\r\n arc.computeArc(pt1.x, pt1.y, p.x, p.y, pt2.x, pt2.y);\r\n arc.splitCurves(pointArr).forEach((obj, index) => {\r\n if (index % 2 !== 0) {\r\n mxcad.drawEntity(obj as McDbEntity)\r\n }\r\n })\r\n}\r\n\r\n// 块中心线\r\nasync function Mx_BlkCenterLine() {\r\n // 设置过滤器\r\n const filter = new MxCADResbuf();\r\n filter.AddMcDbEntityTypes(\"INSERT\");\r\n // 选择目标块\r\n const getEvent = new MxCADUiPrEntity();\r\n getEvent.setFilter(filter);\r\n getEvent.setMessage('请选择目标块')\r\n const entId = await getEvent.go();\r\n if (!entId.id) return;\r\n const ent = entId.getMcDbEntity() as McDbBlockReference;\r\n const ret = ent.getBoundingBox();\r\n const line = new McDbLine(ret.minPt, ret.maxPt);\r\n const midPt = line.getPointAtDist(line.getLength().val / 2).val;\r\n // 设置中心线长度\r\n const getDist = new MxCADUiPrDist();\r\n let dist = 10;\r\n getDist.setMessage(\"\\n请设置中心线长度10>\");\r\n getDist.setBasePt(midPt);\r\n getDist.setUserDraw((pt, pw) => {\r\n const d = pt.distanceTo(midPt);\r\n const pt1 = midPt.clone().addvec(McGeVector3d.kXAxis.normalize().mult(d));\r\n const pt2 = midPt.clone().addvec(McGeVector3d.kXAxis.normalize().mult(d).negate());\r\n const pt3 = midPt.clone().addvec(McGeVector3d.kYAxis.normalize().mult(d));\r\n const pt4 = midPt.clone().addvec(McGeVector3d.kYAxis.normalize().mult(d).negate());\r\n const line1 = new McDbLine(pt1, pt2);\r\n const line2 = new McDbLine(pt3, pt4);\r\n pw.drawMcDbEntity(line1);\r\n pw.drawMcDbEntity(line2)\r\n })\r\n const val = await getDist.go();\r\n if (val) {\r\n dist = getDist.value()\r\n };\r\n // 绘制块中心线\r\n const mxcad = MxCpp.getCurrentMxCAD();\r\n const pt1 = midPt.clone().addvec(McGeVector3d.kXAxis.normalize().mult(dist));\r\n const pt2 = midPt.clone().addvec(McGeVector3d.kXAxis.normalize().mult(dist).negate());\r\n const pt3 = midPt.clone().addvec(McGeVector3d.kYAxis.normalize().mult(dist));\r\n const pt4 = midPt.clone().addvec(McGeVector3d.kYAxis.normalize().mult(dist).negate());\r\n const line1 = new McDbLine(pt1, pt2);\r\n const line2 = new McDbLine(pt3, pt4);\r\n mxcad.drawEntity(line1);\r\n mxcad.drawEntity(line2)\r\n}\r\n\r\nexport function init() {\r\n\r\n MxFun.addCommand(\"Mx_DrawStart\", Mx_DrawStart);\r\n MxFun.addCommand(\"Mx_ConcavoVex\", Mx_ConcavoVex);\r\n MxFun.addCommand(\"Mx_ZigzagLine\", Mx_ZigzagLine);\r\n MxFun.addCommand(\"Mx_CenterRect\", Mx_CenterRect);\r\n MxFun.addCommand(\"Mx_BreakLine\", Mx_BreakLine);\r\n MxFun.addCommand(\"Mx_CCLine\", Mx_CCLine);\r\n MxFun.addCommand(\"Mx_Piping\", Mx_Piping);\r\n MxFun.addCommand(\"Mx_CutPipeline\", Mx_CutPipeline);\r\n MxFun.addCommand(\"Mx_WelLine\", Mx_WelLine);\r\n MxFun.addCommand(\"Mx_PerpLine\", Mx_PerpLine);\r\n MxFun.addCommand(\"Mx_StairLine\", Mx_StairLine);\r\n MxFun.addCommand(\"Mx_SolidCircle\", Mx_SolidCircle);\r\n MxFun.addCommand(\"Mx_CottonInsulation\", Mx_CottonInsulation);\r\n MxFun.addCommand(\"Mx_CenterLine\", Mx_CenterLine);\r\n MxFun.addCommand(\"Mx_DoHole\", Mx_DoHole);\r\n MxFun.addCommand(\"Mx_Compass\", Mx_Compass);\r\n MxFun.addCommand(\"Mx_MassegeBox\", Mx_MassegeBox);\r\n MxFun.addCommand(\"Mx_DatumSymbol\", Mx_DatumSymbol);\r\n MxFun.addCommand(\"Mx_ConcentricCircles\", Mx_ConcentricCircles);\r\n MxFun.addCommand(\"Mx_Gear\", Mx_Gear);\r\n MxFun.addCommand(\"Mx_BlkCenterLine\", Mx_BlkCenterLine);\r\n}\r\n","/* Mapbox GL JS is Copyright © 2020 Mapbox and subject to the Mapbox Terms of Service ((https://www.mapbox.com/legal/tos/). */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.mapboxgl = factory());\n}(this, (function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, mapboxgl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\nif (!shared) {\n shared = chunk;\n} else if (!worker) {\n worker = chunk;\n} else {\n var workerBundleString = \"self.onerror = function() { console.error('An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling'); }; var sharedChunk = {}; (\" + shared + \")(sharedChunk); (\" + worker + \")(sharedChunk); self.onerror = null;\"\n\n var sharedChunk = {};\n shared(sharedChunk);\n mapboxgl = chunk(sharedChunk);\n if (typeof window !== 'undefined' && window && window.URL && window.URL.createObjectURL) {\n mapboxgl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n }\n}\n}\n\n\ndefine([\"exports\"],(function(t){\"use strict\";var e=\"2.8.2\",r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n;}n.prototype.sampleCurveX=function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return ((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,s,a;for(void 0===e&&(e=1e-6),i=t,a=0;a<8;a++){if(s=this.sampleCurveX(i)-t,Math.abs(s)<e)return i;var o=this.sampleCurveDerivativeX(i);if(Math.abs(o)<1e-6)break;i-=s/o;}if((i=t)<(r=0))return r;if(i>(n=1))return n;for(;r<n;){if(s=this.sampleCurveX(i),Math.abs(s-t)<e)return i;t>s?r=i:n=i,i=.5*(n-r)+r;}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=s;function s(t,e){this.x=t,this.y=e;}s.prototype={clone:function(){return new s(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=n,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-n*(this.y-e.y),this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},s.convert=function(t){return t instanceof s?t:Array.isArray(t)?new s(t[0],t[1]):t};var a=\"undefined\"!=typeof self?self:{};const o=Math.PI/180,l=180/Math.PI;function u(t){return t*o}function c(t){return t*l}const h=[[0,0],[1,0],[1,1],[0,1]];function p(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}function f(t,e,n,i){const s=new r(t,e,n,i);return function(t){return s.solve(t)}}const d=f(.25,.1,.25,1);function y(t,e,r){return Math.min(r,Math.max(e,t))}function m(t,e,r){return (r=y((r-t)/(e-t),0,1))*r*(3-2*r)}function g(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function x(t,e,r){if(!t.length)return r(null,[]);let n=t.length;const i=new Array(t.length);let s=null;t.forEach(((t,a)=>{e(t,((t,e)=>{t&&(s=t),i[a]=e,0==--n&&r(s,i);}));}));}function v(t){const e=[];for(const r in t)e.push(t[r]);return e}function b(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}let _=1;function w(){return _++}function A(){return function t(e){return e?(e^Math.random()*(16>>e/4)).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function k(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}function S(t){return !!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function I(t,e){t.forEach((t=>{e[t]&&(e[t]=e[t].bind(e));}));}function M(t,e){return -1!==t.indexOf(e,t.length-e.length)}function T(t,e,r){const n={};for(const i in t)n[i]=e.call(r||this,t[i],i,t);return n}function z(t,e,r){const n={};for(const i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function B(t){return Array.isArray(t)?t.map(B):\"object\"==typeof t&&t?T(t,B):t}const E={};function C(t){E[t]||(\"undefined\"!=typeof console&&console.warn(t),E[t]=!0);}function D(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function P(t){let e=0;for(let r,n,i=0,s=t.length,a=s-1;i<s;a=i++)r=t[i],n=t[a],e+=(n.x-r.x)*(r.y+n.y);return e}function V(){return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope}function F(t){const e={};if(t.replace(/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,((t,r,n,i)=>{const s=n||i;return e[r]=!s||s.toLowerCase(),\"\"})),e[\"max-age\"]){const t=parseInt(e[\"max-age\"],10);isNaN(t)?delete e[\"max-age\"]:e[\"max-age\"]=t;}return e}let L,R,U,$,j=null;function O(t){if(null==j){const e=t.navigator?t.navigator.userAgent:null;j=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")));}return j}function q(t){try{const e=a[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return !1}}const N={now:()=>void 0!==U?U:a.performance.now(),setNow(t){U=t;},restoreNow(){U=void 0;},frame(t){const e=a.requestAnimationFrame(t);return {cancel:()=>a.cancelAnimationFrame(e)}},getImageData(t,e=0){const{width:r,height:n}=t;$||($=a.document.createElement(\"canvas\"));const i=$.getContext(\"2d\");if(!i)throw new Error(\"failed to create canvas 2d context\");return (r>$.width||n>$.height)&&($.width=r,$.height=n),i.clearRect(-e,-e,r+2*e,n+2*e),i.drawImage(t,0,0,r,n),i.getImageData(-e,-e,r+2*e,n+2*e)},resolveURL:t=>(L||(L=a.document.createElement(\"a\")),L.href=t,L.href),get devicePixelRatio(){return a.devicePixelRatio},get prefersReducedMotion(){return !!a.matchMedia&&(null==R&&(R=a.matchMedia(\"(prefers-reduced-motion: reduce)\")),R.matches)}};let G;const Z={API_URL:\"https://api.mapbox.com\",get API_URL_REGEX(){if(null==G){const t=/^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/|\\?|$)/i;try{G=null!=process.env.API_URL_REGEX?new RegExp(process.env.API_URL_REGEX):t;}catch(e){G=t;}}return G},get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},SESSION_PATH:\"/map-sessions/v1\",FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",TILE_URL_VERSION:\"v4\",RASTER_URL_PREFIX:\"raster/v1\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},X={supported:!1,testSupport:function(t){!H&&Y&&(W?J(t):K=t);}};let K,Y,H=!1,W=!1;function J(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,Y),t.isContextLost())return;X.supported=!0;}catch(t){}t.deleteTexture(e),H=!0;}a.document&&(Y=a.document.createElement(\"img\"),Y.onload=function(){K&&J(K),K=null,W=!0;},Y.onerror=function(){H=!0,K=null;},Y.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");const Q=\"01\",tt=\"NO_ACCESS_TOKEN\";function et(t){return 0===t.indexOf(\"mapbox:\")}function rt(t){return Z.API_URL_REGEX.test(t)}const nt=/^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;function it(t){const e=t.match(nt);if(!e)throw new Error(\"Unable to parse URL object\");return {protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}function st(t){const e=t.params.length?`?${t.params.join(\"&\")}`:\"\";return `${t.protocol}://${t.authority}${t.path}${e}`}function at(t){if(!t)return null;const e=t.split(\".\");if(!e||3!==e.length)return null;try{return JSON.parse(decodeURIComponent(a.atob(e[1]).split(\"\").map((t=>\"%\"+(\"00\"+t.charCodeAt(0).toString(16)).slice(-2))).join(\"\")))}catch(t){return null}}class ot{constructor(t){this.type=t,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null;}getStorageKey(t){const e=at(Z.ACCESS_TOKEN);let r=\"\";return r=e&&e.u?a.btoa(encodeURIComponent(e.u).replace(/%([0-9A-F]{2})/g,((t,e)=>String.fromCharCode(Number(\"0x\"+e))))):Z.ACCESS_TOKEN||\"\",t?`mapbox.eventData.${t}:${r}`:`mapbox.eventData:${r}`}fetchEventData(){const t=q(\"localStorage\"),e=this.getStorageKey(),r=this.getStorageKey(\"uuid\");if(t)try{const t=a.localStorage.getItem(e);t&&(this.eventData=JSON.parse(t));const n=a.localStorage.getItem(r);n&&(this.anonId=n);}catch(t){C(\"Unable to read from LocalStorage\");}}saveEventData(){const t=q(\"localStorage\"),e=this.getStorageKey(),r=this.getStorageKey(\"uuid\");if(t)try{a.localStorage.setItem(r,this.anonId),Object.keys(this.eventData).length>=1&&a.localStorage.setItem(e,JSON.stringify(this.eventData));}catch(t){C(\"Unable to write to LocalStorage\");}}processRequests(t){}postEvent(t,r,n,i){if(!Z.EVENTS_URL)return;const s=it(Z.EVENTS_URL);s.params.push(`access_token=${i||Z.ACCESS_TOKEN||\"\"}`);const a={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:e,skuId:Q,userId:this.anonId},o=r?b(a,r):a,l={url:st(s),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([o])};this.pendingRequest=Tt(l,(t=>{this.pendingRequest=null,n(t),this.saveEventData(),this.processRequests(i);}));}queueRequest(t,e){this.queue.push(t),this.processRequests(e);}}const lt=new class extends ot{constructor(t){super(\"appUserTurnstile\"),this._customAccessToken=t;}postTurnstileEvent(t,e){Z.EVENTS_URL&&Z.ACCESS_TOKEN&&Array.isArray(t)&&t.some((t=>et(t)||rt(t)))&&this.queueRequest(Date.now(),e);}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();const e=at(Z.ACCESS_TOKEN),r=e?e.u:Z.ACCESS_TOKEN;let n=r!==this.eventData.tokenU;S(this.anonId)||(this.anonId=A(),n=!0);const i=this.queue.shift();if(this.eventData.lastSuccess){const t=new Date(this.eventData.lastSuccess),e=new Date(i),r=(i-this.eventData.lastSuccess)/864e5;n=n||r>=1||r<-1||t.getDate()!==e.getDate();}else n=!0;n?this.postEvent(i,{\"enabled.telemetry\":!1},(t=>{t||(this.eventData.lastSuccess=i,this.eventData.tokenU=r);}),t):this.processRequests();}},ut=lt.postTurnstileEvent.bind(lt),ct=new class extends ot{constructor(){super(\"map.load\"),this.success={},this.skuToken=\"\";}postMapLoadEvent(t,e,r,n){this.skuToken=e,this.errorCb=n,Z.EVENTS_URL&&(r||Z.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},r):this.errorCb(new Error(tt)));}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{id:e,timestamp:r}=this.queue.shift();e&&this.success[e]||(this.anonId||this.fetchEventData(),S(this.anonId)||(this.anonId=A()),this.postEvent(r,{skuToken:this.skuToken},(t=>{t?this.errorCb(t):e&&(this.success[e]=!0);}),t));}},ht=ct.postMapLoadEvent.bind(ct),pt=new class extends ot{constructor(){super(\"map.auth\"),this.success={},this.skuToken=\"\";}getSession(t,e,r,n){if(!Z.API_URL||!Z.SESSION_PATH)return;const i=it(Z.API_URL+Z.SESSION_PATH);i.params.push(`sku=${e||\"\"}`),i.params.push(`access_token=${n||Z.ACCESS_TOKEN||\"\"}`);const s={url:st(i),headers:{\"Content-Type\":\"text/plain\"}};this.pendingRequest=zt(s,(t=>{this.pendingRequest=null,r(t),this.saveEventData(),this.processRequests(n);}));}getSessionAPI(t,e,r,n){this.skuToken=e,this.errorCb=n,Z.SESSION_PATH&&Z.API_URL&&(r||Z.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},r):this.errorCb(new Error(tt)));}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{id:e,timestamp:r}=this.queue.shift();e&&this.success[e]||this.getSession(r,this.skuToken,(t=>{t?this.errorCb(t):e&&(this.success[e]=!0);}),t);}},ft=pt.getSessionAPI.bind(pt),dt=new Set,yt=\"mapbox-tiles\";let mt,gt,xt=500,vt=50;function bt(){a.caches&&!mt&&(mt=a.caches.open(yt));}function _t(t){const e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}let wt=1/0;const At={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(At);class kt extends Error{constructor(t,e,r){401===e&&rt(r)&&(t+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),super(t),this.status=e,this.url=r;}toString(){return `${this.name}: ${this.message} (${this.status}): ${this.url}`}}const St=V()?()=>self.worker&&self.worker.referrer:()=>(\"blob:\"===a.location.protocol?a.parent:a).location.href;const It=function(t,e){if(!(/^file:/.test(r=t.url)||/^file:/.test(St())&&!/^\\w+:/.test(r))){if(a.fetch&&a.Request&&a.AbortController&&a.Request.prototype.hasOwnProperty(\"signal\"))return function(t,e){const r=new a.AbortController,n=new a.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:St(),signal:r.signal});let i=!1,s=!1;const o=(l=n.url).indexOf(\"sku=\")>0&&rt(l);var l;\"json\"===t.type&&n.headers.set(\"Accept\",\"application/json\");const u=(r,i,l)=>{if(s)return;if(r&&\"SecurityError\"!==r.message&&C(r),i&&l)return c(i);const u=Date.now();a.fetch(n).then((r=>{if(r.ok){const t=o?r.clone():null;return c(r,t,u)}return e(new kt(r.statusText,r.status,t.url))})).catch((t=>{20!==t.code&&e(new Error(t.message));}));},c=(r,o,l)=>{(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((t=>{s||(o&&l&&function(t,e,r){if(bt(),!mt)return;const n={status:e.status,statusText:e.statusText,headers:new a.Headers};e.headers.forEach(((t,e)=>n.headers.set(e,t)));const i=F(e.headers.get(\"Cache-Control\")||\"\");if(i[\"no-store\"])return;i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString());const s=n.headers.get(\"Expires\");s&&(new Date(s).getTime()-r<42e4||function(t,e){if(void 0===gt)try{new Response(new ReadableStream),gt=!0;}catch(t){gt=!1;}gt?e(t.body):t.blob().then(e);}(e,(e=>{const r=new a.Response(e,n);bt(),mt&&mt.then((e=>e.put(_t(t.url),r))).catch((t=>C(t.message)));})));}(n,o,l),i=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")));})).catch((t=>{s||e(new Error(t.message));}));};return o?function(t,e){if(bt(),!mt)return e(null);const r=_t(t.url);mt.then((t=>{t.match(r).then((n=>{const i=function(t){if(!t)return !1;const e=new Date(t.headers.get(\"Expires\")||0),r=F(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i);})).catch(e);})).catch(e);}(n,u):u(null,null),{cancel:()=>{s=!0,i||r.abort();}}}(t,e);if(V()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}var r;return function(t,e){const r=new a.XMLHttpRequest;r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\");for(const e in t.headers)r.setRequestHeader(e,t.headers[e]);return \"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=()=>{e(new Error(r.statusText));},r.onload=()=>{if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"));}else e(new kt(r.statusText,r.status,t.url));},r.send(t.body),{cancel:()=>r.abort()}}(t,e)},Mt=function(t,e){return It(b(t,{type:\"arrayBuffer\"}),e)},Tt=function(t,e){return It(b(t,{method:\"POST\"}),e)},zt=function(t,e){return It(b(t,{method:\"GET\"}),e)};function Bt(t){const e=a.document.createElement(\"a\");return e.href=t,e.protocol===a.document.location.protocol&&e.host===a.document.location.host}const Et=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";let Ct,Dt;Ct=[],Dt=0;const Pt=function(t,e){if(X.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),Dt>=Z.MAX_PARALLEL_IMAGE_REQUESTS){const r={requestParameters:t,callback:e,cancelled:!1,cancel(){this.cancelled=!0;}};return Ct.push(r),r}Dt++;let r=!1;const n=()=>{if(!r)for(r=!0,Dt--;Ct.length&&Dt<Z.MAX_PARALLEL_IMAGE_REQUESTS;){const t=Ct.shift(),{requestParameters:e,callback:r,cancelled:n}=t;n||(t.cancel=Pt(e,r).cancel);}},i=Mt(t,((t,r,i,s)=>{n(),t?e(t):r&&(a.createImageBitmap?function(t,e){const r=new a.Blob([new Uint8Array(t)],{type:\"image/png\"});a.createImageBitmap(r).then((t=>{e(null,t);})).catch((t=>{e(new Error(`Could not load image because of ${t.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));}));}(r,((t,r)=>e(t,r,i,s))):function(t,e){const r=new a.Image,n=a.URL;r.onload=()=>{e(null,r),n.revokeObjectURL(r.src),r.onload=null,a.requestAnimationFrame((()=>{r.src=Et;}));},r.onerror=()=>e(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"));const i=new a.Blob([new Uint8Array(t)],{type:\"image/png\"});r.src=t.byteLength?n.createObjectURL(i):Et;}(r,((t,r)=>e(t,r,i,s))));}));return {cancel:()=>{i.cancel(),n();}}};function Vt(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function Ft(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}class Lt{constructor(t,e={}){b(this,e),this.type=t;}}class Rt extends Lt{constructor(t,e={}){super(\"error\",b({error:t},e));}}class Ut{on(t,e){return this._listeners=this._listeners||{},Vt(t,e,this._listeners),this}off(t,e){return Ft(t,e,this._listeners),Ft(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},Vt(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){\"string\"==typeof t&&(t=new Lt(t,e||{}));const r=t.type;if(this.listens(r)){t.target=this;const e=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(const r of e)r.call(this,t);const n=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(const e of n)Ft(r,e,this._oneTimeListeners),e.call(this,t);const i=this._eventedParent;i&&(b(t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t));}else t instanceof Rt&&console.error(t.error);return this}listens(t){return !!(this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t))}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var $t=JSON.parse('{\"$version\":8,\"$root\":{\"version\":{\"required\":true,\"type\":\"enum\",\"values\":[8]},\"name\":{\"type\":\"string\"},\"metadata\":{\"type\":\"*\"},\"center\":{\"type\":\"array\",\"value\":\"number\"},\"zoom\":{\"type\":\"number\"},\"bearing\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\"},\"pitch\":{\"type\":\"number\",\"default\":0,\"units\":\"degrees\"},\"light\":{\"type\":\"light\"},\"terrain\":{\"type\":\"terrain\"},\"fog\":{\"type\":\"fog\"},\"sources\":{\"required\":true,\"type\":\"sources\"},\"sprite\":{\"type\":\"string\"},\"glyphs\":{\"type\":\"string\"},\"transition\":{\"type\":\"transition\"},\"projection\":{\"type\":\"projection\"},\"layers\":{\"required\":true,\"type\":\"array\",\"value\":\"layer\"}},\"sources\":{\"*\":{\"type\":\"source\"}},\"source\":[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],\"source_vector\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"vector\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"attribution\":{\"type\":\"string\"},\"promoteId\":{\"type\":\"promoteId\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"attribution\":{\"type\":\"string\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster_dem\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster-dem\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"attribution\":{\"type\":\"string\"},\"encoding\":{\"type\":\"enum\",\"values\":{\"terrarium\":{},\"mapbox\":{}},\"default\":\"mapbox\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_geojson\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"geojson\":{}}},\"data\":{\"type\":\"*\"},\"maxzoom\":{\"type\":\"number\",\"default\":18},\"attribution\":{\"type\":\"string\"},\"buffer\":{\"type\":\"number\",\"default\":128,\"maximum\":512,\"minimum\":0},\"filter\":{\"type\":\"*\"},\"tolerance\":{\"type\":\"number\",\"default\":0.375},\"cluster\":{\"type\":\"boolean\",\"default\":false},\"clusterRadius\":{\"type\":\"number\",\"default\":50,\"minimum\":0},\"clusterMaxZoom\":{\"type\":\"number\"},\"clusterMinPoints\":{\"type\":\"number\"},\"clusterProperties\":{\"type\":\"*\"},\"lineMetrics\":{\"type\":\"boolean\",\"default\":false},\"generateId\":{\"type\":\"boolean\",\"default\":false},\"promoteId\":{\"type\":\"promoteId\"}},\"source_video\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"video\":{}}},\"urls\":{\"required\":true,\"type\":\"array\",\"value\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_image\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"image\":{}}},\"url\":{\"required\":true,\"type\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"layer\":{\"id\":{\"type\":\"string\",\"required\":true},\"type\":{\"type\":\"enum\",\"values\":{\"fill\":{},\"line\":{},\"symbol\":{},\"circle\":{},\"heatmap\":{},\"fill-extrusion\":{},\"raster\":{},\"hillshade\":{},\"background\":{},\"sky\":{}},\"required\":true},\"metadata\":{\"type\":\"*\"},\"source\":{\"type\":\"string\"},\"source-layer\":{\"type\":\"string\"},\"minzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"maxzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"filter\":{\"type\":\"filter\"},\"layout\":{\"type\":\"layout\"},\"paint\":{\"type\":\"paint\"}},\"layout\":[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\",\"layout_sky\"],\"layout_background\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_sky\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill\":{\"fill-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_circle\":{\"circle-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_heatmap\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_line\":{\"line-cap\":{\"type\":\"enum\",\"values\":{\"butt\":{},\"round\":{},\"square\":{}},\"default\":\"butt\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-join\":{\"type\":\"enum\",\"values\":{\"bevel\":{},\"round\":{},\"miter\":{}},\"default\":\"miter\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{\"type\":\"number\",\"default\":2,\"requires\":[{\"line-join\":\"miter\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{\"type\":\"number\",\"default\":1.05,\"requires\":[{\"line-join\":\"round\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_symbol\":{\"symbol-placement\":{\"type\":\"enum\",\"values\":{\"point\":{},\"line\":{},\"line-center\":{}},\"default\":\"point\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{\"type\":\"number\",\"default\":250,\"minimum\":1,\"units\":\"pixels\",\"requires\":[{\"symbol-placement\":\"line\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{\"type\":\"boolean\",\"default\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"viewport-y\":{},\"source\":{}},\"default\":\"auto\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"units\":\"factor of the original icon size\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{\"type\":\"enum\",\"values\":{\"none\":{},\"width\":{},\"height\":{},\"both\":{}},\"default\":\"none\",\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[0,0,0,0],\"units\":\"pixels\",\"requires\":[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{\"type\":\"resolvedImage\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{\"type\":\"formatted\",\"default\":\"\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{\"type\":\"array\",\"value\":\"string\",\"default\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{\"type\":\"number\",\"default\":16,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{\"type\":\"number\",\"default\":10,\"minimum\":0,\"units\":\"ems\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{\"type\":\"number\",\"default\":1.2,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-letter-spacing\":{\"type\":\"number\",\"default\":0,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"left\":{},\"center\":{},\"right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{\"type\":\"number\",\"units\":\"ems\",\"default\":0,\"requires\":[\"text-field\"],\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"text-field\",{\"!\":\"text-variable-anchor\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{\"type\":\"number\",\"default\":45,\"units\":\"degrees\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"horizontal\":{},\"vertical\":{}},\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{\"type\":\"boolean\",\"default\":true,\"requires\":[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{\"type\":\"enum\",\"values\":{\"none\":{},\"uppercase\":{},\"lowercase\":{}},\"default\":\"none\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{\"type\":\"array\",\"value\":\"number\",\"units\":\"ems\",\"length\":2,\"default\":[0,0],\"requires\":[\"text-field\",{\"!\":\"text-radial-offset\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\",\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_raster\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_hillshade\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"filter\":{\"type\":\"array\",\"value\":\"*\"},\"filter_symbol\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\",\"pitch\",\"distance-from-center\"]}},\"filter_fill\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_line\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_circle\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_fill-extrusion\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_heatmap\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_operator\":{\"type\":\"enum\",\"values\":{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},\"in\":{},\"!in\":{},\"all\":{},\"any\":{},\"none\":{},\"has\":{},\"!has\":{},\"within\":{}}},\"geometry_type\":{\"type\":\"enum\",\"values\":{\"Point\":{},\"LineString\":{},\"Polygon\":{}}},\"function\":{\"expression\":{\"type\":\"expression\"},\"stops\":{\"type\":\"array\",\"value\":\"function_stop\"},\"base\":{\"type\":\"number\",\"default\":1,\"minimum\":0},\"property\":{\"type\":\"string\",\"default\":\"$zoom\"},\"type\":{\"type\":\"enum\",\"values\":{\"identity\":{},\"exponential\":{},\"interval\":{},\"categorical\":{}},\"default\":\"exponential\"},\"colorSpace\":{\"type\":\"enum\",\"values\":{\"rgb\":{},\"lab\":{},\"hcl\":{}},\"default\":\"rgb\"},\"default\":{\"type\":\"*\",\"required\":false}},\"function_stop\":{\"type\":\"array\",\"minimum\":0,\"maximum\":24,\"value\":[\"number\",\"color\"],\"length\":2},\"expression\":{\"type\":\"array\",\"value\":\"*\",\"minimum\":1},\"fog\":{\"range\":{\"type\":\"array\",\"default\":[0.5,10],\"minimum\":-20,\"maximum\":20,\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"horizon-blend\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":0.1,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"light\":{\"anchor\":{\"type\":\"enum\",\"default\":\"viewport\",\"values\":{\"map\":{},\"viewport\":{}},\"property-type\":\"data-constant\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]}},\"position\":{\"type\":\"array\",\"default\":[1.15,210,30],\"length\":3,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"intensity\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"projection\":{\"name\":{\"type\":\"enum\",\"values\":{\"albers\":{},\"equalEarth\":{},\"equirectangular\":{},\"lambertConformalConic\":{},\"mercator\":{},\"naturalEarth\":{},\"winkelTripel\":{}},\"default\":\"mercator\",\"required\":true},\"center\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]},\"parallels\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]}},\"terrain\":{\"source\":{\"type\":\"string\",\"required\":true},\"exaggeration\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":1,\"minimum\":0,\"maximum\":1000,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"paint\":[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\",\"paint_sky\"],\"paint_fill\":{\"fill-antialias\":{\"type\":\"boolean\",\"default\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{\"type\":\"color\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"},{\"fill-antialias\":true}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-extrusion-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-extrusion-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"requires\":[\"fill-extrusion-height\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{\"type\":\"boolean\",\"default\":true,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_line\":{\"line-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"line-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{\"type\":\"array\",\"value\":\"number\",\"minimum\":0,\"transition\":true,\"units\":\"line widths\",\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{\"type\":\"color\",\"transition\":false,\"requires\":[{\"!\":\"line-pattern\"},{\"source\":\"geojson\",\"has\":{\"lineMetrics\":true}}],\"expression\":{\"interpolated\":true,\"parameters\":[\"line-progress\"]},\"property-type\":\"color-ramp\"}},\"paint_circle\":{\"circle-radius\":{\"type\":\"number\",\"default\":5,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"circle-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},\"paint_heatmap\":{\"heatmap-radius\":{\"type\":\"number\",\"default\":30,\"minimum\":1,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",0.1,\"royalblue\",0.3,\"cyan\",0.5,\"lime\",0.7,\"yellow\",1,\"red\"],\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_symbol\":{\"icon-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"icon-image\",\"icon-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"overridable\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"text-field\",\"text-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_raster\":{\"raster-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"transition\":true,\"units\":\"degrees\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{\"type\":\"enum\",\"values\":{\"linear\":{},\"nearest\":{}},\"default\":\"linear\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"transition\":false,\"units\":\"milliseconds\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_hillshade\":{\"hillshade-illumination-direction\":{\"type\":\"number\",\"default\":335,\"minimum\":0,\"maximum\":359,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{\"type\":\"number\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{\"type\":\"color\",\"default\":\"#FFFFFF\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_background\":{\"background-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"background-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_sky\":{\"sky-type\":{\"type\":\"enum\",\"values\":{\"gradient\":{},\"atmosphere\":{}},\"default\":\"atmosphere\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun-intensity\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"atmosphere\"}],\"default\":10,\"minimum\":0,\"maximum\":100,\"transition\":false,\"property-type\":\"data-constant\"},\"sky-gradient-center\":{\"type\":\"array\",\"requires\":[{\"sky-type\":\"gradient\"}],\"value\":\"number\",\"default\":[0,0],\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient-radius\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"gradient\"}],\"default\":90,\"minimum\":0,\"maximum\":180,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"sky-radial-progress\"],0.8,\"#87ceeb\",1,\"white\"],\"transition\":false,\"requires\":[{\"sky-type\":\"gradient\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"sky-radial-progress\"]},\"property-type\":\"color-ramp\"},\"sky-atmosphere-halo-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-atmosphere-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"transition\":{\"duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"units\":\"milliseconds\"},\"delay\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"milliseconds\"}},\"property-type\":{\"data-driven\":{\"type\":\"property-type\"},\"cross-faded\":{\"type\":\"property-type\"},\"cross-faded-data-driven\":{\"type\":\"property-type\"},\"color-ramp\":{\"type\":\"property-type\"},\"data-constant\":{\"type\":\"property-type\"},\"constant\":{\"type\":\"property-type\"}},\"promoteId\":{\"*\":{\"type\":\"string\"}}}');function jt(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}function Ot(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function qt(t){if(Array.isArray(t))return t.map(qt);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){const e={};for(const r in t)e[r]=qt(t[r]);return e}return Ot(t)}class Nt extends Error{constructor(t,e){super(e),this.message=e,this.key=t;}}class Gt{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r;}concat(t){return new Gt(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(`${t} not found in scope.`)}has(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const Zt={kind:\"null\"},Xt={kind:\"number\"},Kt={kind:\"string\"},Yt={kind:\"boolean\"},Ht={kind:\"color\"},Wt={kind:\"object\"},Jt={kind:\"value\"},Qt={kind:\"collator\"},te={kind:\"formatted\"},ee={kind:\"resolvedImage\"};function re(t,e){return {kind:\"array\",itemType:t,N:e}}function ne(t){if(\"array\"===t.kind){const e=ne(t.itemType);return \"number\"==typeof t.N?`array<${e}, ${t.N}>`:\"value\"===t.itemType.kind?\"array\":`array<${e}>`}return t.kind}const ie=[Zt,Xt,Kt,Yt,Ht,te,Wt,re(Jt),ee];function se(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!se(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(const t of ie)if(!se(t,e))return null}return `Expected ${ne(t)} but found ${ne(e)} instead.`}function ae(t,e){return e.some((e=>e.kind===t.kind))}function oe(t,e){return e.some((e=>\"null\"===e?null===t:\"array\"===e?Array.isArray(t):\"object\"===e?t&&!Array.isArray(t)&&\"object\"==typeof t:e===typeof t))}function le(t){var e={exports:{}};return t(e,e.exports),e.exports}var ue=le((function(t,e){var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function n(t){return (t=Math.round(t))<0?0:t>255?255:t}function i(t){return n(\"%\"===t[t.length-1]?parseFloat(t)/100*255:parseInt(t))}function s(t){return (e=\"%\"===t[t.length-1]?parseFloat(t)/100:parseFloat(t))<0?0:e>1?1:e;var e;}function a(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,o=t.replace(/ /g,\"\").toLowerCase();if(o in r)return r[o].slice();if(\"#\"===o[0])return 4===o.length?(e=parseInt(o.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===o.length&&(e=parseInt(o.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=o.indexOf(\"(\"),u=o.indexOf(\")\");if(-1!==l&&u+1===o.length){var c=o.substr(0,l),h=o.substr(l+1,u-(l+1)).split(\",\"),p=1;switch(c){case\"rgba\":if(4!==h.length)return null;p=s(h.pop());case\"rgb\":return 3!==h.length?null:[i(h[0]),i(h[1]),i(h[2]),p];case\"hsla\":if(4!==h.length)return null;p=s(h.pop());case\"hsl\":if(3!==h.length)return null;var f=(parseFloat(h[0])%360+360)%360/360,d=s(h[1]),y=s(h[2]),m=y<=.5?y*(d+1):y+d-y*d,g=2*y-m;return [n(255*a(g,m,f+1/3)),n(255*a(g,m,f)),n(255*a(g,m,f-1/3)),p];default:return null}}return null};}catch(t){}}));class ce{constructor(t,e,r,n=1){this.r=t,this.g=e,this.b=r,this.a=n;}static parse(t){if(!t)return;if(t instanceof ce)return t;if(\"string\"!=typeof t)return;const e=ue.parseCSSColor(t);return e?new ce(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]):void 0}toString(){const[t,e,r,n]=this.toArray();return `rgba(${Math.round(t)},${Math.round(e)},${Math.round(r)},${n})`}toArray(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]}}ce.black=new ce(0,0,0,1),ce.white=new ce(1,1,1,1),ce.transparent=new ce(0,0,0,0),ce.red=new ce(1,0,0,1),ce.blue=new ce(0,0,1,1);class he{constructor(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class pe{constructor(t,e,r,n,i){this.text=t.normalize?t.normalize():t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;}}class fe{constructor(t){this.sections=t;}static fromString(t){return new fe([new pe(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof fe?t:fe.fromString(t)}toString(){return 0===this.sections.length?\"\":this.sections.map((t=>t.text)).join(\"\")}serialize(){const t=[\"format\"];for(const e of this.sections){if(e.image){t.push([\"image\",e.image.name]);continue}t.push(e.text);const r={};e.fontStack&&(r[\"text-font\"]=[\"literal\",e.fontStack.split(\",\")]),e.scale&&(r[\"font-scale\"]=e.scale),e.textColor&&(r[\"text-color\"]=[\"rgba\"].concat(e.textColor.toArray())),t.push(r);}return t}}class de{constructor(t){this.name=t.name,this.available=t.available;}toString(){return this.name}static fromString(t){return t?new de({name:t,available:!1}):null}serialize(){return [\"image\",this.name]}}function ye(t,e,r,n){return \"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(\", \")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function me(t){if(null===t)return !0;if(\"string\"==typeof t)return !0;if(\"boolean\"==typeof t)return !0;if(\"number\"==typeof t)return !0;if(t instanceof ce)return !0;if(t instanceof he)return !0;if(t instanceof fe)return !0;if(t instanceof de)return !0;if(Array.isArray(t)){for(const e of t)if(!me(e))return !1;return !0}if(\"object\"==typeof t){for(const e in t)if(!me(t[e]))return !1;return !0}return !1}function ge(t){if(null===t)return Zt;if(\"string\"==typeof t)return Kt;if(\"boolean\"==typeof t)return Yt;if(\"number\"==typeof t)return Xt;if(t instanceof ce)return Ht;if(t instanceof he)return Qt;if(t instanceof fe)return te;if(t instanceof de)return ee;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=ge(e);if(r){if(r===t)continue;r=Jt;break}r=t;}return re(r||Jt,e)}return Wt}function xe(t){const e=typeof t;return null===t?\"\":\"string\"===e||\"number\"===e||\"boolean\"===e?String(t):t instanceof ce||t instanceof fe||t instanceof de?t.toString():JSON.stringify(t)}class ve{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!me(t[1]))return e.error(\"invalid value\");const r=t[1];let n=ge(r);const i=e.expectedType;return \"array\"!==n.kind||0!==n.N||!i||\"array\"!==i.kind||\"number\"==typeof i.N&&0!==i.N||(n=i),new ve(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}serialize(){return \"array\"===this.type.kind||\"object\"===this.type.kind?[\"literal\",this.value]:this.value instanceof ce?[\"rgba\"].concat(this.value.toArray()):this.value instanceof fe?this.value.serialize():this.value}}class be{constructor(t){this.name=\"ExpressionEvaluationError\",this.message=t;}toJSON(){return this.message}}const _e={string:Kt,number:Xt,boolean:Yt,object:Wt};class we{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");let r,n=1;const i=t[0];if(\"array\"===i){let i,s;if(t.length>2){const r=t[1];if(\"string\"!=typeof r||!(r in _e)||\"object\"===r)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);i=_e[r],n++;}else i=Jt;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);s=t[2],n++;}r=re(i,s);}else r=_e[i];const s=[];for(;n<t.length;n++){const r=e.parse(t[n],n,Jt);if(!r)return null;s.push(r);}return new we(r,s)}evaluate(t){for(let e=0;e<this.args.length;e++){const r=this.args[e].evaluate(t);if(!se(this.type,ge(r)))return r;if(e===this.args.length-1)throw new be(`Expected value to be of type ${ne(this.type)}, but found ${ne(ge(r))} instead.`)}return null}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){const t=this.type,e=[t.kind];if(\"array\"===t.kind){const r=t.itemType;if(\"string\"===r.kind||\"number\"===r.kind||\"boolean\"===r.kind){e.push(r.kind);const n=t.N;(\"number\"==typeof n||this.args.length>1)&&e.push(n);}}return e.concat(this.args.map((t=>t.serialize())))}}class Ae{constructor(t){this.type=te,this.sections=t;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const s=t[r];if(i&&\"object\"==typeof s&&!Array.isArray(s)){i=!1;let t=null;if(s[\"font-scale\"]&&(t=e.parse(s[\"font-scale\"],1,Xt),!t))return null;let r=null;if(s[\"text-font\"]&&(r=e.parse(s[\"text-font\"],1,re(Kt)),!r))return null;let a=null;if(s[\"text-color\"]&&(a=e.parse(s[\"text-color\"],1,Ht),!a))return null;const o=n[n.length-1];o.scale=t,o.font=r,o.textColor=a;}else {const s=e.parse(t[r],1,Jt);if(!s)return null;const a=s.type.kind;if(\"string\"!==a&&\"value\"!==a&&\"null\"!==a&&\"resolvedImage\"!==a)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:s,scale:null,font:null,textColor:null});}}return new Ae(n)}evaluate(t){return new fe(this.sections.map((e=>{const r=e.content.evaluate(t);return ge(r)===ee?new pe(\"\",r,null,null,null):new pe(xe(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor);}outputDefined(){return !1}serialize(){const t=[\"format\"];for(const e of this.sections){t.push(e.content.serialize());const r={};e.scale&&(r[\"font-scale\"]=e.scale.serialize()),e.font&&(r[\"text-font\"]=e.font.serialize()),e.textColor&&(r[\"text-color\"]=e.textColor.serialize()),t.push(r);}return t}}class ke{constructor(t){this.type=ee,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,Kt);return r?new ke(r):e.error(\"No image name provided.\")}evaluate(t){const e=this.input.evaluate(t),r=de.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input);}outputDefined(){return !1}serialize(){return [\"image\",this.input.serialize()]}}const Se={\"to-boolean\":Yt,\"to-color\":Ht,\"to-number\":Xt,\"to-string\":Kt};class Ie{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");const n=Se[r],i=[];for(let r=1;r<t.length;r++){const n=e.parse(t[r],r,Jt);if(!n)return null;i.push(n);}return new Ie(n,i)}evaluate(t){if(\"boolean\"===this.type.kind)return Boolean(this.args[0].evaluate(t));if(\"color\"===this.type.kind){let e,r;for(const n of this.args){if(e=n.evaluate(t),r=null,e instanceof ce)return e;if(\"string\"==typeof e){const r=t.parseColor(e);if(r)return r}else if(Array.isArray(e)&&(r=e.length<3||e.length>4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:ye(e[0],e[1],e[2],e[3]),!r))return new ce(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new be(r||`Could not parse color from value '${\"string\"==typeof e?e:String(JSON.stringify(e))}'`)}if(\"number\"===this.type.kind){let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new be(`Could not convert ${JSON.stringify(e)} to number.`)}return \"formatted\"===this.type.kind?fe.fromString(xe(this.args[0].evaluate(t))):\"resolvedImage\"===this.type.kind?de.fromString(xe(this.args[0].evaluate(t))):xe(this.args[0].evaluate(t))}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){if(\"formatted\"===this.type.kind)return new Ae([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if(\"resolvedImage\"===this.type.kind)return new ke(this.args[0]).serialize();const t=[`to-${this.type.kind}`];return this.eachChild((e=>{t.push(e.serialize());})),t}}const Me=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];class Te{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null,this.featureTileCoord=null,this.featureDistanceData=null;}id(){return this.feature&&\"id\"in this.feature&&this.feature.id?this.feature.id:null}geometryType(){return this.feature?\"number\"==typeof this.feature.type?Me[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}distanceFromCenter(){if(this.featureTileCoord&&this.featureDistanceData){const t=this.featureDistanceData.center,e=this.featureDistanceData.scale,{x:r,y:n}=this.featureTileCoord;return this.featureDistanceData.bearing[0]*(r*e-t[0])+this.featureDistanceData.bearing[1]*(n*e-t[1])}return 0}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=ce.parse(t)),e}}class ze{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}serialize(){return [this.name].concat(this.args.map((t=>t.serialize())))}static parse(t,e){const r=t[0],n=ze.definitions[r];if(!n)return e.error(`Unknown expression \"${r}\". If you wanted a literal array, use [\"literal\", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,s=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,a=s.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let o=null;for(const[n,s]of a){o=new Je(e.registry,e.path,null,e.scope);const a=[];let l=!1;for(let e=1;e<t.length;e++){const r=t[e],i=Array.isArray(n)?n[e-1]:n.type,s=o.parse(r,1+a.length,i);if(!s){l=!0;break}a.push(s);}if(!l)if(Array.isArray(n)&&n.length!==a.length)o.error(`Expected ${n.length} arguments, but found ${a.length} instead.`);else {for(let t=0;t<a.length;t++){const e=Array.isArray(n)?n[t]:n.type,r=a[t];o.concat(t+1).checkSubtype(e,r.type);}if(0===o.errors.length)return new ze(r,i,s,a)}}if(1===a.length)e.errors.push(...o.errors);else {const r=(a.length?a:s).map((([t])=>{return e=t,Array.isArray(e)?`(${e.map(ne).join(\", \")})`:`(${ne(e.type)}...)`;var e;})).join(\" | \"),n=[];for(let r=1;r<t.length;r++){const i=e.parse(t[r],1+n.length);if(!i)return null;n.push(ne(i.type));}e.error(`Expected arguments of type ${r}, but found (${n.join(\", \")}) instead.`);}return null}static register(t,e){ze.definitions=e;for(const r in e)t[r]=ze;}}class Be{constructor(t,e,r){this.type=Qt,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e;}static parse(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");const r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");const n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,Yt);if(!n)return null;const i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,Yt);if(!i)return null;let s=null;return r.locale&&(s=e.parse(r.locale,1,Kt),!s)?null:new Be(n,i,s)}evaluate(t){return new he(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);}outputDefined(){return !1}serialize(){const t={};return t[\"case-sensitive\"]=this.caseSensitive.serialize(),t[\"diacritic-sensitive\"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),[\"collator\",t]}}const Ee=8192;function Ce(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function De(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function Pe(t,e){const r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(r*i*Ee),Math.round(n*i*Ee)]}function Ve(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],s=t[0]-r[0],a=t[1]-r[1];return n*a-s*i==0&&n*s<=0&&i*a<=0}function Fe(t,e){let r=!1;for(let a=0,o=e.length;a<o;a++){const o=e[a];for(let e=0,a=o.length;e<a-1;e++){if(Ve(t,o[e],o[e+1]))return !1;(i=o[e])[1]>(n=t)[1]!=(s=o[e+1])[1]>n[1]&&n[0]<(s[0]-i[0])*(n[1]-i[1])/(s[1]-i[1])+i[0]&&(r=!r);}}var n,i,s;return r}function Le(t,e){for(let r=0;r<e.length;r++)if(Fe(t,e[r]))return !0;return !1}function Re(t,e,r,n){const i=n[0]-r[0],s=n[1]-r[1],a=(t[0]-r[0])*s-i*(t[1]-r[1]),o=(e[0]-r[0])*s-i*(e[1]-r[1]);return a>0&&o<0||a<0&&o>0}function Ue(t,e,r){for(const u of r)for(let r=0;r<u.length-1;++r)if(0!=(o=[(a=u[r+1])[0]-(s=u[r])[0],a[1]-s[1]])[0]*(l=[(i=e)[0]-(n=t)[0],i[1]-n[1]])[1]-o[1]*l[0]&&Re(n,i,s,a)&&Re(s,a,n,i))return !0;var n,i,s,a,o,l;return !1}function $e(t,e){for(let r=0;r<t.length;++r)if(!Fe(t[r],e))return !1;for(let r=0;r<t.length-1;++r)if(Ue(t[r],t[r+1],e))return !1;return !0}function je(t,e){for(let r=0;r<e.length;r++)if($e(t,e[r]))return !0;return !1}function Oe(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=[];for(let n=0;n<t[i].length;n++){const a=Pe(t[i][n],r);Ce(e,a),s.push(a);}n.push(s);}return n}function qe(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=Oe(t[i],e,r);n.push(s);}return n}function Ne(t,e,r,n){if(t[0]<r[0]||t[0]>r[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i;}Ce(e,t);}function Ge(t,e,r,n){const i=Math.pow(2,n.z)*Ee,s=[n.x*Ee,n.y*Ee],a=[];if(!t)return a;for(const n of t)for(const t of n){const n=[t.x+s[0],t.y+s[1]];Ne(n,e,r,i),a.push(n);}return a}function Ze(t,e,r,n){const i=Math.pow(2,n.z)*Ee,s=[n.x*Ee,n.y*Ee],a=[];if(!t)return a;for(const r of t){const t=[];for(const n of r){const r=[n.x+s[0],n.y+s[1]];Ce(e,r),t.push(r);}a.push(t);}if(e[2]-e[0]<=i/2){(o=e)[0]=o[1]=1/0,o[2]=o[3]=-1/0;for(const t of a)for(const n of t)Ne(n,e,r,i);}var o;return a}class Xe{constructor(t,e){this.type=Yt,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(me(t[1])){const e=t[1];if(\"FeatureCollection\"===e.type)for(let t=0;t<e.features.length;++t){const r=e.features[t].geometry.type;if(\"Polygon\"===r||\"MultiPolygon\"===r)return new Xe(e,e.features[t].geometry)}else if(\"Feature\"===e.type){const t=e.geometry.type;if(\"Polygon\"===t||\"MultiPolygon\"===t)return new Xe(e,e.geometry)}else if(\"Polygon\"===e.type||\"MultiPolygon\"===e.type)return new Xe(e,e)}return e.error(\"'within' expression requires valid geojson object that contains polygon geometry type.\")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if(\"Point\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(!i)return !1;if(\"Polygon\"===e.type){const s=Oe(e.coordinates,n,i),a=Ge(t.geometry(),r,n,i);if(!De(r,n))return !1;for(const t of a)if(!Fe(t,s))return !1}if(\"MultiPolygon\"===e.type){const s=qe(e.coordinates,n,i),a=Ge(t.geometry(),r,n,i);if(!De(r,n))return !1;for(const t of a)if(!Le(t,s))return !1}return !0}(t,this.geometries);if(\"LineString\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(!i)return !1;if(\"Polygon\"===e.type){const s=Oe(e.coordinates,n,i),a=Ze(t.geometry(),r,n,i);if(!De(r,n))return !1;for(const t of a)if(!$e(t,s))return !1}if(\"MultiPolygon\"===e.type){const s=qe(e.coordinates,n,i),a=Ze(t.geometry(),r,n,i);if(!De(r,n))return !1;for(const t of a)if(!je(t,s))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}serialize(){return [\"within\",this.geojson]}}function Ke(t){if(t instanceof ze){if(\"get\"===t.name&&1===t.args.length)return !1;if(\"feature-state\"===t.name)return !1;if(\"has\"===t.name&&1===t.args.length)return !1;if(\"properties\"===t.name||\"geometry-type\"===t.name||\"id\"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof Xe)return !1;let e=!0;return t.eachChild((t=>{e&&!Ke(t)&&(e=!1);})),e}function Ye(t){if(t instanceof ze&&\"feature-state\"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!Ye(t)&&(e=!1);})),e}function He(t,e){if(t instanceof ze&&e.indexOf(t.name)>=0)return !1;let r=!0;return t.eachChild((t=>{r&&!He(t,e)&&(r=!1);})),r}class We{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e;}static parse(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");const r=t[1];return e.scope.has(r)?new We(r,e.scope.get(r)):e.error(`Unknown variable \"${r}\". Make sure \"${r}\" has been bound in an enclosing \"let\" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return !1}serialize(){return [\"var\",this.name]}}class Je{constructor(t,e=[],r,n=new Gt,i=[]){this.registry=t,this.path=e,this.key=e.map((t=>`[${t}]`)).join(\"\"),this.scope=n,this.errors=i,this.expectedType=r;}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return \"assert\"===r?new we(e,[t]):\"coerce\"===r?new Ie(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');const n=t[0];if(\"string\"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use [\"literal\", [...]].`,0),null;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if(\"string\"!==t.kind&&\"number\"!==t.kind&&\"boolean\"!==t.kind&&\"object\"!==t.kind&&\"array\"!==t.kind||\"value\"!==i.kind)if(\"color\"!==t.kind&&\"formatted\"!==t.kind&&\"resolvedImage\"!==t.kind||\"value\"!==i.kind&&\"string\"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||\"coerce\");else n=r(n,t,e.typeAnnotation||\"assert\");}if(!(n instanceof ve)&&\"resolvedImage\"!==n.type.kind&&Qe(n)){const t=new Te;try{n=new ve(n.type,n.evaluate(t));}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression \"${n}\". If you wanted a literal array, use [\"literal\", [...]].`,0)}return this.error(void 0===t?\"'undefined' value invalid. Use null instead.\":\"object\"==typeof t?'Bare objects invalid. Use [\"literal\", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Je(this.registry,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map((t=>`[${t}]`)).join(\"\")}`;this.errors.push(new Nt(r,t));}checkSubtype(t,e){const r=se(t,e);return r&&this.error(r),r}}function Qe(t){if(t instanceof We)return Qe(t.boundExpression);if(t instanceof ze&&\"error\"===t.name)return !1;if(t instanceof Be)return !1;if(t instanceof Xe)return !1;const e=t instanceof Ie||t instanceof we;let r=!0;return t.eachChild((t=>{r=e?r&&Qe(t):r&&t instanceof ve;})),!!r&&Ke(t)&&He(t,[\"zoom\",\"heatmap-density\",\"line-progress\",\"sky-radial-progress\",\"accumulated\",\"is-supported-script\",\"pitch\",\"distance-from-center\"])}function tr(t,e){const r=t.length-1;let n,i,s=0,a=r,o=0;for(;s<=a;)if(o=Math.floor((s+a)/2),n=t[o],i=t[o+1],n<=e){if(o===r||e<i)return o;s=o+1;}else {if(!(n>e))throw new be(\"Input is not a number.\");a=o-1;}return 0}class er{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e);}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");const r=e.parse(t[1],1,Xt);if(!r)return null;const n=[];let i=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r<t.length;r+=2){const s=1===r?-1/0:t[r],a=t[r+1],o=r,l=r+1;if(\"number\"!=typeof s)return e.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',o);if(n.length&&n[n.length-1][0]>=s)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',o);const u=e.parse(a,l,i);if(!u)return null;i=i||u.type,n.push([s,u]);}return new er(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[tr(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}serialize(){const t=[\"step\",this.input.serialize()];for(let e=0;e<this.labels.length;e++)e>0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t}}function rr(t,e,r){return t*(1-r)+e*r}var nr=Object.freeze({__proto__:null,number:rr,color:function(t,e,r){return new ce(rr(t.r,e.r,r),rr(t.g,e.g,r),rr(t.b,e.b,r),rr(t.a,e.a,r))},array:function(t,e,r){return t.map(((t,n)=>rr(t,e[n],r)))}});const ir=.95047,sr=1.08883,ar=4/29,or=6/29,lr=3*or*or,ur=Math.PI/180,cr=180/Math.PI;function hr(t){return t>.008856451679035631?Math.pow(t,1/3):t/lr+ar}function pr(t){return t>or?t*t*t:lr*(t-ar)}function fr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function dr(t){return (t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function yr(t){const e=dr(t.r),r=dr(t.g),n=dr(t.b),i=hr((.4124564*e+.3575761*r+.1804375*n)/ir),s=hr((.2126729*e+.7151522*r+.072175*n)/1);return {l:116*s-16,a:500*(i-s),b:200*(s-hr((.0193339*e+.119192*r+.9503041*n)/sr)),alpha:t.a}}function mr(t){let e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*pr(e),r=ir*pr(r),n=sr*pr(n),new ce(fr(3.2404542*r-1.5371385*e-.4985314*n),fr(-.969266*r+1.8760108*e+.041556*n),fr(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function gr(t,e,r){const n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}const xr={forward:yr,reverse:mr,interpolate:function(t,e,r){return {l:rr(t.l,e.l,r),a:rr(t.a,e.a,r),b:rr(t.b,e.b,r),alpha:rr(t.alpha,e.alpha,r)}}},vr={forward:function(t){const{l:e,a:r,b:n}=yr(t),i=Math.atan2(n,r)*cr;return {h:i<0?i+360:i,c:Math.sqrt(r*r+n*n),l:e,alpha:t.a}},reverse:function(t){const e=t.h*ur,r=t.c;return mr({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return {h:gr(t.h,e.h,r),c:rr(t.c,e.c,r),l:rr(t.l,e.l,r),alpha:rr(t.alpha,e.alpha,r)}}};var br=Object.freeze({__proto__:null,lab:xr,hcl:vr});class _r{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,e,n,i){let s=0;if(\"exponential\"===t.name)s=wr(e,t.base,n,i);else if(\"linear\"===t.name)s=wr(e,1,n,i);else if(\"cubic-bezier\"===t.name){const a=t.controlPoints;s=new r(a[0],a[1],a[2],a[3]).solve(wr(e,1,n,i));}return s}static parse(t,e){let[r,n,i,...s]=t;if(!Array.isArray(n)||0===n.length)return e.error(\"Expected an interpolation type expression.\",1);if(\"linear\"===n[0])n={name:\"linear\"};else if(\"exponential\"===n[0]){const t=n[1];if(\"number\"!=typeof t)return e.error(\"Exponential interpolation requires a numeric base.\",1,1);n={name:\"exponential\",base:t};}else {if(\"cubic-bezier\"!==n[0])return e.error(`Unknown interpolation type ${String(n[0])}`,1,0);{const t=n.slice(1);if(4!==t.length||t.some((t=>\"number\"!=typeof t||t<0||t>1)))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:t};}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(i=e.parse(i,2,Xt),!i)return null;const a=[];let o=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?o=Ht:e.expectedType&&\"value\"!==e.expectedType.kind&&(o=e.expectedType);for(let t=0;t<s.length;t+=2){const r=s[t],n=s[t+1],i=t+3,l=t+4;if(\"number\"!=typeof r)return e.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',i);if(a.length&&a[a.length-1][0]>=r)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,o);if(!u)return null;o=o||u.type,a.push([r,u]);}return \"number\"===o.kind||\"color\"===o.kind||\"array\"===o.kind&&\"number\"===o.itemType.kind&&\"number\"==typeof o.N?new _r(o,r,n,i,a):e.error(`Type ${ne(o)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const s=tr(e,n),a=_r.interpolationFactor(this.interpolation,n,e[s],e[s+1]),o=r[s].evaluate(t),l=r[s+1].evaluate(t);return \"interpolate\"===this.operator?nr[this.type.kind.toLowerCase()](o,l,a):\"interpolate-hcl\"===this.operator?vr.reverse(vr.interpolate(vr.forward(o),vr.forward(l),a)):xr.reverse(xr.interpolate(xr.forward(o),xr.forward(l),a))}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}serialize(){let t;t=\"linear\"===this.interpolation.name?[\"linear\"]:\"exponential\"===this.interpolation.name?1===this.interpolation.base?[\"linear\"]:[\"exponential\",this.interpolation.base]:[\"cubic-bezier\"].concat(this.interpolation.controlPoints);const e=[this.operator,t,this.input.serialize()];for(let t=0;t<this.labels.length;t++)e.push(this.labels[t],this.outputs[t].serialize());return e}}function wr(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}class Ar{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expectected at least one argument.\");let r=null;const n=e.expectedType;n&&\"value\"!==n.kind&&(r=n);const i=[];for(const n of t.slice(1)){const t=e.parse(n,1+i.length,r,void 0,{typeAnnotation:\"omit\"});if(!t)return null;r=r||t.type,i.push(t);}const s=n&&i.some((t=>se(n,t.type)));return new Ar(s?Jt:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args){if(n++,r=i.evaluate(t),r&&r instanceof de&&!r.available&&(e||(e=r),r=null,n===this.args.length))return e;if(null!==r)break}return r}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){const t=[\"coalesce\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}class kr{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n<t.length-1;n+=2){const i=t[n];if(\"string\"!=typeof i)return e.error(`Expected string, but found ${typeof i} instead.`,n);if(/[^a-zA-Z0-9_]/.test(i))return e.error(\"Variable names must contain only alphanumeric characters or '_'.\",n);const s=e.parse(t[n+1],n+1);if(!s)return null;r.push([i,s]);}const n=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return n?new kr(r,n):null}outputDefined(){return this.result.outputDefined()}serialize(){const t=[\"let\"];for(const[e,r]of this.bindings)t.push(e,r.serialize());return t.push(this.result.serialize()),t}}class Sr{constructor(t,e,r){this.type=t,this.index=e,this.input=r;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,Xt),n=e.parse(t[2],2,re(e.expectedType||Jt));return r&&n?new Sr(n.type.itemType,r,n):null}evaluate(t){const e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new be(`Array index out of bounds: ${e} < 0.`);if(e>=r.length)throw new be(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new be(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}serialize(){return [\"at\",this.index.serialize(),this.input.serialize()]}}class Ir{constructor(t,e){this.type=Yt,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,Jt),n=e.parse(t[2],2,Jt);return r&&n?ae(r.type,[Yt,Kt,Xt,Zt,Jt])?new Ir(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${ne(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(null==r)return !1;if(!oe(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new be(`Expected first argument to be of type boolean, string, number or null, but found ${ne(ge(e))} instead.`);if(!oe(r,[\"string\",\"array\"]))throw new be(`Expected second argument to be of type array or string, but found ${ne(ge(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}serialize(){return [\"in\",this.needle.serialize(),this.haystack.serialize()]}}class Mr{constructor(t,e,r){this.type=Xt,this.needle=t,this.haystack=e,this.fromIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,Jt),n=e.parse(t[2],2,Jt);if(!r||!n)return null;if(!ae(r.type,[Yt,Kt,Xt,Zt,Jt]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${ne(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Xt);return i?new Mr(r,n,i):null}return new Mr(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!oe(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new be(`Expected first argument to be of type boolean, string, number or null, but found ${ne(ge(e))} instead.`);if(!oe(r,[\"string\",\"array\"]))throw new be(`Expected second argument to be of type array or string, but found ${ne(ge(r))} instead.`);if(this.fromIndex){const n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}serialize(){if(null!=this.fromIndex&&void 0!==this.fromIndex){const t=this.fromIndex.serialize();return [\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return [\"index-of\",this.needle.serialize(),this.haystack.serialize()]}}class Tr{constructor(t,e,r,n,i,s){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=s;}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");let r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);const i={},s=[];for(let a=2;a<t.length-1;a+=2){let o=t[a];const l=t[a+1];Array.isArray(o)||(o=[o]);const u=e.concat(a);if(0===o.length)return u.error(\"Expected at least one branch label.\");for(const t of o){if(\"number\"!=typeof t&&\"string\"!=typeof t)return u.error(\"Branch labels must be numbers or strings.\");if(\"number\"==typeof t&&Math.abs(t)>Number.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(\"number\"==typeof t&&Math.floor(t)!==t)return u.error(\"Numeric branch labels must be integer values.\");if(r){if(u.checkSubtype(r,ge(t)))return null}else r=ge(t);if(void 0!==i[String(t)])return u.error(\"Branch labels must be unique.\");i[String(t)]=s.length;}const c=e.parse(l,a,n);if(!c)return null;n=n||c.type,s.push(c);}const a=e.parse(t[1],1,Jt);if(!a)return null;const o=e.parse(t[t.length-1],t.length-1,n);return o?\"value\"!==a.type.kind&&e.concat(1).checkSubtype(r,a.type)?null:new Tr(r,n,a,i,s,o):null}evaluate(t){const e=this.input.evaluate(t);return (ge(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const t=[\"match\",this.input.serialize()],e=Object.keys(this.cases).sort(),r=[],n={};for(const t of e){const e=n[this.cases[t]];void 0===e?(n[this.cases[t]]=r.length,r.push([this.cases[t],[t]])):r[e][1].push(t);}const i=t=>\"number\"===this.inputType.kind?Number(t):t;for(const[e,n]of r)t.push(1===n.length?i(n[0]):n.map(i)),t.push(this.outputs[e].serialize());return t.push(this.otherwise.serialize()),t}}class zr{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error(\"Expected an odd number of arguments.\");let r;e.expectedType&&\"value\"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;i<t.length-1;i+=2){const s=e.parse(t[i],i,Yt);if(!s)return null;const a=e.parse(t[i+1],i+1,r);if(!a)return null;n.push([s,a]),r=r||a.type;}const i=e.parse(t[t.length-1],t.length-1,r);return i?new zr(r,n,i):null}evaluate(t){for(const[e,r]of this.branches)if(e.evaluate(t))return r.evaluate(t);return this.otherwise.evaluate(t)}eachChild(t){for(const[e,r]of this.branches)t(e),t(r);t(this.otherwise);}outputDefined(){return this.branches.every((([t,e])=>e.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const t=[\"case\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}class Br{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,Jt),n=e.parse(t[2],2,Xt);if(!r||!n)return null;if(!ae(r.type,[re(Jt),Kt,Jt]))return e.error(`Expected first argument to be of type array or string, but found ${ne(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,Xt);return i?new Br(r.type,r,n,i):null}return new Br(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!oe(e,[\"string\",\"array\"]))throw new be(`Expected first argument to be of type array or string, but found ${ne(ge(e))} instead.`);if(this.endIndex){const n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}serialize(){if(null!=this.endIndex&&void 0!==this.endIndex){const t=this.endIndex.serialize();return [\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return [\"slice\",this.input.serialize(),this.beginIndex.serialize()]}}function Er(t,e){return \"==\"===t||\"!=\"===t?\"boolean\"===e.kind||\"string\"===e.kind||\"number\"===e.kind||\"null\"===e.kind||\"value\"===e.kind:\"string\"===e.kind||\"number\"===e.kind||\"value\"===e.kind}function Cr(t,e,r,n){return 0===n.compare(e,r)}function Dr(t,e,r){const n=\"==\"!==t&&\"!=\"!==t;return class i{constructor(t,e,r){this.type=Yt,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument=\"value\"===t.type.kind||\"value\"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error(\"Expected two or three arguments.\");const r=t[0];let s=e.parse(t[1],1,Jt);if(!s)return null;if(!Er(r,s.type))return e.concat(1).error(`\"${r}\" comparisons are not supported for type '${ne(s.type)}'.`);let a=e.parse(t[2],2,Jt);if(!a)return null;if(!Er(r,a.type))return e.concat(2).error(`\"${r}\" comparisons are not supported for type '${ne(a.type)}'.`);if(s.type.kind!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(`Cannot compare types '${ne(s.type)}' and '${ne(a.type)}'.`);n&&(\"value\"===s.type.kind&&\"value\"!==a.type.kind?s=new we(a.type,[s]):\"value\"!==s.type.kind&&\"value\"===a.type.kind&&(a=new we(s.type,[a])));let o=null;if(4===t.length){if(\"string\"!==s.type.kind&&\"string\"!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(\"Cannot use collator to compare non-string types.\");if(o=e.parse(t[3],3,Qt),!o)return null}return new i(s,a,o)}evaluate(i){const s=this.lhs.evaluate(i),a=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=ge(s),r=ge(a);if(e.kind!==r.kind||\"string\"!==e.kind&&\"number\"!==e.kind)throw new be(`Expected arguments for \"${t}\" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=ge(s),r=ge(a);if(\"string\"!==t.kind||\"string\"!==r.kind)return e(i,s,a)}return this.collator?r(i,s,a,this.collator.evaluate(i)):e(i,s,a)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}serialize(){const e=[t];return this.eachChild((t=>{e.push(t.serialize());})),e}}}const Pr=Dr(\"==\",(function(t,e,r){return e===r}),Cr),Vr=Dr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !Cr(0,e,r,n)})),Fr=Dr(\"<\",(function(t,e,r){return e<r}),(function(t,e,r,n){return n.compare(e,r)<0})),Lr=Dr(\">\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Rr=Dr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),Ur=Dr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class $r{constructor(t,e,r,n,i){this.type=Kt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;}static parse(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,Xt);if(!r)return null;const n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");let i=null;if(n.locale&&(i=e.parse(n.locale,1,Kt),!i))return null;let s=null;if(n.currency&&(s=e.parse(n.currency,1,Kt),!s))return null;let a=null;if(n[\"min-fraction-digits\"]&&(a=e.parse(n[\"min-fraction-digits\"],1,Xt),!a))return null;let o=null;return n[\"max-fraction-digits\"]&&(o=e.parse(n[\"max-fraction-digits\"],1,Xt),!o)?null:new $r(r,i,s,a,o)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}serialize(){const t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]}}class jr{constructor(t){this.type=Xt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${ne(r.type)} instead.`):new jr(r):null}evaluate(t){const e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new be(`Expected value to be of type string or array, but found ${ne(ge(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}serialize(){const t=[\"length\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}const Or={\"==\":Pr,\"!=\":Vr,\">\":Lr,\"<\":Fr,\">=\":Ur,\"<=\":Rr,array:we,at:Sr,boolean:we,case:zr,coalesce:Ar,collator:Be,format:Ae,image:ke,in:Ir,\"index-of\":Mr,interpolate:_r,\"interpolate-hcl\":_r,\"interpolate-lab\":_r,length:jr,let:kr,literal:ve,match:Tr,number:we,\"number-format\":$r,object:we,slice:Br,step:er,string:we,\"to-boolean\":Ie,\"to-color\":Ie,\"to-number\":Ie,\"to-string\":Ie,var:We,within:Xe};function qr(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const s=i?i.evaluate(t):1,a=ye(e,r,n,s);if(a)throw new be(a);return new ce(e/255*s,r/255*s,n/255*s,s)}function Nr(t,e){return t in e}function Gr(t,e){const r=e[t];return void 0===r?null:r}function Zr(t){return {type:t}}function Xr(t){return {result:\"success\",value:t}}function Kr(t){return {result:\"error\",value:t}}function Yr(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Hr(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Wr(t){return !!t.expression&&t.expression.interpolated}function Jr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Qr(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)}function tn(t){return t}function en(t,e){const r=\"color\"===e.type,n=t.stops&&\"object\"==typeof t.stops[0][0],i=n||!(n||void 0!==t.property),s=t.type||(Wr(e)?\"exponential\":\"interval\");if(r&&((t=jt({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],ce.parse(t[1])]))),t.default=ce.parse(t.default?t.default:e.default)),t.colorSpace&&\"rgb\"!==t.colorSpace&&!br[t.colorSpace])throw new Error(`Unknown color space: ${t.colorSpace}`);let a,o,l;if(\"exponential\"===s)a=an;else if(\"interval\"===s)a=sn;else if(\"categorical\"===s){a=nn,o=Object.create(null);for(const e of t.stops)o[e[0]]=e[1];l=typeof t.stops[0][0];}else {if(\"identity\"!==s)throw new Error(`Unknown function type \"${s}\"`);a=on;}if(n){const r={},n=[];for(let e=0;e<t.stops.length;e++){const i=t.stops[e],s=i[0].zoom;void 0===r[s]&&(r[s]={zoom:s,type:t.type,property:t.property,default:t.default,stops:[]},n.push(s)),r[s].stops.push([i[0].value,i[1]]);}const i=[];for(const t of n)i.push([r[t].zoom,en(r[t],e)]);const s={name:\"linear\"};return {kind:\"composite\",interpolationType:s,interpolationFactor:_r.interpolationFactor.bind(void 0,s),zoomStops:i.map((t=>t[0])),evaluate:({zoom:r},n)=>an({stops:i,base:t.base},e,r).evaluate(r,n)}}if(i){const r=\"exponential\"===s?{name:\"exponential\",base:void 0!==t.base?t.base:1}:null;return {kind:\"camera\",interpolationType:r,interpolationFactor:_r.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:r})=>a(t,e,r,o,l)}}return {kind:\"source\",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?rn(t.default,e.default):a(t,e,i,o,l)}}}function rn(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function nn(t,e,r,n,i){return rn(typeof r===i?n[r]:void 0,t.default,e.default)}function sn(t,e,r){if(\"number\"!==Jr(r))return rn(t.default,e.default);const n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];const i=tr(t.stops.map((t=>t[0])),r);return t.stops[i][1]}function an(t,e,r){const n=void 0!==t.base?t.base:1;if(\"number\"!==Jr(r))return rn(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];const s=tr(t.stops.map((t=>t[0])),r),a=function(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[s][0],t.stops[s+1][0]),o=t.stops[s][1],l=t.stops[s+1][1];let u=nr[e.type]||tn;if(t.colorSpace&&\"rgb\"!==t.colorSpace){const e=br[t.colorSpace];u=(t,r)=>e.reverse(e.interpolate(e.forward(t),e.forward(r),a));}return \"function\"==typeof o.evaluate?{evaluate(...t){const e=o.evaluate.apply(void 0,t),r=l.evaluate.apply(void 0,t);if(void 0!==e&&void 0!==r)return u(e,r,a)}}:u(o,l,a)}function on(t,e,r){return \"color\"===e.type?r=ce.parse(r):\"formatted\"===e.type?r=fe.fromString(r.toString()):\"resolvedImage\"===e.type?r=de.fromString(r.toString()):Jr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),rn(r,t.default,e.default)}ze.register(Or,{error:[{kind:\"error\"},[Kt],(t,[e])=>{throw new be(e.evaluate(t))}],typeof:[Kt,[Jt],(t,[e])=>ne(ge(e.evaluate(t)))],\"to-rgba\":[re(Xt,4),[Ht],(t,[e])=>e.evaluate(t).toArray()],rgb:[Ht,[Xt,Xt,Xt],qr],rgba:[Ht,[Xt,Xt,Xt,Xt],qr],has:{type:Yt,overloads:[[[Kt],(t,[e])=>Nr(e.evaluate(t),t.properties())],[[Kt,Wt],(t,[e,r])=>Nr(e.evaluate(t),r.evaluate(t))]]},get:{type:Jt,overloads:[[[Kt],(t,[e])=>Gr(e.evaluate(t),t.properties())],[[Kt,Wt],(t,[e,r])=>Gr(e.evaluate(t),r.evaluate(t))]]},\"feature-state\":[Jt,[Kt],(t,[e])=>Gr(e.evaluate(t),t.featureState||{})],properties:[Wt,[],t=>t.properties()],\"geometry-type\":[Kt,[],t=>t.geometryType()],id:[Jt,[],t=>t.id()],zoom:[Xt,[],t=>t.globals.zoom],pitch:[Xt,[],t=>t.globals.pitch||0],\"distance-from-center\":[Xt,[],t=>t.distanceFromCenter()],\"heatmap-density\":[Xt,[],t=>t.globals.heatmapDensity||0],\"line-progress\":[Xt,[],t=>t.globals.lineProgress||0],\"sky-radial-progress\":[Xt,[],t=>t.globals.skyRadialProgress||0],accumulated:[Jt,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],\"+\":[Xt,Zr(Xt),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],\"*\":[Xt,Zr(Xt),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],\"-\":{type:Xt,overloads:[[[Xt,Xt],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[Xt],(t,[e])=>-e.evaluate(t)]]},\"/\":[Xt,[Xt,Xt],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],\"%\":[Xt,[Xt,Xt],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[Xt,[],()=>Math.LN2],pi:[Xt,[],()=>Math.PI],e:[Xt,[],()=>Math.E],\"^\":[Xt,[Xt,Xt],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[Xt,[Xt],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[Xt,[Xt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[Xt,[Xt],(t,[e])=>Math.log(e.evaluate(t))],log2:[Xt,[Xt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[Xt,[Xt],(t,[e])=>Math.sin(e.evaluate(t))],cos:[Xt,[Xt],(t,[e])=>Math.cos(e.evaluate(t))],tan:[Xt,[Xt],(t,[e])=>Math.tan(e.evaluate(t))],asin:[Xt,[Xt],(t,[e])=>Math.asin(e.evaluate(t))],acos:[Xt,[Xt],(t,[e])=>Math.acos(e.evaluate(t))],atan:[Xt,[Xt],(t,[e])=>Math.atan(e.evaluate(t))],min:[Xt,Zr(Xt),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[Xt,Zr(Xt),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[Xt,[Xt],(t,[e])=>Math.abs(e.evaluate(t))],round:[Xt,[Xt],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[Xt,[Xt],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[Xt,[Xt],(t,[e])=>Math.ceil(e.evaluate(t))],\"filter-==\":[Yt,[Kt,Jt],(t,[e,r])=>t.properties()[e.value]===r.value],\"filter-id-==\":[Yt,[Jt],(t,[e])=>t.id()===e.value],\"filter-type-==\":[Yt,[Kt],(t,[e])=>t.geometryType()===e.value],\"filter-<\":[Yt,[Kt,Jt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<i}],\"filter-id-<\":[Yt,[Jt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<n}],\"filter->\":[Yt,[Kt,Jt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],\"filter-id->\":[Yt,[Jt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],\"filter-<=\":[Yt,[Kt,Jt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],\"filter-id-<=\":[Yt,[Jt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],\"filter->=\":[Yt,[Kt,Jt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],\"filter-id->=\":[Yt,[Jt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],\"filter-has\":[Yt,[Jt],(t,[e])=>e.value in t.properties()],\"filter-has-id\":[Yt,[],t=>null!==t.id()&&void 0!==t.id()],\"filter-type-in\":[Yt,[re(Kt)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],\"filter-id-in\":[Yt,[re(Jt)],(t,[e])=>e.value.indexOf(t.id())>=0],\"filter-in-small\":[Yt,[Kt,re(Jt)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],\"filter-in-large\":[Yt,[Kt,re(Jt)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:Yt,overloads:[[[Yt,Yt],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[Zr(Yt),(t,e)=>{for(const r of e)if(!r.evaluate(t))return !1;return !0}]]},any:{type:Yt,overloads:[[[Yt,Yt],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[Zr(Yt),(t,e)=>{for(const r of e)if(r.evaluate(t))return !0;return !1}]]},\"!\":[Yt,[Yt],(t,[e])=>!e.evaluate(t)],\"is-supported-script\":[Yt,[Kt],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return !r||r(e.evaluate(t))}],upcase:[Kt,[Kt],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[Kt,[Kt],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[Kt,Zr(Jt),(t,e)=>e.map((e=>xe(e.evaluate(t)))).join(\"\")],\"resolved-locale\":[Kt,[Qt],(t,[e])=>e.evaluate(t).resolvedLocale()]});class ln{constructor(t,e){this.expression=t,this._warningHistory={},this._evaluator=new Te,this._defaultValue=e?function(t){return \"color\"===t.type&&Qr(t.default)?new ce(0,0,0,0):\"color\"===t.type?ce.parse(t.default)||null:void 0===t.default?null:t.default}(e):null,this._enumValues=e&&\"enum\"===e.type?e.values:null;}evaluateWithoutErrorHandling(t,e,r,n,i,s,a,o){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n||null,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s,this._evaluator.featureTileCoord=a||null,this._evaluator.featureDistanceData=o||null,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,s,a,o){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n||null,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s||null,this._evaluator.featureTileCoord=a||null,this._evaluator.featureDistanceData=o||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||\"number\"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new be(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(\", \")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function un(t){return Array.isArray(t)&&t.length>0&&\"string\"==typeof t[0]&&t[0]in Or}function cn(t,e){const r=new Je(Or,[],e?function(t){const e={color:Ht,string:Kt,number:Xt,enum:Kt,boolean:Yt,formatted:te,resolvedImage:ee};return \"array\"===t.type?re(e[t.value]||Jt,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Xr(new ln(n,e)):Kr(r.errors)}class hn{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Ye(e.expression);}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}}class pn{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Ye(e.expression),this.interpolationType=n;}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}interpolationFactor(t,e,r){return this.interpolationType?_r.interpolationFactor(this.interpolationType,t,e,r):0}}function fn(t,e){if(\"error\"===(t=cn(t,e)).result)return t;const r=t.value.expression,n=Ke(r);if(!n&&!Yr(e))return Kr([new Nt(\"\",\"data expressions not supported\")]);const i=He(r,[\"zoom\",\"pitch\",\"distance-from-center\"]);if(!i&&!Hr(e))return Kr([new Nt(\"\",\"zoom expressions not supported\")]);const s=yn(r);return s||i?s instanceof Nt?Kr([s]):s instanceof _r&&!Wr(e)?Kr([new Nt(\"\",'\"interpolate\" expressions cannot be used with this property')]):Xr(s?new pn(n?\"camera\":\"composite\",t.value,s.labels,s instanceof _r?s.interpolation:void 0):new hn(n?\"constant\":\"source\",t.value)):Kr([new Nt(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}class dn{constructor(t,e){this._parameters=t,this._specification=e,jt(this,en(this._parameters,this._specification));}static deserialize(t){return new dn(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function yn(t){let e=null;if(t instanceof kr)e=yn(t.result);else if(t instanceof Ar){for(const r of t.args)if(e=yn(r),e)break}else (t instanceof er||t instanceof _r)&&t.input instanceof ze&&\"zoom\"===t.input.name&&(e=t);return e instanceof Nt||t.eachChild((t=>{const r=yn(t);r instanceof Nt?e=r:!e&&r?e=new Nt(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):e&&r&&e!==r&&(e=new Nt(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'));})),e}class mn{constructor(t,e,r,n){this.message=(t?`${t}: `:\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);}}function gn(t){const e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},s=t.style,a=t.styleSpec;let o=[];const l=Jr(r);if(\"object\"!==l)return [new mn(e,r,`object expected, ${l} found`)];for(const t in r){const l=t.split(\".\")[0],u=n[l]||n[\"*\"];let c;i[l]?c=i[l]:n[l]?c=Hn:i[\"*\"]?c=i[\"*\"]:n[\"*\"]&&(c=Hn),c?o=o.concat(c({key:(e?`${e}.`:e)+t,value:r[t],valueSpec:u,style:s,styleSpec:a,object:r,objectKey:t},r)):o.push(new mn(e,r[t],`unknown property \"${t}\"`));}for(const t in n)i[t]||n[t].required&&void 0===n[t].default&&void 0===r[t]&&o.push(new mn(e,r,`missing required property \"${t}\"`));return o}function xn(t){const e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,s=t.key,a=t.arrayElementValidator||Hn;if(\"array\"!==Jr(e))return [new mn(s,e,`array expected, ${Jr(e)} found`)];if(r.length&&e.length!==r.length)return [new mn(s,e,`array length ${r.length} expected, length ${e.length} found`)];if(r[\"min-length\"]&&e.length<r[\"min-length\"])return [new mn(s,e,`array length at least ${r[\"min-length\"]} expected, length ${e.length} found`)];let o={type:r.value,values:r.values,minimum:r.minimum,maximum:r.maximum,function:void 0};i.$version<7&&(o.function=r.function),\"object\"===Jr(r.value)&&(o=r.value);let l=[];for(let t=0;t<e.length;t++)l=l.concat(a({array:e,arrayIndex:t,value:e[t],valueSpec:o,style:n,styleSpec:i,key:`${s}[${t}]`}));return l}function vn(t){const e=t.key,r=t.value,n=t.valueSpec;let i=Jr(r);if(\"number\"===i&&r!=r&&(i=\"NaN\"),\"number\"!==i)return [new mn(e,r,`number expected, ${i} found`)];if(\"minimum\"in n){let i=n.minimum;if(\"array\"===Jr(n.minimum)&&(i=n.minimum[t.arrayIndex]),r<i)return [new mn(e,r,`${r} is less than the minimum value ${i}`)]}if(\"maximum\"in n){let i=n.maximum;if(\"array\"===Jr(n.maximum)&&(i=n.maximum[t.arrayIndex]),r>i)return [new mn(e,r,`${r} is greater than the maximum value ${i}`)]}return []}function bn(t){const e=t.valueSpec,r=Ot(t.value.type);let n,i,s,a={};const o=\"categorical\"!==r&&void 0===t.value.property,l=!o,u=\"array\"===Jr(t.value.stops)&&\"array\"===Jr(t.value.stops[0])&&\"object\"===Jr(t.value.stops[0][0]),c=gn({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===r)return [new mn(t.key,t.value,'identity function may not have a \"stops\" property')];let e=[];const n=t.value;return e=e.concat(xn({key:t.key,value:n,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),\"array\"===Jr(n)&&0===n.length&&e.push(new mn(t.key,n,\"array must have at least one stop\")),e},default:function(t){return Hn({key:t.key,value:t.value,valueSpec:e,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===r&&o&&c.push(new mn(t.key,t.value,'missing required property \"property\"')),\"identity\"===r||t.value.stops||c.push(new mn(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===r&&t.valueSpec.expression&&!Wr(t.valueSpec)&&c.push(new mn(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!Yr(t.valueSpec)?c.push(new mn(t.key,t.value,\"property functions not supported\")):o&&!Hr(t.valueSpec)&&c.push(new mn(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==r&&!u||void 0!==t.value.property||c.push(new mn(t.key,t.value,'\"property\" property is required')),c;function h(t){let r=[];const n=t.value,o=t.key;if(\"array\"!==Jr(n))return [new mn(o,n,`array expected, ${Jr(n)} found`)];if(2!==n.length)return [new mn(o,n,`array length 2 expected, length ${n.length} found`)];if(u){if(\"object\"!==Jr(n[0]))return [new mn(o,n,`object expected, ${Jr(n[0])} found`)];if(void 0===n[0].zoom)return [new mn(o,n,\"object stop key must have zoom\")];if(void 0===n[0].value)return [new mn(o,n,\"object stop key must have value\")];const e=Ot(n[0].zoom);if(\"number\"!=typeof e)return [new mn(o,n[0].zoom,\"stop zoom values must be numbers\")];if(s&&s>e)return [new mn(o,n[0].zoom,\"stop zoom values must appear in ascending order\")];e!==s&&(s=e,i=void 0,a={}),r=r.concat(gn({key:`${o}[0]`,value:n[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:vn,value:p}}));}else r=r.concat(p({key:`${o}[0]`,value:n[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},n));return un(qt(n[1]))?r.concat([new mn(`${o}[1]`,n[1],\"expressions are not allowed in function stops.\")]):r.concat(Hn({key:`${o}[1]`,value:n[1],valueSpec:e,style:t.style,styleSpec:t.styleSpec}))}function p(t,s){const o=Jr(t.value),l=Ot(t.value),u=null!==t.value?t.value:s;if(n){if(o!==n)return [new mn(t.key,u,`${o} stop domain type must match previous stop domain type ${n}`)]}else n=o;if(\"number\"!==o&&\"string\"!==o&&\"boolean\"!==o&&\"number\"!=typeof l&&\"string\"!=typeof l&&\"boolean\"!=typeof l)return [new mn(t.key,u,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==o&&\"categorical\"!==r){let n=`number expected, ${o} found`;return Yr(e)&&void 0===r&&(n+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new mn(t.key,u,n)]}return \"categorical\"!==r||\"number\"!==o||\"number\"==typeof l&&isFinite(l)&&Math.floor(l)===l?\"categorical\"!==r&&\"number\"===o&&\"number\"==typeof l&&\"number\"==typeof i&&void 0!==i&&l<i?[new mn(t.key,u,\"stop domain values must appear in ascending order\")]:(i=l,\"categorical\"===r&&l in a?[new mn(t.key,u,\"stop domain values must be unique\")]:(a[l]=!0,[])):[new mn(t.key,u,`integer expected, found ${String(l)}`)]}}function _n(t){const e=(\"property\"===t.expressionContext?fn:cn)(qt(t.value),t.valueSpec);if(\"error\"===e.result)return e.value.map((e=>new mn(`${t.key}${e.key}`,t.value,e.message)));const r=e.value.expression||e.value._styleExpression.expression;if(\"property\"===t.expressionContext&&\"text-font\"===t.propertyKey&&!r.outputDefined())return [new mn(t.key,t.value,`Invalid data expression for \"${t.propertyKey}\". Output values must be contained as literals within the expression.`)];if(\"property\"===t.expressionContext&&\"layout\"===t.propertyType&&!Ye(r))return [new mn(t.key,t.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(\"filter\"===t.expressionContext)return wn(r,t);if(t.expressionContext&&0===t.expressionContext.indexOf(\"cluster\")){if(!He(r,[\"zoom\",\"feature-state\"]))return [new mn(t.key,t.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(\"cluster-initial\"===t.expressionContext&&!Ke(r))return [new mn(t.key,t.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return []}function wn(t,e){const r=new Set([\"zoom\",\"feature-state\",\"pitch\",\"distance-from-center\"]);if(e.valueSpec&&e.valueSpec.expression)for(const t of e.valueSpec.expression.parameters)r.delete(t);if(0===r.size)return [];const n=[];return t instanceof ze&&r.has(t.name)?[new mn(e.key,e.value,`[\"${t.name}\"] expression is not supported in a filter for a ${e.object.type} layer with id: ${e.object.id}`)]:(t.eachChild((t=>{n.push(...wn(t,e));})),n)}function An(t){const e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(Ot(r))&&i.push(new mn(e,r,`expected one of [${n.values.join(\", \")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(Ot(r))&&i.push(new mn(e,r,`expected one of [${Object.keys(n.values).join(\", \")}], ${JSON.stringify(r)} found`)),i}function kn(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case\"has\":return t.length>=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return !1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(const e of t.slice(1))if(!kn(e)&&\"boolean\"!=typeof e)return !1;return !0;default:return !0}}function Sn(t,e=\"fill\"){if(null==t)return {filter:()=>!0,needGeometry:!1,needFeature:!1};kn(t)||(t=Cn(t));const r=t;let n=!0;try{n=function(t){if(!Tn(t))return t;let e=qt(t);return Mn(e),e=In(e),e}(r);}catch(t){console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\\nand paste the contents of this message in the report.\\nThank you!\\nFilter Expression:\\n${JSON.stringify(r,null,2)}\\n `);}const i=$t[`filter_${e}`],s=cn(n,i);let a=null;if(\"error\"===s.result)throw new Error(s.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));a=(t,e,r)=>s.value.evaluate(t,e,{},r);let o=null,l=null;if(n!==r){const t=cn(r,i);if(\"error\"===t.result)throw new Error(t.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));o=(e,r,n,i,s)=>t.value.evaluate(e,r,{},n,void 0,void 0,i,s),l=!Ke(t.value.expression);}return a=a,{filter:a,dynamicFilter:o||void 0,needGeometry:En(n),needFeature:!!l}}function In(t){if(!Array.isArray(t))return t;const e=function(t){if(zn.has(t[0]))for(let e=1;e<t.length;e++)if(Tn(t[e]))return !0;return t}(t);return !0===e?e:e.map((t=>In(t)))}function Mn(t){let e=!1;const r=[];if(\"case\"===t[0]){for(let n=1;n<t.length-1;n+=2)e=e||Tn(t[n]),r.push(t[n+1]);r.push(t[t.length-1]);}else if(\"match\"===t[0]){e=e||Tn(t[1]);for(let e=2;e<t.length-1;e+=2)r.push(t[e+1]);r.push(t[t.length-1]);}else if(\"step\"===t[0]){e=e||Tn(t[1]);for(let e=1;e<t.length-1;e+=2)r.push(t[e+1]);}e&&(t.length=0,t.push(\"any\",...r));for(let e=1;e<t.length;e++)Mn(t[e]);}function Tn(t){if(!Array.isArray(t))return !1;if(\"pitch\"===(e=t[0])||\"distance-from-center\"===e)return !0;var e;for(let e=1;e<t.length;e++)if(Tn(t[e]))return !0;return !1}const zn=new Set([\"in\",\"==\",\"!=\",\">\",\">=\",\"<\",\"<=\",\"to-boolean\"]);function Bn(t,e){return t<e?-1:t>e?1:0}function En(t){if(!Array.isArray(t))return !1;if(\"within\"===t[0])return !0;for(let e=1;e<t.length;e++)if(En(t[e]))return !0;return !1}function Cn(t){if(!t)return !0;const e=t[0];return t.length<=1?\"any\"!==e:\"==\"===e?Dn(t[1],t[2],\"==\"):\"!=\"===e?Fn(Dn(t[1],t[2],\"==\")):\"<\"===e||\">\"===e||\"<=\"===e||\">=\"===e?Dn(t[1],t[2],e):\"any\"===e?(r=t.slice(1),[\"any\"].concat(r.map(Cn))):\"all\"===e?[\"all\"].concat(t.slice(1).map(Cn)):\"none\"===e?[\"all\"].concat(t.slice(1).map(Cn).map(Fn)):\"in\"===e?Pn(t[1],t.slice(2)):\"!in\"===e?Fn(Pn(t[1],t.slice(2))):\"has\"===e?Vn(t[1]):\"!has\"===e?Fn(Vn(t[1])):\"within\"!==e||t;var r;}function Dn(t,e,r){switch(t){case\"$type\":return [`filter-type-${r}`,e];case\"$id\":return [`filter-id-${r}`,e];default:return [`filter-${r}`,t,e]}}function Pn(t,e){if(0===e.length)return !1;switch(t){case\"$type\":return [\"filter-type-in\",[\"literal\",e]];case\"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?[\"filter-in-large\",t,[\"literal\",e.sort(Bn)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function Vn(t){switch(t){case\"$type\":return !0;case\"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function Fn(t){return [\"!\",t]}function Ln(t){return kn(qt(t.value))?_n(jt({},t,{expressionContext:\"filter\",valueSpec:t.styleSpec[`filter_${t.layerType||\"fill\"}`]})):Rn(t)}function Rn(t){const e=t.value,r=t.key;if(\"array\"!==Jr(e))return [new mn(r,e,`array expected, ${Jr(e)} found`)];const n=t.styleSpec;let i,s=[];if(e.length<1)return [new mn(r,e,\"filter array must have at least 1 element\")];switch(s=s.concat(An({key:`${r}[0]`,value:e[0],valueSpec:n.filter_operator,style:t.style,styleSpec:t.styleSpec})),Ot(e[0])){case\"<\":case\"<=\":case\">\":case\">=\":e.length>=2&&\"$type\"===Ot(e[1])&&s.push(new mn(r,e,`\"$type\" cannot be use with operator \"${e[0]}\"`));case\"==\":case\"!=\":3!==e.length&&s.push(new mn(r,e,`filter array for operator \"${e[0]}\" must have 3 elements`));case\"in\":case\"!in\":e.length>=2&&(i=Jr(e[1]),\"string\"!==i&&s.push(new mn(`${r}[1]`,e[1],`string expected, ${i} found`)));for(let a=2;a<e.length;a++)i=Jr(e[a]),\"$type\"===Ot(e[1])?s=s.concat(An({key:`${r}[${a}]`,value:e[a],valueSpec:n.geometry_type,style:t.style,styleSpec:t.styleSpec})):\"string\"!==i&&\"number\"!==i&&\"boolean\"!==i&&s.push(new mn(`${r}[${a}]`,e[a],`string, number, or boolean expected, ${i} found`));break;case\"any\":case\"all\":case\"none\":for(let n=1;n<e.length;n++)s=s.concat(Rn({key:`${r}[${n}]`,value:e[n],style:t.style,styleSpec:t.styleSpec}));break;case\"has\":case\"!has\":i=Jr(e[1]),2!==e.length?s.push(new mn(r,e,`filter array for \"${e[0]}\" operator must have 2 elements`)):\"string\"!==i&&s.push(new mn(`${r}[1]`,e[1],`string expected, ${i} found`));break;case\"within\":i=Jr(e[1]),2!==e.length?s.push(new mn(r,e,`filter array for \"${e[0]}\" operator must have 2 elements`)):\"object\"!==i&&s.push(new mn(`${r}[1]`,e[1],`object expected, ${i} found`));}return s}function Un(t,e){const r=t.key,n=t.style,i=t.styleSpec,s=t.value,a=t.objectKey,o=i[`${e}_${t.layerType}`];if(!o)return [];const l=a.match(/^(.*)-transition$/);if(\"paint\"===e&&l&&o[l[1]]&&o[l[1]].transition)return Hn({key:r,value:s,valueSpec:i.transition,style:n,styleSpec:i});const u=t.valueSpec||o[a];if(!u)return [new mn(r,s,`unknown property \"${a}\"`)];let c;if(\"string\"===Jr(s)&&Yr(u)&&!u.tokens&&(c=/^{([^}]+)}$/.exec(s)))return [new mn(r,s,`\"${a}\" does not support interpolation syntax\\nUse an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(c[1])} }\\`.`)];const h=[];return \"symbol\"===t.layerType&&(\"text-field\"===a&&n&&!n.glyphs&&h.push(new mn(r,s,'use of \"text-field\" requires a style \"glyphs\" property')),\"text-font\"===a&&Qr(qt(s))&&\"identity\"===Ot(s.type)&&h.push(new mn(r,s,'\"text-font\" does not support identity functions'))),h.concat(Hn({key:t.key,value:s,valueSpec:u,style:n,styleSpec:i,expressionContext:\"property\",propertyType:e,propertyKey:a}))}function $n(t){return Un(t,\"paint\")}function jn(t){return Un(t,\"layout\")}function On(t){let e=[];const r=t.value,n=t.key,i=t.style,s=t.styleSpec;r.type||r.ref||e.push(new mn(n,r,'either \"type\" or \"ref\" is required'));let a=Ot(r.type);const o=Ot(r.ref);if(r.id){const s=Ot(r.id);for(let a=0;a<t.arrayIndex;a++){const t=i.layers[a];Ot(t.id)===s&&e.push(new mn(n,r.id,`duplicate layer id \"${r.id}\", previously used at line ${t.id.__line__}`));}}if(\"ref\"in r){let t;[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach((t=>{t in r&&e.push(new mn(n,r[t],`\"${t}\" is prohibited for ref layers`));})),i.layers.forEach((e=>{Ot(e.id)===o&&(t=e);})),t?t.ref?e.push(new mn(n,r.ref,\"ref cannot reference another ref layer\")):a=Ot(t.type):\"string\"==typeof o&&e.push(new mn(n,r.ref,`ref layer \"${o}\" not found`));}else if(\"background\"!==a&&\"sky\"!==a)if(r.source){const t=i.sources&&i.sources[r.source],s=t&&Ot(t.type);t?\"vector\"===s&&\"raster\"===a?e.push(new mn(n,r.source,`layer \"${r.id}\" requires a raster source`)):\"raster\"===s&&\"raster\"!==a?e.push(new mn(n,r.source,`layer \"${r.id}\" requires a vector source`)):\"vector\"!==s||r[\"source-layer\"]?\"raster-dem\"===s&&\"hillshade\"!==a?e.push(new mn(n,r.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):\"line\"!==a||!r.paint||!r.paint[\"line-gradient\"]||\"geojson\"===s&&t.lineMetrics||e.push(new mn(n,r,`layer \"${r.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`)):e.push(new mn(n,r,`layer \"${r.id}\" must specify a \"source-layer\"`)):e.push(new mn(n,r.source,`source \"${r.source}\" not found`));}else e.push(new mn(n,r,'missing required property \"source\"'));return e=e.concat(gn({key:n,value:r,valueSpec:s.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":()=>[],type:()=>Hn({key:`${n}.type`,value:r.type,valueSpec:s.layer.type,style:t.style,styleSpec:t.styleSpec,object:r,objectKey:\"type\"}),filter:t=>Ln(jt({layerType:a},t)),layout:t=>gn({layer:r,key:t.key,value:t.value,valueSpec:{},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":t=>jn(jt({layerType:a},t))}}),paint:t=>gn({layer:r,key:t.key,value:t.value,valueSpec:{},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":t=>$n(jt({layerType:a},t))}})}})),e}function qn(t){const e=t.value,r=t.key,n=Jr(e);return \"string\"!==n?[new mn(r,e,`string expected, ${n} found`)]:[]}const Nn={promoteId:function({key:t,value:e}){if(\"string\"===Jr(e))return qn({key:t,value:e});{const r=[];for(const n in e)r.push(...qn({key:`${t}.${n}`,value:e[n]}));return r}}};function Gn(t){const e=t.value,r=t.key,n=t.styleSpec,i=t.style;if(!e.type)return [new mn(r,e,'\"type\" is required')];const s=Ot(e.type);let a;switch(s){case\"vector\":case\"raster\":case\"raster-dem\":return a=gn({key:r,value:e,valueSpec:n[`source_${s.replace(\"-\",\"_\")}`],style:t.style,styleSpec:n,objectElementValidators:Nn}),a;case\"geojson\":if(a=gn({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,objectElementValidators:Nn}),e.cluster)for(const t in e.clusterProperties){const[n,i]=e.clusterProperties[t],s=\"string\"==typeof n?[n,[\"accumulated\"],[\"get\",t]]:n;a.push(..._n({key:`${r}.${t}.map`,value:i,expressionContext:\"cluster-map\"})),a.push(..._n({key:`${r}.${t}.reduce`,value:s,expressionContext:\"cluster-reduce\"}));}return a;case\"video\":return gn({key:r,value:e,valueSpec:n.source_video,style:i,styleSpec:n});case\"image\":return gn({key:r,value:e,valueSpec:n.source_image,style:i,styleSpec:n});case\"canvas\":return [new mn(r,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return An({key:`${r}.type`,value:e.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:i,styleSpec:n})}}function Zn(t){const e=t.value,r=t.styleSpec,n=r.light,i=t.style;let s=[];const a=Jr(e);if(void 0===e)return s;if(\"object\"!==a)return s=s.concat([new mn(\"light\",e,`object expected, ${a} found`)]),s;for(const t in e){const a=t.match(/^(.*)-transition$/);s=s.concat(a&&n[a[1]]&&n[a[1]].transition?Hn({key:t,value:e[t],valueSpec:r.transition,style:i,styleSpec:r}):n[t]?Hn({key:t,value:e[t],valueSpec:n[t],style:i,styleSpec:r}):[new mn(t,e[t],`unknown property \"${t}\"`)]);}return s}function Xn(t){const e=t.value,r=t.key,n=t.style,i=t.styleSpec,s=i.terrain;let a=[];const o=Jr(e);if(void 0===e)return a;if(\"object\"!==o)return a=a.concat([new mn(\"terrain\",e,`object expected, ${o} found`)]),a;for(const t in e){const r=t.match(/^(.*)-transition$/);a=a.concat(r&&s[r[1]]&&s[r[1]].transition?Hn({key:t,value:e[t],valueSpec:i.transition,style:n,styleSpec:i}):s[t]?Hn({key:t,value:e[t],valueSpec:s[t],style:n,styleSpec:i}):[new mn(t,e[t],`unknown property \"${t}\"`)]);}if(e.source){const t=n.sources&&n.sources[e.source],i=t&&Ot(t.type);t?\"raster-dem\"!==i&&a.push(new mn(r,e.source,`terrain cannot be used with a source of type ${String(i)}, it only be used with a \"raster-dem\" source type`)):a.push(new mn(r,e.source,`source \"${e.source}\" not found`));}else a.push(new mn(r,e,'terrain is missing required property \"source\"'));return a}function Kn(t){const e=t.value,r=t.style,n=t.styleSpec,i=n.fog;let s=[];const a=Jr(e);if(void 0===e)return s;if(\"object\"!==a)return s=s.concat([new mn(\"fog\",e,`object expected, ${a} found`)]),s;for(const t in e){const a=t.match(/^(.*)-transition$/);s=s.concat(a&&i[a[1]]&&i[a[1]].transition?Hn({key:t,value:e[t],valueSpec:n.transition,style:r,styleSpec:n}):i[t]?Hn({key:t,value:e[t],valueSpec:i[t],style:r,styleSpec:n}):[new mn(t,e[t],`unknown property \"${t}\"`)]);}return s}const Yn={\"*\":()=>[],array:xn,boolean:function(t){const e=t.value,r=t.key,n=Jr(e);return \"boolean\"!==n?[new mn(r,e,`boolean expected, ${n} found`)]:[]},number:vn,color:function(t){const e=t.key,r=t.value,n=Jr(r);return \"string\"!==n?[new mn(e,r,`color expected, ${n} found`)]:null===ue.parseCSSColor(r)?[new mn(e,r,`color expected, \"${r}\" found`)]:[]},enum:An,filter:Ln,function:bn,layer:On,object:gn,source:Gn,light:Zn,terrain:Xn,fog:Kn,string:qn,formatted:function(t){return 0===qn(t).length?[]:_n(t)},resolvedImage:function(t){return 0===qn(t).length?[]:_n(t)},projection:function(t){const e=t.value,r=t.styleSpec,n=r.projection,i=t.style;let s=[];const a=Jr(e);if(\"object\"===a)for(const t in e)s=s.concat(Hn({key:t,value:e[t],valueSpec:n[t],style:i,styleSpec:r}));else \"string\"!==a&&(s=s.concat([new mn(\"projection\",e,`object or string expected, ${a} found`)]));return s}};function Hn(t){const e=t.value,r=t.valueSpec,n=t.styleSpec;return r.expression&&Qr(Ot(e))?bn(t):r.expression&&un(qt(e))?_n(t):r.type&&Yn[r.type]?Yn[r.type](t):gn(jt({},t,{valueSpec:r.type?n[r.type]:r}))}function Wn(t){const e=t.value,r=t.key,n=qn(t);return n.length||(-1===e.indexOf(\"{fontstack}\")&&n.push(new mn(r,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&n.push(new mn(r,e,'\"glyphs\" url must include a \"{range}\" token'))),n}function Jn(t,e=$t){return ei(Hn({key:\"\",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:Wn,\"*\":()=>[]}}))}const Qn=t=>ei($n(t)),ti=t=>ei(jn(t));function ei(t){return t.slice().sort(((t,e)=>t.line&&e.line?t.line-e.line:0))}function ri(t,e){let r=!1;if(e&&e.length)for(const n of e)t.fire(new Rt(new Error(n.message))),r=!0;return r}var ni=ii;function ii(t,e,r){var n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(var s=0;s<this.d*this.d;s++){var a=i[3+s],o=i[3+s+1];n.push(a===o?null:i.subarray(a,o));}var l=i[3+n.length+1];this.keys=i.subarray(i[3+n.length],l),this.bboxes=i.subarray(l),this.insert=this._insertReadonly;}else {this.d=e+2*r;for(var u=0;u<this.d*this.d;u++)n.push([]);this.keys=[],this.bboxes=[];}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;var c=r/e*t;this.min=-c,this.max=t+c;}ii.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i);},ii.prototype._insertReadonly=function(){throw \"Cannot insert into a GridIndex created from an ArrayBuffer.\"},ii.prototype._insertCell=function(t,e,r,n,i,s){this.cells[i].push(s);},ii.prototype.query=function(t,e,r,n,i){var s=this.min,a=this.max;if(t<=s&&e<=s&&a<=r&&a<=n&&!i)return Array.prototype.slice.call(this.keys);var o=[];return this._forEachCell(t,e,r,n,this._queryCell,o,{},i),o},ii.prototype._queryCell=function(t,e,r,n,i,s,a,o){var l=this.cells[i];if(null!==l)for(var u=this.keys,c=this.bboxes,h=0;h<l.length;h++){var p=l[h];if(void 0===a[p]){var f=4*p;(o?o(c[f+0],c[f+1],c[f+2],c[f+3]):t<=c[f+2]&&e<=c[f+3]&&r>=c[f+0]&&n>=c[f+1])?(a[p]=!0,s.push(u[p])):a[p]=!1;}}},ii.prototype._forEachCell=function(t,e,r,n,i,s,a,o){for(var l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),h=this._convertToCellCoord(n),p=l;p<=c;p++)for(var f=u;f<=h;f++){var d=this.d*f+p;if((!o||o(this._convertFromCellCoord(p),this._convertFromCellCoord(f),this._convertFromCellCoord(p+1),this._convertFromCellCoord(f+1)))&&i.call(this,t,e,r,n,d,s,a,o))return}},ii.prototype._convertFromCellCoord=function(t){return (t-this.padding)/this.scale},ii.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},ii.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n<this.cells.length;n++)r+=this.cells[n].length;var i=new Int32Array(e+r+this.keys.length+this.bboxes.length);i[0]=this.extent,i[1]=this.n,i[2]=this.padding;for(var s=e,a=0;a<t.length;a++){var o=t[a];i[3+a]=s,i.set(o,s),s+=o.length;}return i[3+t.length]=s,i.set(this.keys,s),i[3+t.length+1]=s+=this.keys.length,i.set(this.bboxes,s),s+=this.bboxes.length,i.buffer};const si={};function ai(t,e,r={}){Object.defineProperty(t,\"_classRegistryKey\",{value:e,writeable:!1}),si[e]={klass:t,omit:r.omit||[]};}ai(Object,\"Object\"),ni.serialize=function(t,e){const r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}},ni.deserialize=function(t){return new ni(t.buffer)},Object.defineProperty(ni,\"name\",{value:\"Grid\"}),ai(ni,\"Grid\"),ai(ce,\"Color\"),ai(Error,\"Error\"),ai(kt,\"AJAXError\"),ai(de,\"ResolvedImage\"),ai(dn,\"StylePropertyFunction\"),ai(ln,\"StyleExpression\",{omit:[\"_evaluator\"]}),ai(pn,\"ZoomDependentExpression\"),ai(hn,\"ZoomConstantExpression\"),ai(ze,\"CompoundExpression\",{omit:[\"_evaluate\"]});for(const t in Or)si[Or[t]._classRegistryKey]||ai(Or[t],`Expression${t}`);function oi(t){return t&&\"undefined\"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&\"ArrayBuffer\"===t.constructor.name)}function li(t){return a.ImageBitmap&&t instanceof a.ImageBitmap}function ui(t,e){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp)return t;if(oi(t)||li(t))return e&&e.push(t),t;if(ArrayBuffer.isView(t)){const r=t;return e&&e.push(r.buffer),r}if(t instanceof a.ImageData)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){const r=[];for(const n of t)r.push(ui(n,e));return r}if(\"object\"==typeof t){const r=t.constructor,n=r._classRegistryKey;if(!n)throw new Error(`can't serialize object of unregistered class ${n}`);const i=r.serialize?r.serialize(t,e):{};if(!r.serialize){for(const r in t)t.hasOwnProperty(r)&&(si[n].omit.indexOf(r)>=0||(i[r]=ui(t[r],e)));t instanceof Error&&(i.message=t.message);}if(i.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==n&&(i.$name=n),i}throw new Error(\"can't serialize object of type \"+typeof t)}function ci(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||oi(t)||li(t)||ArrayBuffer.isView(t)||t instanceof a.ImageData)return t;if(Array.isArray(t))return t.map(ci);if(\"object\"==typeof t){const e=t.$name||\"Object\",{klass:r}=si[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(t);const n=Object.create(r.prototype);for(const e of Object.keys(t))\"$name\"!==e&&(n[e]=ci(t[e]));return n}throw new Error(\"can't deserialize object of type \"+typeof t)}class hi{constructor(){this.first=!0;}update(t,e){const r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))}}const pi=t=>t>=1536&&t<=1791,fi=t=>t>=1872&&t<=1919,di=t=>t>=2208&&t<=2303,yi=t=>t>=11904&&t<=12031,mi=t=>t>=12032&&t<=12255,gi=t=>t>=12272&&t<=12287,xi=t=>t>=12288&&t<=12351,vi=t=>t>=12352&&t<=12447,bi=t=>t>=12448&&t<=12543,_i=t=>t>=12544&&t<=12591,wi=t=>t>=12704&&t<=12735,Ai=t=>t>=12736&&t<=12783,ki=t=>t>=12784&&t<=12799,Si=t=>t>=12800&&t<=13055,Ii=t=>t>=13056&&t<=13311,Mi=t=>t>=13312&&t<=19903,Ti=t=>t>=19968&&t<=40959,zi=t=>t>=40960&&t<=42127,Bi=t=>t>=42128&&t<=42191,Ei=t=>t>=44032&&t<=55215,Ci=t=>t>=63744&&t<=64255,Di=t=>t>=64336&&t<=65023,Pi=t=>t>=65040&&t<=65055,Vi=t=>t>=65072&&t<=65103,Fi=t=>t>=65104&&t<=65135,Li=t=>t>=65136&&t<=65279,Ri=t=>t>=65280&&t<=65519;function Ui(t){for(const e of t)if(Oi(e.charCodeAt(0)))return !0;return !1}function $i(t){for(const e of t)if(!ji(e.charCodeAt(0)))return !1;return !0}function ji(t){return !(pi(t)||fi(t)||di(t)||Di(t)||Li(t))}function Oi(t){return !(746!==t&&747!==t&&(t<4352||!(wi(t)||_i(t)||Vi(t)&&!(t>=65097&&t<=65103)||Ci(t)||Ii(t)||yi(t)||Ai(t)||!(!xi(t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||Mi(t)||Ti(t)||Si(t)||(t=>t>=12592&&t<=12687)(t)||(t=>t>=43360&&t<=43391)(t)||(t=>t>=55216&&t<=55295)(t)||(t=>t>=4352&&t<=4607)(t)||Ei(t)||vi(t)||gi(t)||(t=>t>=12688&&t<=12703)(t)||mi(t)||ki(t)||bi(t)&&12540!==t||!(!Ri(t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!Fi(t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(t=>t>=5120&&t<=5759)(t)||(t=>t>=6320&&t<=6399)(t)||Pi(t)||(t=>t>=19904&&t<=19967)(t)||zi(t)||Bi(t))))}function qi(t){return !(Oi(t)||function(t){return !!((t=>t>=128&&t<=255)(t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||(t=>t>=8192&&t<=8303)(t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||(t=>t>=8448&&t<=8527)(t)||(t=>t>=8528&&t<=8591)(t)||(t=>t>=8960&&t<=9215)(t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||(t=>t>=9216&&t<=9279)(t)&&9251!==t||(t=>t>=9280&&t<=9311)(t)||(t=>t>=9312&&t<=9471)(t)||(t=>t>=9632&&t<=9727)(t)||(t=>t>=9728&&t<=9983)(t)&&!(t>=9754&&t<=9759)||(t=>t>=11008&&t<=11263)(t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||xi(t)||bi(t)||(t=>t>=57344&&t<=63743)(t)||Vi(t)||Fi(t)||Ri(t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function Ni(t){return t>=1424&&t<=2303||Di(t)||Li(t)}function Gi(t,e){return !(!e&&Ni(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||(t=>t>=6016&&t<=6143)(t))}function Zi(t){for(const e of t)if(Ni(e.charCodeAt(0)))return !0;return !1}const Xi=\"deferred\",Ki=\"loading\",Yi=\"loaded\";let Hi=null,Wi=\"unavailable\",Ji=null;const Qi=function(t){t&&\"string\"==typeof t&&t.indexOf(\"NetworkError\")>-1&&(Wi=\"error\"),Hi&&Hi(t);};function ts(){es.fire(new Lt(\"pluginStateChange\",{pluginStatus:Wi,pluginURL:Ji}));}const es=new Ut,rs=function(){return Wi},ns=function(){if(Wi!==Xi||!Ji)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");Wi=Ki,ts(),Ji&&Mt({url:Ji},(t=>{t?Qi(t):(Wi=Yi,ts());}));},is={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>Wi===Yi||null!=is.applyArabicShaping,isLoading:()=>Wi===Ki,setState(t){Wi=t.pluginStatus,Ji=t.pluginURL;},isParsed:()=>null!=is.applyArabicShaping&&null!=is.processBidirectionalText&&null!=is.processStyledBidirectionalText,getPluginURL:()=>Ji};class ss{constructor(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition,this.pitch=e.pitch):(this.now=0,this.fadeDuration=0,this.zoomHistory=new hi,this.transition={},this.pitch=0);}isSupportedScript(t){return function(t,e){for(const r of t)if(!Gi(r.charCodeAt(0),e))return !1;return !0}(t,is.isLoaded())}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}}}class as{constructor(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Qr(t))return new dn(t,e);if(un(t)){const r=fn(t,e);if(\"error\"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));return r.value}{let r=t;return \"string\"==typeof t&&\"color\"===e.type&&(r=ce.parse(t)),{kind:\"constant\",evaluate:()=>r}}}(void 0===e?t.specification.default:e,t.specification);}isDataDriven(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind}possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)}}class os{constructor(t){this.property=t,this.value=new as(t,void 0);}transitioned(t,e){return new us(this.property,this.value,e,b({},t.transition,this.transition),t.now)}untransitioned(){return new us(this.property,this.value,null,{},0)}}class ls{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);}getValue(t){return B(this._values[t].value.value)}setValue(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new os(this._values[t].property)),this._values[t].value=new as(this._values[t].property,null===e?void 0:B(e));}getTransition(t){return B(this._values[t].transition)}setTransition(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new os(this._values[t].property)),this._values[t].transition=B(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);const n=this.getTransition(e);void 0!==n&&(t[`${e}-transition`]=n);}return t}transitioned(t,e){const r=new cs(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].transitioned(t,e._values[n]);return r}untransitioned(){const t=new cs(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class us{constructor(t,e,r,n,i){const s=n.delay||0,a=n.duration||0;i=i||0,this.property=t,this.value=e,this.begin=i+s,this.end=this.begin+a,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);}possiblyEvaluate(t,e,r){const n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),s=this.prior;if(s){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n<this.begin)return s.possiblyEvaluate(t,e,r);{const a=(n-this.begin)/(this.end-this.begin);return this.property.interpolate(s.possiblyEvaluate(t,e,r),i,p(a))}}return i}}class cs{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);}possiblyEvaluate(t,e,r){const n=new fs(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}hasTransition(){for(const t of Object.keys(this._values))if(this._values[t].prior)return !0;return !1}}class hs{constructor(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues);}getValue(t){return B(this._values[t].value)}setValue(t,e){this._values[t]=new as(this._values[t].property,null===e?void 0:B(e));}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);}return t}possiblyEvaluate(t,e,r){const n=new fs(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}}class ps{constructor(t,e,r){this.property=t,this.value=e,this.parameters=r;}isConstant(){return \"constant\"===this.value.kind}constantOr(t){return \"constant\"===this.value.kind?this.value.value:t}evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)}}class fs{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);}get(t){return this._values[t]}}class ds{constructor(t){this.specification=t;}possiblyEvaluate(t,e){return t.expression.evaluate(e)}interpolate(t,e,r){const n=nr[this.specification.type];return n?n(t,e,r):t}}class ys{constructor(t,e){this.specification=t,this.overrides=e;}possiblyEvaluate(t,e,r,n){return new ps(this,\"constant\"===t.expression.kind||\"camera\"===t.expression.kind?{kind:\"constant\",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)}interpolate(t,e,r){if(\"constant\"!==t.value.kind||\"constant\"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new ps(this,{kind:\"constant\",value:void 0},t.parameters);const n=nr[this.specification.type];return n?new ps(this,{kind:\"constant\",value:n(t.value.value,e.value.value,r)},t.parameters):t}evaluate(t,e,r,n,i,s){return \"constant\"===t.kind?t.value:t.evaluate(e,r,n,i,s)}}class ms extends ys{possiblyEvaluate(t,e,r,n){if(void 0===t.value)return new ps(this,{kind:\"constant\",value:void 0},e);if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n),s=\"resolvedImage\"===t.property.specification.type&&\"string\"!=typeof i?i.name:i,a=this._calculate(s,s,s,e);return new ps(this,{kind:\"constant\",value:a},e)}if(\"camera\"===t.expression.kind){const r=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new ps(this,{kind:\"constant\",value:r},e)}return new ps(this,t.expression,e)}evaluate(t,e,r,n,i,s){if(\"source\"===t.kind){const a=t.evaluate(e,r,n,i,s);return this._calculate(a,a,a,e)}return \"composite\"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e,other:r}:{from:r,to:e,other:t}}interpolate(t){return t}}class gs{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new ss(Math.floor(e.zoom-1),e)),t.expression.evaluate(new ss(Math.floor(e.zoom),e)),t.expression.evaluate(new ss(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class xs{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)}interpolate(){return !1}}class vs{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const e in t){const r=t[e];r.specification.overridable&&this.overridableProperties.push(e);const n=this.defaultPropertyValues[e]=new as(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new os(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}}}function bs(t,e){return 256*(t=y(Math.floor(t),0,255))+y(Math.floor(e),0,255)}ai(ys,\"DataDrivenProperty\"),ai(ds,\"DataConstantProperty\"),ai(ms,\"CrossFadedDataDrivenProperty\"),ai(gs,\"CrossFadedProperty\"),ai(xs,\"ColorRampProperty\");const _s={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class ws{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;}}class As{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")}destroy(){this.int8=this.uint8=this.int16=this.uint16=this.int32=this.uint32=this.float32=null,this.arrayBuffer=null;}}function ks(t,e=1){let r=0,n=0;return {members:t.map((t=>{const i=_s[t.type].BYTES_PER_ELEMENT,s=r=Ss(r,Math.max(e,i)),a=t.components||1;return n=Math.max(n,i),r+=i*a,{name:t.name,type:t.type,components:a,offset:s}})),size:Ss(r,Math.max(n,e)),alignment:e}}function Ss(t,e){return Math.ceil(t/e)*e}class Is extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}}Is.prototype.bytesPerElement=4,ai(Is,\"StructArrayLayout2i4\");class Ms extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t}}Ms.prototype.bytesPerElement=6,ai(Ms,\"StructArrayLayout3i6\");class Ts extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,t}}Ts.prototype.bytesPerElement=8,ai(Ts,\"StructArrayLayout4i8\");class zs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,s,a)}emplace(t,e,r,n,i,s,a,o){const l=6*t,u=12*t,c=3*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.uint8[u+4]=n,this.uint8[u+5]=i,this.uint8[u+6]=s,this.uint8[u+7]=a,this.float32[c+2]=o,t}}zs.prototype.bytesPerElement=12,ai(zs,\"StructArrayLayout2i4ub1f12\");class Bs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.float32[s+0]=e,this.float32[s+1]=r,this.float32[s+2]=n,this.float32[s+3]=i,t}}Bs.prototype.bytesPerElement=16,ai(Bs,\"StructArrayLayout4f16\");class Es extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,s,a,o,l,u)}emplace(t,e,r,n,i,s,a,o,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=s,this.uint16[h+5]=a,this.uint16[h+6]=o,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}Es.prototype.bytesPerElement=20,ai(Es,\"StructArrayLayout10ui20\");class Cs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o){const l=this.length;return this.resize(l+1),this.emplace(l,t,e,r,n,i,s,a,o)}emplace(t,e,r,n,i,s,a,o,l){const u=8*t;return this.uint16[u+0]=e,this.uint16[u+1]=r,this.uint16[u+2]=n,this.uint16[u+3]=i,this.uint16[u+4]=s,this.uint16[u+5]=a,this.uint16[u+6]=o,this.uint16[u+7]=l,t}}Cs.prototype.bytesPerElement=16,ai(Cs,\"StructArrayLayout8ui16\");class Ds extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=s,this.int16[o+5]=a,t}}Ds.prototype.bytesPerElement=12,ai(Ds,\"StructArrayLayout6i12\");class Ps extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y){const m=this.length;return this.resize(m+1),this.emplace(m,t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m){const g=16*t;return this.int16[g+0]=e,this.int16[g+1]=r,this.int16[g+2]=n,this.int16[g+3]=i,this.uint16[g+4]=s,this.uint16[g+5]=a,this.uint16[g+6]=o,this.uint16[g+7]=l,this.int16[g+8]=u,this.int16[g+9]=c,this.int16[g+10]=h,this.int16[g+11]=p,this.int16[g+12]=f,this.int16[g+13]=d,this.int16[g+14]=y,this.int16[g+15]=m,t}}Ps.prototype.bytesPerElement=32,ai(Ps,\"StructArrayLayout4i4ui4i4i32\");class Vs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}Vs.prototype.bytesPerElement=12,ai(Vs,\"StructArrayLayout3f12\");class Fs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}Fs.prototype.bytesPerElement=4,ai(Fs,\"StructArrayLayout1ul4\");class Ls extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p){const f=this.length;return this.resize(f+1),this.emplace(f,t,e,r,n,i,s,a,o,l,u,c,h,p)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f){const d=20*t,y=10*t;return this.int16[d+0]=e,this.int16[d+1]=r,this.int16[d+2]=n,this.int16[d+3]=i,this.int16[d+4]=s,this.float32[y+3]=a,this.float32[y+4]=o,this.float32[y+5]=l,this.float32[y+6]=u,this.int16[d+14]=c,this.uint32[y+8]=h,this.uint16[d+18]=p,this.uint16[d+19]=f,t}}Ls.prototype.bytesPerElement=40,ai(Ls,\"StructArrayLayout5i4f1i1ul2ui40\");class Rs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,s,a)}emplace(t,e,r,n,i,s,a,o){const l=8*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.int16[l+2]=n,this.int16[l+4]=i,this.int16[l+5]=s,this.int16[l+6]=a,this.int16[l+7]=o,t}}Rs.prototype.bytesPerElement=16,ai(Rs,\"StructArrayLayout3i2i2i16\");class Us extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i)}emplace(t,e,r,n,i,s){const a=4*t,o=8*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.int16[o+6]=i,this.int16[o+7]=s,t}}Us.prototype.bytesPerElement=16,ai(Us,\"StructArrayLayout2f1f2i16\");class $s extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=12*t,a=3*t;return this.uint8[s+0]=e,this.uint8[s+1]=r,this.float32[a+1]=n,this.float32[a+2]=i,t}}$s.prototype.bytesPerElement=12,ai($s,\"StructArrayLayout2ub2f12\");class js extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t}}js.prototype.bytesPerElement=6,ai(js,\"StructArrayLayout3ui6\");class Os extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b){const _=this.length;return this.resize(_+1),this.emplace(_,t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_){const w=30*t,A=15*t,k=60*t;return this.int16[w+0]=e,this.int16[w+1]=r,this.int16[w+2]=n,this.float32[A+2]=i,this.float32[A+3]=s,this.uint16[w+8]=a,this.uint16[w+9]=o,this.uint32[A+5]=l,this.uint32[A+6]=u,this.uint32[A+7]=c,this.uint16[w+16]=h,this.uint16[w+17]=p,this.uint16[w+18]=f,this.float32[A+10]=d,this.float32[A+11]=y,this.uint8[k+48]=m,this.uint8[k+49]=g,this.uint8[k+50]=x,this.uint32[A+13]=v,this.int16[w+28]=b,this.uint8[k+58]=_,t}}Os.prototype.bytesPerElement=60,ai(Os,\"StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60\");class qs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_,w,A,k,S,I,M,T,z){const B=this.length;return this.resize(B+1),this.emplace(B,t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_,w,A,k,S,I,M,T,z)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_,w,A,k,S,I,M,T,z,B){const E=38*t,C=19*t;return this.int16[E+0]=e,this.int16[E+1]=r,this.int16[E+2]=n,this.float32[C+2]=i,this.float32[C+3]=s,this.int16[E+8]=a,this.int16[E+9]=o,this.int16[E+10]=l,this.int16[E+11]=u,this.int16[E+12]=c,this.int16[E+13]=h,this.uint16[E+14]=p,this.uint16[E+15]=f,this.uint16[E+16]=d,this.uint16[E+17]=y,this.uint16[E+18]=m,this.uint16[E+19]=g,this.uint16[E+20]=x,this.uint16[E+21]=v,this.uint16[E+22]=b,this.uint16[E+23]=_,this.uint16[E+24]=w,this.uint16[E+25]=A,this.uint16[E+26]=k,this.uint16[E+27]=S,this.uint16[E+28]=I,this.uint32[C+15]=M,this.float32[C+16]=T,this.float32[C+17]=z,this.float32[C+18]=B,t}}qs.prototype.bytesPerElement=76,ai(qs,\"StructArrayLayout3i2f6i15ui1ul3f76\");class Ns extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}Ns.prototype.bytesPerElement=4,ai(Ns,\"StructArrayLayout1f4\");class Gs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,s,a)}emplace(t,e,r,n,i,s,a,o){const l=7*t;return this.float32[l+0]=e,this.float32[l+1]=r,this.float32[l+2]=n,this.float32[l+3]=i,this.float32[l+4]=s,this.float32[l+5]=a,this.float32[l+6]=o,t}}Gs.prototype.bytesPerElement=28,ai(Gs,\"StructArrayLayout7f28\");class Zs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i)}emplace(t,e,r,n,i,s){const a=5*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,this.float32[a+4]=s,t}}Zs.prototype.bytesPerElement=20,ai(Zs,\"StructArrayLayout5f20\");class Xs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=6*t;return this.uint32[3*t+0]=e,this.uint16[s+2]=r,this.uint16[s+3]=n,this.uint16[s+4]=i,t}}Xs.prototype.bytesPerElement=12,ai(Xs,\"StructArrayLayout1ul3ui12\");class Ks extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t}}Ks.prototype.bytesPerElement=4,ai(Ks,\"StructArrayLayout2ui4\");class Ys extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}Ys.prototype.bytesPerElement=2,ai(Ys,\"StructArrayLayout1ui2\");class Hs extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t}}Hs.prototype.bytesPerElement=8,ai(Hs,\"StructArrayLayout2f8\");class Ws extends As{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,s,a)}emplace(t,e,r,n,i,s,a,o){const l=8*t,u=4*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.int16[l+2]=n,this.int16[l+3]=i,this.int16[l+4]=s,this.int16[l+5]=a,this.float32[u+3]=o,t}}Ws.prototype.bytesPerElement=16,ai(Ws,\"StructArrayLayout6i1f16\");class Js extends ws{get a_pos_30(){return this._structArray.int16[this._pos2+0]}get a_pos_31(){return this._structArray.int16[this._pos2+1]}get a_pos_32(){return this._structArray.int16[this._pos2+2]}get a_pos_normal_30(){return this._structArray.int16[this._pos2+3]}get a_pos_normal_31(){return this._structArray.int16[this._pos2+4]}get a_pos_normal_32(){return this._structArray.int16[this._pos2+5]}}Js.prototype.size=12;class Qs extends Ds{get(t){return new Js(this,t)}}ai(Qs,\"FillExtrusionExtArray\");class ta extends ws{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.int16[this._pos2+3]}get tileAnchorY(){return this._structArray.int16[this._pos2+4]}get x1(){return this._structArray.float32[this._pos4+3]}get y1(){return this._structArray.float32[this._pos4+4]}get x2(){return this._structArray.float32[this._pos4+5]}get y2(){return this._structArray.float32[this._pos4+6]}get padding(){return this._structArray.int16[this._pos2+14]}get featureIndex(){return this._structArray.uint32[this._pos4+8]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+18]}get bucketIndex(){return this._structArray.uint16[this._pos2+19]}}ta.prototype.size=40;class ea extends Ls{get(t){return new ta(this,t)}}ai(ea,\"CollisionBoxArray\");class ra extends ws{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+8]}get numGlyphs(){return this._structArray.uint16[this._pos2+9]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+5]}get lineStartIndex(){return this._structArray.uint32[this._pos4+6]}get lineLength(){return this._structArray.uint32[this._pos4+7]}get segment(){return this._structArray.uint16[this._pos2+16]}get lowerSize(){return this._structArray.uint16[this._pos2+17]}get upperSize(){return this._structArray.uint16[this._pos2+18]}get lineOffsetX(){return this._structArray.float32[this._pos4+10]}get lineOffsetY(){return this._structArray.float32[this._pos4+11]}get writingMode(){return this._structArray.uint8[this._pos1+48]}get placedOrientation(){return this._structArray.uint8[this._pos1+49]}set placedOrientation(t){this._structArray.uint8[this._pos1+49]=t;}get hidden(){return this._structArray.uint8[this._pos1+50]}set hidden(t){this._structArray.uint8[this._pos1+50]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+13]}set crossTileID(t){this._structArray.uint32[this._pos4+13]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+28]}get flipState(){return this._structArray.uint8[this._pos1+58]}set flipState(t){this._structArray.uint8[this._pos1+58]=t;}}ra.prototype.size=60;class na extends Os{get(t){return new ra(this,t)}}ai(na,\"PlacedSymbolArray\");class ia extends ws{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+8]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+9]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+10]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+11]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+12]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+13]}get key(){return this._structArray.uint16[this._pos2+14]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+17]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+18]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+19]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+20]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+21]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+22]}get featureIndex(){return this._structArray.uint16[this._pos2+23]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+24]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+25]}get numIconVertices(){return this._structArray.uint16[this._pos2+26]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+27]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+28]}get crossTileID(){return this._structArray.uint32[this._pos4+15]}set crossTileID(t){this._structArray.uint32[this._pos4+15]=t;}get textOffset0(){return this._structArray.float32[this._pos4+16]}get textOffset1(){return this._structArray.float32[this._pos4+17]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+18]}}ia.prototype.size=76;class sa extends qs{get(t){return new ia(this,t)}}ai(sa,\"SymbolInstanceArray\");class aa extends Ns{getoffsetX(t){return this.float32[1*t+0]}}ai(aa,\"GlyphOffsetArray\");class oa extends Ms{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}ai(oa,\"SymbolLineVertexArray\");class la extends ws{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}get layoutVertexArrayOffset(){return this._structArray.uint16[this._pos2+4]}}la.prototype.size=12;class ua extends Xs{get(t){return new la(this,t)}}ai(ua,\"FeatureIndexArray\");class ca extends ws{get a_centroid_pos0(){return this._structArray.uint16[this._pos2+0]}get a_centroid_pos1(){return this._structArray.uint16[this._pos2+1]}}ca.prototype.size=4;class ha extends Ks{get(t){return new ca(this,t)}}ai(ha,\"FillExtrusionCentroidArray\");class pa extends ws{get a_pos_30(){return this._structArray.int16[this._pos2+0]}get a_pos_31(){return this._structArray.int16[this._pos2+1]}get a_pos_32(){return this._structArray.int16[this._pos2+2]}get a_pos_normal_30(){return this._structArray.int16[this._pos2+3]}get a_pos_normal_31(){return this._structArray.int16[this._pos2+4]}get a_pos_normal_32(){return this._structArray.int16[this._pos2+5]}get a_scale(){return this._structArray.float32[this._pos4+3]}}pa.prototype.size=16;class fa extends Ws{get(t){return new pa(this,t)}}ai(fa,\"CircleGlobeExtArray\");const da=ks([{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"}]),ya=ks([{name:\"a_dash_to\",components:4,type:\"Uint16\"},{name:\"a_dash_from\",components:4,type:\"Uint16\"}]);var ma=le((function(t){t.exports=function(t,e){var r,n,i,s,a,o,l,u;for(n=t.length-(r=3&t.length),i=e,a=3432918353,o=461845907,u=0;u<n;)l=255&t.charCodeAt(u)|(255&t.charCodeAt(++u))<<8|(255&t.charCodeAt(++u))<<16|(255&t.charCodeAt(++u))<<24,++u,i=27492+(65535&(s=5*(65535&(i=(i^=l=(65535&(l=(l=(65535&l)*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(s>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};})),ga=le((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,s=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(s)|(255&t.charCodeAt(++s))<<8|(255&t.charCodeAt(++s))<<16|(255&t.charCodeAt(++s))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++s;switch(n){case 3:i^=(255&t.charCodeAt(s+2))<<16;case 2:i^=(255&t.charCodeAt(s+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(s)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};})),xa=ma,va=ga;xa.murmur3=ma,xa.murmur2=va;class ba{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,r,n){this.ids.push(_a(t)),this.positions.push(e,r,n);}getPositions(t){const e=_a(t);let r=0,n=this.ids.length-1;for(;r<n;){const t=r+n>>1;this.ids[t]>=e?n=t:r=t+1;}const i=[];for(;this.ids[r]===e;)i.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return i}static serialize(t,e){const r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return wa(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}}static deserialize(t){const e=new ba;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function _a(t){const e=+t;return !isNaN(e)&&Number.MIN_SAFE_INTEGER<=e&&e<=Number.MAX_SAFE_INTEGER?e:xa(String(t))}function wa(t,e,r,n){for(;r<n;){const i=t[r+n>>1];let s=r-1,a=n+1;for(;;){do{s++;}while(t[s]<i);do{a--;}while(t[a]>i);if(s>=a)break;Aa(t,s,a),Aa(e,3*s,3*a),Aa(e,3*s+1,3*a+1),Aa(e,3*s+2,3*a+2);}a-r<n-a?(wa(t,e,r,a),r=a+1):(wa(t,e,a+1,n),n=a);}}function Aa(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}ai(ba,\"FeaturePositionMap\");class ka{constructor(t,e){this.gl=t.gl,this.location=e;}}class Sa extends ka{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));}}class Ia extends ka{constructor(t,e){super(t,e),this.current=[0,0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]));}}class Ma extends ka{constructor(t,e){super(t,e),this.current=ce.transparent;}set(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a));}}const Ta=new Float32Array(16),za=new Float32Array(9),Ba=new Float32Array(4);function Ea(t){return [bs(255*t.r,255*t.g),bs(255*t.b,255*t.a)]}class Ca{constructor(t,e,r){this.value=t,this.uniformNames=e.map((t=>`u_${t}`)),this.type=r;}setUniform(t,e,r){t.set(r.constantOr(this.value));}getBinding(t,e,r){return \"color\"===this.type?new Ma(t,e):new Sa(t,e)}}class Da{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio||1,this.pixelRatioTo=t.pixelRatio||1,this.patternFrom=e.tl.concat(e.br),this.patternTo=t.tl.concat(t.br);}setUniform(t,e,r,n){const i=\"u_pattern_to\"===n||\"u_dash_to\"===n?this.patternTo:\"u_pattern_from\"===n||\"u_dash_from\"===n?this.patternFrom:\"u_pixel_ratio_to\"===n?this.pixelRatioTo:\"u_pixel_ratio_from\"===n?this.pixelRatioFrom:null;i&&t.set(i);}getBinding(t,e,r){return \"u_pattern_from\"===r||\"u_pattern_to\"===r||\"u_dash_from\"===r||\"u_dash_to\"===r?new Ia(t,e):new Sa(t,e)}}class Pa{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?2:1,offset:0}))),this.paintVertexArray=new n;}populatePaintArray(t,e,r,n,i,s){const a=this.paintVertexArray.length,o=this.expression.evaluate(new ss(0),e,{},i,n,s);this.paintVertexArray.resize(t),this._setPaintValue(a,t,o);}updatePaintArray(t,e,r,n,i){const s=this.expression.evaluate({zoom:0},r,n,void 0,i);this._setPaintValue(t,e,s);}_setPaintValue(t,e,r){if(\"color\"===this.type){const n=Ea(r);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,n[0],n[1]);}else {for(let n=t;n<e;n++)this.paintVertexArray.emplace(n,r);this.maxValue=Math.max(this.maxValue,Math.abs(r));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}}class Va{constructor(t,e,r,n,i,s){this.expression=t,this.uniformNames=e.map((t=>`u_${t}_t`)),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?4:2,offset:0}))),this.paintVertexArray=new s;}populatePaintArray(t,e,r,n,i,s){const a=this.expression.evaluate(new ss(this.zoom),e,{},i,n,s),o=this.expression.evaluate(new ss(this.zoom+1),e,{},i,n,s),l=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(l,t,a,o);}updatePaintArray(t,e,r,n,i){const s=this.expression.evaluate({zoom:this.zoom},r,n,void 0,i),a=this.expression.evaluate({zoom:this.zoom+1},r,n,void 0,i);this._setPaintValue(t,e,s,a);}_setPaintValue(t,e,r,n){if(\"color\"===this.type){const i=Ea(r),s=Ea(n);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,i[0],i[1],s[0],s[1]);}else {for(let i=t;i<e;i++)this.paintVertexArray.emplace(i,r,n);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(n));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}setUniform(t,e){const r=this.useIntegerZoom?Math.floor(e.zoom):e.zoom,n=y(this.expression.interpolationFactor(r,this.zoom,this.zoom+1),0,1);t.set(n);}getBinding(t,e,r){return new Sa(t,e)}}class Fa{constructor(t,e,r,n,i,s,a){this.expression=t,this.type=r,this.useIntegerZoom=n,this.zoom=i,this.layerId=a,this.paintVertexAttributes=(\"array\"===r?ya:da).members;for(let t=0;t<e.length;++t);this.zoomInPaintVertexArray=new s,this.zoomOutPaintVertexArray=new s;}populatePaintArray(t,e,r){const n=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(t),this.zoomOutPaintVertexArray.resize(t),this._setPaintValues(n,t,e.patterns&&e.patterns[this.layerId],r);}updatePaintArray(t,e,r,n,i,s){this._setPaintValues(t,e,r.patterns&&r.patterns[this.layerId],s);}_setPaintValues(t,e,r,n){if(!n||!r)return;const{min:i,mid:s,max:a}=r,o=n[i],l=n[s],u=n[a];if(o&&l&&u)for(let r=t;r<e;r++)this._setPaintValue(this.zoomInPaintVertexArray,r,l,o),this._setPaintValue(this.zoomOutPaintVertexArray,r,l,u);}_setPaintValue(t,e,r,n){t.emplace(e,r.tl[0],r.tl[1],r.br[0],r.br[1],n.tl[0],n.tl[1],n.br[0],n.br[1],r.pixelRatio,n.pixelRatio);}upload(t){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy();}}class La{constructor(t,e,r=(()=>!0)){this.binders={},this._buffers=[];const n=[];for(const i in t.paint._values){if(!r(i))continue;const s=t.paint.get(i);if(!(s instanceof ps&&Yr(s.property.specification)))continue;const a=$a(i,t.type),o=s.value,l=s.property.specification.type,u=s.property.useIntegerZoom,c=s.property.specification[\"property-type\"],h=\"cross-faded\"===c||\"cross-faded-data-driven\"===c,p=\"line-dasharray\"===String(i)&&\"constant\"!==t.layout.get(\"line-cap\").value.kind;if(\"constant\"!==o.kind||p)if(\"source\"===o.kind||p||h){const r=qa(i,l,\"source\");this.binders[i]=h?new Fa(o,a,l,u,e,r,t.id):new Pa(o,a,l,r),n.push(`/a_${i}`);}else {const t=qa(i,l,\"composite\");this.binders[i]=new Va(o,a,l,u,e,t),n.push(`/z_${i}`);}else this.binders[i]=h?new Da(o.value,a):new Ca(o.value,a,l),n.push(`/u_${i}`);}this.cacheKey=n.sort().join(\"\");}getMaxValue(t){const e=this.binders[t];return e instanceof Pa||e instanceof Va?e.maxValue:0}populatePaintArrays(t,e,r,n,i,s){for(const a in this.binders){const o=this.binders[a];(o instanceof Pa||o instanceof Va||o instanceof Fa)&&o.populatePaintArray(t,e,r,n,i,s);}}setConstantPatternPositions(t,e){for(const r in this.binders){const n=this.binders[r];n instanceof Da&&n.setConstantPatternPositions(t,e);}}updatePaintArrays(t,e,r,n,i,s){let a=!1;for(const o in t){const l=e.getPositions(o);for(const e of l){const l=r.feature(e.index);for(const r in this.binders){const u=this.binders[r];if((u instanceof Pa||u instanceof Va||u instanceof Fa)&&!0===u.expression.isStateDependent){const c=n.paint.get(r);u.expression=c.value,u.updatePaintArray(e.start,e.end,l,t[o],i,s),a=!0;}}}}return a}defines(){const t=[];for(const e in this.binders){const r=this.binders[e];(r instanceof Ca||r instanceof Da)&&t.push(...r.uniformNames.map((t=>`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof Pa||r instanceof Va||r instanceof Fa)for(let e=0;e<r.paintVertexAttributes.length;e++)t.push(r.paintVertexAttributes[e].name);}return t}getBinderUniforms(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof Ca||r instanceof Da||r instanceof Va)for(const e of r.uniformNames)t.push(e);}return t}getPaintVertexBuffers(){return this._buffers}getUniforms(t,e){const r=[];for(const n in this.binders){const i=this.binders[n];if(i instanceof Ca||i instanceof Da||i instanceof Va)for(const s of i.uniformNames)if(e[s]){const a=i.getBinding(t,e[s],s);r.push({name:s,property:n,binding:a});}}return r}setUniforms(t,e,r,n){for(const{name:t,property:i,binding:s}of e)this.binders[i].setUniform(s,n,r.get(i),t);}updatePaintBuffers(t){this._buffers=[];for(const e in this.binders){const r=this.binders[e];if(t&&r instanceof Fa){const e=2===t.fromScale?r.zoomInPaintVertexBuffer:r.zoomOutPaintVertexBuffer;e&&this._buffers.push(e);}else (r instanceof Pa||r instanceof Va)&&r.paintVertexBuffer&&this._buffers.push(r.paintVertexBuffer);}}upload(t){for(const e in this.binders){const r=this.binders[e];(r instanceof Pa||r instanceof Va||r instanceof Fa)&&r.upload(t);}this.updatePaintBuffers();}destroy(){for(const t in this.binders){const e=this.binders[t];(e instanceof Pa||e instanceof Va||e instanceof Fa)&&e.destroy();}}}class Ra{constructor(t,e,r=(()=>!0)){this.programConfigurations={};for(const n of t)this.programConfigurations[n.id]=new La(n,e,r);this.needsUpload=!1,this._featureMap=new ba,this._bufferOffset=0;}populatePaintArrays(t,e,r,n,i,s,a){for(const r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e,n,i,s,a);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,r,n,i){for(const s of r)this.needsUpload=this.programConfigurations[s.id].updatePaintArrays(t,this._featureMap,e,s,n,i)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}const Ua={\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"line-dasharray\":[\"dash_to\",\"dash_from\"]};function $a(t,e){return Ua[t]||[t.replace(`${e}-`,\"\").replace(/-/g,\"_\")]}const ja={\"line-pattern\":{source:Es,composite:Es},\"fill-pattern\":{source:Es,composite:Es},\"fill-extrusion-pattern\":{source:Es,composite:Es},\"line-dasharray\":{source:Cs,composite:Cs}},Oa={color:{source:Hs,composite:Bs},number:{source:Ns,composite:Hs}};function qa(t,e,r){const n=ja[t];return n&&n[r]||Oa[e][r]}ai(Ca,\"ConstantBinder\"),ai(Da,\"CrossFadedConstantBinder\"),ai(Pa,\"SourceExpressionBinder\"),ai(Fa,\"CrossFadedCompositeBinder\"),ai(Va,\"CompositeExpressionBinder\"),ai(La,\"ProgramConfiguration\",{omit:[\"_buffers\"]}),ai(Ra,\"ProgramConfigurationSet\");const Na=\"-transition\";class Ga extends Ut{constructor(t,e){if(super(),this.id=t.id,this.type=t.type,this._featureFilter={filter:()=>!0,needGeometry:!1,needFeature:!1},this._filterCompiled=!1,\"custom\"!==t.type&&(this.metadata=(t=t).metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,\"background\"!==t.type&&\"sky\"!==t.type&&(this.source=t.source,this.sourceLayer=t[\"source-layer\"],this.filter=t.filter),e.layout&&(this._unevaluatedLayout=new hs(e.layout)),e.paint)){this._transitionablePaint=new ls(e.paint);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new fs(e.paint);}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)}setLayoutProperty(t,e,r={}){null!=e&&this._validate(ti,`layers.${this.id}.layout.${t}`,t,e,r)||(\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e);}getPaintProperty(t){return M(t,Na)?this._transitionablePaint.getTransition(t.slice(0,-Na.length)):this._transitionablePaint.getValue(t)}setPaintProperty(t,e,r={}){if(null!=e&&this._validate(Qn,`layers.${this.id}.paint.${t}`,t,e,r))return !1;if(M(t,Na))return this._transitionablePaint.setTransition(t.slice(0,-Na.length),e||void 0),!1;{const r=this._transitionablePaint._values[t],n=\"cross-faded-data-driven\"===r.property.specification[\"property-type\"],i=r.value.isDataDriven(),s=r.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const a=this._transitionablePaint._values[t].value;return a.isDataDriven()||i||n||this._handleOverridablePaintPropertyUpdate(t,s,a)}}_handleSpecialPaintPropertyUpdate(t){}getProgramIds(){return null}getProgramConfiguration(t){return null}_handleOverridablePaintPropertyUpdate(t,e,r){return !1}isHidden(t){return !!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.visibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){const t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),z(t,((t,e)=>!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)))}_validate(t,e,r,n,i={}){return (!i||!1!==i.validate)&&ri(this,t.call(Jn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:$t,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isSky(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof ps&&Yr(e.property.specification)&&(\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}compileFilter(){this._filterCompiled||(this._featureFilter=Sn(this.filter),this._filterCompiled=!0);}invalidateCompiledFilter(){this._filterCompiled=!1;}dynamicFilter(){return this._featureFilter.dynamicFilter}dynamicFilterNeedsFeature(){return this._featureFilter.needFeature}}const Za=ks([{name:\"a_pos\",components:2,type:\"Int16\"}],4),Xa=ks([{name:\"a_pos_3\",components:3,type:\"Int16\"},{name:\"a_pos_normal_3\",components:3,type:\"Int16\"},{name:\"a_scale\",components:1,type:\"Float32\"}]);class Ka{constructor(t=[]){this.segments=t;}prepareSegment(t,e,r,n){let i=this.segments[this.segments.length-1];return t>Ka.MAX_VERTEX_ARRAY_LENGTH&&C(`Max vertices per segment is ${Ka.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}`),(!i||i.vertexLength+t>Ka.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,r,n){return new Ka([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])}}Ka.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,ai(Ka,\"SegmentVector\");var Ya=8192;class Ha{constructor(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]));}setNorthEast(t){return this._ne=t instanceof Ja?new Ja(t.lng,t.lat):Ja.convert(t),this}setSouthWest(t){return this._sw=t instanceof Ja?new Ja(t.lng,t.lat):Ja.convert(t),this}extend(t){const e=this._sw,r=this._ne;let n,i;if(t instanceof Ja)n=t,i=t;else {if(!(t instanceof Ha))return Array.isArray(t)?4===t.length||t.every(Array.isArray)?this.extend(Ha.convert(t)):this.extend(Ja.convert(t)):this;if(n=t._sw,i=t._ne,!n||!i)return this}return e||r?(e.lng=Math.min(n.lng,e.lng),e.lat=Math.min(n.lat,e.lat),r.lng=Math.max(i.lng,r.lng),r.lat=Math.max(i.lat,r.lat)):(this._sw=new Ja(n.lng,n.lat),this._ne=new Ja(i.lng,i.lat)),this}getCenter(){return new Ja((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new Ja(this.getWest(),this.getNorth())}getSouthEast(){return new Ja(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(t){const{lng:e,lat:r}=Ja.convert(t);let n=this._sw.lng<=e&&e<=this._ne.lng;return this._sw.lng>this._ne.lng&&(n=this._sw.lng>=e&&e>=this._ne.lng),this._sw.lat<=r&&r<=this._ne.lat&&n}static convert(t){return !t||t instanceof Ha?t:new Ha(t)}}const Wa=6371008.8;class Ja{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")}wrap(){return new Ja(g(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return Wa*Math.acos(Math.min(i,1))}toBounds(t=0){const e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Ha(new Ja(this.lng-r,this.lat-e),new Ja(this.lng+r,this.lat+e))}static convert(t){if(t instanceof Ja)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Ja(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Ja(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")}}const Qa=2*Math.PI*Wa;function to(t){return Qa*Math.cos(t*Math.PI/180)}function eo(t){return (180+t)/360}function ro(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function no(t,e){return t/to(e)}function io(t){return 360*t-180}function so(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}function ao(t,e){return t*to(so(e))}const oo=85.051129;class lo{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}static fromLngLat(t,e=0){const r=Ja.convert(t);return new lo(eo(r.lng),ro(r.lat),no(e,r.lat))}toLngLat(){return new Ja(io(this.x),so(this.y))}toAltitude(){return ao(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Qa*(t=so(this.y),1/Math.cos(t*Math.PI/180));var t;}}function uo(t,e,r,n,s,a,o,l,u){const c=(e+n)/2,h=(r+s)/2,p=new i(c,h);l(p),function(t,e,r,n,i,s){const a=r-i,o=n-s;return Math.abs((n-e)*a-(r-t)*o)/Math.hypot(a,o)}(p.x,p.y,a.x,a.y,o.x,o.y)>=u?(uo(t,e,r,c,h,a,p,l,u),uo(t,c,h,n,s,p,o,l,u)):t.push(o);}function co(t,e,r){let n=t[0],i=n.x,s=n.y;e(n);const a=[n];for(let o=1;o<t.length;o++){const l=t[o],{x:u,y:c}=l;e(l),uo(a,i,s,u,c,n,l,e,r),i=u,s=c,n=l;}return a}const ho=Math.pow(2,14)-1,po=-ho-1;function fo(t,e){const r=Math.round(t.x*e),n=Math.round(t.y*e);return t.x=y(r,po,ho),t.y=y(n,po,ho),(r<t.x||r>t.x+1||n<t.y||n>t.y+1)&&C(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),t}function yo(t,e,r){const n=t.loadGeometry(),i=t.extent,s=Ya/i;if(e&&r&&r.projection.isReprojectedInTileSpace){const s=1<<e.z,{scale:a,x:o,y:l,projection:u}=r,c=t=>{const r=io((e.x+t.x/i)/s),n=so((e.y+t.y/i)/s),c=u.project(r,n);t.x=(c.x*a-o)*i,t.y=(c.y*a-l)*i;};for(let e=0;e<n.length;e++)if(1!==t.type)n[e]=co(n[e],c,1);else {const t=[];for(const r of n[e])r.x<0||r.x>=i||r.y<0||r.y>=i||(c(r),t.push(r));n[e]=t;}}for(const t of n)for(const e of t)fo(e,s);return n}function mo(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?yo(t):[]}}function go(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}function xo(t,e,r,n){const i=16384;t.emplaceBack(e.x,e.y,e.z,r[0]*i,r[1]*i,r[2]*i,n);}class vo{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.projection=t.projection,this.layoutVertexArray=new Is,this.indexArray=new js,this.segments=new Ka,this.programConfigurations=new Ra(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r,n){const i=this.layers[0],s=[];let a=null;\"circle\"===i.type&&(a=i.layout.get(\"circle-sort-key\"));for(const{feature:e,id:i,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=mo(e,t);if(!this.layers[0]._featureFilter.filter(new ss(this.zoom),u,r))continue;const c=a?a.evaluate(u,{},r):void 0,h={id:i,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:yo(e,r,n),patterns:{},sortKey:c};s.push(h);}a&&s.sort(((t,e)=>t.sortKey-e.sortKey));let o=null;\"globe\"===n.projection.name&&(this.globeExtVertexArray=new fa,o=n.projection);for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n,l=t[s].feature;this.addFeature(n,i,s,e.availableImages,r,o),e.featureIndex.insert(l,i,s,a,this.index);}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Za.members),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.globeExtVertexArray&&(this.globeExtVertexBuffer=t.createVertexBuffer(this.globeExtVertexArray,Xa.members))),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy());}addFeature(t,e,r,n,i,s){for(const r of e)for(const e of r){const r=e.x,n=e.y;if(r<0||r>=Ya||n<0||n>=Ya)continue;if(s){const t=s.projectTilePoint(r,n,i),e=s.upVector(i,r,n),a=so((n/Ya+i.y)/(1<<i.z)),o=s.pixelsPerMeter(a,1)/no(1,a),l=this.globeExtVertexArray;xo(l,t,e,o),xo(l,t,e,o),xo(l,t,e,o),xo(l,t,e,o);}const a=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),o=a.vertexLength;go(this.layoutVertexArray,r,n,-1,-1),go(this.layoutVertexArray,r,n,1,-1),go(this.layoutVertexArray,r,n,1,1),go(this.layoutVertexArray,r,n,-1,1),this.indexArray.emplaceBack(o,o+1,o+2),this.indexArray.emplaceBack(o,o+3,o+2),a.vertexLength+=4,a.primitiveLength+=2;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n,i);}}function bo(t,e){for(let r=0;r<t.length;r++)if(zo(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(zo(t,e[r]))return !0;return !!ko(t,e)}function _o(t,e,r){return !!zo(t,e)||!!Io(e,t,r)}function wo(t,e){if(1===t.length)return To(e,t[0]);for(let r=0;r<e.length;r++){const n=e[r];for(let e=0;e<n.length;e++)if(zo(t,n[e]))return !0}for(let r=0;r<t.length;r++)if(To(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(ko(t,e[r]))return !0;return !1}function Ao(t,e,r){if(t.length>1){if(ko(t,e))return !0;for(let n=0;n<e.length;n++)if(Io(e[n],t,r))return !0}for(let n=0;n<t.length;n++)if(Io(t[n],e,r))return !0;return !1}function ko(t,e){if(0===t.length||0===e.length)return !1;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)if(So(n,i,e[t],e[t+1]))return !0}return !1}function So(t,e,r,n){return D(t,r,n)!==D(e,r,n)&&D(t,e,r)!==D(t,e,n)}function Io(t,e,r){const n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(let r=1;r<e.length;r++)if(Mo(t,e[r-1],e[r])<n)return !0;return !1}function Mo(t,e,r){const n=e.distSqr(r);if(0===n)return t.distSqr(e);const i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return t.distSqr(i<0?e:i>1?r:r.sub(e)._mult(i)._add(e))}function To(t,e){let r,n,i,s=!1;for(let a=0;a<t.length;a++){r=t[a];for(let t=0,a=r.length-1;t<r.length;a=t++)n=r[t],i=r[a],n.y>e.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(s=!s);}return s}function zo(t,e){let r=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){const s=t[n],a=t[i];s.y>e.y!=a.y>e.y&&e.x<(a.x-s.x)*(e.y-s.y)/(a.y-s.y)+s.x&&(r=!r);}return r}function Bo(t,e,r,n,s){for(const i of t)if(e<=i.x&&r<=i.y&&n>=i.x&&s>=i.y)return !0;const a=[new i(e,r),new i(e,s),new i(n,s),new i(n,r)];if(t.length>2)for(const e of a)if(zo(t,e))return !0;for(let e=0;e<t.length-1;e++)if(Eo(t[e],t[e+1],a))return !0;return !1}function Eo(t,e,r){const n=r[0],i=r[2];if(t.x<n.x&&e.x<n.x||t.x>i.x&&e.x>i.x||t.y<n.y&&e.y<n.y||t.y>i.y&&e.y>i.y)return !1;const s=D(t,e,r[0]);return s!==D(t,e,r[1])||s!==D(t,e,r[2])||s!==D(t,e,r[3])}function Co(t,e,r){const n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function Do(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Po(t,e,r,n,s){if(!e[0]&&!e[1])return t;const a=i.convert(e)._mult(s);\"viewport\"===r&&a._rotate(-n);const o=[];for(let e=0;e<t.length;e++)o.push(t[e].sub(a));return o}function Vo(t,e,r,n){const s=i.convert(t)._mult(n);return \"viewport\"===e&&s._rotate(-r),s}ai(vo,\"CircleBucket\",{omit:[\"layers\"]});const Fo=new vs({\"circle-sort-key\":new ys($t.layout_circle[\"circle-sort-key\"])});var Lo={paint:new vs({\"circle-radius\":new ys($t.paint_circle[\"circle-radius\"]),\"circle-color\":new ys($t.paint_circle[\"circle-color\"]),\"circle-blur\":new ys($t.paint_circle[\"circle-blur\"]),\"circle-opacity\":new ys($t.paint_circle[\"circle-opacity\"]),\"circle-translate\":new ds($t.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new ds($t.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new ds($t.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new ds($t.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new ys($t.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new ys($t.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new ys($t.paint_circle[\"circle-stroke-opacity\"])}),layout:Fo},Ro=1e-6,Uo=\"undefined\"!=typeof Float32Array?Float32Array:Array;function $o(){var t=new Uo(9);return Uo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function jo(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Oo(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],y=e[12],m=e[13],g=e[14],x=e[15],v=r[0],b=r[1],_=r[2],w=r[3];return t[0]=v*n+b*o+_*h+w*y,t[1]=v*i+b*l+_*p+w*m,t[2]=v*s+b*u+_*f+w*g,t[3]=v*a+b*c+_*d+w*x,t[4]=(v=r[4])*n+(b=r[5])*o+(_=r[6])*h+(w=r[7])*y,t[5]=v*i+b*l+_*p+w*m,t[6]=v*s+b*u+_*f+w*g,t[7]=v*a+b*c+_*d+w*x,t[8]=(v=r[8])*n+(b=r[9])*o+(_=r[10])*h+(w=r[11])*y,t[9]=v*i+b*l+_*p+w*m,t[10]=v*s+b*u+_*f+w*g,t[11]=v*a+b*c+_*d+w*x,t[12]=(v=r[12])*n+(b=r[13])*o+(_=r[14])*h+(w=r[15])*y,t[13]=v*i+b*l+_*p+w*m,t[14]=v*s+b*u+_*f+w*g,t[15]=v*a+b*c+_*d+w*x,t}function qo(t,e,r){var n,i,s,a,o,l,u,c,h,p,f,d,y=r[0],m=r[1],g=r[2];return e===t?(t[12]=e[0]*y+e[4]*m+e[8]*g+e[12],t[13]=e[1]*y+e[5]*m+e[9]*g+e[13],t[14]=e[2]*y+e[6]*m+e[10]*g+e[14],t[15]=e[3]*y+e[7]*m+e[11]*g+e[15]):(i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],t[0]=n=e[0],t[1]=i,t[2]=s,t[3]=a,t[4]=o,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=p,t[10]=f,t[11]=d,t[12]=n*y+o*m+h*g+e[12],t[13]=i*y+l*m+p*g+e[13],t[14]=s*y+u*m+f*g+e[14],t[15]=a*y+c*m+d*g+e[15]),t}function No(t,e,r){var n=r[0],i=r[1],s=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*s,t[9]=e[9]*s,t[10]=e[10]*s,t[11]=e[11]*s,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Go(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[4],a=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=s*i+u*n,t[5]=a*i+c*n,t[6]=o*i+h*n,t[7]=l*i+p*n,t[8]=u*i-s*n,t[9]=c*i-a*n,t[10]=h*i-o*n,t[11]=p*i-l*n,t}function Zo(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[0],a=e[1],o=e[2],l=e[3],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i-u*n,t[1]=a*i-c*n,t[2]=o*i-h*n,t[3]=l*i-p*n,t[8]=s*n+u*i,t[9]=a*n+c*i,t[10]=o*n+h*i,t[11]=l*n+p*i,t}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var Xo=Oo;function Ko(){var t=new Uo(3);return Uo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function Yo(t){var e=new Uo(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Ho(t){return Math.hypot(t[0],t[1],t[2])}function Wo(t,e,r){var n=new Uo(3);return n[0]=t,n[1]=e,n[2]=r,n}function Jo(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function Qo(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function tl(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function el(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}function rl(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function nl(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function il(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t}function sl(t,e){var r=e[0],n=e[1],i=e[2],s=r*r+n*n+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t}function al(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function ol(t,e,r){var n=e[0],i=e[1],s=e[2],a=r[0],o=r[1],l=r[2];return t[0]=i*l-s*o,t[1]=s*a-n*l,t[2]=n*o-i*a,t}function ll(t,e,r){var n=e[0],i=e[1],s=e[2],a=r[3]*n+r[7]*i+r[11]*s+r[15];return t[0]=(r[0]*n+r[4]*i+r[8]*s+r[12])/(a=a||1),t[1]=(r[1]*n+r[5]*i+r[9]*s+r[13])/a,t[2]=(r[2]*n+r[6]*i+r[10]*s+r[14])/a,t}function ul(t,e,r){var n=r[0],i=r[1],s=r[2],a=e[0],o=e[1],l=e[2],u=i*l-s*o,c=s*a-n*l,h=n*o-i*a,p=i*h-s*c,f=s*u-n*h,d=n*c-i*u,y=2*r[3];return c*=y,h*=y,f*=2,d*=2,t[0]=a+(u*=y)+(p*=2),t[1]=o+c+f,t[2]=l+h+d,t}var cl,hl=Qo,pl=tl,fl=Ho;function dl(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*s+r[12]*a,t[1]=r[1]*n+r[5]*i+r[9]*s+r[13]*a,t[2]=r[2]*n+r[6]*i+r[10]*s+r[14]*a,t[3]=r[3]*n+r[7]*i+r[11]*s+r[15]*a,t}function yl(){var t=new Uo(4);return Uo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function ml(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function gl(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l+a*o,t[1]=i*l+s*o,t[2]=s*l-i*o,t[3]=a*l-n*o,t}Ko(),cl=new Uo(4),Uo!=Float32Array&&(cl[0]=0,cl[1]=0,cl[2]=0,cl[3]=0),Ko(),Wo(1,0,0),Wo(0,1,0),yl(),yl(),$o();class xl{constructor(t,e){this.points=t,this.planes=e;}static fromInvProjectionMatrix(t,e,r,n){const i=Math.pow(2,r),s=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((r=>{const s=dl([],r,t),a=1/s[3]/e*i;return function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}(s,s,[a,a,n?1/s[3]:a,a])})),a=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((t=>{const e=sl([],ol([],hl([],s[t[0]],s[t[1]]),hl([],s[t[2]],s[t[1]]))),r=-al(e,s[t[1]]);return e.concat(r)}));return new xl(s,a)}}class vl{constructor(t,e){this.min=t,this.max=e,this.center=nl([],Jo([],this.min,this.max),.5);}quadrant(t){const e=[t%2==0,t<2],r=Yo(this.min),n=Yo(this.max);for(let t=0;t<e.length;t++)r[t]=e[t]?this.min[t]:this.center[t],n[t]=e[t]?this.center[t]:this.max[t];return n[2]=this.max[2],new vl(r,n)}distanceX(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t[0]}distanceY(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t[1]}distanceZ(t){return Math.max(Math.min(this.max[2],t[2]),this.min[2])-t[2]}getCorners(){const t=this.min,e=this.max;return [[t[0],t[1],t[2]],[e[0],t[1],t[2]],[e[0],e[1],t[2]],[t[0],e[1],t[2]],[t[0],t[1],e[2]],[e[0],t[1],e[2]],[e[0],e[1],e[2]],[t[0],e[1],e[2]]]}intersects(t){const e=this.getCorners();let r=!0;for(let n=0;n<t.planes.length;n++){const i=t.planes[n];let s=0;for(let t=0;t<e.length;t++)s+=al(i,e[t])+i[3]>=0;if(0===s)return 0;s!==e.length&&(r=!1);}if(r)return 2;for(let e=0;e<3;e++){let r=Number.MAX_VALUE,n=-Number.MAX_VALUE;for(let i=0;i<t.points.length;i++){const s=t.points[i][e]-this.min[e];r=Math.min(r,s),n=Math.max(n,s);}if(n<0||r>this.max[e]-this.min[e])return 0}return 1}}function bl(t,e,r,n,i,s,a,o,l){if(s&&t.queryGeometry.isAboveHorizon)return !1;s&&(l*=t.pixelToTileUnitsFactor);for(const u of e)for(const e of u){const u=e.add(o),c=i&&r.elevation?r.elevation.exaggeration()*i.getElevationAt(u.x,u.y,!0):0,h=s?u:_l(u,c,n),p=s?t.tilespaceRays.map((t=>kl(t,c))):t.queryGeometry.screenGeometry,f=dl([],[e.x,e.y,c,1],n);if(!a&&s?l*=f[3]/r.cameraToCenterDistance:a&&!s&&(l*=r.cameraToCenterDistance/f[3]),_o(p,h,l))return !0}return !1}function _l(t,e,r){const n=dl([],[t.x,t.y,e,1],r);return new i(n[0]/n[3],n[1]/n[3])}const wl=Wo(0,0,0),Al=Wo(0,0,1);function kl(t,e){const r=Ko();return wl[2]=e,t.intersectsPlane(wl,Al,r),new i(r[0],r[1])}class Sl extends vo{}function Il(t,{width:e,height:r},n,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*r*n)throw new RangeError(\"mismatched image size\")}else i=new Uint8Array(e*r*n);return t.width=e,t.height=r,t.data=i,t}function Ml(t,e,r){const{width:n,height:i}=e;n===t.width&&i===t.height||(Tl(t,e,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,n),height:Math.min(t.height,i)},r),t.width=n,t.height=i,t.data=e.data);}function Tl(t,e,r,n,i,s){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");const a=t.data,o=e.data;for(let l=0;l<i.height;l++){const u=((r.y+l)*t.width+r.x)*s,c=((n.y+l)*e.width+n.x)*s;for(let t=0;t<i.width*s;t++)o[c+t]=a[u+t];}return e}ai(Sl,\"HeatmapBucket\",{omit:[\"layers\"]});class zl{constructor(t,e){Il(this,t,1,e);}resize(t){Ml(this,new zl(t),1);}clone(){return new zl({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Tl(t,e,r,n,i,1);}}class Bl{constructor(t,e){Il(this,t,4,e);}resize(t){Ml(this,new Bl(t),4);}replace(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArray?new Uint8Array(t.buffer):t;}clone(){return new Bl({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Tl(t,e,r,n,i,4);}}ai(zl,\"AlphaImage\"),ai(Bl,\"RGBAImage\");var El={paint:new vs({\"heatmap-radius\":new ys($t.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new ys($t.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new ds($t.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new xs($t.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new ds($t.paint_heatmap[\"heatmap-opacity\"])})};function Cl(t){const e={},r=t.resolution||256,n=t.clips?t.clips.length:1,i=t.image||new Bl({width:r,height:n}),s=(r,n,s)=>{e[t.evaluationKey]=s;const a=t.expression.evaluate(e);i.data[r+n+0]=Math.floor(255*a.r/a.a),i.data[r+n+1]=Math.floor(255*a.g/a.a),i.data[r+n+2]=Math.floor(255*a.b/a.a),i.data[r+n+3]=Math.floor(255*a.a);};if(t.clips)for(let e=0,i=0;e<n;++e,i+=4*r)for(let n=0,a=0;n<r;n++,a+=4){const o=n/(r-1),{start:l,end:u}=t.clips[e];s(i,a,l*(1-o)+u*o);}else for(let t=0,e=0;t<r;t++,e+=4)s(0,e,t/(r-1));return i}var Dl={paint:new vs({\"hillshade-illumination-direction\":new ds($t.paint_hillshade[\"hillshade-illumination-direction\"]),\"hillshade-illumination-anchor\":new ds($t.paint_hillshade[\"hillshade-illumination-anchor\"]),\"hillshade-exaggeration\":new ds($t.paint_hillshade[\"hillshade-exaggeration\"]),\"hillshade-shadow-color\":new ds($t.paint_hillshade[\"hillshade-shadow-color\"]),\"hillshade-highlight-color\":new ds($t.paint_hillshade[\"hillshade-highlight-color\"]),\"hillshade-accent-color\":new ds($t.paint_hillshade[\"hillshade-accent-color\"])})};const Pl=ks([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:Vl}=Pl;var Fl=Rl,Ll=Rl;function Rl(t,e,r){r=r||2;var n,i,s,a,o,l,u,c=e&&e.length,h=c?e[0]*r:t.length,p=Ul(t,0,h,r,!0),f=[];if(!p||p.next===p.prev)return f;if(c&&(p=function(t,e,r,n){var i,s,a,o=[];for(i=0,s=e.length;i<s;i++)(a=Ul(t,e[i]*n,i<s-1?e[i+1]*n:t.length,n,!1))===a.next&&(a.steiner=!0),o.push(Hl(a));for(o.sort(Zl),i=0;i<o.length;i++)r=$l(r=Xl(o[i],r),r.next);return r}(t,e,p,r)),t.length>80*r){n=s=t[0],i=a=t[1];for(var d=r;d<h;d+=r)(o=t[d])<n&&(n=o),(l=t[d+1])<i&&(i=l),o>s&&(s=o),l>a&&(a=l);u=0!==(u=Math.max(s-n,a-i))?1/u:0;}return jl(p,f,r,n,i,u),f}function Ul(t,e,r,n,i){var s,a;if(i===uu(t,e,r,n)>0)for(s=e;s<r;s+=n)a=au(s,t[s],t[s+1],a);else for(s=r-n;s>=e;s-=n)a=au(s,t[s],t[s+1],a);return a&&tu(a,a.next)&&(ou(a),a=a.next),a}function $l(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!tu(n,n.next)&&0!==Ql(n.prev,n,n.next))n=n.next;else {if(ou(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function jl(t,e,r,n,i,s,a){if(t){!a&&s&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Yl(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,s,a,o,l,u=1;do{for(r=t,t=null,s=null,a=0;r;){for(a++,n=r,o=0,e=0;e<u&&(o++,n=n.nextZ);e++);for(l=u;o>0||l>0&&n;)0!==o&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,o--):(i=n,n=n.nextZ,l--),s?s.nextZ=i:t=i,i.prevZ=s,s=i;r=n;}s.nextZ=null,u*=2;}while(a>1)}(i);}(t,n,i,s);for(var o,l,u=t;t.prev!==t.next;)if(o=t.prev,l=t.next,s?ql(t,n,i,s):Ol(t))e.push(o.i/r),e.push(t.i/r),e.push(l.i/r),ou(t),t=l.next,u=l.next;else if((t=l)===u){a?1===a?jl(t=Nl($l(t),e,r),e,r,n,i,s,2):2===a&&Gl(t,e,r,n,i,s):jl($l(t),e,r,n,i,s,1);break}}}function Ol(t){var e=t.prev,r=t,n=t.next;if(Ql(e,r,n)>=0)return !1;for(var i=t.next.next;i!==t.prev;){if(Wl(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Ql(i.prev,i,i.next)>=0)return !1;i=i.next;}return !0}function ql(t,e,r,n){var i=t.prev,s=t,a=t.next;if(Ql(i,s,a)>=0)return !1;for(var o=i.x>s.x?i.x>a.x?i.x:a.x:s.x>a.x?s.x:a.x,l=i.y>s.y?i.y>a.y?i.y:a.y:s.y>a.y?s.y:a.y,u=Yl(i.x<s.x?i.x<a.x?i.x:a.x:s.x<a.x?s.x:a.x,i.y<s.y?i.y<a.y?i.y:a.y:s.y<a.y?s.y:a.y,e,r,n),c=Yl(o,l,e,r,n),h=t.prevZ,p=t.nextZ;h&&h.z>=u&&p&&p.z<=c;){if(h!==t.prev&&h!==t.next&&Wl(i.x,i.y,s.x,s.y,a.x,a.y,h.x,h.y)&&Ql(h.prev,h,h.next)>=0)return !1;if(h=h.prevZ,p!==t.prev&&p!==t.next&&Wl(i.x,i.y,s.x,s.y,a.x,a.y,p.x,p.y)&&Ql(p.prev,p,p.next)>=0)return !1;p=p.nextZ;}for(;h&&h.z>=u;){if(h!==t.prev&&h!==t.next&&Wl(i.x,i.y,s.x,s.y,a.x,a.y,h.x,h.y)&&Ql(h.prev,h,h.next)>=0)return !1;h=h.prevZ;}for(;p&&p.z<=c;){if(p!==t.prev&&p!==t.next&&Wl(i.x,i.y,s.x,s.y,a.x,a.y,p.x,p.y)&&Ql(p.prev,p,p.next)>=0)return !1;p=p.nextZ;}return !0}function Nl(t,e,r){var n=t;do{var i=n.prev,s=n.next.next;!tu(i,s)&&eu(i,n,n.next,s)&&iu(i,s)&&iu(s,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(s.i/r),ou(n),ou(n.next),n=t=s),n=n.next;}while(n!==t);return $l(n)}function Gl(t,e,r,n,i,s){var a=t;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&Jl(a,o)){var l=su(a,o);return a=$l(a,a.next),l=$l(l,l.next),jl(a,e,r,n,i,s),void jl(l,e,r,n,i,s)}o=o.next;}a=a.next;}while(a!==t)}function Zl(t,e){return t.x-e.x}function Xl(t,e){var r=function(t,e){var r,n=e,i=t.x,s=t.y,a=-1/0;do{if(s<=n.y&&s>=n.next.y&&n.next.y!==n.y){var o=n.x+(s-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(o<=i&&o>a){if(a=o,o===i){if(s===n.y)return n;if(s===n.next.y)return n.next}r=n.x<n.next.x?n:n.next;}}n=n.next;}while(n!==e);if(!r)return null;if(i===a)return r;var l,u=r,c=r.x,h=r.y,p=1/0;n=r;do{i>=n.x&&n.x>=c&&i!==n.x&&Wl(s<h?i:a,s,c,h,s<h?a:i,s,n.x,n.y)&&(l=Math.abs(s-n.y)/(i-n.x),iu(n,t)&&(l<p||l===p&&(n.x>r.x||n.x===r.x&&Kl(r,n)))&&(r=n,p=l)),n=n.next;}while(n!==u);return r}(t,e);if(!r)return e;var n=su(r,t),i=$l(r,r.next);return $l(n,n.next),e===r?i:e}function Kl(t,e){return Ql(t.prev,t,e.prev)<0&&Ql(e.next,t,t.next)<0}function Yl(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Hl(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;}while(e!==t);return r}function Wl(t,e,r,n,i,s,a,o){return (i-a)*(e-o)-(t-a)*(s-o)>=0&&(t-a)*(n-o)-(r-a)*(e-o)>=0&&(r-a)*(s-o)-(i-a)*(n-o)>=0}function Jl(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&eu(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(iu(t,e)&&iu(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,s=(t.y+e.y)/2;do{r.y>s!=r.next.y>s&&r.next.y!==r.y&&i<(r.next.x-r.x)*(s-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)&&(Ql(t.prev,t,e.prev)||Ql(t,e.prev,e))||tu(t,e)&&Ql(t.prev,t,t.next)>0&&Ql(e.prev,e,e.next)>0)}function Ql(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function tu(t,e){return t.x===e.x&&t.y===e.y}function eu(t,e,r,n){var i=nu(Ql(t,e,r)),s=nu(Ql(t,e,n)),a=nu(Ql(r,n,t)),o=nu(Ql(r,n,e));return i!==s&&a!==o||!(0!==i||!ru(t,r,e))||!(0!==s||!ru(t,n,e))||!(0!==a||!ru(r,t,n))||!(0!==o||!ru(r,e,n))}function ru(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function nu(t){return t>0?1:t<0?-1:0}function iu(t,e){return Ql(t.prev,t,t.next)<0?Ql(t,e,t.next)>=0&&Ql(t,t.prev,e)>=0:Ql(t,e,t.prev)<0||Ql(t,t.next,e)<0}function su(t,e){var r=new lu(t.i,t.x,t.y),n=new lu(e.i,e.x,e.y),i=t.next,s=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,s.next=n,n.prev=s,n}function au(t,e,r,n){var i=new lu(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function ou(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function lu(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function uu(t,e,r,n){for(var i=0,s=e,a=r-n;s<r;s+=n)i+=(t[a]-t[s])*(t[s+1]+t[a+1]),a=s;return i}function cu(t,e,r,n,i){hu(t,e,r||0,n||t.length-1,i||fu);}function hu(t,e,r,n,i){for(;n>r;){if(n-r>600){var s=n-r+1,a=e-r+1,o=Math.log(s),l=.5*Math.exp(2*o/3),u=.5*Math.sqrt(o*l*(s-l)/s)*(a-s/2<0?-1:1);hu(t,e,Math.max(r,Math.floor(e-a*l/s+u)),Math.min(n,Math.floor(e+(s-a)*l/s+u)),i);}var c=t[e],h=r,p=n;for(pu(t,r,e),i(t[n],c)>0&&pu(t,r,n);h<p;){for(pu(t,h,p),h++,p--;i(t[h],c)<0;)h++;for(;i(t[p],c)>0;)p--;}0===i(t[r],c)?pu(t,r,p):pu(t,++p,n),p<=e&&(r=p+1),e<=p&&(n=p-1);}}function pu(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function fu(t,e){return t<e?-1:t>e?1:0}function du(t,e){const r=t.length;if(r<=1)return [t];const n=[];let i,s;for(let e=0;e<r;e++){const r=P(t[e]);0!==r&&(t[e].area=Math.abs(r),void 0===s&&(s=r<0),s===r<0?(i&&n.push(i),i=[t[e]]):i.push(t[e]));}if(i&&n.push(i),e>1)for(let t=0;t<n.length;t++)n[t].length<=e||(cu(n[t],e,1,n[t].length-1,yu),n[t]=n[t].slice(0,e));return n}function yu(t,e){return e.area-t.area}function mu(t,e,r){const n=r.patternDependencies;let i=!1;for(const r of e){const e=r.paint.get(`${t}-pattern`);e.isConstant()||(i=!0);const s=e.constantOr(null);s&&(i=!0,n[s.to]=!0,n[s.from]=!0);}return i}function gu(t,e,r,n,i){const s=i.patternDependencies;for(const a of e){const e=a.paint.get(`${t}-pattern`).value;if(\"constant\"!==e.kind){let t=e.evaluate({zoom:n-1},r,{},i.availableImages),o=e.evaluate({zoom:n},r,{},i.availableImages),l=e.evaluate({zoom:n+1},r,{},i.availableImages);t=t&&t.name?t.name:t,o=o&&o.name?o.name:o,l=l&&l.name?l.name:l,s[t]=!0,s[o]=!0,s[l]=!0,r.patterns[a.id]={min:t,mid:o,max:l};}}return r}Rl.deviation=function(t,e,r,n){var i=e&&e.length,s=Math.abs(uu(t,0,i?e[0]*r:t.length,r));if(i)for(var a=0,o=e.length;a<o;a++)s-=Math.abs(uu(t,e[a]*r,a<o-1?e[a+1]*r:t.length,r));var l=0;for(a=0;a<n.length;a+=3){var u=n[a]*r,c=n[a+1]*r,h=n[a+2]*r;l+=Math.abs((t[u]-t[h])*(t[c+1]-t[u+1])-(t[u]-t[c])*(t[h+1]-t[u+1]));}return 0===s&&0===l?0:Math.abs((l-s)/s)},Rl.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var s=0;s<t[i].length;s++)for(var a=0;a<e;a++)r.vertices.push(t[i][s][a]);i>0&&r.holes.push(n+=t[i-1].length);}return r},Fl.default=Ll;class xu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Is,this.indexArray=new js,this.indexArray2=new Ks,this.programConfigurations=new Ra(t.layers,t.zoom),this.segments=new Ka,this.segments2=new Ka,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.projection=t.projection;}populate(t,e,r,n){this.hasPattern=mu(\"fill\",this.layers,e);const i=this.layers[0].layout.get(\"fill-sort-key\"),s=[];for(const{feature:a,id:o,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=mo(a,t);if(!this.layers[0]._featureFilter.filter(new ss(this.zoom),c,r))continue;const h=i?i.evaluate(c,{},r,e.availableImages):void 0,p={id:o,properties:a.properties,type:a.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:yo(a,r,n),patterns:{},sortKey:h};s.push(p);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n;if(this.hasPattern){const t=gu(\"fill\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,s,r,{},e.availableImages);e.featureIndex.insert(t[s].feature,i,s,a,this.index);}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}addFeatures(t,e,r,n,i){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Vl),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,r,n,i,s=[]){for(const t of du(e,500)){let e=0;for(const r of t)e+=r.length;const r=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray),n=r.vertexLength,i=[],s=[];for(const e of t){if(0===e.length)continue;e!==t[0]&&s.push(i.length/2);const r=this.segments2.prepareSegment(e.length,this.layoutVertexArray,this.indexArray2),n=r.vertexLength;this.layoutVertexArray.emplaceBack(e[0].x,e[0].y),this.indexArray2.emplaceBack(n+e.length-1,n),i.push(e[0].x),i.push(e[0].y);for(let t=1;t<e.length;t++)this.layoutVertexArray.emplaceBack(e[t].x,e[t].y),this.indexArray2.emplaceBack(n+t-1,n+t),i.push(e[t].x),i.push(e[t].y);r.vertexLength+=e.length,r.primitiveLength+=e.length;}const a=Fl(i,s);for(let t=0;t<a.length;t+=3)this.indexArray.emplaceBack(n+a[t],n+a[t+1],n+a[t+2]);r.vertexLength+=e,r.primitiveLength+=a.length/3;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,s,n);}}ai(xu,\"FillBucket\",{omit:[\"layers\",\"patternFeatures\"]});const vu=new vs({\"fill-sort-key\":new ys($t.layout_fill[\"fill-sort-key\"])});var bu={paint:new vs({\"fill-antialias\":new ds($t.paint_fill[\"fill-antialias\"]),\"fill-opacity\":new ys($t.paint_fill[\"fill-opacity\"]),\"fill-color\":new ys($t.paint_fill[\"fill-color\"]),\"fill-outline-color\":new ys($t.paint_fill[\"fill-outline-color\"]),\"fill-translate\":new ds($t.paint_fill[\"fill-translate\"]),\"fill-translate-anchor\":new ds($t.paint_fill[\"fill-translate-anchor\"]),\"fill-pattern\":new ms($t.paint_fill[\"fill-pattern\"])}),layout:vu};const _u=ks([{name:\"a_pos_normal_ed\",components:4,type:\"Int16\"}]),wu=ks([{name:\"a_centroid_pos\",components:2,type:\"Uint16\"}]),Au=ks([{name:\"a_pos_3\",components:3,type:\"Int16\"},{name:\"a_pos_normal_3\",components:3,type:\"Int16\"}]),{members:ku}=_u;var Su=Iu;function Iu(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(Mu,this,e);}function Mu(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var n=e._keys[t.readVarint()],i=e._values[t.readVarint()];e.properties[n]=i;}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos);}function Tu(t){for(var e,r,n=0,i=0,s=t.length,a=s-1;i<s;a=i++)n+=((r=t[a]).x-(e=t[i]).x)*(e.y+r.y);return n}Iu.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],Iu.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,n=1,s=0,a=0,o=0,l=[];t.pos<r;){if(s<=0){var u=t.readVarint();n=7&u,s=u>>3;}if(s--,1===n||2===n)a+=t.readSVarint(),o+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new i(a,o));else {if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone());}}return e&&l.push(e),l},Iu.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,s=0,a=1/0,o=-1/0,l=1/0,u=-1/0;t.pos<e;){if(n<=0){var c=t.readVarint();r=7&c,n=c>>3;}if(n--,1===r||2===r)(i+=t.readSVarint())<a&&(a=i),i>o&&(o=i),(s+=t.readSVarint())<l&&(l=s),s>u&&(u=s);else if(7!==r)throw new Error(\"unknown command \"+r)}return [a,l,o,u]},Iu.prototype.toGeoJSON=function(t,e,r){var n,i,s=this.extent*Math.pow(2,r),a=this.extent*t,o=this.extent*e,l=this.loadGeometry(),u=Iu.types[this.type];function c(t){for(var e=0;e<t.length;e++){var r=t[e];t[e]=[360*(r.x+a)/s-180,360/Math.PI*Math.atan(Math.exp((180-360*(r.y+o)/s)*Math.PI/180))-90];}}switch(this.type){case 1:var h=[];for(n=0;n<l.length;n++)h[n]=l[n][0];c(l=h);break;case 2:for(n=0;n<l.length;n++)c(l[n]);break;case 3:for(l=function(t){var e=t.length;if(e<=1)return [t];for(var r,n,i=[],s=0;s<e;s++){var a=Tu(t[s]);0!==a&&(void 0===n&&(n=a<0),n===a<0?(r&&i.push(r),r=[t[s]]):r.push(t[s]));}return r&&i.push(r),i}(l),n=0;n<l.length;n++)for(i=0;i<l[n].length;i++)c(l[n][i]);}1===l.length?l=l[0]:u=\"Multi\"+u;var p={type:\"Feature\",geometry:{type:u,coordinates:l},properties:this.properties};return \"id\"in this&&(p.id=this.id),p};var zu=Bu;function Bu(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(Eu,this,e),this.length=this._features.length;}function Eu(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var n=t.readVarint()>>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}function Cu(t,e,r){if(3===t){var n=new zu(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}Bu.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new Su(this._pbf,e,this.extent,this._keys,this._values)};var Du={VectorTile:function(t,e){this.layers=t.readFields(Cu,{},e);},VectorTileFeature:Su,VectorTileLayer:zu};function Pu(t,e,r,n){const s=[],a=0===n?(t,e,r,n,s,a)=>{t.push(new i(a,r+(a-e)/(n-e)*(s-r)));}:(t,e,r,n,s,a)=>{t.push(new i(e+(a-r)/(s-r)*(n-e),a));};for(const i of t){const t=[];for(const s of i){if(s.length<=2)continue;const i=[];for(let t=0;t<s.length-1;t++){const o=s[t].x,l=s[t].y,u=s[t+1].x,c=s[t+1].y,h=0===n?o:l,p=0===n?u:c;h<e?p>e&&a(i,o,l,u,c,e):h>r?p<r&&a(i,o,l,u,c,r):i.push(s[t]),p<e&&h>=e&&a(i,o,l,u,c,e),p>r&&h<=r&&a(i,o,l,u,c,r);}let o=s[s.length-1];const l=0===n?o.x:o.y;l>=e&&l<=r&&i.push(o),i.length&&(o=i[i.length-1],i[0].x===o.x&&i[0].y===o.y||i.push(i[0]),t.push(i));}t.length&&s.push(t);}return s}const Vu=Du.VectorTileFeature.types,Fu=Math.pow(2,13);function Lu(t,e,r,n,i,s,a,o){t.emplaceBack((e<<1)+a,(r<<1)+s,(Math.floor(n*Fu)<<1)+i,Math.round(o));}function Ru(t,e,r){const n=16384;t.emplaceBack(e.x,e.y,e.z,r[0]*n,r[1]*n,r[2]*n);}class Uu{constructor(){this.acc=new i(0,0),this.polyCount=[];}startRing(t){this.currentPolyCount={edges:0,top:0},this.polyCount.push(this.currentPolyCount),this.min||(this.min=new i(t.x,t.y),this.max=new i(t.x,t.y));}append(t,e){this.currentPolyCount.edges++,this.acc._add(t);const r=this.min,n=this.max;t.x<r.x?r.x=t.x:t.x>n.x&&(n.x=t.x),t.y<r.y?r.y=t.y:t.y>n.y&&(n.y=t.y),((0===t.x||t.x===Ya)&&t.x===e.x)!=((0===t.y||t.y===Ya)&&t.y===e.y)&&this.processBorderOverlap(t,e),e.x<0!=t.x<0&&this.addBorderIntersection(0,rr(e.y,t.y,(0-e.x)/(t.x-e.x))),e.x>Ya!=t.x>Ya&&this.addBorderIntersection(1,rr(e.y,t.y,(Ya-e.x)/(t.x-e.x))),e.y<0!=t.y<0&&this.addBorderIntersection(2,rr(e.x,t.x,(0-e.y)/(t.y-e.y))),e.y>Ya!=t.y>Ya&&this.addBorderIntersection(3,rr(e.x,t.x,(Ya-e.y)/(t.y-e.y)));}addBorderIntersection(t,e){this.borders||(this.borders=[[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE]]);const r=this.borders[t];e<r[0]&&(r[0]=e),e>r[1]&&(r[1]=e);}processBorderOverlap(t,e){if(t.x===e.x){if(t.y===e.y)return;const r=0===t.x?0:1;this.addBorderIntersection(r,e.y),this.addBorderIntersection(r,t.y);}else {const r=0===t.y?2:3;this.addBorderIntersection(r,e.x),this.addBorderIntersection(r,t.x);}}centroid(){const t=this.polyCount.reduce(((t,e)=>t+e.edges),0);return 0!==t?this.acc.div(t)._round():new i(0,0)}span(){return new i(this.max.x-this.min.x,this.max.y-this.min.y)}intersectsCount(){return this.borders.reduce(((t,e)=>t+ +(e[0]!==Number.MAX_VALUE)),0)}}class $u{constructor(t){this.zoom=t.zoom,this.canonical=t.canonical,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.projection=t.projection,this.layoutVertexArray=new Ts,this.centroidVertexArray=new ha,this.indexArray=new js,this.programConfigurations=new Ra(t.layers,t.zoom),this.segments=new Ka,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.enableTerrain=t.enableTerrain;}populate(t,e,r,n){this.features=[],this.hasPattern=mu(\"fill-extrusion\",this.layers,e),this.featuresOnBorder=[],this.borders=[[],[],[],[]],this.borderDoneWithNeighborZ=[-1,-1,-1,-1],this.tileToMeter=function(t){const e=Math.exp(Math.PI*(1-t.y/(1<<t.z)*2));return 80150034*e/(e*e+1)/Ya/(1<<t.z)}(r);for(const{feature:i,id:s,index:a,sourceLayerIndex:o}of t){const t=this.layers[0]._featureFilter.needGeometry,l=mo(i,t);if(!this.layers[0]._featureFilter.filter(new ss(this.zoom),l,r))continue;const u={id:s,sourceLayerIndex:o,index:a,geometry:t?l.geometry:yo(i,r,n),properties:i.properties,type:i.type,patterns:{}},c=this.layoutVertexArray.length;this.hasPattern?this.features.push(gu(\"fill-extrusion\",this.layers,u,this.zoom,e)):this.addFeature(u,u.geometry,a,r,{},e.availableImages,n),e.featureIndex.insert(i,u.geometry,a,o,this.index,c);}this.sortBorders();}addFeatures(t,e,r,n,i){for(const t of this.features){const{geometry:s}=t;this.addFeature(t,s,t.index,e,r,n,i);}this.sortBorders();}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,ku),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.layoutVertexExtArray&&(this.layoutVertexExtBuffer=t.createVertexBuffer(this.layoutVertexExtArray,Au.members,!0))),this.programConfigurations.upload(t),this.uploaded=!0;}uploadCentroid(t){0!==this.centroidVertexArray.length&&(this.centroidVertexBuffer?this.needsCentroidUpdate&&this.centroidVertexBuffer.updateData(this.centroidVertexArray):this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,wu.members,!0),this.needsCentroidUpdate=!1);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.centroidVertexBuffer&&this.centroidVertexBuffer.destroy(),this.layoutVertexExtBuffer&&this.layoutVertexExtBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n,s,a,o){const l=[new i(0,0),new i(Ya,Ya)],u=o.projection,c=\"globe\"===u.name,h=this.enableTerrain&&!c?new Uu:null;c&&!this.layoutVertexExtArray&&(this.layoutVertexExtArray=new Qs);const p=du(e,500);for(let t=p.length-1;t>=0;t--){const e=p[t];(0===e.length||(f=e[0]).every((t=>t.x<=0))||f.every((t=>t.x>=Ya))||f.every((t=>t.y<=0))||f.every((t=>t.y>=Ya)))&&p.splice(t,1);}var f;let d;if(c){const t=11.25,e=1<<n.z,r=io(n.x/e),s=io((n.x+1)/e),a=so(n.y/e),o=so((n.y+1)/e);d=function(t,e,r,n,s=0,a){const o=[];if(!t.length||!r||!n)return o;const l=(t,e)=>{for(const r of t)o.push({polygon:r,bounds:e});},u=Math.ceil(Math.log2(r)),c=Math.ceil(Math.log2(n)),h=u-c,p=[];for(let t=0;t<Math.abs(h);t++)p.push(h>0?0:1);for(let t=0;t<Math.min(u,c);t++)p.push(0),p.push(1);let f=t;if(f=Pu(f,e[0].y-s,e[1].y+s,1),f=Pu(f,e[0].x-s,e[1].x+s,0),!f.length)return o;const d=[];for(p.length?d.push({polygons:f,bounds:e,depth:0}):l(f,e);d.length;){const t=d.pop(),e=t.depth,r=p[e],n=t.bounds[0],o=t.bounds[1],u=0===r?n.x:n.y,c=0===r?o.x:o.y,h=a?a(r,u,c):.5*(u+c),f=Pu(t.polygons,u-s,h+s,r),y=Pu(t.polygons,h-s,c+s,r);if(f.length){const t=[n,new i(0===r?h:o.x,1===r?h:o.y)];p.length>e+1?d.push({polygons:f,bounds:t,depth:e+1}):l(f,t);}if(y.length){const t=[new i(0===r?h:n.x,1===r?h:n.y),o];p.length>e+1?d.push({polygons:y,bounds:t,depth:e+1}):l(y,t);}}return o}(p,l,Math.ceil((s-r)/t),Math.ceil((a-o)/t),1,((t,r,i)=>{if(0===t)return .5*(r+i);{const t=so((n.y+r/Ya)/e);return (ro(.5*(so((n.y+i/Ya)/e)+t))*e-n.y)*Ya}}));}else {d=[];for(const t of p)d.push({polygon:t,bounds:l});}for(const e of d){const r=e.polygon;let i=0,s=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let t=0;t<r.length;t++){const a=r[t];if(0===a.length)continue;i+=a.length;let o=0;h&&h.startRing(a[0]);for(let t=0;t<a.length;t++){const r=a[t];if(t>=1){const i=a[t-1];if(!ju(r,i,e.bounds)){h&&h.append(r,i),s.vertexLength+4>Ka.MAX_VERTEX_ARRAY_LENGTH&&(s=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const t=r.sub(i)._perp(),e=t.x/(Math.abs(t.x)+Math.abs(t.y)),a=t.y>0?1:0,l=i.dist(r);o+l>32768&&(o=0),Lu(this.layoutVertexArray,r.x,r.y,e,a,0,0,o),Lu(this.layoutVertexArray,r.x,r.y,e,a,0,1,o),o+=l,Lu(this.layoutVertexArray,i.x,i.y,e,a,0,0,o),Lu(this.layoutVertexArray,i.x,i.y,e,a,0,1,o);const p=s.vertexLength;if(this.indexArray.emplaceBack(p,p+2,p+1),this.indexArray.emplaceBack(p+1,p+2,p+3),s.vertexLength+=4,s.primitiveLength+=2,c){const t=this.layoutVertexExtArray,e=u.projectTilePoint(r.x,r.y,n),s=u.projectTilePoint(i.x,i.y,n),a=u.upVector(n,r.x,r.y),o=u.upVector(n,i.x,i.y);Ru(t,e,a),Ru(t,e,a),Ru(t,s,o),Ru(t,s,o);}}}}}if(s.vertexLength+i>Ka.MAX_VERTEX_ARRAY_LENGTH&&(s=this.segments.prepareSegment(i,this.layoutVertexArray,this.indexArray)),\"Polygon\"!==Vu[t.type])continue;const a=[],o=[],l=s.vertexLength;for(let t=0;t<r.length;t++){const e=r[t];if(0!==e.length){e!==r[0]&&o.push(a.length/2);for(let t=0;t<e.length;t++){const r=e[t];Lu(this.layoutVertexArray,r.x,r.y,0,0,1,1,0),a.push(r.x),a.push(r.y),h&&h.currentPolyCount.top++,c&&Ru(this.layoutVertexExtArray,u.projectTilePoint(r.x,r.y,n),u.upVector(n,r.x,r.y));}}}const p=Fl(a,o);for(let t=0;t<p.length;t+=3)this.indexArray.emplaceBack(l+p[t],l+p[t+2],l+p[t+1]);s.primitiveLength+=p.length/3,s.vertexLength+=i;}if(h&&h.polyCount.length>0){if(h.borders){h.vertexArrayOffset=this.centroidVertexArray.length;const t=h.borders,e=this.featuresOnBorder.push(h)-1;for(let r=0;r<4;r++)t[r][0]!==Number.MAX_VALUE&&this.borders[r].push(e);}this.encodeCentroid(h.borders?void 0:h.centroid(),h);}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,s,a,n);}sortBorders(){for(let t=0;t<4;t++)this.borders[t].sort(((e,r)=>this.featuresOnBorder[e].borders[t][0]-this.featuresOnBorder[r].borders[t][0]));}encodeCentroid(t,e,r=!0){let n,i;if(t)if(0!==t.y){const r=e.span()._mult(this.tileToMeter);n=(Math.max(t.x,1)<<3)+Math.min(7,Math.round(r.x/10)),i=(Math.max(t.y,1)<<3)+Math.min(7,Math.round(r.y/10));}else n=Math.ceil(7*(t.x+450)),i=0;else n=0,i=+r;let s=r?this.centroidVertexArray.length:e.vertexArrayOffset;for(const t of e.polyCount){r&&this.centroidVertexArray.resize(this.centroidVertexArray.length+4*t.edges+t.top);for(let e=0;e<2*t.edges;e++)this.centroidVertexArray.emplace(s++,0,i),this.centroidVertexArray.emplace(s++,n,i);for(let e=0;e<t.top;e++)this.centroidVertexArray.emplace(s++,n,i);}}}function ju(t,e,r){return t.x===e.x&&(t.x<r[0].x||t.x>r[1].x)||t.y===e.y&&(t.y<r[0].y||t.y>r[1].y)}ai($u,\"FillExtrusionBucket\",{omit:[\"layers\",\"features\"]}),ai(Uu,\"PartMetadata\");var Ou={paint:new vs({\"fill-extrusion-opacity\":new ds($t[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new ys($t[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new ds($t[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new ds($t[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new ms($t[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new ys($t[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new ys($t[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new ds($t[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})};function qu(t,e){return t.x*e.x+t.y*e.y}function Nu(t,e){if(1===t.length){let r=0;const n=e[r++];let i;for(;!i||n.equals(i);)if(i=e[r++],!i)return 1/0;for(;r<e.length;r++){const s=e[r],a=t[0],o=i.sub(n),l=s.sub(n),u=a.sub(n),c=qu(o,o),h=qu(o,l),p=qu(l,l),f=qu(u,o),d=qu(u,l),y=c*p-h*h,m=(p*f-h*d)/y,g=(c*d-h*f)/y,x=n.z*(1-m-g)+i.z*m+s.z*g;if(isFinite(x))return x}return 1/0}{let t=1/0;for(const r of e)t=Math.min(t,r.z);return t}}function Gu(t){const e=new i(t[0],t[1]);return e.z=t[2],e}function Zu(t,e,r,n,i,s,a,o){const l=a*i.getElevationAt(t,e,!0,!0),u=0!==s[0],c=u?0===s[1]?a*(s[0]/7-450):a*function(t,e,r){const n=Math.floor(e[0]/8),i=Math.floor(e[1]/8),s=10*(e[0]-8*n),a=10*(e[1]-8*i),o=t.getElevationAt(n,i,!0,!0),l=t.getMeterToDEM(r),u=Math.floor(.5*(s*l-1)),c=Math.floor(.5*(a*l-1)),h=t.tileCoordToPixel(n,i),p=2*u+1,f=2*c+1,d=function(t,e,r,n,i){return [t.getElevationAtPixel(e,r,!0),t.getElevationAtPixel(e+i,r,!0),t.getElevationAtPixel(e,r+i,!0),t.getElevationAtPixel(e+n,r+i,!0)]}(t,h.x-u,h.y-c,p,f),y=Math.abs(d[0]-d[1]),m=Math.abs(d[2]-d[3]),g=Math.abs(d[0]-d[2])+Math.abs(d[1]-d[3]),x=Math.min(.25,.5*l*(y+m)/p),v=Math.min(.25,.5*l*g/f);return o+Math.max(x*s,v*a)}(i,s,o):l;return {base:l+(0===r)?-1:r,top:u?Math.max(c+n,l+r+2):l+n}}const Xu=ks([{name:\"a_pos_normal\",components:2,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"},{name:\"a_linesofar\",components:1,type:\"Float32\"}],4),{members:Ku}=Xu,Yu=ks([{name:\"a_packed\",components:3,type:\"Float32\"}]),{members:Hu}=Yu,Wu=Du.VectorTileFeature.types,Ju=Math.cos(Math.PI/180*37.5);class Qu{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.projection=t.projection,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((t=>{this.gradients[t.id]={};})),this.layoutVertexArray=new zs,this.layoutVertexArray2=new Vs,this.indexArray=new js,this.programConfigurations=new Ra(t.layers,t.zoom),this.segments=new Ka,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r,n){this.hasPattern=mu(\"line\",this.layers,e);const i=this.layers[0].layout.get(\"line-sort-key\"),s=[];for(const{feature:e,id:a,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=mo(e,t);if(!this.layers[0]._featureFilter.filter(new ss(this.zoom),u,r))continue;const c=i?i.evaluate(u,{},r):void 0,h={id:a,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:yo(e,r,n),patterns:{},sortKey:c};s.push(h);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));const{lineAtlas:a,featureIndex:o}=e,l=this.addConstantDashes(a);for(const n of s){const{geometry:i,index:s,sourceLayerIndex:u}=n;if(l&&this.addFeatureDashes(n,a),this.hasPattern){const t=gu(\"line\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,s,r,a.positions,e.availableImages);o.insert(t[s].feature,i,s,u,this.index);}}addConstantDashes(t){let e=!1;for(const r of this.layers){const n=r.paint.get(\"line-dasharray\").value,i=r.layout.get(\"line-cap\").value;if(\"constant\"!==n.kind||\"constant\"!==i.kind)e=!0;else {const e=i.value,r=n.value;if(!r)continue;t.addDash(r.from,e),t.addDash(r.to,e),r.other&&t.addDash(r.other,e);}}return e}addFeatureDashes(t,e){const r=this.zoom;for(const n of this.layers){const i=n.paint.get(\"line-dasharray\").value,s=n.layout.get(\"line-cap\").value;if(\"constant\"===i.kind&&\"constant\"===s.kind)continue;let a,o,l,u,c,h;if(\"constant\"===i.kind){const t=i.value;if(!t)continue;a=t.other||t.to,o=t.to,l=t.from;}else a=i.evaluate({zoom:r-1},t),o=i.evaluate({zoom:r},t),l=i.evaluate({zoom:r+1},t);\"constant\"===s.kind?u=c=h=s.value:(u=s.evaluate({zoom:r-1},t),c=s.evaluate({zoom:r},t),h=s.evaluate({zoom:r+1},t)),e.addDash(a,u),e.addDash(o,c),e.addDash(l,h);const p=e.getKey(a,u),f=e.getKey(o,c),d=e.getKey(l,h);t.patterns[n.id]={min:p,mid:f,max:d};}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}addFeatures(t,e,r,n,i){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,Hu)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Ku),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&t.properties.hasOwnProperty(\"mapbox_clip_start\")&&t.properties.hasOwnProperty(\"mapbox_clip_end\"))return {start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,e,r,n,i,s){const a=this.layers[0].layout,o=a.get(\"line-join\").evaluate(t,{}),l=a.get(\"line-cap\").evaluate(t,{}),u=a.get(\"line-miter-limit\"),c=a.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(t);for(const r of e)this.addLine(r,t,o,l,u,c);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,s,n);}addLine(t,e,r,n,i,s){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineSoFar=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e<t.length-1;e++)this.totalDistance+=t[e].dist(t[e+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance);}const a=\"Polygon\"===Wu[e.type];let o=t.length;for(;o>=2&&t[o-1].equals(t[o-2]);)o--;let l=0;for(;l<o-1&&t[l].equals(t[l+1]);)l++;if(o<(a?3:2))return;\"bevel\"===r&&(i=1.05);const u=this.overscaling<=16?122880/(512*this.overscaling):0,c=this.segments.prepareSegment(10*o,this.layoutVertexArray,this.indexArray);let h,p,f,d,y;this.e1=this.e2=-1,a&&(h=t[o-2],y=t[l].sub(h)._unit()._perp());for(let e=l;e<o;e++){if(f=e===o-1?a?t[l+1]:void 0:t[e+1],f&&t[e].equals(f))continue;y&&(d=y),h&&(p=h),h=t[e],y=f?f.sub(h)._unit()._perp():d,d=d||y;let m=d.add(y);0===m.x&&0===m.y||m._unit();const g=d.x*y.x+d.y*y.y,x=m.x*y.x+m.y*y.y,v=0!==x?1/x:1/0,b=2*Math.sqrt(2-2*x),_=x<Ju&&p&&f,w=d.x*y.y-d.y*y.x>0;if(_&&e>l){const t=h.dist(p);if(t>2*u){const e=h.sub(h.sub(p)._mult(u/t)._round());this.updateDistance(p,e),this.addCurrentVertex(e,d,0,0,c),p=e;}}const A=p&&f;let k=A?r:a?\"butt\":n;if(A&&\"round\"===k&&(v<s?k=\"miter\":v<=2&&(k=\"fakeround\")),\"miter\"===k&&v>i&&(k=\"bevel\"),\"bevel\"===k&&(v>2&&(k=\"flipbevel\"),v<i&&(k=\"miter\")),p&&this.updateDistance(p,h),\"miter\"===k)m._mult(v),this.addCurrentVertex(h,m,0,0,c);else if(\"flipbevel\"===k){if(v>100)m=y.mult(-1);else {const t=v*d.add(y).mag()/d.sub(y).mag();m._perp()._mult(t*(w?-1:1));}this.addCurrentVertex(h,m,0,0,c),this.addCurrentVertex(h,m.mult(-1),0,0,c);}else if(\"bevel\"===k||\"fakeround\"===k){const t=-Math.sqrt(v*v-1),e=w?t:0,r=w?0:t;if(p&&this.addCurrentVertex(h,d,e,r,c),\"fakeround\"===k){const t=Math.round(180*b/Math.PI/20);for(let e=1;e<t;e++){let r=e/t;if(.5!==r){const t=r-.5;r+=r*t*(r-1)*((1.0904+g*(g*(3.55645-1.43519*g)-3.2452))*t*t+(.848013+g*(.215638*g-1.06021)));}const n=y.sub(d)._mult(r)._add(d)._unit()._mult(w?-1:1);this.addHalfVertex(h,n.x,n.y,!1,w,0,c);}}f&&this.addCurrentVertex(h,y,-e,-r,c);}else if(\"butt\"===k)this.addCurrentVertex(h,m,0,0,c);else if(\"square\"===k){const t=p?1:-1;p||this.addCurrentVertex(h,m,t,t,c),this.addCurrentVertex(h,m,0,0,c),p&&this.addCurrentVertex(h,m,t,t,c);}else \"round\"===k&&(p&&(this.addCurrentVertex(h,d,0,0,c),this.addCurrentVertex(h,d,1,1,c,!0)),f&&(this.addCurrentVertex(h,y,-1,-1,c,!0),this.addCurrentVertex(h,y,0,0,c)));if(_&&e<o-1){const t=h.dist(f);if(t>2*u){const e=h.add(f.sub(h)._mult(u/t)._round());this.updateDistance(h,e),this.addCurrentVertex(e,y,0,0,c),h=e;}}}}addCurrentVertex(t,e,r,n,i,s=!1){const a=e.y*n-e.x,o=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,s,!1,r,i),this.addHalfVertex(t,a,o,s,!0,-n,i);}addHalfVertex({x:t,y:e},r,n,i,s,a,o){this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(s?1:0),Math.round(63*r)+128,Math.round(63*n)+128,1+(0===a?0:a<0?-1:1),0,this.lineSoFar),this.lineClips&&this.layoutVertexArray2.emplaceBack(this.scaledDistance,this.lineClipsArray.length,this.lineSoFar);const l=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,l),o.primitiveLength++),s?this.e2=l:this.e1=l;}updateScaledDistance(){if(this.lineClips){const t=this.totalDistance/(this.lineClips.end-this.lineClips.start);this.scaledDistance=this.distance/this.totalDistance,this.lineSoFar=t*this.lineClips.start+this.distance;}else this.lineSoFar=this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}}ai(Qu,\"LineBucket\",{omit:[\"layers\",\"patternFeatures\"]});const tc=new vs({\"line-cap\":new ys($t.layout_line[\"line-cap\"]),\"line-join\":new ys($t.layout_line[\"line-join\"]),\"line-miter-limit\":new ds($t.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new ds($t.layout_line[\"line-round-limit\"]),\"line-sort-key\":new ys($t.layout_line[\"line-sort-key\"])});var ec={paint:new vs({\"line-opacity\":new ys($t.paint_line[\"line-opacity\"]),\"line-color\":new ys($t.paint_line[\"line-color\"]),\"line-translate\":new ds($t.paint_line[\"line-translate\"]),\"line-translate-anchor\":new ds($t.paint_line[\"line-translate-anchor\"]),\"line-width\":new ys($t.paint_line[\"line-width\"]),\"line-gap-width\":new ys($t.paint_line[\"line-gap-width\"]),\"line-offset\":new ys($t.paint_line[\"line-offset\"]),\"line-blur\":new ys($t.paint_line[\"line-blur\"]),\"line-dasharray\":new ms($t.paint_line[\"line-dasharray\"]),\"line-pattern\":new ms($t.paint_line[\"line-pattern\"]),\"line-gradient\":new xs($t.paint_line[\"line-gradient\"])}),layout:tc};const rc=new class extends ys{possiblyEvaluate(t,e){return e=new ss(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,r,n){return e=b({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,r,n)}}(ec.paint.properties[\"line-width\"].specification);function nc(t,e){return e>0?e+2*t:t}rc.useIntegerZoom=!0;const ic=ks([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_tex_size\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"},{name:\"a_z_tile_anchor\",components:4,type:\"Int16\"}],4),sc=ks([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4);ks([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4);const ac=ks([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}]),oc=ks([{name:\"a_size_scale\",components:1,type:\"Float32\"},{name:\"a_padding\",components:2,type:\"Float32\"}]);ks([{type:\"Int16\",name:\"projectedAnchorX\"},{type:\"Int16\",name:\"projectedAnchorY\"},{type:\"Int16\",name:\"projectedAnchorZ\"},{type:\"Int16\",name:\"tileAnchorX\"},{type:\"Int16\",name:\"tileAnchorY\"},{type:\"Float32\",name:\"x1\"},{type:\"Float32\",name:\"y1\"},{type:\"Float32\",name:\"x2\"},{type:\"Float32\",name:\"y2\"},{type:\"Int16\",name:\"padding\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]);const lc=ks([{name:\"a_pos\",components:3,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4),uc=ks([{name:\"a_pos_2f\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);ks([{name:\"triangle\",components:3,type:\"Uint16\"}]),ks([{type:\"Int16\",name:\"projectedAnchorX\"},{type:\"Int16\",name:\"projectedAnchorY\"},{type:\"Int16\",name:\"projectedAnchorZ\"},{type:\"Float32\",name:\"tileAnchorX\"},{type:\"Float32\",name:\"tileAnchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"},{type:\"Uint8\",name:\"flipState\"}]),ks([{type:\"Int16\",name:\"projectedAnchorX\"},{type:\"Int16\",name:\"projectedAnchorY\"},{type:\"Int16\",name:\"projectedAnchorZ\"},{type:\"Float32\",name:\"tileAnchorX\"},{type:\"Float32\",name:\"tileAnchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),ks([{type:\"Float32\",name:\"offsetX\"}]),ks([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);var cc=24;const hc=128;function pc(t,e){const{expression:r}=e;if(\"constant\"===r.kind)return {kind:\"constant\",layoutSize:r.evaluate(new ss(t+1))};if(\"source\"===r.kind)return {kind:\"source\"};{const{zoomStops:e,interpolationType:n}=r;let i=0;for(;i<e.length&&e[i]<=t;)i++;i=Math.max(0,i-1);let s=i;for(;s<e.length&&e[s]<t+1;)s++;s=Math.min(e.length-1,s);const a=e[i],o=e[s];return \"composite\"===r.kind?{kind:\"composite\",minZoom:a,maxZoom:o,interpolationType:n}:{kind:\"camera\",minZoom:a,maxZoom:o,minSize:r.evaluate(new ss(a)),maxSize:r.evaluate(new ss(o)),interpolationType:n}}}function fc(t,{uSize:e,uSizeT:r},{lowerSize:n,upperSize:i}){return \"source\"===t.kind?n/hc:\"composite\"===t.kind?rr(n/hc,i/hc,r):e}function dc(t,e){let r=0,n=0;if(\"constant\"===t.kind)n=t.layoutSize;else if(\"source\"!==t.kind){const{interpolationType:i,minZoom:s,maxZoom:a}=t,o=i?y(_r.interpolationFactor(i,e,s,a),0,1):0;\"camera\"===t.kind?n=rr(t.minSize,t.maxSize,o):r=o;}return {uSizeT:r,uSize:n}}var yc=Object.freeze({__proto__:null,getSizeData:pc,evaluateSizeForFeature:fc,evaluateSizeForZoom:dc,SIZE_PACK_FACTOR:hc});function mc(t,e,r){return t.sections.forEach((t=>{t.text=function(t,e,r){const n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),is.applyArabicShaping&&(t=is.applyArabicShaping(t)),t}(t.text,e,r);})),t}const gc={\"!\":\"︕\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"*\",\"+\":\"+\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"/\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"=\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"@\",\"[\":\"﹇\",\"\\\\\":\"\\",\"]\":\"﹈\",\"^\":\"^\",_:\"︳\",\"`\":\"`\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"~\",\"¢\":\"¢\",\"£\":\"£\",\"¥\":\"¥\",\"¦\":\"¦\",\"¬\":\"¬\",\"¯\":\" ̄\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"₩\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"!\":\"︕\",\"(\":\"︵\",\")\":\"︶\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\">\":\"﹀\",\"?\":\"︖\",\"[\":\"﹇\",\"]\":\"﹈\",\"_\":\"︳\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"⦅\":\"︵\",\"⦆\":\"︶\",\"。\":\"︒\",\"「\":\"﹁\",\"」\":\"﹂\"};function xc(t){return \"︶\"===t||\"﹈\"===t||\"︸\"===t||\"﹄\"===t||\"﹂\"===t||\"︾\"===t||\"︼\"===t||\"︺\"===t||\"︘\"===t||\"﹀\"===t||\"︐\"===t||\"︓\"===t||\"︔\"===t||\"`\"===t||\" ̄\"===t||\"︑\"===t||\"︒\"===t}function vc(t){return \"︵\"===t||\"﹇\"===t||\"︷\"===t||\"﹃\"===t||\"﹁\"===t||\"︽\"===t||\"︻\"===t||\"︹\"===t||\"︗\"===t||\"︿\"===t}var bc=function(t,e,r,n,i){var s,a,o=8*i-n-1,l=(1<<o)-1,u=l>>1,c=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,s=f&(1<<-c)-1,f>>=-c,c+=o;c>0;s=256*s+t[e+h],h+=p,c-=8);for(a=s&(1<<-c)-1,s>>=-c,c+=n;c>0;a=256*a+t[e+h],h+=p,c-=8);if(0===s)s=1-u;else {if(s===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,n),s-=u;}return (f?-1:1)*a*Math.pow(2,s-n)},_c=function(t,e,r,n,i,s){var a,o,l,u=8*s-i-1,c=(1<<u)-1,h=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:s-1,d=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(a++,l/=2),a+h>=c?(o=0,a=c):a+h>=1?(o=(e*l-1)*Math.pow(2,i),a+=h):(o=e*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;t[r+f]=255&o,f+=d,o/=256,i-=8);for(a=a<<i|o,u+=i;u>0;t[r+f]=255&a,f+=d,a/=256,u-=8);t[r+f-d]|=128*y;},wc=Ac;function Ac(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}Ac.Varint=0,Ac.Fixed64=1,Ac.Bytes=2,Ac.Fixed32=5;var kc=4294967296,Sc=1/kc,Ic=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function Mc(t){return t.type===Ac.Bytes?t.readVarint()+t.pos:t.pos+1}function Tc(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function zc(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function Bc(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r]);}function Ec(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r]);}function Cc(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r]);}function Dc(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r]);}function Pc(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r]);}function Vc(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r]);}function Fc(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r]);}function Lc(t,e){for(var r=0;r<t.length;r++)e.writeFixed64(t[r]);}function Rc(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r]);}function Uc(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function $c(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function jc(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function Oc(t,e,r){e.glyphs=[],1===t&&r.readMessage(qc,e);}function qc(t,e,r){if(3===t){const{id:t,bitmap:n,width:i,height:s,left:a,top:o,advance:l}=r.readMessage(Nc,{});e.glyphs.push({id:t,bitmap:new zl({width:i+6,height:s+6},n),metrics:{width:i,height:s,left:a,top:o,advance:l}});}else 4===t?e.ascender=r.readSVarint():5===t&&(e.descender=r.readSVarint());}function Nc(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}function Gc(t){let e=0,r=0;for(const n of t)e+=n.w*n.h,r=Math.max(r,n.w);t.sort(((t,e)=>e.h-t.h));const n=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let i=0,s=0;for(const e of t)for(let t=n.length-1;t>=0;t--){const r=n[t];if(!(e.w>r.w||e.h>r.h)){if(e.x=r.x,e.y=r.y,s=Math.max(s,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===r.w&&e.h===r.h){const e=n.pop();t<n.length&&(n[t]=e);}else e.h===r.h?(r.x+=e.w,r.w-=e.w):e.w===r.w?(r.y+=e.h,r.h-=e.h):(n.push({x:r.x+e.w,y:r.y,w:r.w-e.w,h:e.h}),r.y+=e.h,r.h-=e.h);break}}return {w:i,h:s,fill:e/(i*s)||0}}Ac.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var n=this.readVarint(),i=n>>3,s=this.pos;this.type=7&n,t(i,e,this),this.pos===s&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=Uc(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=jc(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Uc(this.buf,this.pos)+Uc(this.buf,this.pos+4)*kc;return this.pos+=8,t},readSFixed64:function(){var t=Uc(this.buf,this.pos)+jc(this.buf,this.pos+4)*kc;return this.pos+=8,t},readFloat:function(){var t=bc(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=bc(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,s=r.buf;if(n=(112&(i=s[r.pos++]))>>4,i<128)return Tc(t,n,e);if(n|=(127&(i=s[r.pos++]))<<3,i<128)return Tc(t,n,e);if(n|=(127&(i=s[r.pos++]))<<10,i<128)return Tc(t,n,e);if(n|=(127&(i=s[r.pos++]))<<17,i<128)return Tc(t,n,e);if(n|=(127&(i=s[r.pos++]))<<24,i<128)return Tc(t,n,e);if(n|=(1&(i=s[r.pos++]))<<31,i<128)return Tc(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Ic?function(t,e,r){return Ic.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n=\"\",i=e;i<r;){var s,a,o,l=t[i],u=null,c=l>239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(s=t[i+1]))&&(u=(31&l)<<6|63&s)<=127&&(u=null):3===c?(a=t[i+2],128==(192&(s=t[i+1]))&&128==(192&a)&&((u=(15&l)<<12|(63&s)<<6|63&a)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(a=t[i+2],o=t[i+3],128==(192&(s=t[i+1]))&&128==(192&a)&&128==(192&o)&&((u=(15&l)<<18|(63&s)<<12|(63&a)<<6|63&o)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c;}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==Ac.Bytes)return t.push(this.readVarint(e));var r=Mc(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==Ac.Bytes)return t.push(this.readSVarint());var e=Mc(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==Ac.Bytes)return t.push(this.readBoolean());var e=Mc(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==Ac.Bytes)return t.push(this.readFloat());var e=Mc(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==Ac.Bytes)return t.push(this.readDouble());var e=Mc(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==Ac.Bytes)return t.push(this.readFixed32());var e=Mc(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==Ac.Bytes)return t.push(this.readSFixed32());var e=Mc(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==Ac.Bytes)return t.push(this.readFixed64());var e=Mc(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==Ac.Bytes)return t.push(this.readSFixed64());var e=Mc(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===Ac.Varint)for(;this.buf[this.pos++]>127;);else if(e===Ac.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Ac.Fixed32)this.pos+=4;else {if(e!==Ac.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e;}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),$c(this.buf,t,this.pos),this.pos+=4;},writeSFixed32:function(t){this.realloc(4),$c(this.buf,t,this.pos),this.pos+=4;},writeFixed64:function(t){this.realloc(8),$c(this.buf,-1&t,this.pos),$c(this.buf,Math.floor(t*Sc),this.pos+4),this.pos+=8;},writeSFixed64:function(t){this.realloc(8),$c(this.buf,-1&t,this.pos),$c(this.buf,Math.floor(t*Sc),this.pos+4),this.pos+=8;},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7);}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,s=0;s<e.length;s++){if((n=e.charCodeAt(s))>55295&&n<57344){if(!i){n>56319||s+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&zc(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),_c(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),_c(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r];},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var n=this.pos-r;n>=128&&zc(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,Ac.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Bc,e);},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Ec,e);},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Pc,e);},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Cc,e);},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Dc,e);},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Vc,e);},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Fc,e);},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Lc,e);},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Rc,e);},writeBytesField:function(t,e){this.writeTag(t,Ac.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,Ac.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,Ac.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,Ac.Fixed64),this.writeFixed64(e);},writeSFixed64Field:function(t,e){this.writeTag(t,Ac.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,Ac.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,Ac.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,Ac.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,Ac.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,Ac.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};class Zc{constructor(t,{pixelRatio:e,version:r,stretchX:n,stretchY:i,content:s}){this.paddedRect=t,this.pixelRatio=e,this.stretchX=n,this.stretchY=i,this.content=s,this.version=r;}get tl(){return [this.paddedRect.x+1,this.paddedRect.y+1]}get br(){return [this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]}get displaySize(){return [(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]}}class Xc{constructor(t,e){const r={},n={};this.haveRenderCallbacks=[];const i=[];this.addImages(t,r,i),this.addImages(e,n,i);const{w:s,h:a}=Gc(i),o=new Bl({width:s||1,height:a||1});for(const e in t){const n=t[e],i=r[e].paddedRect;Bl.copy(n.data,o,{x:0,y:0},{x:i.x+1,y:i.y+1},n.data);}for(const t in e){const r=e[t],i=n[t].paddedRect,s=i.x+1,a=i.y+1,l=r.data.width,u=r.data.height;Bl.copy(r.data,o,{x:0,y:0},{x:s,y:a},r.data),Bl.copy(r.data,o,{x:0,y:u-1},{x:s,y:a-1},{width:l,height:1}),Bl.copy(r.data,o,{x:0,y:0},{x:s,y:a+u},{width:l,height:1}),Bl.copy(r.data,o,{x:l-1,y:0},{x:s-1,y:a},{width:1,height:u}),Bl.copy(r.data,o,{x:0,y:0},{x:s+l,y:a},{width:1,height:u});}this.image=o,this.iconPositions=r,this.patternPositions=n;}addImages(t,e,r){for(const n in t){const i=t[n],s={x:0,y:0,w:i.data.width+2,h:i.data.height+2};r.push(s),e[n]=new Zc(s,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}}patchUpdatedImages(t,e){this.haveRenderCallbacks=this.haveRenderCallbacks.filter((e=>t.hasImage(e))),t.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const r in t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);}patchUpdatedImage(t,e,r){if(!t||!e)return;if(t.version===e.version)return;t.version=e.version;const[n,i]=t.tl;r.update(e.data,void 0,{x:n,y:i});}}ai(Zc,\"ImagePosition\"),ai(Xc,\"ImageAtlas\");const Kc={horizontal:1,vertical:2,horizontalOnly:3};class Yc{constructor(){this.scale=1,this.fontStack=\"\",this.imageName=null;}static forText(t,e){const r=new Yc;return r.scale=t||1,r.fontStack=e,r}static forImage(t){const e=new Yc;return e.imageName=t,e}}class Hc{constructor(){this.text=\"\",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;}static fromFeature(t,e){const r=new Hc;for(let n=0;n<t.sections.length;n++){const i=t.sections[n];i.image?r.addImageSection(i):r.addTextSection(i,e);}return r}length(){return this.text.length}getSection(t){return this.sections[this.sectionIndex[t]]}getSections(){return this.sections}getSectionIndex(t){return this.sectionIndex[t]}getCharCode(t){return this.text.charCodeAt(t)}verticalizePunctuation(t){this.text=function(t,e){let r=\"\";for(let n=0;n<t.length;n++){const i=t.charCodeAt(n+1)||null,s=t.charCodeAt(n-1)||null;r+=!e&&(i&&qi(i)&&!gc[t[n+1]]||s&&qi(s)&&!gc[t[n-1]])||!gc[t[n]]?t[n]:gc[t[n]];}return r}(this.text,t);}trim(){let t=0;for(let e=0;e<this.text.length&&Jc[this.text.charCodeAt(e)];e++)t++;let e=this.text.length;for(let r=this.text.length-1;r>=0&&r>=t&&Jc[this.text.charCodeAt(r)];r--)e--;this.text=this.text.substring(t,e),this.sectionIndex=this.sectionIndex.slice(t,e);}substring(t,e){const r=new Hc;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((t,e)=>Math.max(t,this.sections[e].scale)),0)}addTextSection(t,e){this.text+=t.text,this.sections.push(Yc.forText(t.scale,t.fontStack||e));const r=this.sections.length-1;for(let e=0;e<t.text.length;++e)this.sectionIndex.push(r);}addImageSection(t){const e=t.image?t.image.name:\"\";if(0===e.length)return void C(\"Can't add FormattedSection with an empty image.\");const r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(Yc.forImage(e)),this.sectionIndex.push(this.sections.length-1)):C(\"Reached maximum number of images 6401\");}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Wc(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y){const m=Hc.fromFeature(t,i);let g;h===Kc.vertical&&m.verticalizePunctuation(p);const{processBidirectionalText:x,processStyledBidirectionalText:v}=is;if(x&&1===m.sections.length){g=[];const t=x(m.toString(),sh(m,u,s,e,n,f,d));for(const e of t){const t=new Hc;t.text=e,t.sections=m.sections;for(let r=0;r<e.length;r++)t.sectionIndex.push(0);g.push(t);}}else if(v){g=[];const t=v(m.text,m.sectionIndex,sh(m,u,s,e,n,f,d));for(const e of t){const t=new Hc;t.text=e[0],t.sectionIndex=e[1],t.sections=m.sections,g.push(t);}}else g=function(t,e){const r=[],n=t.text;let i=0;for(const n of e)r.push(t.substring(i,n)),i=n;return i<n.length&&r.push(t.substring(i,n.length)),r}(m,sh(m,u,s,e,n,f,d));const b=[],_={positionedLines:b,text:m.toString(),top:c[1],bottom:c[1],left:c[0],right:c[0],writingMode:h,iconsInText:!1,verticalizable:!1,hasBaseline:!1};return function(t,e,r,n,i,s,a,o,l,u,c,h){let p=0,f=0,d=0;const y=\"right\"===o?1:\"left\"===o?0:.5;let m=!1;for(const t of i){const r=t.getSections();for(const t of r){if(t.imageName)continue;const r=e[t.fontStack];if(r&&(m=void 0!==r.ascender&&void 0!==r.descender,!m))break}if(!m)break}let g=0;for(const a of i){a.trim();const i=a.getMaxScale(),o=(i-1)*cc,v={positionedGlyphs:[],lineOffset:0};t.positionedLines[g]=v;const b=v.positionedGlyphs;let _=0;if(!a.length()){f+=s,++g;continue}let w=0,A=0;for(let s=0;s<a.length();s++){const o=a.getSection(s),d=a.getSectionIndex(s),y=a.getCharCode(s);let g=o.scale,v=null,k=null,S=null,I=cc,M=0;const T=!(l===Kc.horizontal||!c&&!Oi(y)||c&&(Jc[y]||(x=y,pi(x)||fi(x)||di(x)||Di(x)||Li(x))));if(o.imageName){const e=n[o.imageName];if(!e)continue;S=o.imageName,t.iconsInText=t.iconsInText||!0,k=e.paddedRect;const r=e.displaySize;g=g*cc/h,v={width:r[0],height:r[1],left:1,top:-3,advance:T?r[1]:r[0],localGlyph:!1},M=m?-v.height*g:i*cc-17-r[1]*g,I=v.advance;const s=(T?r[0]:r[1])*g-cc*i;s>0&&s>_&&(_=s);}else {const t=r[o.fontStack];if(!t)continue;t[y]&&(k=t[y]);const n=e[o.fontStack];if(!n)continue;const s=n.glyphs[y];if(!s)continue;if(v=s.metrics,I=8203!==y?cc:0,m){const t=void 0!==n.ascender?Math.abs(n.ascender):0,e=void 0!==n.descender?Math.abs(n.descender):0,r=(t+e)*g;w<r&&(w=r,A=(t-e)/2*g),M=-t*g;}else M=(i-g)*cc-17;}T?(t.verticalizable=!0,b.push({glyph:y,imageName:S,x:p,y:f+M,vertical:T,scale:g,localGlyph:v.localGlyph,fontStack:o.fontStack,sectionIndex:d,metrics:v,rect:k}),p+=I*g+u):(b.push({glyph:y,imageName:S,x:p,y:f+M,vertical:T,scale:g,localGlyph:v.localGlyph,fontStack:o.fontStack,sectionIndex:d,metrics:v,rect:k}),p+=v.advance*g+u);}0!==b.length&&(d=Math.max(p-u,d),m?oh(b,y,_,A,s*i/2):oh(b,y,_,0,s/2)),p=0;const k=s*i+_;v.lineOffset=Math.max(_,o),f+=k,++g;}var x;const v=f,{horizontalAlign:b,verticalAlign:_}=ah(a);(function(t,e,r,n,i,s){const a=(e-r)*i,o=-s*n;for(const e of t)for(const t of e.positionedGlyphs)t.x+=a,t.y+=o;})(t.positionedLines,y,b,_,d,v),t.top+=-_*v,t.bottom=t.top+v,t.left+=-b*d,t.right=t.left+d,t.hasBaseline=m;}(_,e,r,n,g,a,o,l,h,u,p,y),!function(t){for(const e of t)if(0!==e.positionedGlyphs.length)return !1;return !0}(b)&&_}const Jc={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Qc={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function th(t,e,r,n,i,s){if(e.imageName){const t=n[e.imageName];return t?t.displaySize[0]*e.scale*cc/s+i:0}{const n=r[e.fontStack],s=n&&n.glyphs[t];return s?s.metrics.advance*e.scale+i:0}}function eh(t,e,r,n){const i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function rh(t,e,r){let n=0;return 10===t&&(n-=1e4),r&&(n+=150),40!==t&&65288!==t||(n+=50),41!==e&&65289!==e||(n+=50),n}function nh(t,e,r,n,i,s){let a=null,o=eh(e,r,i,s);for(const t of n){const n=eh(e-t.x,r,i,s)+t.badness;n<=o&&(a=t,o=n);}return {index:t,x:e,priorBreak:a,badness:o}}function ih(t){return t?ih(t.priorBreak).concat(t.index):[]}function sh(t,e,r,n,i,s,a){if(\"point\"!==s)return [];if(!t)return [];const o=[],l=function(t,e,r,n,i,s){let a=0;for(let r=0;r<t.length();r++){const o=t.getSection(r);a+=th(t.getCharCode(r),o,n,i,e,s);}return a/Math.max(1,Math.ceil(a/r))}(t,e,r,n,i,a),u=t.text.indexOf(\"​\")>=0;let c=0;for(let r=0;r<t.length();r++){const s=t.getSection(r),p=t.getCharCode(r);if(Jc[p]||(c+=th(p,s,n,i,e,a)),r<t.length()-1){const e=!((h=p)<11904||!(wi(h)||_i(h)||Vi(h)||Ci(h)||Ii(h)||yi(h)||Ai(h)||xi(h)||Mi(h)||Ti(h)||Si(h)||Ri(h)||vi(h)||gi(h)||mi(h)||ki(h)||bi(h)||Pi(h)||Bi(h)||zi(h)));(Qc[p]||e||s.imageName)&&o.push(nh(r+1,c,l,o,rh(p,t.getCharCode(r+1),e&&u),!1));}}var h;return ih(nh(t.length(),c,l,o,0,!0))}function ah(t){let e=.5,r=.5;switch(t){case\"right\":case\"top-right\":case\"bottom-right\":e=1;break;case\"left\":case\"top-left\":case\"bottom-left\":e=0;}switch(t){case\"bottom\":case\"bottom-right\":case\"bottom-left\":r=1;break;case\"top\":case\"top-right\":case\"top-left\":r=0;}return {horizontalAlign:e,verticalAlign:r}}function oh(t,e,r,n,i){if(!(e||r||n||i))return;const s=t.length-1,a=t[s],o=(a.x+a.metrics.advance*a.scale)*e;for(let e=0;e<=s;e++)t[e].x-=o,t[e].y+=r+n+i;}function lh(t,e,r){const{horizontalAlign:n,verticalAlign:i}=ah(r),s=e[0]-t.displaySize[0]*n,a=e[1]-t.displaySize[1]*i;return {image:t,top:a,bottom:a+t.displaySize[1],left:s,right:s+t.displaySize[0]}}function uh(t,e,r,n,i,s){const a=t.image;let o;if(a.content){const t=a.content,e=a.pixelRatio||1;o=[t[0]/e,t[1]/e,a.displaySize[0]-t[2]/e,a.displaySize[1]-t[3]/e];}const l=e.left*s,u=e.right*s;let c,h,p,f;\"width\"===r||\"both\"===r?(f=i[0]+l-n[3],h=i[0]+u+n[1]):(f=i[0]+(l+u-a.displaySize[0])/2,h=f+a.displaySize[0]);const d=e.top*s,y=e.bottom*s;return \"height\"===r||\"both\"===r?(c=i[1]+d-n[0],p=i[1]+y+n[2]):(c=i[1]+(d+y-a.displaySize[1])/2,p=c+a.displaySize[1]),{image:a,top:c,right:h,bottom:p,left:f,collisionPadding:o}}class ch extends i{constructor(t,e,r,n,i){super(t,e),this.angle=n,this.z=r,void 0!==i&&(this.segment=i);}clone(){return new ch(this.x,this.y,this.z,this.angle,this.segment)}}function hh(t,e,r,n,i){if(void 0===e.segment)return !0;let s=e,a=e.segment+1,o=0;for(;o>-r/2;){if(a--,a<0)return !1;o-=t[a].dist(s),s=t[a];}o+=t[a].dist(t[a+1]),a++;const l=[];let u=0;for(;o<r/2;){const e=t[a],r=t[a+1];if(!r)return !1;let s=t[a-1].angleTo(e)-e.angleTo(r);for(s=Math.abs((s+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:o,angleDelta:s}),u+=s;o-l[0].distance>n;)u-=l.shift().angleDelta;if(u>i)return !1;a++,o+=e.dist(r);}return !0}function ph(t){let e=0;for(let r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function fh(t,e,r){return t?.6*e*r:0}function dh(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function yh(t,e,r,n,i,s){const a=fh(r,i,s),o=dh(r,n)*s;let l=0;const u=ph(t)/2;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1],s=n.dist(i);if(l+s>u){const c=(u-l)/s,h=rr(n.x,i.x,c),p=rr(n.y,i.y,c),f=new ch(h,p,0,i.angleTo(n),r);return !a||hh(t,f,o,a,e)?f:void 0}l+=s;}}function mh(t,e,r,n,i,s,a,o,l){const u=fh(n,s,a),c=dh(n,i),h=c*a,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h<e/4&&(e=h+e/4),gh(t,p?e/2*o%e:(c/2+2*s)*a*o%e,e,u,r,h,p,!1,l)}function gh(t,e,r,n,i,s,a,o,l){const u=s/2,c=ph(t);let h=0,p=e-r,f=[];for(let e=0;e<t.length-1;e++){const a=t[e],o=t[e+1],d=a.dist(o),y=o.angleTo(a);for(;p+r<h+d;){p+=r;const m=(p-h)/d,g=rr(a.x,o.x,m),x=rr(a.y,o.y,m);if(g>=0&&g<l&&x>=0&&x<l&&p-u>=0&&p+u<=c){const r=new ch(g,x,0,y,e);r._round(),n&&!hh(t,r,s,n,i)||f.push(r);}}h+=d;}return o||f.length||a||(f=gh(t,h/2,r,n,i,s,a,!0,l)),f}function xh(t,e,r,n,s){const a=[];for(let o=0;o<t.length;o++){const l=t[o];let u;for(let t=0;t<l.length-1;t++){let o=l[t],c=l[t+1];o.x<e&&c.x<e||(o.x<e?o=new i(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x<e&&(c=new i(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y<r&&c.y<r||(o.y<r?o=new i(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round():c.y<r&&(c=new i(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round()),o.x>=n&&c.x>=n||(o.x>=n?o=new i(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x>=n&&(c=new i(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y>=s&&c.y>=s||(o.y>=s?o=new i(o.x+(s-o.y)/(c.y-o.y)*(c.x-o.x),s)._round():c.y>=s&&(c=new i(o.x+(s-o.y)/(c.y-o.y)*(c.x-o.x),s)._round()),u&&o.equals(u[u.length-1])||(u=[o],a.push(u)),u.push(c)))));}}return a}ai(ch,\"Anchor\");const vh=1e20;function bh(t,e,r,n,i,s,a,o,l){for(let u=e;u<e+n;u++)_h(t,r*s+u,s,i,a,o,l);for(let u=r;u<r+i;u++)_h(t,u*s+e,1,n,a,o,l);}function _h(t,e,r,n,i,s,a){s[0]=0,a[0]=-vh,a[1]=vh,i[0]=t[e];for(let o=1,l=0,u=0;o<n;o++){i[o]=t[e+o*r];const n=o*o;do{const t=s[l];u=(i[o]-i[t]+n-t*t)/(o-t)/2;}while(u<=a[l]&&--l>-1);l++,s[l]=o,a[l]=u,a[l+1]=vh;}for(let o=0,l=0;o<n;o++){for(;a[l+1]<o;)l++;const n=s[l],u=o-n;t[e+o*r]=i[n]+u*u;}}const wh={none:0,ideographs:1,all:2};class Ah{constructor(t,e,r){this.requestManager=t,this.localGlyphMode=e,this.localFontFamily=r,this.entries={},this.localGlyphs={200:{},400:{},500:{},900:{}};}setURL(t){this.url=t;}getGlyphs(t,e){const r=[];for(const e in t)for(const n of t[e])r.push({stack:e,id:n});x(r,(({stack:t,id:e},r)=>{let n=this.entries[t];n||(n=this.entries[t]={glyphs:{},requests:{},ranges:{},ascender:void 0,descender:void 0});let i=n.glyphs[e];if(void 0!==i)return void r(null,{stack:t,id:e,glyph:i});if(i=this._tinySDF(n,t,e),i)return n.glyphs[e]=i,void r(null,{stack:t,id:e,glyph:i});const s=Math.floor(e/256);if(256*s>65535)return void r(new Error(\"glyphs > 65535 not supported\"));if(n.ranges[s])return void r(null,{stack:t,id:e,glyph:i});let a=n.requests[s];a||(a=n.requests[s]=[],Ah.loadGlyphRange(t,s,this.url,this.requestManager,((t,e)=>{if(e){n.ascender=e.ascender,n.descender=e.descender;for(const t in e.glyphs)this._doesCharSupportLocalGlyph(+t)||(n.glyphs[+t]=e.glyphs[+t]);n.ranges[s]=!0;}for(const r of a)r(t,e);delete n.requests[s];}))),a.push(((n,i)=>{n?r(n):i&&r(null,{stack:t,id:e,glyph:i.glyphs[e]||null});}));}),((t,r)=>{if(t)e(t);else if(r){const t={};for(const{stack:e,id:n,glyph:i}of r)void 0===t[e]&&(t[e]={}),void 0===t[e].glyphs&&(t[e].glyphs={}),t[e].glyphs[n]=i&&{id:i.id,bitmap:i.bitmap.clone(),metrics:i.metrics},t[e].ascender=this.entries[e].ascender,t[e].descender=this.entries[e].descender;e(null,t);}}));}_doesCharSupportLocalGlyph(t){return this.localGlyphMode!==wh.none&&(this.localGlyphMode===wh.all?!!this.localFontFamily:!!this.localFontFamily&&(Ti(t)||Ei(t)||vi(t)||bi(t)||xi(t)))}_tinySDF(t,e,r){const n=this.localFontFamily;if(!n||!this._doesCharSupportLocalGlyph(r))return;let i=t.tinySDF;if(!i){let r=\"400\";/bold/i.test(e)?r=\"900\":/medium/i.test(e)?r=\"500\":/light/i.test(e)&&(r=\"200\"),i=t.tinySDF=new Ah.TinySDF({fontFamily:n,fontWeight:r,fontSize:48,buffer:6,radius:16}),i.fontWeight=r;}if(this.localGlyphs[i.fontWeight][r])return this.localGlyphs[i.fontWeight][r];const s=String.fromCharCode(r),{data:a,width:o,height:l,glyphWidth:u,glyphHeight:c,glyphLeft:h,glyphTop:p,glyphAdvance:f}=i.draw(s);return this.localGlyphs[i.fontWeight][r]={id:r,bitmap:new zl({width:o,height:l},a),metrics:{width:u/2,height:c/2,left:h/2,top:p/2-27,advance:f/2,localGlyph:!0}}}}function kh(t,e,r,n){const s=[],a=t.image,o=a.pixelRatio,l=a.paddedRect.w-2,u=a.paddedRect.h-2,c=t.right-t.left,h=t.bottom-t.top,p=a.stretchX||[[0,l]],f=a.stretchY||[[0,u]],d=(t,e)=>t+e[1]-e[0],y=p.reduce(d,0),m=f.reduce(d,0),g=l-y,x=u-m;let v=0,b=y,_=0,w=m,A=0,k=g,S=0,I=x;if(a.content&&n){const t=a.content;v=Sh(p,0,t[0]),_=Sh(f,0,t[1]),b=Sh(p,t[0],t[2]),w=Sh(f,t[1],t[3]),A=t[0]-v,S=t[1]-_,k=t[2]-t[0]-b,I=t[3]-t[1]-w;}const M=(n,s,l,u)=>{const p=Mh(n.stretch-v,b,c,t.left),f=Th(n.fixed-A,k,n.stretch,y),d=Mh(s.stretch-_,w,h,t.top),g=Th(s.fixed-S,I,s.stretch,m),x=Mh(l.stretch-v,b,c,t.left),M=Th(l.fixed-A,k,l.stretch,y),T=Mh(u.stretch-_,w,h,t.top),z=Th(u.fixed-S,I,u.stretch,m),B=new i(p,d),E=new i(x,d),C=new i(x,T),D=new i(p,T),P=new i(f/o,g/o),V=new i(M/o,z/o),F=e*Math.PI/180;if(F){const t=Math.sin(F),e=Math.cos(F),r=[e,-t,t,e];B._matMult(r),E._matMult(r),D._matMult(r),C._matMult(r);}const L=n.stretch+n.fixed,R=s.stretch+s.fixed;return {tl:B,tr:E,bl:D,br:C,tex:{x:a.paddedRect.x+1+L,y:a.paddedRect.y+1+R,w:l.stretch+l.fixed-L,h:u.stretch+u.fixed-R},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:P,pixelOffsetBR:V,minFontScaleX:k/o/c,minFontScaleY:I/o/h,isSDF:r}};if(n&&(a.stretchX||a.stretchY)){const t=Ih(p,g,y),e=Ih(f,x,m);for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)s.push(M(n,e[t],i,e[t+1]));}}else s.push(M({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:l+1},{fixed:0,stretch:u+1}));return s}function Sh(t,e,r){let n=0;for(const i of t)n+=Math.max(e,Math.min(r,i[1]))-Math.max(e,Math.min(r,i[0]));return n}function Ih(t,e,r){const n=[{fixed:-1,stretch:0}];for(const[e,r]of t){const t=n[n.length-1];n.push({fixed:e-t.stretch,stretch:t.stretch}),n.push({fixed:e-t.stretch,stretch:t.stretch+(r-e)});}return n.push({fixed:e+1,stretch:r}),n}function Mh(t,e,r,n){return t/e*r+n}function Th(t,e,r,n){return t-e*r/n}function zh(t,e,r,n){const i=e+t.positionedLines[n].lineOffset;return 0===n?r+i/2:r+(i+(e+t.positionedLines[n-1].lineOffset))/2}Ah.loadGlyphRange=function(t,e,r,n,i){const s=256*e,a=s+255,o=n.transformRequest(n.normalizeGlyphsURL(r).replace(\"{fontstack}\",t).replace(\"{range}\",`${s}-${a}`),At.Glyphs);Mt(o,((t,e)=>{if(t)i(t);else if(e){const t={},r=function(t){return new wc(t).readFields(Oc,{})}(e);for(const e of r.glyphs)t[e.id]=e;i(null,{glyphs:t,ascender:r.ascender,descender:r.descender});}}));},Ah.TinySDF=class{constructor({fontSize:t=24,buffer:e=3,radius:r=8,cutoff:n=.25,fontFamily:i=\"sans-serif\",fontWeight:s=\"normal\",fontStyle:a=\"normal\"}){this.buffer=e,this.cutoff=n,this.radius=r;const o=this.size=t+4*e,l=this._createCanvas(o),u=this.ctx=l.getContext(\"2d\",{willReadFrequently:!0});u.font=`${a} ${s} ${t}px ${i}`,u.textBaseline=\"alphabetic\",u.textAlign=\"left\",u.fillStyle=\"black\",this.gridOuter=new Float64Array(o*o),this.gridInner=new Float64Array(o*o),this.f=new Float64Array(o),this.z=new Float64Array(o+1),this.v=new Uint16Array(o);}_createCanvas(t){const e=document.createElement(\"canvas\");return e.width=e.height=t,e}draw(t){const{width:e,actualBoundingBoxAscent:r,actualBoundingBoxDescent:n,actualBoundingBoxLeft:i,actualBoundingBoxRight:s}=this.ctx.measureText(t),a=Math.floor(r),o=Math.min(this.size-this.buffer,Math.ceil(s-i)),l=Math.min(this.size-this.buffer,Math.ceil(r)+Math.ceil(n)),u=o+2*this.buffer,c=l+2*this.buffer,h=u*c,p=new Uint8ClampedArray(h),f={data:p,width:u,height:c,glyphWidth:o,glyphHeight:l,glyphTop:a,glyphLeft:0,glyphAdvance:e};if(0===o||0===l)return f;const{ctx:d,buffer:y,gridInner:m,gridOuter:g}=this;d.clearRect(y,y,o,l),d.fillText(t,y,y+a+1);const x=d.getImageData(y,y,o,l);g.fill(vh,0,h),m.fill(0,0,h);for(let t=0;t<l;t++)for(let e=0;e<o;e++){const r=x.data[4*(t*o+e)+3]/255;if(0===r)continue;const n=(t+y)*u+e+y;if(1===r)g[n]=0,m[n]=vh;else {const t=.5-r;g[n]=t>0?t*t:0,m[n]=t<0?t*t:0;}}bh(g,0,0,u,c,u,this.f,this.v,this.z),bh(m,y,y,o,l,u,this.f,this.v,this.z);for(let t=0;t<h;t++){const e=Math.sqrt(g[t])-Math.sqrt(m[t]);p[t]=Math.round(255-255*(e/this.radius+this.cutoff));}return f}};class Bh{constructor(t=[],e=Eh){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this.length++,this._up(this.length-1);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(r(n,s)>=0)break;e[t]=s,t=i;}e[t]=n;}_down(t){const{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t<n;){let n=1+(t<<1),s=e[n];const a=n+1;if(a<this.length&&r(e[a],s)<0&&(n=a,s=e[a]),r(s,i)>=0)break;e[t]=s,t=n;}e[t]=i;}}function Eh(t,e){return t<e?-1:t>e?1:0}function Ch(t,e=1,r=!1){let n=1/0,s=1/0,a=-1/0,o=-1/0;const l=t[0];for(let t=0;t<l.length;t++){const e=l[t];(!t||e.x<n)&&(n=e.x),(!t||e.y<s)&&(s=e.y),(!t||e.x>a)&&(a=e.x),(!t||e.y>o)&&(o=e.y);}const u=Math.min(a-n,o-s);let c=u/2;const h=new Bh([],Dh);if(0===u)return new i(n,s);for(let e=n;e<a;e+=u)for(let r=s;r<o;r+=u)h.push(new Ph(e+c,r+c,c,t));let p=function(t){let e=0,r=0,n=0;const i=t[0];for(let t=0,s=i.length,a=s-1;t<s;a=t++){const s=i[t],o=i[a],l=s.x*o.y-o.x*s.y;r+=(s.x+o.x)*l,n+=(s.y+o.y)*l,e+=3*l;}return new Ph(r/e,n/e,0,t)}(t),f=h.length;for(;h.length;){const n=h.pop();(n.d>p.d||!p.d)&&(p=n,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*n.d)/1e4,f)),n.max-p.d<=e||(c=n.h/2,h.push(new Ph(n.p.x-c,n.p.y-c,c,t)),h.push(new Ph(n.p.x+c,n.p.y-c,c,t)),h.push(new Ph(n.p.x-c,n.p.y+c,c,t)),h.push(new Ph(n.p.x+c,n.p.y+c,c,t)),f+=4);}return r&&(console.log(`num probes: ${f}`),console.log(`best distance: ${p.d}`)),p.p}function Dh(t,e){return e.max-t.max}function Ph(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){let r=!1,n=1/0;for(let i=0;i<e.length;i++){const s=e[i];for(let e=0,i=s.length,a=i-1;e<i;a=e++){const i=s[e],o=s[a];i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(r=!r),n=Math.min(n,Mo(t,i,o));}}return (r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2;}const Vh=Number.POSITIVE_INFINITY,Fh=Math.sqrt(2);function Lh(t,e){return e[1]!==Vh?function(t,e,r){let n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r;}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){let r=0,n=0;e<0&&(e=0);const i=e/Fh;switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7;}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e;}return [r,n]}(t,e[0])}function Rh(t,e,r,n,i,s,a,o,l,u){t.createArrays(),t.tilePixelRatio=Ya/(512*t.overscaling),t.compareText={},t.iconsNeedLinear=!1;const c=t.layers[0].layout,h=t.layers[0]._unevaluatedLayout._values,p={};if(\"composite\"===t.textSizeData.kind){const{minZoom:e,maxZoom:r}=t.textSizeData;p.compositeTextSizes=[h[\"text-size\"].possiblyEvaluate(new ss(e),o),h[\"text-size\"].possiblyEvaluate(new ss(r),o)];}if(\"composite\"===t.iconSizeData.kind){const{minZoom:e,maxZoom:r}=t.iconSizeData;p.compositeIconSizes=[h[\"icon-size\"].possiblyEvaluate(new ss(e),o),h[\"icon-size\"].possiblyEvaluate(new ss(r),o)];}p.layoutTextSize=h[\"text-size\"].possiblyEvaluate(new ss(l+1),o),p.layoutIconSize=h[\"icon-size\"].possiblyEvaluate(new ss(l+1),o),p.textMaxSize=h[\"text-size\"].possiblyEvaluate(new ss(18),o);const f=\"map\"===c.get(\"text-rotation-alignment\")&&\"point\"!==c.get(\"symbol-placement\"),d=c.get(\"text-size\");for(const s of t.features){const l=c.get(\"text-font\").evaluate(s,{},o).join(\",\"),h=d.evaluate(s,{},o),y=p.layoutTextSize.evaluate(s,{},o),m=(p.layoutIconSize.evaluate(s,{},o),{horizontal:{},vertical:void 0}),g=s.text;let x,v=[0,0];if(g){const n=g.toString(),a=c.get(\"text-letter-spacing\").evaluate(s,{},o)*cc,u=c.get(\"text-line-height\").evaluate(s,{},o)*cc,p=$i(n)?a:0,d=c.get(\"text-anchor\").evaluate(s,{},o),x=c.get(\"text-variable-anchor\");if(!x){const t=c.get(\"text-radial-offset\").evaluate(s,{},o);v=t?Lh(d,[t*cc,Vh]):c.get(\"text-offset\").evaluate(s,{},o).map((t=>t*cc));}let b=f?\"center\":c.get(\"text-justify\").evaluate(s,{},o);const _=c.get(\"symbol-placement\"),w=\"point\"===_,A=\"point\"===_?c.get(\"text-max-width\").evaluate(s,{},o)*cc:0,k=s=>{t.allowVerticalPlacement&&Ui(n)&&(m.vertical=Wc(g,e,r,i,l,A,u,d,s,p,v,Kc.vertical,!0,_,y,h));};if(!f&&x){const t=\"auto\"===b?x.map((t=>Uh(t))):[b];let n=!1;for(let s=0;s<t.length;s++){const a=t[s];if(!m.horizontal[a])if(n)m.horizontal[a]=m.horizontal[0];else {const t=Wc(g,e,r,i,l,A,u,\"center\",a,p,v,Kc.horizontal,!1,_,y,h);t&&(m.horizontal[a]=t,n=1===t.positionedLines.length);}}k(\"left\");}else {if(\"auto\"===b&&(b=Uh(d)),w||c.get(\"text-writing-mode\").indexOf(\"horizontal\")>=0||!Ui(n)){const t=Wc(g,e,r,i,l,A,u,d,b,p,v,Kc.horizontal,!1,_,y,h);t&&(m.horizontal[b]=t);}k(\"point\"===_?\"left\":b);}}let b=!1;if(s.icon&&s.icon.name){const e=n[s.icon.name];e&&(x=lh(i[s.icon.name],c.get(\"icon-offset\").evaluate(s,{},o),c.get(\"icon-anchor\").evaluate(s,{},o)),b=e.sdf,void 0===t.sdfIcons?t.sdfIcons=e.sdf:t.sdfIcons!==e.sdf&&C(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),(e.pixelRatio!==t.pixelRatio||0!==c.get(\"icon-rotate\").constantOr(1))&&(t.iconsNeedLinear=!0));}const _=qh(m.horizontal)||m.vertical;t.iconsInText||(t.iconsInText=!!_&&_.iconsInText),(_||x)&&$h(t,s,m,x,n,p,y,0,v,b,a,o,u);}s&&t.generateCollisionDebugBuffers(l,t.collisionBoxArray);}function Uh(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return \"right\";case\"left\":case\"top-left\":case\"bottom-left\":return \"left\"}return \"center\"}function $h(t,e,r,n,i,s,a,o,l,c,h,p,f){let d=s.textMaxSize.evaluate(e,{},p);void 0===d&&(d=a);const y=t.layers[0].layout,m=y.get(\"icon-offset\").evaluate(e,{},p),g=qh(r.horizontal)||r.vertical,x=a/24,v=t.tilePixelRatio*d/24,b=(T=t.overscaling,t.zoom>18&&T>2&&(T>>=1),Math.max(Ya/(512*T),1)*y.get(\"symbol-spacing\")),_=y.get(\"text-padding\")*t.tilePixelRatio,w=y.get(\"icon-padding\")*t.tilePixelRatio,A=u(y.get(\"text-max-angle\")),k=\"map\"===y.get(\"text-rotation-alignment\")&&\"point\"!==y.get(\"symbol-placement\"),S=\"map\"===y.get(\"icon-rotation-alignment\")&&\"point\"!==y.get(\"symbol-placement\"),I=y.get(\"symbol-placement\"),M=b/2;var T;const z=y.get(\"icon-text-fit\");let B;n&&\"none\"!==z&&(t.allowVerticalPlacement&&r.vertical&&(B=uh(n,r.vertical,z,y.get(\"icon-text-fit-padding\"),m,x)),g&&(n=uh(n,g,z,y.get(\"icon-text-fit-padding\"),m,x)));const E=(a,o,u)=>{if(o.x<0||o.x>=Ya||o.y<0||o.y>=Ya)return;const{x:d,y:y,z:g}=f.projectTilePoint(o.x,o.y,u),x=new ch(d,y,g,0,void 0);!function(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_,w,A,k){const S=t.addToLineVertexArray(e,n);let I,M,T,z,B,E,D,P=0,V=0,F=0,L=0,R=-1,U=-1;const $={};let j=xa(\"\"),O=0,q=0;if(void 0===l._unevaluatedLayout.getValue(\"text-radial-offset\")?[O,q]=l.layout.get(\"text-offset\").evaluate(b,{},k).map((t=>t*cc)):(O=l.layout.get(\"text-radial-offset\").evaluate(b,{},k)*cc,q=Vh),t.allowVerticalPlacement&&i.vertical){const t=i.vertical;if(d)E=Gh(t),o&&(D=Gh(o));else {const n=l.layout.get(\"text-rotate\").evaluate(b,{},k)+90;T=Nh(u,r,e,c,h,p,t,f,n,y),o&&(z=Nh(u,r,e,c,h,p,o,g,n));}}if(s){const n=l.layout.get(\"icon-rotate\").evaluate(b,{},k),i=\"none\"!==l.layout.get(\"icon-text-fit\"),a=kh(s,n,w,i),f=o?kh(o,n,w,i):void 0;M=Nh(u,r,e,c,h,p,s,g,n),P=4*a.length;const d=t.iconSizeData;let y=null;\"source\"===d.kind?(y=[hc*l.layout.get(\"icon-size\").evaluate(b,{},k)],y[0]>jh&&C(`${t.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)):\"composite\"===d.kind&&(y=[hc*_.compositeIconSizes[0].evaluate(b,{},k),hc*_.compositeIconSizes[1].evaluate(b,{},k)],(y[0]>jh||y[1]>jh)&&C(`${t.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)),t.addSymbols(t.icon,a,y,v,x,b,!1,r,e,S.lineStartIndex,S.lineLength,-1,A,k),R=t.icon.placedSymbolArray.length-1,f&&(V=4*f.length,t.addSymbols(t.icon,f,y,v,x,b,Kc.vertical,r,e,S.lineStartIndex,S.lineLength,-1,A,k),U=t.icon.placedSymbolArray.length-1);}for(const n in i.horizontal){const s=i.horizontal[n];I||(j=xa(s.text),d?B=Gh(s):I=Nh(u,r,e,c,h,p,s,f,l.layout.get(\"text-rotate\").evaluate(b,{},k),y));const o=1===s.positionedLines.length;if(F+=Oh(t,r,e,s,a,l,d,b,y,S,i.vertical?Kc.horizontal:Kc.horizontalOnly,o?Object.keys(i.horizontal):[n],$,R,_,A,k),o)break}i.vertical&&(L+=Oh(t,r,e,i.vertical,a,l,d,b,y,S,Kc.vertical,[\"vertical\"],$,U,_,A,k));let N=-1;const G=(t,e)=>t?Math.max(t,e):e;N=G(B,N),N=G(E,N),N=G(D,N);const Z=N>-1?1:0;t.glyphOffsetArray.length>=tp.MAX_GLYPHS&&C(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey),t.symbolInstances.emplaceBack(r.x,r.y,r.z,e.x,e.y,$.right>=0?$.right:-1,$.center>=0?$.center:-1,$.left>=0?$.left:-1,$.vertical>=0?$.vertical:-1,R,U,j,void 0!==I?I:t.collisionBoxArray.length,void 0!==I?I+1:t.collisionBoxArray.length,void 0!==T?T:t.collisionBoxArray.length,void 0!==T?T+1:t.collisionBoxArray.length,void 0!==M?M:t.collisionBoxArray.length,void 0!==M?M+1:t.collisionBoxArray.length,z||t.collisionBoxArray.length,z?z+1:t.collisionBoxArray.length,c,F,L,P,V,Z,0,O,q,N);}(t,o,x,a,r,n,i,B,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,_,k,l,0,w,S,m,e,s,c,h,p);};if(\"line\"===I)for(const i of xh(e.geometry,0,0,Ya,Ya)){const e=mh(i,b,A,r.vertical||g,n,24,v,t.overscaling,Ya);for(const r of e){const e=g;e&&Zh(t,e.text,M,r)||E(i,r,p);}}else if(\"line-center\"===I){for(const t of e.geometry)if(t.length>1){const e=yh(t,A,r.vertical||g,n,24,v);e&&E(t,e,p);}}else if(\"Polygon\"===e.type)for(const t of du(e.geometry,0)){const e=Ch(t,16);E(t[0],new ch(e.x,e.y,0,0,void 0),p);}else if(\"LineString\"===e.type)for(const t of e.geometry)E(t,new ch(t[0].x,t[0].y,0,0,void 0),p);else if(\"Point\"===e.type)for(const t of e.geometry)for(const e of t)E([e],new ch(e.x,e.y,0,0,void 0),p);}const jh=32640;function Oh(t,e,r,n,s,a,o,l,u,c,h,p,f,d,y,m,g){const x=function(t,e,r,n,s,a,o,l){const u=[];if(0===e.positionedLines.length)return u;const c=n.layout.get(\"text-rotate\").evaluate(a,{})*Math.PI/180,h=function(t){const e=t[0],r=t[1],n=e*r;return n>0?[e,-r]:n<0?[-e,r]:0===e?[r,e]:[r,-e]}(r);let p=Math.abs(e.top-e.bottom);for(const t of e.positionedLines)p-=t.lineOffset;const f=e.positionedLines.length,d=p/f;let y=e.top-r[1];for(let t=0;t<f;++t){const n=e.positionedLines[t];y=zh(e,d,y,t);for(const t of n.positionedGlyphs){if(!t.rect)continue;const n=t.rect||{};let a=4,p=!0,f=1,d=0;if(t.imageName){const e=o[t.imageName];if(!e)continue;if(e.sdf){C(\"SDF images are not supported in formatted text and will be ignored.\");continue}p=!1,f=e.pixelRatio,a=1/f;}const m=(s||l)&&t.vertical,g=t.metrics.advance*t.scale/2,x=t.metrics,v=t.rect;if(null===v)continue;l&&e.verticalizable&&(d=t.imageName?g-t.metrics.width*t.scale/2:0);const b=s?[t.x+g,t.y]:[0,0];let _=[0,0],w=[0,0],A=!1;s||(m?(w=[t.x+g+h[0],t.y+h[1]-d],A=!0):_=[t.x+g+r[0],t.y+r[1]-d]);const k=v.w*t.scale/(f*(t.localGlyph?2:1)),S=v.h*t.scale/(f*(t.localGlyph?2:1));let I,M,T,z;if(m){const e=t.y-y,r=new i(-g,g-e),n=-Math.PI/2,s=new i(...w);I=new i(-g+_[0],_[1]),I._rotateAround(n,r)._add(s),I.x+=-e+g,I.y-=(x.left-a)*t.scale;const o=t.imageName?x.advance*t.scale:cc*t.scale,l=String.fromCharCode(t.glyph);xc(l)?I.x+=(1-a)*t.scale:vc(l)?I.x+=o-x.height*t.scale+(-a-1)*t.scale:I.x+=t.imageName||x.width+2*a===v.w&&x.height+2*a===v.h?(o-S)/2:(o-(x.height+2*a)*t.scale)/2,M=new i(I.x,I.y-k),T=new i(I.x+S,I.y),z=new i(I.x+S,I.y-k);}else {const e=(x.left-a)*t.scale-g+_[0],r=(-x.top-a)*t.scale+_[1],n=e+k,s=r+S;I=new i(e,r),M=new i(n,r),T=new i(e,s),z=new i(n,s);}if(c){let t;t=s?new i(0,0):A?new i(h[0],h[1]):new i(r[0],r[1]),I._rotateAround(c,t),M._rotateAround(c,t),T._rotateAround(c,t),z._rotateAround(c,t);}const B=new i(0,0),E=new i(0,0);u.push({tl:I,tr:M,bl:T,br:z,tex:n,writingMode:e.writingMode,glyphOffset:b,sectionIndex:t.sectionIndex,isSDF:p,pixelOffsetTL:B,pixelOffsetBR:E,minFontScaleX:0,minFontScaleY:0});}}return u}(0,n,u,a,o,l,s,t.allowVerticalPlacement),v=t.textSizeData;let b=null;\"source\"===v.kind?(b=[hc*a.layout.get(\"text-size\").evaluate(l,{},g)],b[0]>jh&&C(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)):\"composite\"===v.kind&&(b=[hc*y.compositeTextSizes[0].evaluate(l,{},g),hc*y.compositeTextSizes[1].evaluate(l,{},g)],(b[0]>jh||b[1]>jh)&&C(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)),t.addSymbols(t.text,x,b,u,o,l,h,e,r,c.lineStartIndex,c.lineLength,d,m,g);for(const e of p)f[e]=t.text.placedSymbolArray.length-1;return 4*x.length}function qh(t){for(const e in t)return t[e];return null}function Nh(t,e,r,n,s,a,o,l,c,h){let p=o.top,f=o.bottom,d=o.left,y=o.right;const m=o.collisionPadding;if(m&&(d-=m[0],p-=m[1],y+=m[2],f+=m[3]),c){const t=new i(d,p),e=new i(y,p),r=new i(d,f),n=new i(y,f),s=u(c);let a=new i(0,0);h&&(a=new i(h[0],h[1])),t._rotateAround(s,a),e._rotateAround(s,a),r._rotateAround(s,a),n._rotateAround(s,a),d=Math.min(t.x,e.x,r.x,n.x),y=Math.max(t.x,e.x,r.x,n.x),p=Math.min(t.y,e.y,r.y,n.y),f=Math.max(t.y,e.y,r.y,n.y);}return t.emplaceBack(e.x,e.y,e.z,r.x,r.y,d,p,y,f,l,n,s,a),t.length-1}function Gh(t){t.collisionPadding&&(t.top-=t.collisionPadding[1],t.bottom+=t.collisionPadding[3]);const e=t.bottom-t.top;return e>0?Math.max(10,e):null}function Zh(t,e,r,n){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(n.dist(t[e])<r)return !0}else i[e]=[];return i[e].push(n),!1}const Xh=Du.VectorTileFeature.types,Kh=[{name:\"a_fade_opacity\",components:1,type:\"Uint8\",offset:0}];function Yh(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y){const m=c?Math.min(jh,Math.round(c[0])):0,g=c?Math.min(jh,Math.round(c[1])):0;t.emplaceBack(e,r,Math.round(32*a),Math.round(32*o),l,u,(m<<1)+(h?1:0),g,16*p,16*f,256*d,256*y,n,i,s,0);}function Hh(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r);}function Wh(t){for(const e of t.sections)if(Zi(e.text))return !0;return !1}class Jh{constructor(t){this.layoutVertexArray=new Ps,this.indexArray=new js,this.programConfigurations=t,this.segments=new Ka,this.dynamicLayoutVertexArray=new Vs,this.opacityVertexArray=new Fs,this.placedSymbolArray=new na;}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length}upload(t,e,r,n){this.isEmpty()||(r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,ic.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,sc.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,Kh,!0),this.opacityVertexBuffer.itemSize=1),(r||n)&&this.programConfigurations.upload(t));}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy());}}ai(Jh,\"SymbolBuffers\");class Qh{constructor(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new Ka,this.collisionVertexArray=new $s,this.collisionVertexArrayExt=new Vs;}upload(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,ac.members,!0),this.collisionVertexBufferExt=t.createVertexBuffer(this.collisionVertexArrayExt,oc.members,!0);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy(),this.collisionVertexBufferExt.destroy());}}ai(Qh,\"CollisionBuffers\");class tp{constructor(t){this.collisionBoxArray=t.collisionBoxArray,this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.fullyClipped=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=jo([]),this.placementViewportMatrix=jo([]);const e=this.layers[0]._unevaluatedLayout._values;this.textSizeData=pc(this.zoom,e[\"text-size\"]),this.iconSizeData=pc(this.zoom,e[\"icon-size\"]);const r=this.layers[0].layout,n=r.get(\"symbol-sort-key\"),i=r.get(\"symbol-z-order\");this.canOverlap=r.get(\"text-allow-overlap\")||r.get(\"icon-allow-overlap\")||r.get(\"text-ignore-placement\")||r.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=\"viewport-y\"!==i&&void 0!==n.constantOr(1),this.sortFeaturesByY=(\"viewport-y\"===i||\"auto\"===i&&!this.sortFeaturesByKey)&&this.canOverlap,this.writingModes=r.get(\"text-writing-mode\").map((t=>Kc[t])),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=t.sourceID,this.projection=t.projection;}createArrays(){this.text=new Jh(new Ra(this.layers,this.zoom,(t=>/^text/.test(t)))),this.icon=new Jh(new Ra(this.layers,this.zoom,(t=>/^icon/.test(t)))),this.glyphOffsetArray=new aa,this.lineVertexArray=new oa,this.symbolInstances=new sa;}calculateGlyphDependencies(t,e,r,n,i){for(let r=0;r<t.length;r++)if(e[t.charCodeAt(r)]=!0,n&&i){const n=gc[t.charAt(r)];n&&(e[n.charCodeAt(0)]=!0);}}populate(t,e,r,n){const i=this.layers[0],s=i.layout,a=s.get(\"text-font\"),o=s.get(\"text-field\"),l=s.get(\"icon-image\"),u=(\"constant\"!==o.value.kind||o.value.value instanceof fe&&!o.value.value.isEmpty()||o.value.value.toString().length>0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,h=s.get(\"symbol-sort-key\");if(this.features=[],!u&&!c)return;const p=e.iconDependencies,f=e.glyphDependencies,d=e.availableImages,y=new ss(this.zoom);for(const{feature:e,id:o,index:l,sourceLayerIndex:m}of t){const t=i._featureFilter.needGeometry,g=mo(e,t);if(!i._featureFilter.filter(y,g,r))continue;let x,v;if(t||(g.geometry=yo(e,r,n)),u){const t=i.getValueAndResolveTokens(\"text-field\",g,r,d),e=fe.factory(t);Wh(e)&&(this.hasRTLText=!0),(!this.hasRTLText||\"unavailable\"===rs()||this.hasRTLText&&is.isParsed())&&(x=mc(e,i,g));}if(c){const t=i.getValueAndResolveTokens(\"icon-image\",g,r,d);v=t instanceof de?t:de.fromString(t);}if(!x&&!v)continue;const b=this.sortFeaturesByKey?h.evaluate(g,{},r):void 0;if(this.features.push({id:o,text:x,icon:v,index:l,sourceLayerIndex:m,geometry:g.geometry,properties:e.properties,type:Xh[e.type],sortKey:b}),v&&(p[v.name]=!0),x){const t=a.evaluate(g,{},r).join(\",\"),e=\"map\"===s.get(\"text-rotation-alignment\")&&\"point\"!==s.get(\"symbol-placement\");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(Kc.vertical)>=0;for(const r of x.sections)if(r.image)p[r.image.name]=!0;else {const n=Ui(x.toString()),i=r.fontStack||t,s=f[i]=f[i]||{};this.calculateGlyphDependencies(r.text,s,e,this.allowVerticalPlacement,n);}}}\"line\"===s.get(\"symbol-placement\")&&(this.features=function(t){const e={},r={},n=[];let i=0;function s(e){n.push(t[e]),i++;}function a(t,e,i){const s=r[t];return delete r[t],r[e]=s,n[s].geometry[0].pop(),n[s].geometry[0]=n[s].geometry[0].concat(i[0]),s}function o(t,r,i){const s=e[r];return delete e[r],e[t]=s,n[s].geometry[0].shift(),n[s].geometry[0]=i[0].concat(n[s].geometry[0]),s}function l(t,e,r){const n=r?e[0][e[0].length-1]:e[0][0];return `${t}:${n.x}:${n.y}`}for(let u=0;u<t.length;u++){const c=t[u],h=c.geometry,p=c.text?c.text.toString():null;if(!p){s(u);continue}const f=l(p,h),d=l(p,h,!0);if(f in r&&d in e&&r[f]!==e[d]){const t=o(f,d,h),i=a(f,d,n[t].geometry);delete e[f],delete r[d],r[l(p,n[i].geometry,!0)]=i,n[t].geometry=null;}else f in r?a(f,d,h):d in e?o(f,d,h):(s(u),e[f]=i-1,r[d]=i-1);}return n.filter((t=>t.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,r,n){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r,n),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r,n));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const r=this.lineVertexArray.length,n=t.segment;if(void 0!==n){let r=t.dist(e[n+1]),i=t.dist(e[n]);const s={};for(let t=n+1;t<e.length;t++)s[t]={x:e[t].x,y:e[t].y,tileUnitDistanceFromAnchor:r},t<e.length-1&&(r+=e[t+1].dist(e[t]));for(let t=n||0;t>=0;t--)s[t]={x:e[t].x,y:e[t].y,tileUnitDistanceFromAnchor:i},t>0&&(i+=e[t-1].dist(e[t]));for(let t=0;t<e.length;t++){const e=s[t];this.lineVertexArray.emplaceBack(e.x,e.y,e.tileUnitDistanceFromAnchor);}}return {lineStartIndex:r,lineLength:this.lineVertexArray.length-r}}addSymbols(t,e,r,n,i,s,a,o,l,u,c,h,p,f){const d=t.indexArray,y=t.layoutVertexArray,m=t.segments.prepareSegment(4*e.length,y,d,this.canOverlap?s.sortKey:void 0),g=this.glyphOffsetArray.length,x=m.vertexLength,v=this.allowVerticalPlacement&&a===Kc.vertical?Math.PI/2:0,b=s.text&&s.text.sections;for(let n=0;n<e.length;n++){const{tl:i,tr:a,bl:u,br:c,tex:h,pixelOffsetTL:g,pixelOffsetBR:x,minFontScaleX:_,minFontScaleY:w,glyphOffset:A,isSDF:k,sectionIndex:S}=e[n],I=m.vertexLength,M=A[1];Yh(y,o.x,o.y,o.z,l.x,l.y,i.x,M+i.y,h.x,h.y,r,k,g.x,g.y,_,w),Yh(y,o.x,o.y,o.z,l.x,l.y,a.x,M+a.y,h.x+h.w,h.y,r,k,x.x,g.y,_,w),Yh(y,o.x,o.y,o.z,l.x,l.y,u.x,M+u.y,h.x,h.y+h.h,r,k,g.x,x.y,_,w),Yh(y,o.x,o.y,o.z,l.x,l.y,c.x,M+c.y,h.x+h.w,h.y+h.h,r,k,x.x,x.y,_,w),Hh(t.dynamicLayoutVertexArray,o,v),d.emplaceBack(I,I+1,I+2),d.emplaceBack(I+1,I+2,I+3),m.vertexLength+=4,m.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(A[0]),n!==e.length-1&&S===e[n+1].sectionIndex||t.programConfigurations.populatePaintArrays(y.length,s,s.index,{},p,f,b&&b[S]);}t.placedSymbolArray.emplaceBack(o.x,o.y,o.z,l.x,l.y,g,this.glyphOffsetArray.length-g,x,u,c,l.segment,r?r[0]:0,r?r[1]:0,n[0],n[1],a,0,!1,0,h,0);}_commitLayoutVertex(t,e,r,n,i,s,a){t.emplaceBack(e,r,n,i,s,Math.round(a.x),Math.round(a.y));}_addCollisionDebugVertices(t,e,r,n,s,a,o){const l=r.segments.prepareSegment(4,r.layoutVertexArray,r.indexArray),u=l.vertexLength,c=o.tileAnchorX,h=o.tileAnchorY;for(let t=0;t<4;t++)r.collisionVertexArray.emplaceBack(0,0,0,0);r.collisionVertexArrayExt.emplaceBack(e,-t.padding,-t.padding),r.collisionVertexArrayExt.emplaceBack(e,t.padding,-t.padding),r.collisionVertexArrayExt.emplaceBack(e,t.padding,t.padding),r.collisionVertexArrayExt.emplaceBack(e,-t.padding,t.padding),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x1,t.y1)),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x2,t.y1)),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x2,t.y2)),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x1,t.y2)),l.vertexLength+=4;const p=r.indexArray;p.emplaceBack(u,u+1),p.emplaceBack(u+1,u+2),p.emplaceBack(u+2,u+3),p.emplaceBack(u+3,u),l.primitiveLength+=4;}_addTextDebugCollisionBoxes(t,e,r,n,i,s){for(let a=n;a<i;a++){const n=r.get(a),i=this.getSymbolInstanceTextSize(t,s,e,a);this._addCollisionDebugVertices(n,i,this.textCollisionBox,n.projectedAnchorX,n.projectedAnchorY,n.projectedAnchorZ,s);}}_addIconDebugCollisionBoxes(t,e,r,n,i,s){for(let a=n;a<i;a++){const n=r.get(a),i=this.getSymbolInstanceIconSize(t,e,a);this._addCollisionDebugVertices(n,i,this.iconCollisionBox,n.projectedAnchorX,n.projectedAnchorY,n.projectedAnchorZ,s);}}generateCollisionDebugBuffers(t,e){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Qh(Rs,lc.members,Ks),this.iconCollisionBox=new Qh(Rs,lc.members,Ks);const r=dc(this.iconSizeData,t),n=dc(this.textSizeData,t);for(let i=0;i<this.symbolInstances.length;i++){const s=this.symbolInstances.get(i);this._addTextDebugCollisionBoxes(n,t,e,s.textBoxStartIndex,s.textBoxEndIndex,s),this._addTextDebugCollisionBoxes(n,t,e,s.verticalTextBoxStartIndex,s.verticalTextBoxEndIndex,s),this._addIconDebugCollisionBoxes(r,t,e,s.iconBoxStartIndex,s.iconBoxEndIndex,s),this._addIconDebugCollisionBoxes(r,t,e,s.verticalIconBoxStartIndex,s.verticalIconBoxEndIndex,s);}}getSymbolInstanceTextSize(t,e,r,n){const i=this.text.placedSymbolArray.get(e.rightJustifiedTextSymbolIndex>=0?e.rightJustifiedTextSymbolIndex:e.centerJustifiedTextSymbolIndex>=0?e.centerJustifiedTextSymbolIndex:e.leftJustifiedTextSymbolIndex>=0?e.leftJustifiedTextSymbolIndex:e.verticalPlacedTextSymbolIndex>=0?e.verticalPlacedTextSymbolIndex:n),s=fc(this.textSizeData,t,i)/cc;return this.tilePixelRatio*s}getSymbolInstanceIconSize(t,e,r){const n=this.icon.placedSymbolArray.get(r),i=fc(this.iconSizeData,t,n);return this.tilePixelRatio*i}_commitDebugCollisionVertexUpdate(t,e,r){t.emplaceBack(e,-r,-r),t.emplaceBack(e,r,-r),t.emplaceBack(e,r,r),t.emplaceBack(e,-r,r);}_updateTextDebugCollisionBoxes(t,e,r,n,i,s){for(let a=n;a<i;a++){const n=r.get(a),i=this.getSymbolInstanceTextSize(t,s,e,a);this._commitDebugCollisionVertexUpdate(this.textCollisionBox.collisionVertexArrayExt,i,n.padding);}}_updateIconDebugCollisionBoxes(t,e,r,n,i){for(let s=n;s<i;s++){const n=r.get(s),i=this.getSymbolInstanceIconSize(t,e,s);this._commitDebugCollisionVertexUpdate(this.iconCollisionBox.collisionVertexArrayExt,i,n.padding);}}updateCollisionDebugBuffers(t,e){if(!this.hasDebugData())return;this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexArrayExt.clear(),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexArrayExt.clear();const r=dc(this.iconSizeData,t),n=dc(this.textSizeData,t);for(let i=0;i<this.symbolInstances.length;i++){const s=this.symbolInstances.get(i);this._updateTextDebugCollisionBoxes(n,t,e,s.textBoxStartIndex,s.textBoxEndIndex,s),this._updateTextDebugCollisionBoxes(n,t,e,s.verticalTextBoxStartIndex,s.verticalTextBoxEndIndex,s),this._updateIconDebugCollisionBoxes(r,t,e,s.iconBoxStartIndex,s.iconBoxEndIndex),this._updateIconDebugCollisionBoxes(r,t,e,s.verticalIconBoxStartIndex,s.verticalIconBoxEndIndex);}this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexBufferExt&&this.textCollisionBox.collisionVertexBufferExt.updateData(this.textCollisionBox.collisionVertexArrayExt),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexBufferExt&&this.iconCollisionBox.collisionVertexBufferExt.updateData(this.iconCollisionBox.collisionVertexArrayExt);}_deserializeCollisionBoxesForSymbol(t,e,r,n,i,s,a,o,l){const u={};for(let n=e;n<r;n++){const e=t.get(n);u.textBox={x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,padding:e.padding,projectedAnchorX:e.projectedAnchorX,projectedAnchorY:e.projectedAnchorY,projectedAnchorZ:e.projectedAnchorZ,tileAnchorX:e.tileAnchorX,tileAnchorY:e.tileAnchorY},u.textFeatureIndex=e.featureIndex;break}for(let e=n;e<i;e++){const r=t.get(e);u.verticalTextBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,padding:r.padding,projectedAnchorX:r.projectedAnchorX,projectedAnchorY:r.projectedAnchorY,projectedAnchorZ:r.projectedAnchorZ,tileAnchorX:r.tileAnchorX,tileAnchorY:r.tileAnchorY},u.verticalTextFeatureIndex=r.featureIndex;break}for(let e=s;e<a;e++){const r=t.get(e);u.iconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,padding:r.padding,projectedAnchorX:r.projectedAnchorX,projectedAnchorY:r.projectedAnchorY,projectedAnchorZ:r.projectedAnchorZ,tileAnchorX:r.tileAnchorX,tileAnchorY:r.tileAnchorY},u.iconFeatureIndex=r.featureIndex;break}for(let e=o;e<l;e++){const r=t.get(e);u.verticalIconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,padding:r.padding,projectedAnchorX:r.projectedAnchorX,projectedAnchorY:r.projectedAnchorY,projectedAnchorZ:r.projectedAnchorZ,tileAnchorX:r.tileAnchorX,tileAnchorY:r.tileAnchorY},u.verticalIconFeatureIndex=r.featureIndex;break}return u}deserializeCollisionBoxes(t){this.collisionArrays=[];for(let e=0;e<this.symbolInstances.length;e++){const r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex));}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs;for(let e=r.vertexStartIndex;e<n;e+=4)t.indexArray.emplaceBack(e,e+1,e+2),t.indexArray.emplaceBack(e+1,e+2,e+3);}getSortedSymbolIndexes(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;const e=Math.sin(t),r=Math.cos(t),n=[],i=[],s=[];for(let t=0;t<this.symbolInstances.length;++t){s.push(t);const a=this.symbolInstances.get(t);n.push(0|Math.round(e*a.tileAnchorX+r*a.tileAnchorY)),i.push(a.featureIndex);}return s.sort(((t,e)=>n[t]-n[e]||i[e]-i[t])),s}addToSortKeyRanges(t,e){const r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex),[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex].forEach(((t,e,r)=>{t>=0&&r.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t);})),e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}ai(tp,\"SymbolBucket\",{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),tp.MAX_GLYPHS=65535,tp.addDynamicAttributes=Hh;const ep=new vs({\"symbol-placement\":new ds($t.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new ds($t.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new ds($t.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new ys($t.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new ds($t.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new ds($t.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new ds($t.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new ds($t.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new ds($t.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new ys($t.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new ds($t.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new ds($t.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new ys($t.layout_symbol[\"icon-image\"]),\"icon-rotate\":new ys($t.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new ds($t.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new ds($t.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new ys($t.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new ys($t.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new ds($t.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new ds($t.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new ds($t.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new ys($t.layout_symbol[\"text-field\"]),\"text-font\":new ys($t.layout_symbol[\"text-font\"]),\"text-size\":new ys($t.layout_symbol[\"text-size\"]),\"text-max-width\":new ys($t.layout_symbol[\"text-max-width\"]),\"text-line-height\":new ys($t.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new ys($t.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new ys($t.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new ys($t.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new ds($t.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new ys($t.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new ds($t.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new ds($t.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new ys($t.layout_symbol[\"text-rotate\"]),\"text-padding\":new ds($t.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new ds($t.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new ys($t.layout_symbol[\"text-transform\"]),\"text-offset\":new ys($t.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new ds($t.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new ds($t.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new ds($t.layout_symbol[\"text-optional\"])});var rp={paint:new vs({\"icon-opacity\":new ys($t.paint_symbol[\"icon-opacity\"]),\"icon-color\":new ys($t.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new ys($t.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new ys($t.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new ys($t.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new ds($t.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new ds($t.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new ys($t.paint_symbol[\"text-opacity\"]),\"text-color\":new ys($t.paint_symbol[\"text-color\"],{runtimeType:Ht,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),\"text-halo-color\":new ys($t.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new ys($t.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new ys($t.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new ds($t.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new ds($t.paint_symbol[\"text-translate-anchor\"])}),layout:ep};class np{constructor(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Zt,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}ai(np,\"FormatSectionOverride\",{omit:[\"defaultValue\"]});class ip extends Ga{constructor(t){super(t,rp);}recalculate(t,e){super.recalculate(t,e),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(this.layout._values[\"icon-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(this.layout._values[\"text-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\"));const r=this.layout.get(\"text-writing-mode\");if(r){const t=[];for(const e of r)t.indexOf(e)<0&&t.push(e);this.layout._values[\"text-writing-mode\"]=t;}else this.layout._values[\"text-writing-mode\"]=\"point\"===this.layout.get(\"symbol-placement\")?[\"horizontal\"]:[\"horizontal\",\"vertical\"];this._setPaintOverrides();}getValueAndResolveTokens(t,e,r,n){const i=this.layout.get(t).evaluate(e,{},r,n),s=this._unevaluatedLayout._values[t];return s.isDataDriven()||un(s.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,r)=>r in t?String(t[r]):\"\"))}(e.properties,i)}createBucket(t){return new tp(t)}queryRadius(){return 0}queryIntersectsFeature(){return !1}_setPaintOverrides(){for(const t of rp.paint.overridableProperties){if(!ip.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),r=new np(e),n=new ln(r,e.property.specification);let i=null;i=\"constant\"===e.value.kind||\"source\"===e.value.kind?new hn(\"source\",n):new pn(\"composite\",n,e.value.zoomStops,e.value._interpolationType),this.paint._values[t]=new ps(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,r){return !(!this.layout||e.isDataDriven()||r.isDataDriven())&&ip.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const r=t.get(\"text-field\"),n=rp.paint.properties[e];let i=!1;const s=t=>{for(const e of t)if(n.overrides&&n.overrides.hasOverride(e))return void(i=!0)};if(\"constant\"===r.value.kind&&r.value.value instanceof fe)s(r.value.value.sections);else if(\"source\"===r.value.kind){const t=e=>{i||(e instanceof ve&&ge(e.value)===te?s(e.value.sections):e instanceof Ae?s(e.sections):e.eachChild(t));},e=r.value;e._styleExpression&&t(e._styleExpression.expression);}return i}getProgramConfiguration(t){return new La(this,t)}}var sp={paint:new vs({\"background-color\":new ds($t.paint_background[\"background-color\"]),\"background-pattern\":new gs($t.paint_background[\"background-pattern\"]),\"background-opacity\":new ds($t.paint_background[\"background-opacity\"])})},ap={paint:new vs({\"raster-opacity\":new ds($t.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new ds($t.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new ds($t.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new ds($t.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new ds($t.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new ds($t.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new ds($t.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new ds($t.paint_raster[\"raster-fade-duration\"])})};class op extends Ga{constructor(t){super(t,{}),this.implementation=t;}is3D(){return \"3d\"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return !1}serialize(){}onAdd(t){this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);}onRemove(t){this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);}}var lp={paint:new vs({\"sky-type\":new ds($t.paint_sky[\"sky-type\"]),\"sky-atmosphere-sun\":new ds($t.paint_sky[\"sky-atmosphere-sun\"]),\"sky-atmosphere-sun-intensity\":new ds($t.paint_sky[\"sky-atmosphere-sun-intensity\"]),\"sky-gradient-center\":new ds($t.paint_sky[\"sky-gradient-center\"]),\"sky-gradient-radius\":new ds($t.paint_sky[\"sky-gradient-radius\"]),\"sky-gradient\":new xs($t.paint_sky[\"sky-gradient\"]),\"sky-atmosphere-halo-color\":new ds($t.paint_sky[\"sky-atmosphere-halo-color\"]),\"sky-atmosphere-color\":new ds($t.paint_sky[\"sky-atmosphere-color\"]),\"sky-opacity\":new ds($t.paint_sky[\"sky-opacity\"])})};function up(t,e,r){const n=[0,0,1],i=ml([]);return function(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);t[0]=n*l-s*o,t[1]=i*l+a*o,t[2]=s*l+n*o,t[3]=a*l-i*o;}(i,i,r?-u(t)+Math.PI:u(t)),gl(i,i,-u(e)),ul(n,n,i),sl(n,n)}const cp={circle:class extends Ga{constructor(t){super(t,Lo);}createBucket(t){return new vo(t)}queryRadius(t){const e=t;return Co(\"circle-radius\",this,e)+Co(\"circle-stroke-width\",this,e)+Do(this.paint.get(\"circle-translate\"))}queryIntersectsFeature(t,e,r,n,i,s,a,o){const l=Vo(this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),s.angle,t.pixelToTileUnitsFactor),u=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r);return bl(t,n,s,a,o,\"map\"===this.paint.get(\"circle-pitch-alignment\"),\"map\"===this.paint.get(\"circle-pitch-scale\"),l,u)}getProgramIds(){return [\"circle\"]}getProgramConfiguration(t){return new La(this,t)}},heatmap:class extends Ga{createBucket(t){return new Sl(t)}constructor(t){super(t,El),this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){\"heatmap-color\"===t&&this._updateColorRamp();}_updateColorRamp(){this.colorRamp=Cl({expression:this._transitionablePaint._values[\"heatmap-color\"].value.expression,evaluationKey:\"heatmapDensity\",image:this.colorRamp}),this.colorRampTexture=null;}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null);}queryRadius(t){return Co(\"heatmap-radius\",this,t)}queryIntersectsFeature(t,e,r,n,s,a,o,l){const u=this.paint.get(\"heatmap-radius\").evaluate(e,r);return bl(t,n,a,o,l,!0,!0,new i(0,0),u)}hasOffscreenPass(){return 0!==this.paint.get(\"heatmap-opacity\")&&\"none\"!==this.visibility}getProgramIds(){return [\"heatmap\",\"heatmapTexture\"]}getProgramConfiguration(t){return new La(this,t)}},hillshade:class extends Ga{constructor(t){super(t,Dl);}hasOffscreenPass(){return 0!==this.paint.get(\"hillshade-exaggeration\")&&\"none\"!==this.visibility}getProgramIds(){return [\"hillshade\",\"hillshadePrepare\"]}},fill:class extends Ga{constructor(t){super(t,bu);}getProgramIds(){const t=this.paint.get(\"fill-pattern\"),e=t&&t.constantOr(1),r=[e?\"fillPattern\":\"fill\"];return this.paint.get(\"fill-antialias\")&&r.push(e&&!this.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\"),r}getProgramConfiguration(t){return new La(this,t)}recalculate(t,e){super.recalculate(t,e);const r=this.paint._values[\"fill-outline-color\"];\"constant\"===r.value.kind&&void 0===r.value.value&&(this.paint._values[\"fill-outline-color\"]=this.paint._values[\"fill-color\"]);}createBucket(t){return new xu(t)}queryRadius(){return Do(this.paint.get(\"fill-translate\"))}queryIntersectsFeature(t,e,r,n,i,s){return !t.queryGeometry.isAboveHorizon&&wo(Po(t.tilespaceGeometry,this.paint.get(\"fill-translate\"),this.paint.get(\"fill-translate-anchor\"),s.angle,t.pixelToTileUnitsFactor),n)}isTileClipped(){return !0}},\"fill-extrusion\":class extends Ga{constructor(t){super(t,Ou);}createBucket(t){return new $u(t)}queryRadius(){return Do(this.paint.get(\"fill-extrusion-translate\"))}is3D(){return !0}getProgramIds(){return [this.paint.get(\"fill-extrusion-pattern\").constantOr(1)?\"fillExtrusionPattern\":\"fillExtrusion\"]}getProgramConfiguration(t){return new La(this,t)}queryIntersectsFeature(t,e,r,n,s,a,o,l,u){const c=Vo(this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),a.angle,t.pixelToTileUnitsFactor),h=this.paint.get(\"fill-extrusion-height\").evaluate(e,r),p=this.paint.get(\"fill-extrusion-base\").evaluate(e,r),f=[0,0],d=l&&a.elevation,y=a.elevation?a.elevation.exaggeration():1,m=t.tile.getBucket(this);if(d&&m instanceof $u){const t=m.centroidVertexArray,e=u+1;if(e<t.length){const r=t.get(e);f[0]=r.a_centroid_pos0,f[1]=r.a_centroid_pos1;}}if(0===f[0]&&1===f[1])return !1;const g=function(t,e,r,n,s,a,o,l,u){return a?function(t,e,r,n,i,s,a,o,l){const u=[],c=[],h=[0,0,0,1];for(const p of t){const t=[],f=[];for(const u of p){const c=u.x+n.x,p=u.y+n.y,d=Zu(c,p,e,r,s,a,o,l);h[0]=c,h[1]=p,h[2]=d.base,h[3]=1,dl(h,h,i),h[3]=Math.max(h[3],1e-5);const y=Gu([h[0]/h[3],h[1]/h[3],h[2]/h[3]]);h[0]=c,h[1]=p,h[2]=d.top,h[3]=1,dl(h,h,i),h[3]=Math.max(h[3],1e-5);const m=Gu([h[0]/h[3],h[1]/h[3],h[2]/h[3]]);t.push(y),f.push(m);}u.push(t),c.push(f);}return [u,c]}(t,e,r,n,s,a,o,l,u):function(t,e,r,n,s){const a=[],o=[],l=s[8]*e,u=s[9]*e,c=s[10]*e,h=s[11]*e,p=s[8]*r,f=s[9]*r,d=s[10]*r,y=s[11]*r;for(const e of t){const t=[],r=[];for(const a of e){const e=a.x+n.x,o=a.y+n.y,m=s[0]*e+s[4]*o+s[12],g=s[1]*e+s[5]*o+s[13],x=s[2]*e+s[6]*o+s[14],v=s[3]*e+s[7]*o+s[15],b=m+l,_=g+u,w=x+c,A=Math.max(v+h,1e-5),k=m+p,S=g+f,I=x+d,M=Math.max(v+y,1e-5),T=new i(b/A,_/A);T.z=w/A,t.push(T);const z=new i(k/M,S/M);z.z=I/M,r.push(z);}a.push(t),o.push(r);}return [a,o]}(t,e,r,n,s)}(n,p,h,c,o,d?l:null,f,y,a.center.lat),x=t.queryGeometry;return function(t,e,r){let n=1/0;wo(r,e)&&(n=Nu(r,e[0]));for(let i=0;i<e.length;i++){const s=e[i],a=t[i];for(let t=0;t<s.length-1;t++){const e=s[t],i=[e,s[t+1],a[t+1],a[t],e];bo(r,i)&&(n=Math.min(n,Nu(r,i)));}}return n!==1/0&&n}(g[0],g[1],x.isPointQuery()?x.screenBounds:x.screenGeometry)}},line:class extends Ga{constructor(t){super(t,ec),this.gradientVersion=0;}_handleSpecialPaintPropertyUpdate(t){if(\"line-gradient\"===t){const t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.stepInterpolant=t._styleExpression&&t._styleExpression.expression instanceof er,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER;}}gradientExpression(){return this._transitionablePaint._values[\"line-gradient\"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values[\"line-floorwidth\"]=rc.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,t);}createBucket(t){return new Qu(t)}getProgramIds(){return [this.paint.get(\"line-pattern\").constantOr(1)?\"linePattern\":\"line\"]}getProgramConfiguration(t){return new La(this,t)}queryRadius(t){const e=t,r=nc(Co(\"line-width\",this,e),Co(\"line-gap-width\",this,e)),n=Co(\"line-offset\",this,e);return r/2+Math.abs(n)+Do(this.paint.get(\"line-translate\"))}queryIntersectsFeature(t,e,r,n,s,a){if(t.queryGeometry.isAboveHorizon)return !1;const o=Po(t.tilespaceGeometry,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),a.angle,t.pixelToTileUnitsFactor),l=t.pixelToTileUnitsFactor/2*nc(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),u=this.paint.get(\"line-offset\").evaluate(e,r);return u&&(n=function(t,e){const r=[],n=new i(0,0);for(let i=0;i<t.length;i++){const s=t[i],a=[];for(let t=0;t<s.length;t++){const r=s[t-1],i=s[t],o=s[t+1],l=0===t?n:i.sub(r)._unit()._perp(),u=t===s.length-1?n:o.sub(i)._unit()._perp(),c=l._add(u)._unit();c._mult(1/(c.x*u.x+c.y*u.y)),a.push(c._mult(e)._add(i));}r.push(a);}return r}(n,u*t.pixelToTileUnitsFactor)),function(t,e,r){for(let n=0;n<e.length;n++){const i=e[n];if(t.length>=3)for(let e=0;e<i.length;e++)if(zo(t,i[e]))return !0;if(Ao(t,i,r))return !0}return !1}(o,n,l)}isTileClipped(){return !0}},symbol:ip,background:class extends Ga{constructor(t){super(t,sp);}getProgramIds(){return [this.paint.get(\"background-pattern\")?\"backgroundPattern\":\"background\"]}},raster:class extends Ga{constructor(t){super(t,ap);}getProgramIds(){return [\"raster\"]}},sky:class extends Ga{constructor(t){super(t,lp),this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){\"sky-gradient\"===t?this._updateColorRamp():\"sky-atmosphere-sun\"!==t&&\"sky-atmosphere-halo-color\"!==t&&\"sky-atmosphere-color\"!==t&&\"sky-atmosphere-sun-intensity\"!==t||(this._skyboxInvalidated=!0);}_updateColorRamp(){this.colorRamp=Cl({expression:this._transitionablePaint._values[\"sky-gradient\"].value.expression,evaluationKey:\"skyRadialProgress\"}),this.colorRampTexture&&(this.colorRampTexture.destroy(),this.colorRampTexture=null);}needsSkyboxCapture(t){if(this._skyboxInvalidated||!this.skyboxTexture||!this.skyboxGeometry)return !0;if(!this.paint.get(\"sky-atmosphere-sun\")){const e=t.style.light.properties.get(\"position\");return this._lightPosition.azimuthal!==e.azimuthal||this._lightPosition.polar!==e.polar}return !1}getCenter(t,e){if(\"atmosphere\"===this.paint.get(\"sky-type\")){const r=this.paint.get(\"sky-atmosphere-sun\"),n=!r,i=t.style.light,s=i.properties.get(\"position\");return n&&\"viewport\"===i.properties.get(\"anchor\")&&C(\"The sun direction is attached to a light with viewport anchor, lighting may behave unexpectedly.\"),n?up(s.azimuthal,90-s.polar,e):up(r[0],90-r[1],e)}const r=this.paint.get(\"sky-gradient-center\");return up(r[0],90-r[1],e)}is3D(){return !1}isSky(){return !0}markSkyboxValid(t){this._skyboxInvalidated=!1,this._lightPosition=t.style.light.properties.get(\"position\");}hasOffscreenPass(){return !0}getProgramIds(){const t=this.paint.get(\"sky-type\");return \"atmosphere\"===t?[\"skyboxCapture\",\"skybox\"]:\"gradient\"===t?[\"skyboxGradient\"]:null}}};class hp{constructor(t,e,r,n){this.context=t,this.format=r,this.texture=t.gl.createTexture(),this.update(e,n);}update(t,e,r){const{width:n,height:i}=t,{context:s}=this,{gl:o}=s,{HTMLImageElement:l,HTMLCanvasElement:u,HTMLVideoElement:c,ImageData:h,ImageBitmap:p}=a;if(o.bindTexture(o.TEXTURE_2D,this.texture),s.pixelStoreUnpackFlipY.set(!1),s.pixelStoreUnpack.set(1),s.pixelStoreUnpackPremultiplyAlpha.set(this.format===o.RGBA&&(!e||!1!==e.premultiply)),r||this.size&&this.size[0]===n&&this.size[1]===i){const{x:e,y:s}=r||{x:0,y:0};t instanceof l||t instanceof u||t instanceof c||t instanceof h||p&&t instanceof p?o.texSubImage2D(o.TEXTURE_2D,0,e,s,o.RGBA,o.UNSIGNED_BYTE,t):o.texSubImage2D(o.TEXTURE_2D,0,e,s,n,i,o.RGBA,o.UNSIGNED_BYTE,t.data);}else this.size=[n,i],t instanceof l||t instanceof u||t instanceof c||t instanceof h||p&&t instanceof p?o.texImage2D(o.TEXTURE_2D,0,this.format,this.format,o.UNSIGNED_BYTE,t):o.texImage2D(o.TEXTURE_2D,0,this.format,n,i,0,this.format,o.UNSIGNED_BYTE,t.data);this.useMipmap=Boolean(e&&e.useMipmap&&this.isSizePowerOfTwo()),this.useMipmap&&o.generateMipmap(o.TEXTURE_2D);}bind(t,e){const{context:r}=this,{gl:n}=r;n.bindTexture(n.TEXTURE_2D,this.texture),t!==this.filter&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,t),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,this.useMipmap?t===n.NEAREST?n.NEAREST_MIPMAP_NEAREST:n.LINEAR_MIPMAP_NEAREST:t),this.filter=t),e!==this.wrap&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,e),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,e),this.wrap=e);}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null;}}class pp{constructor(t,e){this.width=t,this.height=e,this.nextRow=0,this.image=new zl({width:t,height:e}),this.positions={},this.uploaded=!1;}getDash(t,e){const r=this.getKey(t,e);return this.positions[r]}trim(){const t=this.width,e=this.height=k(this.nextRow);this.image.resize({width:t,height:e});}getKey(t,e){return t.join(\",\")+e}getDashRanges(t,e,r){const n=[];let i=t.length%2==1?-t[t.length-1]*r:0,s=t[0]*r,a=!0;n.push({left:i,right:s,isDash:a,zeroLength:0===t[0]});let o=t[0];for(let e=1;e<t.length;e++){a=!a;const l=t[e];i=o*r,o+=l,s=o*r,n.push({left:i,right:s,isDash:a,zeroLength:0===l});}return n}addRoundDash(t,e,r){const n=e/2;for(let e=-r;e<=r;e++){const i=this.width*(this.nextRow+r+e);let s=0,a=t[s];for(let o=0;o<this.width;o++){o/a.right>1&&(a=t[++s]);const l=Math.abs(o-a.left),u=Math.abs(o-a.right),c=Math.min(l,u);let h;const p=e/r*(n+1);if(a.isDash){const t=n-Math.abs(p);h=Math.sqrt(c*c+t*t);}else h=n-Math.sqrt(c*c+p*p);this.image.data[i+o]=Math.max(0,Math.min(255,h+128));}}}addRegularDash(t,e){for(let e=t.length-1;e>=0;--e){const r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1));}const r=t[0],n=t[t.length-1];r.isDash===n.isDash&&(r.left=n.left-this.width,n.right=r.right+this.width);const i=this.width*this.nextRow;let s=0,a=t[s];for(let r=0;r<this.width;r++){r/a.right>1&&(a=t[++s]);const n=Math.abs(r-a.left),o=Math.abs(r-a.right),l=Math.min(n,o);this.image.data[i+r]=Math.max(0,Math.min(255,(a.isDash?l:-l)+e+128));}}addDash(t,e){const r=this.getKey(t,e);if(this.positions[r])return this.positions[r];const n=\"round\"===e,i=n?7:0,s=2*i+1;if(this.nextRow+s>this.height)return C(\"LineAtlas out of space\"),null;0===t.length&&t.push(1);let a=0;for(let e=0;e<t.length;e++)t[e]<0&&(C(\"Negative value is found in line dasharray, replacing values with 0\"),t[e]=0),a+=t[e];if(0!==a){const r=this.width/a,s=this.getDashRanges(t,this.width,r);n?this.addRoundDash(s,r,i):this.addRegularDash(s,\"square\"===e?.5*r:0);}const o=this.nextRow+i;this.nextRow+=s;const l={tl:[o,i],br:[a,0]};return this.positions[r]=l,l}}ai(pp,\"LineAtlas\");class fp{constructor(t){this._callback=t,this._triggered=!1,\"undefined\"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback();});}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback();}),0));}remove(){this._channel=void 0,this._callback=()=>{};}}const dp=a.performance;function yp(t){const e=t?t.url.toString():void 0;return dp.getEntriesByName(e)}class mp{constructor(){this.tasks={},this.taskQueue=[],I([\"process\"],this),this.invoker=new fp(this.process),this.nextId=0;}add(t,e){const r=this.nextId++,n=function({type:t,isSymbolTile:e,zoom:r}){return r=r||0,\"message\"===t?0:\"maybePrepare\"!==t||e?\"parseTile\"!==t||e?\"parseTile\"===t&&e?300-r:\"maybePrepare\"===t&&e?400-r:500:200-r:100-r}(e);if(0===n){V();try{t();}finally{}return {cancel:()=>{}}}return this.tasks[r]={fn:t,metadata:e,priority:n,id:r},this.taskQueue.push(r),this.invoker.trigger(),{cancel:()=>{delete this.tasks[r];}}}process(){V();try{if(this.taskQueue=this.taskQueue.filter((t=>!!this.tasks[t])),!this.taskQueue.length)return;const t=this.pick();if(null===t)return;const e=this.tasks[t];if(delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),!e)return;e.fn();}finally{}}pick(){let t=null,e=1/0;for(let r=0;r<this.taskQueue.length;r++){const n=this.tasks[this.taskQueue[r]];n.priority<e&&(e=n.priority,t=r);}if(null===t)return null;const r=this.taskQueue[t];return this.taskQueue.splice(t,1),r}remove(){this.invoker.remove();}}const gp=ks([{type:\"Float32\",name:\"a_globe_pos\",components:3},{type:\"Float32\",name:\"a_merc_pos\",components:2},{type:\"Float32\",name:\"a_uv\",components:2}]),xp=ks([{type:\"Float32\",name:\"a_pos\",components:3},{type:\"Float32\",name:\"a_uv\",components:2}]),{members:vp}=gp,bp=ks([{name:\"a_pos_3\",components:3,type:\"Int16\"}]);var _p=ks([{name:\"a_pos\",type:\"Int16\",components:2}]);const wp=Ya/Math.PI/2,Ap=-wp,kp=wp,Sp=[new vl([Ap,Ap,Ap],[kp,kp,kp]),new vl([Ap,Ap,Ap],[0,0,kp]),new vl([0,Ap,Ap],[kp,0,kp]),new vl([Ap,0,Ap],[0,kp,kp]),new vl([0,0,Ap],[kp,kp,kp])];class Ip{constructor(t,e,r){this.a=hl([],t,r),this.b=hl([],e,r),this.center=r;const n=sl([],this.a),i=sl([],this.b);this.angle=Math.acos(al(n,i));}}function Mp(t,e){if(0===t.angle)return null;let r;return r=0===t.a[e]?1/t.angle*.5*Math.PI:1/t.angle*Math.atan(t.b[e]/t.a[e]/Math.sin(t.angle)-1/Math.tan(t.angle)),r<0||r>1?null:function(t,e,r,n){const i=Math.sin(r);return t*(Math.sin((1-n)*r)/i)+e*(Math.sin(n*r)/i)}(t.a[e],t.b[e],t.angle,y(r,0,1))+t.center[e]}function Tp(t){if(t.z<=1)return Sp[t.z+2*t.y+t.x];const[e,r]=Bp(t),n=[Cp(e[0],e[1]),Cp(e[0],r[1]),Cp(r[0],e[1]),Cp(r[0],r[1])],i=[kp,kp,kp],s=[Ap,Ap,Ap];for(const t of n)i[0]=Math.min(i[0],t[0]),i[1]=Math.min(i[1],t[1]),i[2]=Math.min(i[2],t[2]),s[0]=Math.max(s[0],t[0]),s[1]=Math.max(s[1],t[1]),s[2]=Math.max(s[2],t[2]);return new vl(i,s)}function zp(t,e,r){const n=e/t.worldSize,i=(t,e)=>{nl(t,t,n),nl(e,e,n);},s=Number.MAX_VALUE,a=[-s,-s,-s],o=[s,s,s],l=Lp(t);if(r.z<=1){const t=Tp(r).getCorners();for(let e=0;e<t.length;e++)ll(t[e],t[e],l),el(o,o,t[e]),rl(a,a,t[e]);return i(o,a),new vl(o,a)}const[c,h]=Bp(r),p=new Ha;p.setSouthWest([c[1],h[0]]),p.setNorthEast([h[1],c[0]]);const f=[Cp(p.getSouth(),p.getWest()),Cp(p.getSouth(),p.getEast()),Cp(p.getNorth(),p.getEast()),Cp(p.getNorth(),p.getWest())];for(let t=0;t<f.length;t++)ll(f[t],f[t],l),el(o,o,f[t]),rl(a,a,f[t]);if(p.contains(t.center))return a[2]=0,i(o,a),new vl(o,a);const d=[l[12],l[13],l[14]],m=t.center.lng,g=y(t.center.lat,-85.051129,oo),x=[eo(m),ro(g)],v=p.getCenter().lng,b=y(p.getCenter().lat,-85.051129,oo),_=[eo(v),ro(b)];let w=new Array(3),A=0;const k=x[0]-_[0],S=x[1]-_[1];if(Math.abs(k)>Math.abs(S))A=k>=0?1:3,w=d;else {A=S>=0?0:2;const t=[l[4],l[5],l[6]];let e;e=S>=0?-Math.sin(u(p.getSouth()))*wp:-Math.sin(u(p.getNorth()))*wp,w=il(w,d,t,e);}const I=f[A],M=f[(A+1)%4],T=new Ip(I,M,w),z=[Mp(T,0)||I[0],Mp(T,1)||I[1],Mp(T,2)||I[2]];return o[2]=Math.min(I[2],M[2]),el(o,o,z),rl(a,a,z),i(o,a),new vl(o,a)}function Bp(t){const e=1<<t.z,r=t.x/e,n=(t.x+1)/e,i=(t.y+1)/e;return [[so(t.y/e),io(r)],[so(i),io(n)]]}function Ep(t,e,r,n=wp){return r=u(r),[t*Math.sin(r)*n,-e*n,t*Math.cos(r)*n]}function Cp(t,e,r){return Ep(Math.cos(u(t)),Math.sin(u(t)),e,r)}function Dp(t,e,r){const n=Math.pow(2,r.z),i=(t/Ya+r.x)/n;return Cp(so((e/Ya+r.y)/n),io(i))}function Pp(t){return 16383/Math.max(...hl([],t.max,t.min))}function Vp(t){const e=jo(new Float64Array(16)),r=Pp(t);var n,i;return No(e,e,[r,r,r]),qo(e,e,((n=[])[0]=-(i=t.min)[0],n[1]=-i[1],n[2]=-i[2],n)),e}function Fp(t,e,r,n,i){const s=function(t){const e=Ya/(2*Math.PI);return t/(2*Math.PI)/e}(r),a=[t,e,-r/(2*Math.PI)],o=jo(new Float64Array(16));return qo(o,o,a),No(o,o,[s,s,s]),Go(o,o,u(-i)),Zo(o,o,u(-n)),o}function Lp(t){const{x:e,y:r}=t.point,{lng:n,lat:i}=t._center;return Fp(e,r,t.worldSize,n,i)}const Rp=u(85),Up=Math.cos(Rp),$p=Math.sin(Rp);function jp(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}class Op{constructor(t,e,r){this.z=t,this.x=e,this.y=r,this.key=Gp(0,t,t,e,r);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e){const r=function(t,e,r){var n=jp(256*t,256*(e=Math.pow(2,r)-e-1),r),i=jp(256*(t+1),256*(e+1),r);return n[0]+\",\"+n[1]+\",\"+i[0]+\",\"+i[1]}(this.x,this.y,this.z),n=function(t,e,r){let n,i=\"\";for(let s=t;s>0;s--)n=1<<s-1,i+=(e&n?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(\"{prefix}\",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(\"{z}\",String(this.z)).replace(\"{x}\",String(this.x)).replace(\"{y}\",String(\"tms\"===e?Math.pow(2,this.z)-this.y-1:this.y)).replace(\"{quadkey}\",n).replace(\"{bbox-epsg-3857}\",r)}toString(){return `${this.z}/${this.x}/${this.y}`}}class qp{constructor(t,e){this.wrap=t,this.canonical=e,this.key=Gp(t,e.z,e.z,e.x,e.y);}}class Np{constructor(t,e,r,n,i){this.overscaledZ=t,this.wrap=e,this.canonical=new Op(r,+n,+i),this.key=0===e&&t===r?this.canonical.key:Gp(e,t,r,n,i);}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){const e=this.canonical.z-t;return t>this.canonical.z?new Np(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Np(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}calculateScaledKey(t,e=!0){if(this.overscaledZ===t&&e)return this.key;if(t>this.canonical.z)return Gp(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y);{const r=this.canonical.z-t;return Gp(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)}}isChildOf(t){if(t.wrap!==this.wrap)return !1;const e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new Np(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new Np(e,this.wrap,e,r,n),new Np(e,this.wrap,e,r+1,n),new Np(e,this.wrap,e,r,n+1),new Np(e,this.wrap,e,r+1,n+1)]}isLessThan(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))}wrapped(){return new Np(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(t){return new Np(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new qp(this.wrap,this.canonical)}toString(){return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}}function Gp(t,e,r,n,i){const s=1<<Math.min(r,22);let a=s*(i%s)+n%s;return t&&r<22&&(a+=s*s*((t<0?-2*t-1:2*t)%(1<<2*(22-r)))),16*(32*a+r)+(e-r)}function Zp(t,e){if(!e.isReprojectedInTileSpace)return {scale:1<<t.z,x:t.x,y:t.y,x2:t.x+1,y2:t.y+1,projection:e};const r=Math.pow(2,-t.z),n=t.x*r,i=(t.x+1)*r,s=t.y*r,a=(t.y+1)*r,o=io(n),l=io(i),u=so(s),c=so(a),h=e.project(o,u),p=e.project(l,u),f=e.project(l,c),d=e.project(o,c);let y=Math.min(h.x,p.x,f.x,d.x),m=Math.min(h.y,p.y,f.y,d.y),g=Math.max(h.x,p.x,f.x,d.x),x=Math.max(h.y,p.y,f.y,d.y);const v=r/16;function b(t,r,n,i,s,a){const o=(n+s)/2,l=(i+a)/2,u=e.project(io(o),so(l)),c=Math.max(0,y-u.x,m-u.y,u.x-g,u.y-x);y=Math.min(y,u.x),g=Math.max(g,u.x),m=Math.min(m,u.y),x=Math.max(x,u.y),c>v&&(b(t,u,n,i,o,l),b(u,r,o,l,s,a));}b(h,p,n,s,i,s),b(p,f,i,s,i,a),b(f,d,i,a,n,a),b(d,h,n,a,n,s),y-=v,m-=v,g+=v,x+=v;const _=1/Math.max(g-y,x-m);return {scale:_,x:y*_,y:m*_,x2:g*_,y2:x*_,projection:e}}ai(Op,\"CanonicalTileID\"),ai(Np,\"OverscaledTileID\",{omit:[\"projMatrix\"]});class Xp{constructor(t){this._stringToNumber={},this._numberToString=[];for(let e=0;e<t.length;e++){const r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r;}}encode(t){return this._stringToNumber[t]}decode(t){return this._numberToString[t]}}const Kp=[\"tile\",\"layer\",\"source\",\"sourceLayer\",\"state\"];class Yp{constructor(t,e,r,n,i){this.type=\"Feature\",this._vectorTileFeature=t,this._z=e,this._x=r,this._y=n,this.properties=t.properties,this.id=i;}get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._x,this._y,this._z).geometry),this._geometry}set geometry(t){this._geometry=t;}toJSON(){const t={type:\"Feature\",geometry:this.geometry,properties:this.properties};void 0!==this.id&&(t.id=this.id);for(const e of Kp)void 0!==this[e]&&(t[e]=this[e]);return t}}const Hp=32,Wp=33,Jp=new Uint16Array(8184);for(let t=0;t<2046;t++){let e=t+2,r=0,n=0,i=0,s=0,a=0,o=0;for(1&e?i=s=a=Hp:r=n=o=Hp;(e>>=1)>1;){const t=r+i>>1,l=n+s>>1;1&e?(i=r,s=n,r=a,n=o):(r=i,n=s,i=a,s=o),a=t,o=l;}const l=4*t;Jp[l+0]=r,Jp[l+1]=n,Jp[l+2]=i,Jp[l+3]=s;}const Qp=new Uint16Array(2178),tf=new Uint8Array(1089),ef=new Uint16Array(1089);function rf(t){return 0===t?-.03125:32===t?.03125:0}var nf=ks([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);const sf={type:2,extent:Ya,loadGeometry:()=>[[new i(0,0),new i(8193,0),new i(8193,8193),new i(0,8193),new i(0,0)]]};class af{constructor(t,e,r,n,i){this.tileID=t,this.uid=w(),this.uses=0,this.tileSize=e,this.tileZoom=r,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.isRaster=i,this.expiredRequestCount=0,this.state=\"loading\",n&&n.transform&&(this.projection=n.transform.projection);}registerFadeDuration(t){const e=t+this.timeAdded;e<N.now()||this.fadeEndTime&&e<this.fadeEndTime||(this.fadeEndTime=e);}wasRequested(){return \"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state}get tileTransform(){return this._tileTransform||(this._tileTransform=Zp(this.tileID.canonical,this.projection)),this._tileTransform}loadVectorData(t,e,r){if(this.unloadVectorData(),this.state=\"loaded\",t){t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestFeatureIndex.rawTileData=t.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=function(t,e){const r={};if(!e)return r;for(const n of t){const t=n.layerIds.map((t=>e.getLayer(t))).filter(Boolean);if(0!==t.length){n.layers=t,n.stateDependentLayerIds&&(n.stateDependentLayers=n.stateDependentLayerIds.map((e=>t.filter((t=>t.id===e))[0])));for(const e of t)r[e.id]=n;}}return r}(t.buckets,e.style),this.hasSymbolBuckets=!1;for(const t in this.buckets){const e=this.buckets[t];if(e instanceof tp){if(this.hasSymbolBuckets=!0,!r)break;e.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const t in this.buckets){const e=this.buckets[t];if(e instanceof tp&&e.hasRTLText){this.hasRTLText=!0,is.isLoading()||is.isLoaded()||\"deferred\"!==rs()||ns();break}}this.queryPadding=0;for(const t in this.buckets){const r=this.buckets[t];this.queryPadding=Math.max(this.queryPadding,e.style.getLayer(t).queryRadius(r));}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage),t.lineAtlas&&(this.lineAtlas=t.lineAtlas);}else this.collisionBoxArray=new ea;}unloadVectorData(){if(this.hasData()){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlas&&(this.imageAtlas=null),this.lineAtlas&&(this.lineAtlas=null),this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.lineAtlasTexture&&this.lineAtlasTexture.destroy(),this._tileBoundsBuffer&&(this._tileBoundsBuffer.destroy(),this._tileBoundsIndexBuffer.destroy(),this._tileBoundsSegments.destroy(),this._tileBoundsBuffer=null),this._tileDebugBuffer&&(this._tileDebugBuffer.destroy(),this._tileDebugIndexBuffer.destroy(),this._tileDebugSegments.destroy(),this._tileDebugBuffer=null),this._globeTileDebugBorderBuffer&&(this._globeTileDebugBorderBuffer.destroy(),this._globeTileDebugBorderBuffer=null),this._tileDebugTextBuffer&&(this._tileDebugTextBuffer.destroy(),this._tileDebugTextSegments.destroy(),this._tileDebugTextIndexBuffer.destroy(),this._tileDebugTextBuffer=null),this._globeTileDebugTextBuffer&&(this._globeTileDebugTextBuffer.destroy(),this._globeTileDebugTextBuffer=null),this.latestFeatureIndex=null,this.state=\"unloaded\";}}getBucket(t){return this.buckets[t.id]}upload(t){for(const e in this.buckets){const r=this.buckets[e];r.uploadPending()&&r.upload(t);}const e=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new hp(t,this.imageAtlas.image,e.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new hp(t,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null),this.lineAtlas&&!this.lineAtlas.uploaded&&(this.lineAtlasTexture=new hp(t,this.lineAtlas.image,e.ALPHA),this.lineAtlas.uploaded=!0);}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture);}queryRenderedFeatures(t,e,r,n,i,s,a,o){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({tileResult:n,pixelPosMatrix:a,transform:s,params:i,tileTransform:this.tileTransform},t,e,r):{}}querySourceFeatures(t,e){const r=this.latestFeatureIndex;if(!r||!r.rawTileData)return;const n=r.loadVTLayers(),i=e?e.sourceLayer:\"\",s=n._geojsonTileLayer||n[i];if(!s)return;const a=Sn(e&&e.filter),{z:o,x:l,y:u}=this.tileID.canonical,c={z:o,x:l,y:u};for(let e=0;e<s.length;e++){const n=s.feature(e);if(a.needGeometry){const t=mo(n,!0);if(!a.filter(new ss(this.tileID.overscaledZ),t,this.tileID.canonical))continue}else if(!a.filter(new ss(this.tileID.overscaledZ),n))continue;const h=r.getId(n,i),p=new Yp(n,o,l,u,h);p.tile=c,t.push(p);}}hasData(){return \"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state}patternsLoaded(){return !!this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(t){const e=this.expirationTime;if(t.cacheControl){const e=F(t.cacheControl);e[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*e[\"max-age\"]);}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){const t=Date.now();let r=!1;if(this.expirationTime>t)r=!1;else if(e)if(this.expirationTime<e)r=!0;else {const n=this.expirationTime-e;n?this.expirationTime=t+Math.max(n,3e4):r=!0;}else r=!0;r?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0;}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)}setFeatureState(t,e){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||0===Object.keys(t).length||!e)return;const r=this.latestFeatureIndex.loadVTLayers(),n=e.style.listImages();for(const i in this.buckets){if(!e.style.hasLayer(i))continue;const s=this.buckets[i],a=s.layers[0].sourceLayer||\"_geojsonTileLayer\",o=r[a],l=t[a];if(!o||!l||0===Object.keys(l).length)continue;if(s.update(l,o,n,this.imageAtlas&&this.imageAtlas.patternPositions||{}),s instanceof Qu||s instanceof xu){const t=e.style._getSourceCache(s.layers[0].source);e._terrain&&e._terrain.enabled&&t&&s.programConfigurations.needsUpload&&e._terrain._clearRenderCacheForTile(t.id,this.tileID);}const u=e&&e.style&&e.style.getLayer(i);u&&(this.queryPadding=Math.max(this.queryPadding,u.queryRadius(s)));}}holdingForFade(){return void 0!==this.symbolFadeHoldUntil}symbolFadeFinished(){return !this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<N.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0;}setHoldDuration(t){this.symbolFadeHoldUntil=N.now()+t;}setTexture(t,e){const r=e.context,n=r.gl;this.texture=e.getTileTexture(t.width),this.texture?this.texture.update(t,{useMipmap:!0}):(this.texture=new hp(r,t,n.RGBA,{useMipmap:!0}),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE),r.extTextureFilterAnisotropic&&n.texParameterf(n.TEXTURE_2D,r.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,r.extTextureFilterAnisotropicMax));}setDependencies(t,e){const r={};for(const t of e)r[t]=!0;this.dependencies[t]=r;}hasDependency(t,e){for(const r of t){const t=this.dependencies[r];if(t)for(const r of e)if(t[r])return !0}return !1}clearQueryDebugViz(){}_makeDebugTileBoundsBuffers(t,e){if(!e||\"mercator\"===e.name||this._tileDebugBuffer)return;const r=yo(sf,this.tileID.canonical,this.tileTransform)[0],n=new Is,i=new Ys;for(let t=0;t<r.length;t++){const{x:e,y:s}=r[t];n.emplaceBack(e,s),i.emplaceBack(t);}i.emplaceBack(0),this._tileDebugIndexBuffer=t.createIndexBuffer(i),this._tileDebugBuffer=t.createVertexBuffer(n,_p.members),this._tileDebugSegments=Ka.simpleSegment(0,0,n.length,i.length);}_makeTileBoundsBuffers(t,e){if(this._tileBoundsBuffer||!e||\"mercator\"===e.name)return;const r=yo(sf,this.tileID.canonical,this.tileTransform)[0];let n,i;if(this.isRaster){const t=function(t,e){const r=Zp(t,e),n=Math.pow(2,t.z);for(let i=0;i<Wp;i++)for(let s=0;s<Wp;s++){const a=io((t.x+(s+rf(s))/Hp)/n),o=so((t.y+(i+rf(i))/Hp)/n),l=e.project(a,o),u=i*Wp+s;Qp[2*u+0]=Math.round((l.x*r.scale-r.x)*Ya),Qp[2*u+1]=Math.round((l.y*r.scale-r.y)*Ya);}tf.fill(0),ef.fill(0);for(let t=2045;t>=0;t--){const e=4*t,r=Jp[e+0],n=Jp[e+1],i=Jp[e+2],s=Jp[e+3],a=r+i>>1,o=n+s>>1,l=a+o-n,u=o+r-a,c=n*Wp+r,h=s*Wp+i,p=o*Wp+a,f=Math.hypot((Qp[2*c+0]+Qp[2*h+0])/2-Qp[2*p+0],(Qp[2*c+1]+Qp[2*h+1])/2-Qp[2*p+1])>=16;if(tf[p]=tf[p]||(f?1:0),t<1022){const t=(n+u>>1)*Wp+(r+l>>1),e=(s+u>>1)*Wp+(i+l>>1);tf[p]=tf[p]||tf[t]||tf[e];}}const i=new Ts,s=new js;let a=0;function o(t,e){const r=e*Wp+t;return 0===ef[r]&&(i.emplaceBack(Qp[2*r+0],Qp[2*r+1],t*Ya/Hp,e*Ya/Hp),ef[r]=++a),ef[r]-1}function l(t,e,r,n,i,a){const u=t+r>>1,c=e+n>>1;if(Math.abs(t-i)+Math.abs(e-a)>1&&tf[c*Wp+u])l(i,a,t,e,u,c),l(r,n,i,a,u,c);else {const l=o(t,e),u=o(r,n),c=o(i,a);s.emplaceBack(l,u,c);}}return l(0,0,Hp,Hp,Hp,0),l(Hp,Hp,0,0,0,Hp),{vertices:i,indices:s}}(this.tileID.canonical,e);n=t.vertices,i=t.indices;}else {n=new Ts,i=new js;for(const{x:t,y:e}of r)n.emplaceBack(t,e,0,0);const t=Fl(n.int16,void 0,4);for(let e=0;e<t.length;e+=3)i.emplaceBack(t[e],t[e+1],t[e+2]);}this._tileBoundsBuffer=t.createVertexBuffer(n,nf.members),this._tileBoundsIndexBuffer=t.createIndexBuffer(i),this._tileBoundsSegments=Ka.simpleSegment(0,0,n.length,i.length);}_makeGlobeTileDebugBuffers(t,e){if(this._globeTileDebugBorderBuffer||this._globeTileDebugTextBuffer||!e||\"globe\"!==e.name)return;const r=this.tileID.canonical,n=Vp(Tp(r));this._makeGlobeTileDebugBorderBuffer(t,r,n),this._makeGlobeTileDebugTextBuffer(t,r,n);}_makeGlobeTileDebugBorderBuffer(t,e,r){const n=new Is,i=new Ys,s=new Ms,a=(t,a,o,l,u)=>{const c=(o-t)/(u-1),h=(l-a)/(u-1),p=n.length;for(let o=0;o<u;o++){const l=t+o*c,u=a+o*h;n.emplaceBack(l,u);const f=Dp(l,u,e),d=ll(f,f,r);s.emplaceBack(d[0],d[1],d[2]),i.emplaceBack(p+o);}},o=Ya;a(0,0,o,0,16),a(o,0,o,o,16),a(o,o,0,o,16),a(0,o,0,0,16),this._tileDebugIndexBuffer=t.createIndexBuffer(i),this._tileDebugBuffer=t.createVertexBuffer(n,_p.members),this._globeTileDebugBorderBuffer=t.createVertexBuffer(s,bp.members),this._tileDebugSegments=Ka.simpleSegment(0,0,n.length,i.length);}_makeGlobeTileDebugTextBuffer(t,e,r){const n=new Is,i=new js,s=new Ms,a=25;i.reserve(32),n.reserve(a),s.reserve(a);const o=(t,e)=>a*t+e;for(let t=0;t<a;t++){const i=2048*t;for(let t=0;t<a;t++){const a=2048*t;n.emplaceBack(a,i);const o=Dp(a,i,e),l=ll(o,o,r);s.emplaceBack(l[0],l[1],l[2]);}}for(let t=0;t<4;t++)for(let e=0;e<4;e++){const r=o(t,e),n=o(t,e+1),s=o(t+1,e),a=o(t+1,e+1);i.emplaceBack(r,n,s),i.emplaceBack(s,n,a);}this._tileDebugTextIndexBuffer=t.createIndexBuffer(i),this._tileDebugTextBuffer=t.createVertexBuffer(n,_p.members),this._globeTileDebugTextBuffer=t.createVertexBuffer(s,bp.members),this._tileDebugTextSegments=Ka.simpleSegment(0,0,a,32);}}class of{constructor(){this.state={},this.stateChanges={},this.deletedStates={};}updateState(t,e,r){const n=String(e);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][n]=this.stateChanges[t][n]||{},b(this.stateChanges[t][n],r),null===this.deletedStates[t]){this.deletedStates[t]={};for(const e in this.state[t])e!==n&&(this.deletedStates[t][e]=null);}else if(this.deletedStates[t]&&null===this.deletedStates[t][n]){this.deletedStates[t][n]={};for(const e in this.state[t][n])r[e]||(this.deletedStates[t][n][e]=null);}else for(const e in r)this.deletedStates[t]&&this.deletedStates[t][n]&&null===this.deletedStates[t][n][e]&&delete this.deletedStates[t][n][e];}removeFeatureState(t,e,r){if(null===this.deletedStates[t])return;const n=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},r&&void 0!==e)null!==this.deletedStates[t][n]&&(this.deletedStates[t][n]=this.deletedStates[t][n]||{},this.deletedStates[t][n][r]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][n])for(r in this.deletedStates[t][n]={},this.stateChanges[t][n])this.deletedStates[t][n][r]=null;else this.deletedStates[t][n]=null;else this.deletedStates[t]=null;}getState(t,e){const r=String(e),n=b({},(this.state[t]||{})[r],(this.stateChanges[t]||{})[r]);if(null===this.deletedStates[t])return {};if(this.deletedStates[t]){const r=this.deletedStates[t][e];if(null===r)return {};for(const t in r)delete n[t];}return n}initializeTileState(t,e){t.setFeatureState(this.state,e);}coalesceChanges(t,e){const r={};for(const t in this.stateChanges){this.state[t]=this.state[t]||{};const e={};for(const r in this.stateChanges[t])this.state[t][r]||(this.state[t][r]={}),b(this.state[t][r],this.stateChanges[t][r]),e[r]=this.state[t][r];r[t]=e;}for(const t in this.deletedStates){this.state[t]=this.state[t]||{};const e={};if(null===this.deletedStates[t])for(const r in this.state[t])e[r]={},this.state[t][r]={};else for(const r in this.deletedStates[t]){if(null===this.deletedStates[t][r])this.state[t][r]={};else for(const e of Object.keys(this.deletedStates[t][r]))delete this.state[t][r][e];e[r]=this.state[t][r];}r[t]=r[t]||{},b(r[t],e);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(r).length)for(const n in t)t[n].setFeatureState(r,e);}}class lf{constructor(t){this.size=t,this.minimums=[],this.maximums=[],this.leaves=[];}getElevation(t,e){const r=this.toIdx(t,e);return {min:this.minimums[r],max:this.maximums[r]}}isLeaf(t,e){return this.leaves[this.toIdx(t,e)]}toIdx(t,e){return e*this.size+t}}function uf(t,e,r,n){let i=0,s=Number.MAX_VALUE;for(let a=0;a<3;a++)if(Math.abs(n[a])<1e-15){if(r[a]<t[a]||r[a]>e[a])return null}else {const o=1/n[a];let l=(t[a]-r[a])*o,u=(e[a]-r[a])*o;if(l>u){const t=l;l=u,u=t;}if(l>i&&(i=l),u<s&&(s=u),i>s)return null}return i}function cf(t,e,r,n,i,s,a,o,l,u,c){const h=n-t,p=i-e,f=s-r,d=a-t,y=o-e,m=l-r,g=c[1]*m-c[2]*y,x=c[2]*d-c[0]*m,v=c[0]*y-c[1]*d,b=h*g+p*x+f*v;if(Math.abs(b)<1e-15)return null;const _=1/b,w=u[0]-t,A=u[1]-e,k=u[2]-r,S=(w*g+A*x+k*v)*_;if(S<0||S>1)return null;const I=A*f-k*p,M=k*h-w*f,T=w*p-A*h,z=(c[0]*I+c[1]*M+c[2]*T)*_;return z<0||S+z>1?null:(d*I+y*M+m*T)*_}function hf(t,e,r){return (t-e)/(r-e)}function pf(t,e,r,n,i,s,a,o,l){const u=1<<r,c=s-n,h=a-i,p=(t+1)/u*c+n,f=(e+0)/u*h+i,d=(e+1)/u*h+i;o[0]=(t+0)/u*c+n,o[1]=f,l[0]=p,l[1]=d;}class ff{constructor(t){if(this.maximums=[],this.minimums=[],this.leaves=[],this.childOffsets=[],this.nodeCount=0,this.dem=t,this._siblingOffset=[[0,0],[1,0],[0,1],[1,1]],!this.dem)return;const e=function(t){const e=Math.ceil(Math.log2(t.dim/8)),r=[];let n=Math.ceil(Math.pow(2,e));const i=1/n,s=(t,e,r,n,i)=>{const s=n?1:0,a=(t+1)*r-s,o=e*r,l=(e+1)*r-s;i[0]=t*r,i[1]=o,i[2]=a,i[3]=l;};let a=new lf(n);const o=[];for(let e=0;e<n*n;e++){s(e%n,Math.floor(e/n),i,!1,o);const r=yf(o[0],o[1],t),l=yf(o[2],o[1],t),u=yf(o[2],o[3],t),c=yf(o[0],o[3],t);a.minimums.push(Math.min(r,l,u,c)),a.maximums.push(Math.max(r,l,u,c)),a.leaves.push(1);}for(r.push(a),n/=2;n>=1;n/=2){const t=r[r.length-1];a=new lf(n);for(let e=0;e<n*n;e++){s(e%n,Math.floor(e/n),2,!0,o);const r=t.getElevation(o[0],o[1]),i=t.getElevation(o[2],o[1]),l=t.getElevation(o[2],o[3]),u=t.getElevation(o[0],o[3]),c=t.isLeaf(o[0],o[1]),h=t.isLeaf(o[2],o[1]),p=t.isLeaf(o[2],o[3]),f=t.isLeaf(o[0],o[3]),d=Math.min(r.min,i.min,l.min,u.min),y=Math.max(r.max,i.max,l.max,u.max),m=c&&h&&p&&f;a.maximums.push(y),a.minimums.push(d),a.leaves.push(y-d<=5&&m?1:0);}r.push(a);}return r}(this.dem),r=e.length-1,n=e[r];this._addNode(n.minimums[0],n.maximums[0],n.leaves[0]),this._construct(e,0,0,r,0);}raycastRoot(t,e,r,n,i,s,a=1){return uf([t,e,-100],[r,n,this.maximums[0]*a],i,s)}raycast(t,e,r,n,i,s,a=1){if(!this.nodeCount)return null;const o=this.raycastRoot(t,e,r,n,i,s,a);if(null==o)return null;const l=[],u=[],c=[],h=[],p=[{idx:0,t:o,nodex:0,nodey:0,depth:0}];for(;p.length>0;){const{idx:o,t:f,nodex:d,nodey:y,depth:m}=p.pop();if(this.leaves[o]){pf(d,y,m,t,e,r,n,c,h);const o=1<<m,l=(d+0)/o,u=(d+1)/o,p=(y+0)/o,g=(y+1)/o,x=yf(l,p,this.dem)*a,v=yf(u,p,this.dem)*a,b=yf(u,g,this.dem)*a,_=yf(l,g,this.dem)*a,w=cf(c[0],c[1],x,h[0],c[1],v,h[0],h[1],b,i,s),A=cf(h[0],h[1],b,c[0],h[1],_,c[0],c[1],x,i,s),k=Math.min(null!==w?w:Number.MAX_VALUE,null!==A?A:Number.MAX_VALUE);if(k!==Number.MAX_VALUE)return k;{const t=il([],i,s,f);if(df(x,v,_,b,hf(t[0],c[0],h[0]),hf(t[1],c[1],h[1]))>=t[2])return f}continue}let g=0;for(let p=0;p<this._siblingOffset.length;p++){pf((d<<1)+this._siblingOffset[p][0],(y<<1)+this._siblingOffset[p][1],m+1,t,e,r,n,c,h),c[2]=-100,h[2]=this.maximums[this.childOffsets[o]+p]*a;const f=uf(c,h,i,s);if(null!=f){const t=f;l[p]=t;let e=!1;for(let r=0;r<g&&!e;r++)t>=l[u[r]]&&(u.splice(r,0,p),e=!0);e||(u[g]=p),g++;}}for(let t=0;t<g;t++){const e=u[t];p.push({idx:this.childOffsets[o]+e,t:l[e],nodex:(d<<1)+this._siblingOffset[e][0],nodey:(y<<1)+this._siblingOffset[e][1],depth:m+1});}}return null}_addNode(t,e,r){return this.minimums.push(t),this.maximums.push(e),this.leaves.push(r),this.childOffsets.push(0),this.nodeCount++}_construct(t,e,r,n,i){if(1===t[n].isLeaf(e,r))return;this.childOffsets[i]||(this.childOffsets[i]=this.nodeCount);const s=n-1,a=t[s];let o=0,l=0;for(let t=0;t<this._siblingOffset.length;t++){const n=2*e+this._siblingOffset[t][0],i=2*r+this._siblingOffset[t][1],s=a.getElevation(n,i),u=a.isLeaf(n,i),c=this._addNode(s.min,s.max,u);u&&(o|=1<<t),l||(l=c);}for(let n=0;n<this._siblingOffset.length;n++)o&1<<n||this._construct(t,2*e+this._siblingOffset[n][0],2*r+this._siblingOffset[n][1],s,l+n);}}function df(t,e,r,n,i,s){return rr(rr(t,r,s),rr(e,n,s),i)}function yf(t,e,r){const n=r.dim,i=y(t*n-.5,0,n-1),s=y(e*n-.5,0,n-1),a=Math.floor(i),o=Math.floor(s),l=Math.min(a+1,n-1),u=Math.min(o+1,n-1);return df(r.get(a,o),r.get(l,o),r.get(a,u),r.get(l,u),i-a,s-o)}const mf={mapbox:[6553.6,25.6,.1,1e4],terrarium:[256,1,1/256,32768]};class gf{get tree(){return this._tree||this._buildQuadTree(),this._tree}constructor(t,e,r,n=!1,i=!1){if(this.uid=t,e.height!==e.width)throw new RangeError(\"DEM tiles must be square\");if(r&&\"mapbox\"!==r&&\"terrarium\"!==r)return C(`\"${r}\" is not a valid encoding type. Valid types include \"mapbox\" and \"terrarium\".`);this.stride=e.height;const s=this.dim=e.height-2,a=new Uint32Array(e.data.buffer);if(this.pixels=new Uint8Array(e.data.buffer),this.encoding=r||\"mapbox\",this.borderReady=n,!n){for(let t=0;t<s;t++)a[this._idx(-1,t)]=a[this._idx(0,t)],a[this._idx(s,t)]=a[this._idx(s-1,t)],a[this._idx(t,-1)]=a[this._idx(t,0)],a[this._idx(t,s)]=a[this._idx(t,s-1)];a[this._idx(-1,-1)]=a[this._idx(0,0)],a[this._idx(s,-1)]=a[this._idx(s-1,0)],a[this._idx(-1,s)]=a[this._idx(0,s-1)],a[this._idx(s,s)]=a[this._idx(s-1,s-1)],i&&this._buildQuadTree();}}_buildQuadTree(){this._tree=new ff(this);}get(t,e,r=!1){r&&(t=y(t,-1,this.dim),e=y(e,-1,this.dim));const n=4*this._idx(t,e);return (\"terrarium\"===this.encoding?this._unpackTerrarium:this._unpackMapbox)(this.pixels[n],this.pixels[n+1],this.pixels[n+2])}static getUnpackVector(t){return mf[t]}get unpackVector(){return mf[this.encoding]}_idx(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)}_unpackMapbox(t,e,r){return (256*t*256+256*e+r)/10-1e4}_unpackTerrarium(t,e,r){return 256*t+e+r/256-32768}static pack(t,e){const r=[0,0,0,0],n=gf.getUnpackVector(e);let i=Math.floor((t+n[3])/n[2]);return r[2]=i%256,i=Math.floor(i/256),r[1]=i%256,i=Math.floor(i/256),r[0]=i,r}getPixels(){return new Bl({width:this.stride,height:this.stride},this.pixels)}backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");let n=e*this.dim,i=e*this.dim+this.dim,s=r*this.dim,a=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:s=a-1;break;case 1:a=s+1;}const o=-e*this.dim,l=-r*this.dim;for(let e=s;e<a;e++)for(let r=n;r<i;r++){const n=4*this._idx(r,e),i=4*this._idx(r+o,e+l);this.pixels[n+0]=t.pixels[i+0],this.pixels[n+1]=t.pixels[i+1],this.pixels[n+2]=t.pixels[i+2],this.pixels[n+3]=t.pixels[i+3];}}onDeserialize(){this._tree&&(this._tree.dem=this);}}ai(gf,\"DEMData\"),ai(ff,\"DemMinMaxQuadTree\",{omit:[\"dem\"]});class xf{constructor(t,e){this.max=t,this.onRemove=e,this.reset();}reset(){for(const t in this.data)for(const e of this.data[t])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(t,e,r){const n=t.wrapped().key;void 0===this.data[n]&&(this.data[n]=[]);const i={value:e,timeout:void 0};if(void 0!==r&&(i.timeout=setTimeout((()=>{this.remove(t,i);}),r)),this.data[n].push(i),this.order.push(n),this.order.length>this.max){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value}getByKey(t){const e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;const r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}filter(t){const e=[];for(const r in this.data)for(const n of this.data[r])t(n.value)||e.push(n);for(const t of e)this.remove(t.value.tileID,t);}}class vf{constructor(t,e,r){this.func=t,this.mask=e,this.range=r;}}vf.ReadOnly=!1,vf.ReadWrite=!0,vf.disabled=new vf(519,vf.ReadOnly,[0,1]);const bf=7680;class _f{constructor(t,e,r,n,i,s){this.test=t,this.ref=e,this.mask=r,this.fail=n,this.depthFail=i,this.pass=s;}}_f.disabled=new _f({func:519,mask:0},0,0,bf,bf,bf);class wf{constructor(t,e,r){this.blendFunction=t,this.blendColor=e,this.mask=r;}}wf.Replace=[1,0],wf.disabled=new wf(wf.Replace,ce.transparent,[!1,!1,!1,!1]),wf.unblended=new wf(wf.Replace,ce.transparent,[!0,!0,!0,!0]),wf.alphaBlended=new wf([1,771],ce.transparent,[!0,!0,!0,!0]);const Af=1029,kf=2305;class Sf{constructor(t,e,r){this.enable=t,this.mode=e,this.frontFace=r;}}Sf.disabled=new Sf(!1,Af,kf),Sf.backCCW=new Sf(!0,Af,kf),Sf.backCW=new Sf(!0,Af,2304),Sf.frontCW=new Sf(!0,1028,2304),Sf.frontCCW=new Sf(!0,1028,kf);class If extends Ut{constructor(t,e,r){super(),this.id=t,this._onlySymbols=r,e.on(\"data\",(t=>{\"source\"===t.dataType&&\"metadata\"===t.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&\"source\"===t.dataType&&\"content\"===t.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform));})),e.on(\"error\",(()=>{this._sourceErrored=!0;})),this._source=e,this._tiles={},this._cache=new xf(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._minTileCacheSize=e.minTileCacheSize,this._maxTileCacheSize=e.maxTileCacheSize,this._loadedParentTiles={},this._coveredTiles={},this._state=new of,this._isRaster=\"raster\"===this._source.type||\"raster-dem\"===this._source.type||\"custom\"===this._source.type&&\"raster\"===this._source._dataType;}onAdd(t){this.map=t,this._minTileCacheSize=void 0===this._minTileCacheSize&&t?t._minTileCacheSize:this._minTileCacheSize,this._maxTileCacheSize=void 0===this._maxTileCacheSize&&t?t._maxTileCacheSize:this._maxTileCacheSize;}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;for(const t in this._tiles){const e=this._tiles[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return !1}return !0}getSource(){return this._source}pause(){this._paused=!0;}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform);}_loadTile(t,e){return t.isSymbolTile=this._onlySymbols,this._source.loadTile(t,e)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,(()=>{}))}_abortTile(t){if(this._source.abortTile)return this._source.abortTile(t,(()=>{}))}serialize(){return this._source.serialize()}prepare(t){if(this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null),this._source.prepareTile)for(const e in this._tiles){const r=this._tiles[e];this._source.prepareTile(r)&&this.map.painter.terrain&&this.map.painter.terrain._clearRenderCacheForTile(this.id,r.tileID),r.upload(t),r.prepare(this.map.style.imageManager);}else for(const e in this._tiles){const r=this._tiles[e];r.upload(t),r.prepare(this.map.style.imageManager);}}getIds(){return v(this._tiles).map((t=>t.tileID)).sort(Mf).map((t=>t.key))}getRenderableIds(t){const e=[];for(const r in this._tiles)this._isIdRenderable(+r,t)&&e.push(this._tiles[r]);return t?e.sort(((t,e)=>{const r=t.tileID,n=e.tileID,s=new i(r.canonical.x,r.canonical.y)._rotate(this.transform.angle),a=new i(n.canonical.x,n.canonical.y)._rotate(this.transform.angle);return r.overscaledZ-n.overscaledZ||a.y-s.y||a.x-s.x})).map((t=>t.tileID.key)):e.map((t=>t.tileID)).sort(Mf).map((t=>t.key))}hasRenderableParent(t){const e=this.findLoadedParent(t,0);return !!e&&this._isIdRenderable(e.tileID.key)}_isIdRenderable(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else {this._cache.reset();for(const t in this._tiles)\"errored\"!==this._tiles[t].state&&this._reloadTile(+t,\"reloading\");}}_reloadTile(t,e){const r=this._tiles[t];r&&(\"loading\"!==r.state&&(r.state=e),this._loadTile(r,this._tileLoaded.bind(this,r,t,e)));}_tileLoaded(t,e,r,n){if(n)if(t.state=\"errored\",404!==n.status)this._source.fire(new Rt(n,{tile:t}));else if(\"raster-dem\"===this._source.type&&this.usedForTerrain&&this.map.painter.terrain){const t=this.map.painter.terrain;this.update(this.transform,t.getScaledDemTileSize(),!0),t.resetTileLookupCache(this.id);}else this.update(this.transform);else t.timeAdded=N.now(),\"expired\"===r&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(e,t),\"raster-dem\"===this._source.type&&t.dem&&this._backfillDEM(t),this._state.initializeTileState(t,this.map?this.map.painter:null),this._source.fire(new Lt(\"data\",{dataType:\"source\",tile:t,coord:t.tileID,sourceCacheId:this.id}));}_backfillDEM(t){const e=this.getRenderableIds();for(let n=0;n<e.length;n++){const i=e[n];if(t.neighboringTiles&&t.neighboringTiles[i]){const e=this.getTileByID(i);r(t,e),r(e,t);}}function r(t,e){if(!t.dem||t.dem.borderReady)return;t.needsHillshadePrepare=!0,t.needsDEMTextureUpload=!0;let r=e.tileID.canonical.x-t.tileID.canonical.x;const n=e.tileID.canonical.y-t.tileID.canonical.y,i=Math.pow(2,t.tileID.canonical.z),s=e.tileID.key;0===r&&0===n||Math.abs(n)>1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[s]&&(t.neighboringTiles[s].backfilled=!0)));}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,e,r,n){for(const i in this._tiles){let s=this._tiles[i];if(n[i]||!s.hasData()||s.tileID.overscaledZ<=e||s.tileID.overscaledZ>r)continue;let a=s.tileID;for(;s&&s.tileID.overscaledZ>e+1;){const t=s.tileID.scaledTo(s.tileID.overscaledZ-1);s=this._tiles[t.key],s&&s.hasData()&&(a=t);}let o=a;for(;o.overscaledZ>e;)if(o=o.scaledTo(o.overscaledZ-1),t[o.key]){n[a.key]=a;break}}}findLoadedParent(t,e){if(t.key in this._loadedParentTiles){const r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(let r=t.overscaledZ-1;r>=e;r--){const e=t.scaledTo(r),n=this._getLoadedTile(e);if(n)return n}}_getLoadedTile(t){const e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(this._source.reparseOverscaled?t.wrapped().key:t.canonical.key)}updateCacheSize(t,e){e=e||this._source.tileSize;const r=Math.ceil(t.width/e)+1,n=Math.ceil(t.height/e)+1,i=Math.floor(r*n*5),s=\"number\"==typeof this._minTileCacheSize?Math.max(this._minTileCacheSize,i):i,a=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,s):s;this._cache.setMaxSize(a);}handleWrapJump(t){const e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){const t={};for(const r in this._tiles){const n=this._tiles[r];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+e),t[n.tileID.key]=n;}this._tiles=t;for(const t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(const t in this._tiles)this._setTileReloadTimer(+t,this._tiles[t]);}}update(t,e,r){if(this.transform=t,!this._sourceLoaded||this._paused||this.transform.freezeTileCoverage)return;if(this.usedForTerrain&&!r)return;let n;this.updateCacheSize(t,e),\"globe\"!==this.transform.projection.name&&this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?n=t.getVisibleUnwrappedCoordinates(this._source.tileID).map((t=>new Np(t.canonical.z,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y))):(n=t.coveringTiles({tileSize:e||this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!r,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain}),this._source.hasTile&&(n=n.filter((t=>this._source.hasTile(t))))):n=[];const i=this._updateRetainedTiles(n);if(Tf(this._source.type)&&0!==n.length){const t={},e={},r=Object.keys(i);for(const n of r){const r=i[n],s=this._tiles[n];if(!s||s.fadeEndTime&&s.fadeEndTime<=N.now())continue;const a=this.findLoadedParent(r,Math.max(r.overscaledZ-If.maxOverzooming,this._source.minzoom));a&&(this._addTile(a.tileID),t[a.tileID.key]=a.tileID),e[n]=r;}const s=n[n.length-1].overscaledZ;for(const t in this._tiles){const r=this._tiles[t];if(i[t]||!r.hasData())continue;let n=r.tileID;for(;n.overscaledZ>s;){n=n.scaledTo(n.overscaledZ-1);const s=this._tiles[n.key];if(s&&s.hasData()&&e[n.key]){i[t]=r.tileID;break}}}for(const e in t)i[e]||(this._coveredTiles[e]=!0,i[e]=t[e]);}for(const t in i)this._tiles[t].clearFadeHold();const s=function(t,e){const r=[];for(const n in t)n in e||r.push(n);return r}(this._tiles,i);for(const t of s){const e=this._tiles[t];e.hasSymbolBuckets&&!e.holdingForFade()?e.setHoldDuration(this.map._fadeDuration):e.hasSymbolBuckets&&!e.symbolFadeFinished()||this._removeTile(+t);}this._updateLoadedParentTileCache(),this._onlySymbols&&this._source.afterUpdate&&this._source.afterUpdate();}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(+t);}_updateRetainedTiles(t){const e={};if(0===t.length)return e;const r={},n=t.reduce(((t,e)=>Math.min(t,e.overscaledZ)),1/0),i=t[0].overscaledZ,s=Math.max(i-If.maxOverzooming,this._source.minzoom),a=Math.max(i+If.maxUnderzooming,this._source.minzoom),o={};for(const r of t){const t=this._addTile(r);e[r.key]=r,t.hasData()||n<this._source.maxzoom&&(o[r.key]=r);}this._retainLoadedChildren(o,n,a,e);for(const n of t){let t=this._tiles[n.key];if(t.hasData())continue;if(n.canonical.z>=this._source.maxzoom){const t=n.children(this._source.maxzoom)[0],r=this.getTile(t);if(r&&r.hasData()){e[t.key]=t;continue}}else {const t=n.children(this._source.maxzoom);if(e[t[0].key]&&e[t[1].key]&&e[t[2].key]&&e[t[3].key])continue}let i=t.wasRequested();for(let a=n.overscaledZ-1;a>=s;--a){const s=n.scaledTo(a);if(r[s.key])break;if(r[s.key]=!0,t=this.getTile(s),!t&&i&&(t=this._addTile(s)),t&&(e[s.key]=s,i=t.wasRequested(),t.hasData()))break}}return e}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const e=[];let r,n=this._tiles[t].tileID;for(;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);const t=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(t),r)break;n=t;}for(const t of e)this._loadedParentTiles[t]=r;}}_addTile(t){let e=this._tiles[t.key];if(e)return this._source.prepareTile&&this._source.prepareTile(e),e;e=this._cache.getAndRemove(t),e&&(this._setTileReloadTimer(t.key,e),e.tileID=t,this._state.initializeTileState(e,this.map?this.map.painter:null),this._cacheTimers[t.key]&&(clearTimeout(this._cacheTimers[t.key]),delete this._cacheTimers[t.key],this._setTileReloadTimer(t.key,e)));const r=Boolean(e);if(!r){const r=this.map?this.map.painter:null;e=new af(t,this._source.tileSize*t.overscaleFactor(),this.transform.tileZoom,r,this._isRaster),this._source.prepareTile&&this._source.prepareTile(e)||this._loadTile(e,this._tileLoaded.bind(this,e,t.key,e.state));}return e?(e.uses++,this._tiles[t.key]=e,r||this._source.fire(new Lt(\"dataloading\",{tile:e,coord:e.tileID,dataType:\"source\"})),e):null}_setTileReloadTimer(t,e){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const r=e.getExpiryTimeout();r&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,\"expired\"),delete this._timers[t];}),r));}_removeTile(t){const e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(+t);this._source._clear&&this._source._clear(),this._cache.reset(),this.map&&this.usedForTerrain&&this.map.painter.terrain&&this.map.painter.terrain.resetTileLookupCache(this.id);}tilesIn(t,e,r){const n=[],i=this.transform;if(!i)return n;for(const s in this._tiles){const a=this._tiles[s];if(r&&a.clearQueryDebugViz(),a.holdingForFade())continue;const o=t.containsTile(a,i,e);o&&n.push(o);}return n}getVisibleCoordinates(t){const e=this.getRenderableIds(t).map((t=>this._tiles[t].tileID));for(const t of e)t.projMatrix=this.transform.calculateProjMatrix(t.toUnwrapped());return e}hasTransition(){if(this._source.hasTransition())return !0;if(Tf(this._source.type))for(const t in this._tiles){const e=this._tiles[t];if(void 0!==e.fadeEndTime&&e.fadeEndTime>=N.now())return !0}return !1}setFeatureState(t,e,r){this._state.updateState(t=t||\"_geojsonTileLayer\",e,r);}removeFeatureState(t,e,r){this._state.removeFeatureState(t=t||\"_geojsonTileLayer\",e,r);}getFeatureState(t,e){return this._state.getState(t=t||\"_geojsonTileLayer\",e)}setDependencies(t,e,r){const n=this._tiles[t];n&&n.setDependencies(e,r);}reloadTilesForDependencies(t,e){for(const r in this._tiles)this._tiles[r].hasDependency(t,e)&&this._reloadTile(+r,\"reloading\");this._cache.filter((r=>!r.hasDependency(t,e)));}_preloadTiles(t,e){const r=new Map,n=Array.isArray(t)?t:[t],i=this.map.painter.terrain,s=this.usedForTerrain&&i?i.getScaledDemTileSize():this._source.tileSize;for(const t of n){const e=t.coveringTiles({tileSize:s,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!this.usedForTerrain,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain});for(const t of e)r.set(t.key,t);this.usedForTerrain&&t.updateElevation(!1);}x(Array.from(r.values()),((t,e)=>{const r=new af(t,this._source.tileSize*t.overscaleFactor(),this.transform.tileZoom,this.map.painter,this._isRaster);this._loadTile(r,(t=>{\"raster-dem\"===this._source.type&&r.dem&&this._backfillDEM(r),e(t,r);}));}),e);}}function Mf(t,e){const r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Tf(t){return \"raster\"===t||\"image\"===t||\"video\"===t}If.maxOverzooming=10,If.maxUnderzooming=3;class zf{constructor(t,e,r){this._demTile=t,this._dem=this._demTile.dem,this._scale=e,this._offset=r;}static create(t,e,r){const n=r||t.findDEMTileFor(e);if(!n||!n.dem)return;const i=n.dem,s=n.tileID,a=1<<e.canonical.z-s.canonical.z;return new zf(n,n.tileSize/Ya/a,[(e.canonical.x/a-s.canonical.x)*i.dim,(e.canonical.y/a-s.canonical.y)*i.dim])}tileCoordToPixel(t,e){const r=e*this._scale+this._offset[1],n=Math.floor(t*this._scale+this._offset[0]),s=Math.floor(r);return new i(n,s)}getElevationAt(t,e,r,n){const i=t*this._scale+this._offset[0],s=e*this._scale+this._offset[1],a=Math.floor(i),o=Math.floor(s),l=this._dem;return n=!!n,r?rr(rr(l.get(a,o,n),l.get(a,o+1,n),s-o),rr(l.get(a+1,o,n),l.get(a+1,o+1,n),s-o),i-a):l.get(a,o,n)}getElevationAtPixel(t,e,r){return this._dem.get(t,e,!!r)}getMeterToDEM(t){return (1<<this._demTile.tileID.canonical.z)*no(1,t)*this._dem.stride}}class Bf{constructor(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new ni(Ya,16,0),this.featureIndexArray=new ua,this.promoteId=e;}insert(t,e,r,n,i,s=0){const a=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i,s);const o=this.grid;for(let t=0;t<e.length;t++){const r=e[t],n=[1/0,1/0,-1/0,-1/0];for(let t=0;t<r.length;t++){const e=r[t];n[0]=Math.min(n[0],e.x),n[1]=Math.min(n[1],e.y),n[2]=Math.max(n[2],e.x),n[3]=Math.max(n[3],e.y);}n[0]<Ya&&n[1]<Ya&&n[2]>=0&&n[3]>=0&&o.insert(a,n[0],n[1],n[2],n[3]);}}loadVTLayers(){if(!this.vtLayers){this.vtLayers=new Du.VectorTile(new wc(this.rawTileData)).layers,this.sourceLayerCoder=new Xp(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"]),this.vtFeatures={};for(const t in this.vtLayers)this.vtFeatures[t]=[];}return this.vtLayers}query(t,e,r,n){this.loadVTLayers();const i=t.params||{},s=Sn(i.filter),a=t.tileResult,o=t.transform,l=a.bufferedTilespaceBounds,u=this.grid.query(l.min.x,l.min.y,l.max.x,l.max.y,((t,e,r,n)=>Bo(a.bufferedTilespaceGeometry,t,e,r,n)));u.sort(Cf);let c=null;o.elevation&&u.length>0&&(c=zf.create(o.elevation,this.tileID));const h={};let p;for(let o=0;o<u.length;o++){const l=u[o];if(l===p)continue;p=l;const f=this.featureIndexArray.get(l);let d=null;this.loadMatchingFeature(h,f,s,i.layers,i.availableImages,e,r,n,((e,r,n,i=0)=>(d||(d=yo(e,this.tileID.canonical,t.tileTransform)),r.queryIntersectsFeature(a,e,n,d,this.z,t.transform,t.pixelPosMatrix,c,i))));}return h}loadMatchingFeature(t,e,r,n,i,s,a,o,l){const{featureIndex:u,bucketIndex:c,sourceLayerIndex:h,layoutVertexArrayOffset:p}=e,f=this.bucketLayerIDs[c];if(n&&!function(t,e){for(let r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return !0;return !1}(n,f))return;const d=this.sourceLayerCoder.decode(h),y=this.vtLayers[d].feature(u);if(r.needGeometry){const t=mo(y,!0);if(!r.filter(new ss(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!r.filter(new ss(this.tileID.overscaledZ),y))return;const m=this.getId(y,d);for(let e=0;e<f.length;e++){const r=f[e];if(n&&n.indexOf(r)<0)continue;const c=s[r];if(!c)continue;let h={};void 0!==m&&o&&(h=o.getState(c.sourceLayer||\"_geojsonTileLayer\",m));const d=b({},a[r]);d.paint=Ef(d.paint,c.paint,y,h,i),d.layout=Ef(d.layout,c.layout,y,h,i);const g=!l||l(y,c,h,p);if(!g)continue;const x=new Yp(y,this.z,this.x,this.y,m);x.layer=d;let v=t[r];void 0===v&&(v=t[r]=[]),v.push({featureIndex:u,feature:x,intersectionZ:g});}}lookupSymbolFeatures(t,e,r,n,i,s,a,o){const l={};this.loadVTLayers();const u=Sn(i);for(const i of t)this.loadMatchingFeature(l,{bucketIndex:r,sourceLayerIndex:n,featureIndex:i,layoutVertexArrayOffset:0},u,s,a,o,e);return l}loadFeature(t){const{featureIndex:e,sourceLayerIndex:r}=t;this.loadVTLayers();const n=this.sourceLayerCoder.decode(r),i=this.vtFeatures[n];if(i[e])return i[e];const s=this.vtLayers[n].feature(e);return i[e]=s,s}hasLayer(t){for(const e of this.bucketLayerIDs)for(const r of e)if(t===r)return !0;return !1}getId(t,e){let r=t.id;return this.promoteId&&(r=t.properties[\"string\"==typeof this.promoteId?this.promoteId:this.promoteId[e]],\"boolean\"==typeof r&&(r=Number(r))),r}}function Ef(t,e,r,n,i){return T(t,((t,s)=>{const a=e instanceof fs?e.get(s):null;return a&&a.evaluate?a.evaluate(r,n,i):a}))}function Cf(t,e){return e-t}ai(Bf,\"FeatureIndex\",{omit:[\"rawTileData\",\"sourceLayerCoder\"]});class Df{constructor(t){const e={},r=[];for(const n in t){const i=t[n],s=e[n]={};for(const t in i.glyphs){const e=i.glyphs[+t];if(!e||0===e.bitmap.width||0===e.bitmap.height)continue;const n=e.metrics.localGlyph?2:1,a={x:0,y:0,w:e.bitmap.width+2*n,h:e.bitmap.height+2*n};r.push(a),s[t]=a;}}const{w:n,h:i}=Gc(r),s=new zl({width:n||1,height:i||1});for(const r in t){const n=t[r];for(const t in n.glyphs){const i=n.glyphs[+t];if(!i||0===i.bitmap.width||0===i.bitmap.height)continue;const a=e[r][t],o=i.metrics.localGlyph?2:1;zl.copy(i.bitmap,s,{x:0,y:0},{x:a.x+o,y:a.y+o},i.bitmap);}}this.image=s,this.positions=e;}}ai(Df,\"GlyphAtlas\");class Pf{constructor(t){this.tileID=new Np(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.tileZoom=t.tileZoom,this.uid=t.uid,this.zoom=t.zoom,this.canonical=t.tileID.canonical,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.enableTerrain=!!t.enableTerrain,this.isSymbolTile=t.isSymbolTile,this.tileTransform=Zp(t.tileID.canonical,t.projection),this.projection=t.projection;}parse(t,e,r,n,i){this.status=\"parsing\",this.data=t,this.collisionBoxArray=new ea;const s=new Xp(Object.keys(t.layers).sort()),a=new Bf(this.tileID,this.promoteId);a.bucketLayerIDs=[];const o={},l=new pp(256,256),u={featureIndex:a,iconDependencies:{},patternDependencies:{},glyphDependencies:{},lineAtlas:l,availableImages:r},c=e.familiesBySource[this.source];for(const e in c){const n=t.layers[e];if(!n)continue;let i=!1,l=!1;for(const t of c[e])\"symbol\"===t[0].type?i=!0:l=!0;if(!0===this.isSymbolTile&&!i)continue;if(!1===this.isSymbolTile&&!l)continue;1===n.version&&C(`Vector tile source \"${this.source}\" layer \"${e}\" does not use vector tile spec v2 and therefore may have some rendering errors.`);const h=s.encode(e),p=[];for(let t=0;t<n.length;t++){const r=n.feature(t),i=a.getId(r,e);p.push({feature:r,id:i,index:t,sourceLayerIndex:h});}for(const t of c[e]){const e=t[0];void 0!==this.isSymbolTile&&\"symbol\"===e.type!==this.isSymbolTile||e.minzoom&&this.zoom<Math.floor(e.minzoom)||e.maxzoom&&this.zoom>=e.maxzoom||\"none\"!==e.visibility&&(Vf(t,this.zoom,r),(o[e.id]=e.createBucket({index:a.bucketLayerIDs.length,layers:t,zoom:this.zoom,canonical:this.canonical,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:h,sourceID:this.source,enableTerrain:this.enableTerrain,projection:this.projection.name,availableImages:r})).populate(p,u,this.tileID.canonical,this.tileTransform),a.bucketLayerIDs.push(t.map((t=>t.id))));}}let h,p,f,d;l.trim();const y={type:\"maybePrepare\",isSymbolTile:this.isSymbolTile,zoom:this.zoom},m=T(u.glyphDependencies,(t=>Object.keys(t).map(Number)));Object.keys(m).length?n.send(\"getGlyphs\",{uid:this.uid,stacks:m},((t,e)=>{h||(h=t,p=e,b.call(this));}),void 0,!1,y):p={};const g=Object.keys(u.iconDependencies);g.length?n.send(\"getImages\",{icons:g,source:this.source,tileID:this.tileID,type:\"icons\"},((t,e)=>{h||(h=t,f=e,b.call(this));}),void 0,!1,y):f={};const x=Object.keys(u.patternDependencies);function b(){if(h)return i(h);if(p&&f&&d){const t=new Df(p),e=new Xc(f,d);for(const n in o){const i=o[n];i instanceof tp?(Vf(i.layers,this.zoom,r),Rh(i,p,t.positions,f,e.iconPositions,this.showCollisionBoxes,r,this.tileID.canonical,this.tileZoom,this.projection)):i.hasPattern&&(i instanceof Qu||i instanceof xu||i instanceof $u)&&(Vf(i.layers,this.zoom,r),i.addFeatures(u,this.tileID.canonical,e.patternPositions,r,this.tileTransform));}this.status=\"done\",i(null,{buckets:v(o).filter((t=>!t.isEmpty())),featureIndex:a,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,lineAtlas:l,imageAtlas:e,glyphMap:this.returnDependencies?p:null,iconMap:this.returnDependencies?f:null,glyphPositions:this.returnDependencies?t.positions:null});}}x.length?n.send(\"getImages\",{icons:x,source:this.source,tileID:this.tileID,type:\"patterns\"},((t,e)=>{h||(h=t,d=e,b.call(this));}),void 0,!1,y):d={},b.call(this);}}function Vf(t,e,r){const n=new ss(e);for(const e of t)e.recalculate(n,r);}class Ff{constructor(t){this.entries={},this.scheduler=t;}request(t,e,r,n){const i=this.entries[t]=this.entries[t]||{callbacks:[]};if(i.result){const[t,r]=i.result;return this.scheduler?this.scheduler.add((()=>{n(t,r);}),e):n(t,r),()=>{}}return i.callbacks.push(n),i.cancel||(i.cancel=r(((r,n)=>{i.result=[r,n];for(const t of i.callbacks)this.scheduler?this.scheduler.add((()=>{t(r,n);}),e):t(r,n);setTimeout((()=>delete this.entries[t]),3e3);}))),()=>{i.result||(i.callbacks=i.callbacks.filter((t=>t!==n)),i.callbacks.length||(i.cancel(),delete this.entries[t]));}}}function Lf(t,e,r){const n=JSON.stringify(t.request);return t.data&&(this.deduped.entries[n]={result:[null,t.data]}),this.deduped.request(n,{type:\"parseTile\",isSymbolTile:t.isSymbolTile,zoom:t.tileZoom},(e=>{const n=Mt(t.request,((t,n,i,s)=>{t?e(t):n&&e(null,{vectorTile:r?void 0:new Du.VectorTile(new wc(n)),rawData:n,cacheControl:i,expires:s});}));return ()=>{n.cancel(),e();}}),e)}const Rf=jo(new Float32Array(16));class Uf{constructor(t){this.name=t.name,this.wrap=!1,this.requiresDraping=!1,this.supportsWorldCopies=!1,this.supportsTerrain=!1,this.supportsFog=!1,this.supportsFreeCamera=!1,this.zAxisUnit=\"meters\",this.isReprojectedInTileSpace=!0,this.unsupportedLayers=[\"custom\"],this.center=[0,0],this.range=[3.5,7];}project(t,e){return {x:0,y:0,z:0}}unproject(t,e){return new Ja(0,0)}projectTilePoint(t,e,r){return {x:t,y:e,z:0}}locationPoint(t,e){return t._coordinatePoint(t.locationCoordinate(e),!1)}pixelsPerMeter(t,e){return no(1,t)*e}farthestPixelDistance(t){return function(t,e){const r=t.fovAboveCenter,n=t.elevation?t.elevation.getMinElevationBelowMSL()*e:0,i=(t._camera.position[2]*t.worldSize-n)/Math.cos(t._pitch),s=Math.sin(r)*i/Math.sin(Math.max(Math.PI/2-t._pitch-r,.01)),a=Math.sin(t._pitch)*s+i;return Math.min(1.01*a,i*(1/t._horizonShift))}(t,t.pixelsPerMeter)}pointCoordinate(t,e,r,n){const s=t.horizonLineFromTop(!1),a=new i(e,Math.max(s,r));return t.rayIntersectionCoordinate(t.pointRayIntersection(a,n))}createInversionMatrix(t,e){return Rf}createTileMatrix(t,e,r){let n,i,s;const a=r.canonical,o=jo(new Float64Array(16));if(this.isReprojectedInTileSpace){const l=Zp(a,this);n=1,i=l.x+r.wrap*l.scale,s=l.y,No(o,o,[n/l.scale,n/l.scale,t.pixelsPerMeter/e]);}else n=e/t.zoomScale(a.z),i=(a.x+Math.pow(2,a.z)*r.wrap)*n,s=a.y*n;return qo(o,o,[i,s,0]),No(o,o,[n/Ya,n/Ya,1]),o}upVector(t,e,r){return [0,0,1]}upVectorScale(t,e,r){return {metersToTile:1,metersToLabelSpace:1}}}class $f extends Uf{constructor(t){super(t),this.wrap=!0,this.supportsWorldCopies=!0,this.supportsTerrain=!0,this.supportsFog=!0,this.supportsFreeCamera=!0,this.isReprojectedInTileSpace=!1,this.unsupportedLayers=[],this.range=null;}project(t,e){return {x:eo(t),y:ro(e),z:0}}unproject(t,e){const r=io(t),n=so(e);return new Ja(r,n)}}class jf extends Uf{constructor(t){super(t),this.range=[4,7],this.center=t.center||[-96,37.5];const[e,r]=this.parallels=t.parallels||[29.5,45.5],n=Math.sin(u(e));this.n=(n+Math.sin(u(r)))/2,this.c=1+n*(2*this.n-n),this.r0=Math.sqrt(this.c)/this.n;}project(t,e){const{n:r,c:n,r0:i}=this,s=u(t-this.center[0]),a=u(e),o=Math.sqrt(n-2*r*Math.sin(a))/r;return {x:o*Math.sin(s*r),y:o*Math.cos(s*r)-i,z:0}}unproject(t,e){const{n:r,c:n,r0:i}=this,s=i+e;let a=Math.atan2(t,Math.abs(s))*Math.sign(s);s*r<0&&(a-=Math.PI*Math.sign(t)*Math.sign(s));const o=u(this.center[0])*r;a=g(a,-Math.PI-o,Math.PI-o);const l=c(a/r)+this.center[0],h=Math.asin(y((n-(t*t+s*s)*r*r)/(2*r),-1,1)),p=y(c(h),-85.051129,oo);return new Ja(l,p)}}const Of=1.340264,qf=-.081106,Nf=893e-6,Gf=.003796,Zf=Math.sqrt(3)/2;class Xf extends Uf{project(t,e){e=e/180*Math.PI,t=t/180*Math.PI;const r=Math.asin(Zf*Math.sin(e)),n=r*r,i=n*n*n;return {x:.5*(t*Math.cos(r)/(Zf*(Of+3*qf*n+i*(7*Nf+9*Gf*n)))/Math.PI+.5),y:1-.5*(r*(Of+qf*n+i*(Nf+Gf*n))/Math.PI+1),z:0}}unproject(t,e){t=(2*t-.5)*Math.PI;let r=e=(2*(1-e)-1)*Math.PI,n=r*r,i=n*n*n;for(let t,s,a,o=0;o<12&&(s=r*(Of+qf*n+i*(Nf+Gf*n))-e,a=Of+3*qf*n+i*(7*Nf+9*Gf*n),t=s/a,r=y(r-t,-Math.PI/3,Math.PI/3),n=r*r,i=n*n*n,!(Math.abs(t)<1e-12));++o);const s=Zf*t*(Of+3*qf*n+i*(7*Nf+9*Gf*n))/Math.cos(r),a=Math.asin(Math.sin(r)/Zf),o=y(180*s/Math.PI,-180,180),l=y(180*a/Math.PI,-85.051129,oo);return new Ja(o,l)}}class Kf extends Uf{constructor(t){super(t),this.wrap=!0,this.supportsWorldCopies=!0;}project(t,e){return {x:.5+t/360,y:.5-e/360,z:0}}unproject(t,e){const r=360*(t-.5),n=y(360*(.5-e),-85.051129,oo);return new Ja(r,n)}}const Yf=Math.PI/2;function Hf(t){return Math.tan((Yf+t)/2)}class Wf extends Uf{constructor(t){super(t),this.center=t.center||[0,30];const[e,r]=this.parallels=t.parallels||[30,30],n=u(e),i=u(r),s=Math.cos(n);this.n=n===i?Math.sin(n):Math.log(s/Math.cos(i))/Math.log(Hf(i)/Hf(n)),this.f=s*Math.pow(Hf(n),this.n)/this.n;}project(t,e){e=u(e),t=u(t-this.center[0]);const r=1e-6,{n:n,f:i}=this;i>0?e<-Yf+r&&(e=-Yf+r):e>Yf-r&&(e=Yf-r);const s=i/Math.pow(Hf(e),n),a=s*Math.sin(n*t),o=i-s*Math.cos(n*t);return {x:.5*(a/Math.PI+.5),y:1-.5*(o/Math.PI+.5),z:0}}unproject(t,e){t=(2*t-.5)*Math.PI,e=(2*(1-e)-.5)*Math.PI;const{n:r,f:n}=this,i=n-e,s=Math.sign(i),a=Math.sign(r)*Math.sqrt(t*t+i*i);let o=Math.atan2(t,Math.abs(i))*s;i*r<0&&(o-=Math.PI*Math.sign(t)*s);const l=y(c(o/r)+this.center[0],-180,180),u=y(c(2*Math.atan(Math.pow(n/a,1/r))-Yf),-85.051129,oo);return new Ja(l,u)}}const Jf=u(oo);class Qf extends Uf{project(t,e){const r=(e=u(e))*e,n=r*r;return {x:.5*((t=u(t))*(.8707-.131979*r+n*(n*(.003971*r-.001529*n)-.013791))/Math.PI+.5),y:1-.5*(e*(1.007226+r*(.015085+n*(.028874*r-.044475-.005916*n)))/Math.PI+1),z:0}}unproject(t,e){t=(2*t-.5)*Math.PI;let r=e=(2*(1-e)-1)*Math.PI,n=25,i=0,s=r*r;do{s=r*r;const t=s*s;i=(r*(1.007226+s*(.015085+t*(.028874*s-.044475-.005916*t)))-e)/(1.007226+s*(.045255+t*(.259866*s-.311325-.005916*11*t))),r=y(r-i,-Jf,Jf);}while(Math.abs(i)>1e-6&&--n>0);s=r*r;const a=y(c(t/(.8707+s*(s*(s*s*s*(.003971-.001529*s)-.013791)-.131979))),-180,180),o=c(r);return new Ja(a,o)}}const td=u(oo);class ed extends Uf{project(t,e){e=u(e),t=u(t);const r=Math.cos(e),n=2/Math.PI,i=Math.acos(r*Math.cos(t/2)),s=Math.sin(i)/i,a=.5*(t*n+2*r*Math.sin(t/2)/s)||0,o=.5*(e+Math.sin(e)/s)||0;return {x:.5*(a/Math.PI+.5),y:1-.5*(o/Math.PI+1),z:0}}unproject(t,e){let r=t=(2*t-.5)*Math.PI,n=e=(2*(1-e)-1)*Math.PI,i=25;const s=1e-6;let a=0,o=0;do{const i=Math.cos(n),s=Math.sin(n),l=2*s*i,u=s*s,c=i*i,h=Math.cos(r/2),p=Math.sin(r/2),f=2*h*p,d=p*p,m=1-c*h*h,g=m?1/m:0,x=m?Math.acos(i*h)*Math.sqrt(1/m):0,v=.5*(2*x*i*p+2*r/Math.PI)-t,b=.5*(x*s+n)-e,_=.5*g*(c*d+x*i*h*u)+1/Math.PI,w=g*(f*l/4-x*s*p),A=.125*g*(l*p-x*s*c*f),k=.5*g*(u*h+x*d*i)+.5,S=w*A-k*_;a=(b*w-v*k)/S,o=(v*A-b*_)/S,r=y(r-a,-Math.PI,Math.PI),n=y(n-o,-td,td);}while((Math.abs(a)>s||Math.abs(o)>s)&&--i>0);return new Ja(c(r),c(n))}}class rd extends Uf{constructor(t){super(t),this.center=t.center||[0,0],this.parallels=t.parallels||[0,0],this.cosPhi=Math.max(.01,Math.cos(u(this.parallels[0]))),this.scale=1/(2*Math.max(Math.PI*this.cosPhi,1/this.cosPhi)),this.wrap=!0,this.supportsWorldCopies=!0;}project(t,e){const{scale:r,cosPhi:n}=this;return {x:u(t)*n*r+.5,y:-Math.sin(u(e))/n*r+.5,z:0}}unproject(t,e){const{scale:r,cosPhi:n}=this,i=-(e-.5)/r,s=y(c((t-.5)/r)/n,-180,180),a=Math.asin(y(i*n,-1,1)),o=y(c(a),-85.051129,oo);return new Ja(s,o)}}t.ARRAY_TYPE=Uo,t.AUTH_ERR_MSG=tt,t.Aabb=vl,t.Actor=class{constructor(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.cancelCallbacks={},I([\"receive\"],this),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=V()?t:a,this.scheduler=new mp;}send(t,e,r,n,i=!1,s){const a=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(r.metadata=s,this.callbacks[a]=r);const o=O(this.globalScope)?void 0:[];return this.target.postMessage({id:a,type:t,hasCallback:!!r,targetMapId:n,mustQueue:i,sourceMapId:this.mapId,data:ui(e,o)},o),{cancel:()=>{r&&delete this.callbacks[a],this.target.postMessage({id:a,type:\"<cancel>\",targetMapId:n,sourceMapId:this.mapId});}}}receive(t){const e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"<cancel>\"===e.type){const t=this.cancelCallbacks[r];delete this.cancelCallbacks[r],t&&t.cancel();}else if(e.mustQueue||V()){const t=this.callbacks[r];this.cancelCallbacks[r]=this.scheduler.add((()=>this.processTask(r,e)),t&&t.metadata||{type:\"message\"});}else this.processTask(r,e);}processTask(t,e){if(\"<response>\"===e.type){const r=this.callbacks[t];delete this.callbacks[t],r&&(e.error?r(ci(e.error)):r(null,ci(e.data)));}else {const r=O(this.globalScope)?void 0:[],n=e.hasCallback?(e,n)=>{delete this.cancelCallbacks[t],this.target.postMessage({id:t,type:\"<response>\",sourceMapId:this.mapId,error:e?ui(e):null,data:ui(n,r)},r);}:t=>{},i=ci(e.data);if(this.parent[e.type])this.parent[e.type](e.sourceMapId,i,n);else if(this.parent.getWorkerSource){const t=e.type.split(\".\");this.parent.getWorkerSource(e.sourceMapId,t[0],i.source)[t[1]](i,n);}else n(new Error(`Could not find function ${e.type}`));}}remove(){this.scheduler.remove(),this.target.removeEventListener(\"message\",this.receive,!1);}},t.CanonicalTileID=Op,t.Color=ce,t.ColorMode=wf,t.CullFaceMode=Sf,t.DEMData=gf,t.DataConstantProperty=ds,t.DedupedRequest=Ff,t.DepthMode=vf,t.EXTENT=Ya,t.Elevation=class{isDataAvailableAtPoint(t){const e=this._source();if(!e||t.y<0||t.y>1)return !1;const r=e.getSource().maxzoom,n=1<<r,i=Math.floor(t.x),s=Math.floor((t.x-i)*n),a=Math.floor(t.y*n),o=this.findDEMTileFor(new Np(r,i,r,s,a));return !(!o||!o.dem)}getAtPointOrZero(t,e=0){return this.getAtPoint(t,e)||0}getAtPoint(t,e,r=!0){null==e&&(e=null);const n=this._source();if(!n)return e;if(t.y<0||t.y>1)return e;const i=n.getSource().maxzoom,s=1<<i,a=Math.floor(t.x),o=t.x-a,l=new Np(i,a,i,Math.floor(o*s),Math.floor(t.y*s)),u=this.findDEMTileFor(l);if(!u||!u.dem)return e;const c=u.dem,h=1<<u.tileID.canonical.z,p=(o*h-u.tileID.canonical.x)*c.dim,f=(t.y*h-u.tileID.canonical.y)*c.dim,d=Math.floor(p),y=Math.floor(f);return (r?this.exaggeration():1)*rr(rr(c.get(d,y),c.get(d,y+1),f-y),rr(c.get(d+1,y),c.get(d+1,y+1),f-y),p-d)}getAtTileOffset(t,e,r){const n=1<<t.canonical.z;return this.getAtPointOrZero(new lo(t.wrap+(t.canonical.x+e/Ya)/n,(t.canonical.y+r/Ya)/n))}getAtTileOffsetFunc(t,e,r,n){return i=>{const s=this.getAtTileOffset(t,i.x,i.y),a=n.upVector(t.canonical,i.x,i.y);return nl(a,a,s*n.upVectorScale(t.canonical,e,r).metersToTile),a}}getForTilePoints(t,e,r,n){const i=zf.create(this,t,n);return !!i&&(e.forEach((t=>{t[2]=this.exaggeration()*i.getElevationAt(t[0],t[1],r);})),!0)}getMinMaxForTile(t){const e=this.findDEMTileFor(t);if(!e||!e.dem)return null;const r=e.dem.tree,n=e.tileID,i=1<<t.canonical.z-n.canonical.z;let s=t.canonical.x/i-n.canonical.x,a=t.canonical.y/i-n.canonical.y,o=0;for(let e=0;e<t.canonical.z-n.canonical.z&&!r.leaves[o];e++){s*=2,a*=2;const t=2*Math.floor(a)+Math.floor(s);o=r.childOffsets[o]+t,s%=1,a%=1;}return {min:this.exaggeration()*r.minimums[o],max:this.exaggeration()*r.maximums[o]}}getMinElevationBelowMSL(){throw new Error(\"Pure virtual method called.\")}raycast(t,e,r){throw new Error(\"Pure virtual method called.\")}pointCoordinate(t){throw new Error(\"Pure virtual method called.\")}_source(){throw new Error(\"Pure virtual method called.\")}exaggeration(){throw new Error(\"Pure virtual method called.\")}findDEMTileFor(t){throw new Error(\"Pure virtual method called.\")}get visibleDemTiles(){throw new Error(\"Getter must be implemented in subclass.\")}},t.ErrorEvent=Rt,t.EvaluationParameters=ss,t.Event=Lt,t.Evented=Ut,t.FillExtrusionBucket=$u,t.Frustum=xl,t.GLOBE_RADIUS=wp,t.GlobeSharedBuffers=class{constructor(t){this._createGrid(t),this._createPoles(t),this._createAtmosphere(t);}destroy(){this._poleIndexBuffer.destroy(),this._gridBuffer.destroy(),this._gridIndexBuffer.destroy(),this._poleNorthVertexBuffer.destroy(),this._poleSouthVertexBuffer.destroy();for(const t of this._poleSegments)t.destroy();this._gridSegments.destroy(),this.atmosphereVertexBuffer.destroy(),this.atmosphereIndexBuffer.destroy(),this.atmosphereSegments.destroy(),this._wireframeIndexBuffer&&(this._wireframeIndexBuffer.destroy(),this._wireframeSegments.destroy());}_createGrid(t){const e=new Is,r=new js,n=65;for(let t=0;t<n;t++)for(let r=0;r<n;r++)e.emplaceBack(r,t);for(let t=0;t<64;t++)for(let e=0;e<64;e++){const i=t*n+e;r.emplaceBack(i+1,i,i+n),r.emplaceBack(i+n,i+n+1,i+1);}this._gridBuffer=t.createVertexBuffer(e,_p.members),this._gridIndexBuffer=t.createIndexBuffer(r,!0),this._gridSegments=Ka.simpleSegment(0,0,4225,8192);}_createPoles(t){const e=new js;for(let t=0;t<=64;t++)e.emplaceBack(0,t+1,t+2);this._poleIndexBuffer=t.createIndexBuffer(e,!0);const r=new Gs,n=new Gs;this._poleSegments=[];for(let t=0,e=0;t<5;t++){const i=1<<t,s=512*i/Math.PI/2,a=360/i;r.emplaceBack(0,-s,0,0,0,.5,0),n.emplaceBack(0,-s,0,0,0,.5,1);for(let t=0;t<=64;t++){const e=t/64,i=rr(0,a,e),[o,l,u]=Ep(Up,$p,i,s);r.emplaceBack(o,l,u,0,0,e,0),n.emplaceBack(o,l,u,0,0,e,1);}this._poleSegments.push(Ka.simpleSegment(e,0,66,64)),e+=66;}this._poleNorthVertexBuffer=t.createVertexBuffer(r,vp,!1),this._poleSouthVertexBuffer=t.createVertexBuffer(n,vp,!1);}_createAtmosphere(t){const e=new Zs;e.emplaceBack(-1,1,1,0,0),e.emplaceBack(1,1,1,1,0),e.emplaceBack(1,-1,1,1,1),e.emplaceBack(-1,-1,1,0,1);const r=new js;r.emplaceBack(0,1,2),r.emplaceBack(2,3,0),this.atmosphereVertexBuffer=t.createVertexBuffer(e,xp.members),this.atmosphereIndexBuffer=t.createIndexBuffer(r),this.atmosphereSegments=Ka.simpleSegment(0,0,4,2);}getGridBuffers(){return [this._gridBuffer,this._gridIndexBuffer,this._gridSegments]}getPoleBuffers(t){return [this._poleNorthVertexBuffer,this._poleSouthVertexBuffer,this._poleIndexBuffer,this._poleSegments[t]]}getWirefameBuffers(t){if(!this._wireframeSegments){const e=new Ks,r=64,n=r+1;for(let t=0;t<r;t++)for(let i=0;i<r;i++){const r=t*n+i;e.emplaceBack(r,r+1),e.emplaceBack(r,r+n),e.emplaceBack(r,r+n+1);}this._wireframeIndexBuffer=t.createIndexBuffer(e),this._wireframeSegments=Ka.simpleSegment(0,0,r*r,e.length);}return [this._gridBuffer,this._wireframeIndexBuffer,this._wireframeSegments]}},t.GlyphManager=Ah,t.ImagePosition=Zc,t.LineAtlas=pp,t.LngLat=Ja,t.LngLatBounds=Ha,t.LocalGlyphMode=wh,t.MAX_MERCATOR_LATITUDE=oo,t.MercatorCoordinate=lo,t.ONE_EM=cc,t.OverscaledTileID=Np,t.Properties=vs,t.RGBAImage=Bl,t.Ray=class{constructor(t,e){this.pos=t,this.dir=e;}intersectsPlane(t,e,r){const n=al(e,this.dir);if(Math.abs(n)<1e-6)return !1;const i=((t[0]-this.pos[0])*e[0]+(t[1]-this.pos[1])*e[1]+(t[2]-this.pos[2])*e[2])/n;return r[0]=this.pos[0]+this.dir[0]*i,r[1]=this.pos[1]+this.dir[1]*i,r[2]=this.pos[2]+this.dir[2]*i,!0}closestPointOnSphere(t,e,r){if(function(t,e){var r=t[0],n=t[1],i=t[2],s=e[0],a=e[1],o=e[2];return Math.abs(r-s)<=Ro*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(n-a)<=Ro*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-o)<=Ro*Math.max(1,Math.abs(i),Math.abs(o))}(this.pos,t)||0===e)return r[0]=r[1]=r[2]=0,!1;const[n,i,s]=this.dir,a=this.pos[0]-t[0],o=this.pos[1]-t[1],l=this.pos[2]-t[2],u=n*n+i*i+s*s,c=2*(a*n+o*i+l*s),h=c*c-4*u*(a*a+o*o+l*l-e*e);if(h<0){const t=Math.max(-c/2,0),u=a+n*t,h=o+i*t,p=l+s*t,f=Math.hypot(u,h,p);return r[0]=u*e/f,r[1]=h*e/f,r[2]=p*e/f,!1}{const t=(-c-Math.sqrt(h))/(2*u);if(t<0){const t=Math.hypot(a,o,l);return r[0]=a*e/t,r[1]=o*e/t,r[2]=l*e/t,!1}return r[0]=a+n*t,r[1]=o+i*t,r[2]=l+s*t,!0}}},t.RequestManager=class{constructor(t,e,r){this._transformRequestFn=t,this._customAccessToken=e,this._silenceAuthErrors=!!r,this._createSkuToken();}_createSkuToken(){const t=function(){let t=\"\";for(let e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return {token:[\"1\",Q,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt;}_isSkuTokenExpired(){return Date.now()>this._skuTokenExpiresAt}transformRequest(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}}normalizeStyleURL(t,e){if(!et(t))return t;const r=it(t);return r.path=`/styles/v1${r.path}`,this._makeAPIURL(r,this._customAccessToken||e)}normalizeGlyphsURL(t,e){if(!et(t))return t;const r=it(t);return r.path=`/fonts/v1${r.path}`,this._makeAPIURL(r,this._customAccessToken||e)}normalizeSourceURL(t,e){if(!et(t))return t;const r=it(t);return r.path=`/v4/${r.authority}.json`,r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)}normalizeSpriteURL(t,e,r,n){const i=it(t);return et(t)?(i.path=`/styles/v1${i.path}/sprite${e}${r}`,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=`${e}${r}`,st(i))}normalizeTileURL(t,e,r){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!et(t))return t;const n=it(t);n.path=n.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,`${e||r&&\"raster\"!==n.authority&&512===r?\"@2x\":\"\"}${X.supported?\".webp\":\"$1\"}`),\"raster\"===n.authority?n.path=`/${Z.RASTER_URL_PREFIX}${n.path}`:(n.path=n.path.replace(/^.+\\/v4\\//,\"/\"),n.path=`/${Z.TILE_URL_VERSION}${n.path}`);const i=this._customAccessToken||function(t){for(const e of t){const t=e.match(/^access_token=(.*)$/);if(t)return t[1]}return null}(n.params)||Z.ACCESS_TOKEN;return Z.REQUIRE_ACCESS_TOKEN&&i&&this._skuToken&&n.params.push(`sku=${this._skuToken}`),this._makeAPIURL(n,i)}canonicalizeTileURL(t,e){const r=it(t);if(!r.path.match(/^(\\/v4\\/|\\/raster\\/v1\\/)/)||!r.path.match(/\\.[\\w]+$/))return t;let n=\"mapbox://\";r.path.match(/^\\/raster\\/v1\\//)?n+=`raster/${r.path.replace(`/${Z.RASTER_URL_PREFIX}/`,\"\")}`:n+=`tiles/${r.path.replace(`/${Z.TILE_URL_VERSION}/`,\"\")}`;let i=r.params;return e&&(i=i.filter((t=>!t.match(/^access_token=/)))),i.length&&(n+=`?${i.join(\"&\")}`),n}canonicalizeTileset(t,e){const r=!!e&&et(e),n=[];for(const e of t.tiles||[])rt(e)?n.push(this.canonicalizeTileURL(e,r)):n.push(e);return n}_makeAPIURL(t,e){const r=\"See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\",n=it(Z.API_URL);if(t.protocol=n.protocol,t.authority=n.authority,\"http\"===t.protocol){const e=t.params.indexOf(\"secure\");e>=0&&t.params.splice(e,1);}if(\"/\"!==n.path&&(t.path=`${n.path}${t.path}`),!Z.REQUIRE_ACCESS_TOKEN)return st(t);if(e=e||Z.ACCESS_TOKEN,!this._silenceAuthErrors){if(!e)throw new Error(`An API access token is required to use Mapbox GL. ${r}`);if(\"s\"===e[0])throw new Error(`Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ${r}`)}return t.params=t.params.filter((t=>-1===t.indexOf(\"access_token\"))),t.params.push(`access_token=${e||\"\"}`),st(t)}},t.ResourceType=At,t.SegmentVector=Ka,t.SourceCache=If,t.StencilMode=_f,t.StructArrayLayout1ui2=Ys,t.StructArrayLayout2f1f2i16=Us,t.StructArrayLayout2i4=Is,t.StructArrayLayout2ui4=Ks,t.StructArrayLayout3f12=Vs,t.StructArrayLayout3ui6=js,t.StructArrayLayout4i8=Ts,t.Texture=hp,t.Tile=af,t.Transitionable=ls,t.Uniform1f=Sa,t.Uniform1i=class extends ka{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));}},t.Uniform2f=class extends ka{constructor(t,e){super(t,e),this.current=[0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));}},t.Uniform3f=class extends ka{constructor(t,e){super(t,e),this.current=[0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));}},t.Uniform4f=Ia,t.UniformColor=Ma,t.UniformMatrix2f=class extends ka{constructor(t,e){super(t,e),this.current=Ba;}set(t){for(let e=0;e<4;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix2fv(this.location,!1,t);break}}},t.UniformMatrix3f=class extends ka{constructor(t,e){super(t,e),this.current=za;}set(t){for(let e=0;e<9;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix3fv(this.location,!1,t);break}}},t.UniformMatrix4f=class extends ka{constructor(t,e){super(t,e),this.current=Ta;}set(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(let e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}}},t.UnwrappedTileID=qp,t.ValidationError=mn,t.VectorTileWorkerSource=class extends Ut{constructor(t,e,r,n,i){super(),this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=i||Lf,this.loading={},this.loaded={},this.deduped=new Ff(t.scheduler),this.isSpriteLoaded=n,this.scheduler=t.scheduler;}loadTile(t,e){const r=t.uid,n=t&&t.request,i=n&&n.collectResourceTiming,s=this.loading[r]=new Pf(t);s.abort=this.loadVectorData(t,((a,o)=>{const l=!this.loading[r];if(delete this.loading[r],l||a||!o)return s.status=\"done\",l||(this.loaded[r]=s),e(a);const u=o.rawData,c={};o.expires&&(c.expires=o.expires),o.cacheControl&&(c.cacheControl=o.cacheControl),s.vectorTile=o.vectorTile||new Du.VectorTile(new wc(u));const h=()=>{s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,r)=>{if(t||!r)return e(t);const s={};if(i){const t=yp(n);t.length>0&&(s.resourceTiming=JSON.parse(JSON.stringify(t)));}e(null,b({rawTileData:u.slice(0)},r,c,s));}));};this.isSpriteLoaded?h():this.once(\"isSpriteLoaded\",(()=>{this.scheduler?this.scheduler.add(h,{type:\"parseTile\",isSymbolTile:t.isSymbolTile,zoom:t.tileZoom}):h();})),this.loaded=this.loaded||{},this.loaded[r]=s;}));}reloadTile(t,e){const r=this.loaded,n=t.uid,i=this;if(r&&r[n]){const s=r[n];s.showCollisionBoxes=t.showCollisionBoxes,s.enableTerrain=!!t.enableTerrain,s.projection=t.projection,s.tileTransform=Zp(t.tileID.canonical,t.projection);const a=(t,r)=>{const n=s.reloadCallback;n&&(delete s.reloadCallback,s.parse(s.vectorTile,i.layerIndex,this.availableImages,i.actor,n)),e(t,r);};\"parsing\"===s.status?s.reloadCallback=a:\"done\"===s.status&&(s.vectorTile?s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,a):a());}}abortTile(t,e){const r=t.uid,n=this.loading[r];n&&(n.abort&&n.abort(),delete this.loading[r]),e();}removeTile(t,e){const r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e();}},t.WritingMode=Kc,t.ZoomHistory=hi,t.add=Jo,t.addDynamicAttributes=Hh,t.adjoint=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8];return t[0]=a*c-o*u,t[1]=i*u-n*c,t[2]=n*o-i*a,t[3]=o*l-s*c,t[4]=r*c-i*l,t[5]=i*s-r*o,t[6]=s*u-a*l,t[7]=n*l-r*u,t[8]=r*a-n*s,t},t.asyncAll=x,t.bezier=f,t.bindAll=I,t.boundsAttributes=nf,t.bufferConvexPolygon=function(t,e){const r=[];for(let n=0;n<t.length;n++){const i=g(n-1,-1,t.length-1),s=g(n+1,-1,t.length-1),a=t[n],o=t[s],l=t[i].sub(a).unit(),u=o.sub(a).unit(),c=u.angleWithSep(l.x,l.y),h=l.add(u).unit().mult(-1*e/Math.sin(c/2));r.push(a.add(h));}return r},t.cacheEntryPossiblyAdded=function(t){wt++,wt>vt&&(t.getActor().send(\"enforceCacheSizeLimit\",xt),wt=0);},t.calculateGlobeLabelMatrix=function(t,e){const{lng:r,lat:n}=t._center,i=Fp(0,0,t.worldSize/t._projectionScaler,r,n);return Oo(i,i,function(t){const e=jo(new Float64Array(16)),r=1/Pp(t);return qo(e,e,t.min),No(e,e,[r,r,r]),e}(Tp(e)))},t.calculateGlobeMatrix=Lp,t.calculateGlobeMercatorMatrix=function(t){const e=t.worldSize,r=t.point,n=no(1,t.center.lat)*e,i=t.pixelsPerMeter,s=e/(n/t.pixelsPerMeter),a=jo(new Float64Array(16));return qo(a,a,[r.x,r.y,0]),No(a,a,[s,s,i]),Float32Array.from(a)},t.circumferenceAtLatitude=to,t.clamp=y,t.clearTileCache=function(t){const e=a.caches.delete(yt);t&&e.catch(t).then((()=>t()));},t.clipLine=xh,t.clone=function(t){var e=new Uo(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=B,t.collisionCircleLayout=uc,t.config=Z,t.conjugate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t},t.create=function(){var t=new Uo(16);return Uo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=$o,t.createExpression=cn,t.createLayout=ks,t.createStyleLayer=function(t){return \"custom\"===t.type?new op(t):new cp[t.type](t)},t.cross=ol,t.degToRad=u,t.div=function(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t},t.dot=al,t.earthRadius=Wa,t.ease=d,t.easeCubicInOut=p,t.emitValidationErrors=ri,t.endsWith=M,t.enforceCacheSizeLimit=function(t){bt(),mt&&mt.then((e=>{e.keys().then((r=>{for(let n=0;n<r.length-t;n++)e.delete(r[n]);}));}));},t.evaluateSizeForFeature=fc,t.evaluateSizeForZoom=dc,t.evaluateVariableOffset=Lh,t.evented=es,t.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]},t.exactEquals$1=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]},t.exported=N,t.exported$1=X,t.extend=b,t.extend$1=jt,t.filterObject=z,t.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},t.fromQuat=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r+r,o=n+n,l=i+i,u=r*a,c=n*a,h=n*o,p=i*a,f=i*o,d=i*l,y=s*a,m=s*o,g=s*l;return t[0]=1-h-d,t[1]=c+g,t[2]=p-m,t[3]=0,t[4]=c-g,t[5]=1-u-d,t[6]=f+y,t[7]=0,t[8]=p+m,t[9]=f-y,t[10]=1-u-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.fromRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},t.fromScaling=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.furthestTileCorner=function(t){const e=Math.round((t+45+360)%360/90)%4;return h[e]},t.getAABBPointSquareDist=function(t,e,r){let n=0;for(let i=0;i<2;++i){const s=r?r[i]:0;t[i]>s&&(n+=(t[i]-s)*(t[i]-s)),e[i]<s&&(n+=(s-e[i])*(s-e[i]));}return n},t.getAnchorAlignment=ah,t.getAnchorJustification=Uh,t.getBounds=function(t){let e=1/0,r=1/0,n=-1/0,s=-1/0;for(const i of t)e=Math.min(e,i.x),r=Math.min(r,i.y),n=Math.max(n,i.x),s=Math.max(s,i.y);return {min:new i(e,r),max:new i(n,s)}},t.getColumn=function(t,e){return [t[4*e],t[4*e+1],t[4*e+2],t[4*e+3]]},t.getGridMatrix=function(t,e){const[r,n]=e,i=.015625;return [0,(n[1]-r[1])*i,1<<t.z,(n[0]-r[0])*i,0,t.y,r[0],r[1],i]},t.getImage=Pt,t.getJSON=function(t,e){return It(b(t,{type:\"json\"}),e)},t.getMapSessionAPI=ft,t.getPerformanceMeasurement=yp,t.getProjection=function(t){const e=t.parallels,r=!!e&&Math.abs(e[0]+e[1])<.01;switch(t.name){case\"mercator\":return new $f(t);case\"equirectangular\":return new Kf(t);case\"naturalEarth\":return new Qf(t);case\"equalEarth\":return new Xf(t);case\"winkelTripel\":return new ed(t);case\"albers\":return r?new rd(t):new jf(t);case\"lambertConformalConic\":return r?new rd(t):new Wf(t)}throw new Error(`Invalid projection name: ${t.name}`)},t.getRTLTextPluginStatus=rs,t.getReferrer=St,t.getTilePoint=function(t,{x:e,y:r},n=0){return new i(((e-n)*t.scale-t.x)*Ya,(r*t.scale-t.y)*Ya)},t.getTileVec3=function(t,e,r=0){return Wo(((e.x-r)*t.scale-t.x)*Ya,(e.y*t.scale-t.y)*Ya,ao(e.z,e.y))},t.getVideo=function(t,e){const r=a.document.createElement(\"video\");r.muted=!0,r.onloadstart=function(){e(null,r);};for(let e=0;e<t.length;e++){const n=a.document.createElement(\"source\");Bt(t[e])||(r.crossOrigin=\"Anonymous\"),n.src=t[e],r.appendChild(n);}return {cancel:()=>{}}},t.globeECEFOrigin=function(t,e){const r=[0,0,0];return ll(r,r,Vp(Tp(e.canonical))),ll(r,r,t),r},t.globePixelsToTileUnits=function(t,e){return Ya/(512*Math.pow(2,t))*Pp(Tp(e))},t.globePoleMatrixForTile=function(t,e,r){const n=jo(new Float64Array(16)),i=1<<t,s=360*(e/i-.5),a=r.point,o=r.worldSize/(r.tileSize*i);return qo(n,n,[a.x,a.y,-r.worldSize/Math.PI/2]),No(n,n,[o,o,o]),Go(n,n,u(-r._center.lat)),Zo(n,n,u(-r._center.lng+s)),Float32Array.from(n)},t.globeTileLatLngCorners=Bp,t.globeToMercatorTransition=function(t){return m(5,6,t)},t.identity=jo,t.identity$1=ml,t.invert=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],f=e[11],d=e[12],y=e[13],m=e[14],g=e[15],x=r*o-n*a,v=r*l-i*a,b=r*u-s*a,_=n*l-i*o,w=n*u-s*o,A=i*u-s*l,k=c*y-h*d,S=c*m-p*d,I=c*g-f*d,M=h*m-p*y,T=h*g-f*y,z=p*g-f*m,B=x*z-v*T+b*M+_*I-w*S+A*k;return B?(t[0]=(o*z-l*T+u*M)*(B=1/B),t[1]=(i*T-n*z-s*M)*B,t[2]=(y*A-m*w+g*_)*B,t[3]=(p*w-h*A-f*_)*B,t[4]=(l*I-a*z-u*S)*B,t[5]=(r*z-i*I+s*S)*B,t[6]=(m*b-d*A-g*v)*B,t[7]=(c*A-p*b+f*v)*B,t[8]=(a*T-o*I+u*k)*B,t[9]=(n*I-r*T-s*k)*B,t[10]=(d*w-y*b+g*x)*B,t[11]=(h*b-c*w-f*x)*B,t[12]=(o*S-a*M-l*k)*B,t[13]=(r*M-n*S+i*k)*B,t[14]=(y*v-d*_-m*x)*B,t[15]=(c*_-h*v+p*x)*B,t):null},t.isMapAuthenticated=function(t){return dt.has(t)},t.isMapboxURL=et,t.isSafariWithAntialiasingBug=function(t){const e=t.navigator?t.navigator.userAgent:null;return !!O(t)&&e&&(e.match(\"Version/15.4\")||e.match(\"Version/15.5\")||e.match(/CPU (OS|iPhone OS) (15_4|15_5) like Mac OS X/))},t.latFromMercatorY=so,t.len=fl,t.length=Ho,t.length$1=function(t){return Math.hypot(t[0],t[1],t[2],t[3])},t.loadVectorTile=Lf,t.makeRequest=It,t.mercatorXfromLng=eo,t.mercatorYfromLat=ro,t.mercatorZfromAltitude=no,t.mul=Xo,t.mul$1=pl,t.multiply=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=r[0],f=r[1],d=r[2],y=r[3],m=r[4],g=r[5],x=r[6],v=r[7],b=r[8];return t[0]=p*n+f*a+d*u,t[1]=p*i+f*o+d*c,t[2]=p*s+f*l+d*h,t[3]=y*n+m*a+g*u,t[4]=y*i+m*o+g*c,t[5]=y*s+m*l+g*h,t[6]=x*n+v*a+b*u,t[7]=x*i+v*o+b*c,t[8]=x*s+v*l+b*h,t},t.multiply$1=Oo,t.multiply$2=tl,t.nextPowerOfTwo=k,t.normalize=sl,t.normalize$1=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r*r+n*n+i*i+s*s;return a>0&&(a=1/Math.sqrt(a)),t[0]=r*a,t[1]=n*a,t[2]=i*a,t[3]=s*a,t},t.number=rr,t.ortho=function(t,e,r,n,i,s,a){var o=1/(e-r),l=1/(n-i),u=1/(s-a);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=(a+s)*u,t[15]=1,t},t.pbf=wc,t.perspective=function(t,e,r,n,i){var s,a=1/Math.tan(e/2);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(t[10]=(i+n)*(s=1/(n-i)),t[14]=2*i*n*s):(t[10]=-1,t[14]=-2*n),t},t.pick=function(t,e){const r={};for(let n=0;n<e.length;n++){const i=e[n];i in t&&(r[i]=t[i]);}return r},t.plugin=is,t.pointGeometry=i,t.polygonIntersectsBox=Bo,t.polygonIntersectsPolygon=bo,t.polygonizeBounds=function(t,e,r=0,n=!0){const s=new i(r,r),a=t.sub(s),o=e.add(s),l=[a,new i(o.x,a.y),o,new i(a.x,o.y)];return n&&l.push(a),l},t.posAttributes=_p,t.postMapLoadEvent=ht,t.postTurnstileEvent=ut,t.potpack=Gc,t.prevPowerOfTwo=function(t){return t<=1?1:Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},t.radToDeg=c,t.refProperties=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"],t.registerForPluginStateChange=function(t){return t({pluginStatus:Wi,pluginURL:Ji}),es.on(\"pluginStateChange\",t),t},t.removeAuthState=function(t){dt.delete(t);},t.renderColorRamp=Cl,t.rotateX=Go,t.rotateX$1=gl,t.rotateY=Zo,t.rotateZ=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[0],a=e[1],o=e[2],l=e[3],u=e[4],c=e[5],h=e[6],p=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i+u*n,t[1]=a*i+c*n,t[2]=o*i+h*n,t[3]=l*i+p*n,t[4]=u*i-s*n,t[5]=c*i-a*n,t[6]=h*i-o*n,t[7]=p*i-l*n,t},t.rotateZ$1=function(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l+i*o,t[1]=i*l-n*o,t[2]=s*l+a*o,t[3]=a*l-s*o,t},t.scale=No,t.scale$1=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t},t.scale$2=nl,t.scaleAndAdd=il,t.setCacheLimits=function(t,e){xt=t,vt=e;},t.setColumn=function(t,e,r){t[4*e+0]=r[0],t[4*e+1]=r[1],t[4*e+2]=r[2],t[4*e+3]=r[3];},t.setRTLTextPlugin=function(t,e,r=!1){if(Wi===Xi||Wi===Ki||Wi===Yi)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");Ji=N.resolveURL(t),Wi=Xi,Hi=e,ts(),r||ns();},t.smoothstep=m,t.spec=$t,t.storeAuthState=function(t,e){e?dt.add(t):dt.delete(t);},t.sub=hl,t.subtract=Qo,t.symbolSize=yc,t.tileAABB=function(t,e,r,n,i,s,a,o,l){if(\"globe\"===l.name)return zp(t,e,new Op(r,n,i));const u=Zp({z:r,x:n,y:i},l);return new vl([(s+u.x/u.scale)*e,e*(u.y/u.scale),a],[(s+u.x2/u.scale)*e,e*(u.y2/u.scale),o])},t.tileTransform=Zp,t.transformMat3=function(t,e,r){var n=e[0],i=e[1],s=e[2];return t[0]=n*r[0]+i*r[3]+s*r[6],t[1]=n*r[1]+i*r[4]+s*r[7],t[2]=n*r[2]+i*r[5]+s*r[8],t},t.transformMat4=ll,t.transformMat4$1=dl,t.transformQuat=ul,t.translate=qo,t.transpose=function(t,e){if(t===e){var r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i;}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t},t.triggerPluginCompletionEvent=Qi,t.uniqueId=w,t.validateCustomStyleLayer=function(t){const e=[],r=t.id;return void 0===r&&e.push({message:`layers.${r}: missing required property \"id\"`}),void 0===t.render&&e.push({message:`layers.${r}: missing required method \"render\"`}),t.renderingMode&&\"2d\"!==t.renderingMode&&\"3d\"!==t.renderingMode&&e.push({message:`layers.${r}: property \"renderingMode\" must be either \"2d\" or \"3d\"`}),e},t.validateFilter=t=>ei(Ln(t)),t.validateFog=t=>ei(Kn(t)),t.validateLayer=t=>ei(On(t)),t.validateLight=t=>ei(Zn(t)),t.validateSource=t=>ei(Gn(t)),t.validateStyle=Jn,t.validateTerrain=t=>ei(Xn(t)),t.values=v,t.vectorTile=Du,t.version=e,t.warnOnce=C,t.window=a,t.wrap=g;}));\n\ndefine([\"./shared\"],(function(e){\"use strict\";function t(e){if(\"number\"==typeof e||\"boolean\"==typeof e||\"string\"==typeof e||null==e)return JSON.stringify(e);if(Array.isArray(e)){let r=\"[\";for(const o of e)r+=`${t(o)},`;return `${r}]`}let r=\"{\";for(const o of Object.keys(e).sort())r+=`${o}:${t(e[o])},`;return `${r}}`}function r(r){let o=\"\";for(const n of e.refProperties)o+=`/${t(r[n])}`;return o}class o{constructor(e){this.keyCache={},e&&this.replace(e);}replace(e){this._layerConfigs={},this._layers={},this.update(e,[]);}update(t,o){for(const r of t)this._layerConfigs[r.id]=r,(this._layers[r.id]=e.createStyleLayer(r)).compileFilter(),this.keyCache[r.id]&&delete this.keyCache[r.id];for(const e of o)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const n=function(e,t){const o={};for(let n=0;n<e.length;n++){const i=t&&t[e[n].id]||r(e[n]);t&&(t[e[n].id]=i);let s=o[i];s||(s=o[i]=[]),s.push(e[n]);}const n=[];for(const e in o)n.push(o[e]);return n}(e.values(this._layerConfigs),this.keyCache);for(const e of n){const t=e.map((e=>this._layers[e.id])),r=t[0];if(\"none\"===r.visibility)continue;const o=r.source||\"\";let n=this.familiesBySource[o];n||(n=this.familiesBySource[o]={});const i=r.sourceLayer||\"_geojsonTileLayer\";let s=n[i];s||(s=n[i]=[]),s.push(t);}}}class n{loadTile(t,r){const{uid:o,encoding:n,rawImageData:i,padding:s,buildQuadTree:a}=t,l=e.window.ImageBitmap&&i instanceof e.window.ImageBitmap?this.getImageData(i,s):i;r(null,new e.DEMData(o,l,n,s<1,a));}getImageData(e,t){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);const r=this.offscreenCanvasContext.getImageData(-t,-t,e.width+2*t,e.height+2*t);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),r}}var i=function e(t,r){var o,n=t&&t.type;if(\"FeatureCollection\"===n)for(o=0;o<t.features.length;o++)e(t.features[o],r);else if(\"GeometryCollection\"===n)for(o=0;o<t.geometries.length;o++)e(t.geometries[o],r);else if(\"Feature\"===n)e(t.geometry,r);else if(\"Polygon\"===n)s(t.coordinates,r);else if(\"MultiPolygon\"===n)for(o=0;o<t.coordinates.length;o++)s(t.coordinates[o],r);return t};function s(e,t){if(0!==e.length){a(e[0],t);for(var r=1;r<e.length;r++)a(e[r],!t);}}function a(e,t){for(var r=0,o=0,n=0,i=e.length,s=i-1;n<i;s=n++){var a=(e[n][0]-e[s][0])*(e[s][1]+e[n][1]),l=r+a;o+=Math.abs(r)>=Math.abs(a)?r-l+a:a-l+r,r=l;}r+o>=0!=!!t&&e.reverse();}const l=e.vectorTile.VectorTileFeature.prototype.toGeoJSON;class u{constructor(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,\"id\"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10));}loadGeometry(){if(1===this._feature.type){const t=[];for(const r of this._feature.geometry)t.push([new e.pointGeometry(r[0],r[1])]);return t}{const t=[];for(const r of this._feature.geometry){const o=[];for(const t of r)o.push(new e.pointGeometry(t[0],t[1]));t.push(o);}return t}}toGeoJSON(e,t,r){return l.call(this,e,t,r)}}class h{constructor(t){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=e.EXTENT,this.length=t.length,this._features=t;}feature(e){return new u(this._features[e])}}var c=e.vectorTile.VectorTileFeature,f=p;function p(e,t){this.options=t||{},this.features=e,this.length=e.length;}function g(e,t){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096;}p.prototype.feature=function(e){return new g(this.features[e],this.options.extent)},g.prototype.loadGeometry=function(){var t=this.rawGeometry;this.geometry=[];for(var r=0;r<t.length;r++){for(var o=t[r],n=[],i=0;i<o.length;i++)n.push(new e.pointGeometry(o[i][0],o[i][1]));this.geometry.push(n);}return this.geometry},g.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,r=-1/0,o=1/0,n=-1/0,i=0;i<e.length;i++)for(var s=e[i],a=0;a<s.length;a++){var l=s[a];t=Math.min(t,l.x),r=Math.max(r,l.x),o=Math.min(o,l.y),n=Math.max(n,l.y);}return [t,o,r,n]},g.prototype.toGeoJSON=c.prototype.toGeoJSON;var d=y,m=f;function y(t){var r=new e.pbf;return function(e,t){for(var r in e.layers)t.writeMessage(3,v,e.layers[r]);}(t,r),r.finish()}function v(e,t){var r;t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||\"\"),t.writeVarintField(5,e.extent||4096);var o={keys:[],values:[],keycache:{},valuecache:{}};for(r=0;r<e.length;r++)o.feature=e.feature(r),t.writeMessage(2,x,o);var n=o.keys;for(r=0;r<n.length;r++)t.writeStringField(3,n[r]);var i=o.values;for(r=0;r<i.length;r++)t.writeMessage(4,b,i[r]);}function x(e,t){var r=e.feature;void 0!==r.id&&t.writeVarintField(1,r.id),t.writeMessage(2,w,e),t.writeVarintField(3,r.type),t.writeMessage(4,P,r);}function w(e,t){var r=e.feature,o=e.keys,n=e.values,i=e.keycache,s=e.valuecache;for(var a in r.properties){var l=r.properties[a],u=i[a];if(null!==l){void 0===u&&(o.push(a),i[a]=u=o.length-1),t.writeVarint(u);var h=typeof l;\"string\"!==h&&\"boolean\"!==h&&\"number\"!==h&&(l=JSON.stringify(l));var c=h+\":\"+l,f=s[c];void 0===f&&(n.push(l),s[c]=f=n.length-1),t.writeVarint(f);}}}function S(e,t){return (t<<3)+(7&e)}function M(e){return e<<1^e>>31}function P(e,t){for(var r=e.loadGeometry(),o=e.type,n=0,i=0,s=r.length,a=0;a<s;a++){var l=r[a],u=1;1===o&&(u=l.length),t.writeVarint(S(1,u));for(var h=3===o?l.length-1:l.length,c=0;c<h;c++){1===c&&1!==o&&t.writeVarint(S(2,h-1));var f=l[c].x-n,p=l[c].y-i;t.writeVarint(M(f)),t.writeVarint(M(p)),n+=f,i+=p;}3===o&&t.writeVarint(S(7,1));}}function b(e,t){var r=typeof e;\"string\"===r?t.writeStringField(1,e):\"boolean\"===r?t.writeBooleanField(7,e):\"number\"===r&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e));}function T(e,t,r,o,n,i){if(n-o<=r)return;const s=o+n>>1;k(e,t,s,o,n,i%2),T(e,t,r,o,s-1,i+1),T(e,t,r,s+1,n,i+1);}function k(e,t,r,o,n,i){for(;n>o;){if(n-o>600){const s=n-o+1,a=r-o+1,l=Math.log(s),u=.5*Math.exp(2*l/3),h=.5*Math.sqrt(l*u*(s-u)/s)*(a-s/2<0?-1:1);k(e,t,r,Math.max(o,Math.floor(r-a*u/s+h)),Math.min(n,Math.floor(r+(s-a)*u/s+h)),i);}const s=t[2*r+i];let a=o,l=n;for(I(e,t,o,r),t[2*n+i]>s&&I(e,t,o,n);a<l;){for(I(e,t,a,l),a++,l--;t[2*a+i]<s;)a++;for(;t[2*l+i]>s;)l--;}t[2*o+i]===s?I(e,t,o,l):(l++,I(e,t,l,n)),l<=r&&(o=l+1),r<=l&&(n=l-1);}}function I(e,t,r,o){_(e,r,o),_(t,2*r,2*o),_(t,2*r+1,2*o+1);}function _(e,t,r){const o=e[t];e[t]=e[r],e[r]=o;}function L(e,t,r,o){const n=e-r,i=t-o;return n*n+i*i}d.fromVectorTileJs=y,d.fromGeojsonVt=function(e,t){t=t||{};var r={};for(var o in e)r[o]=new f(e[o].features,t),r[o].name=o,r[o].version=t.version,r[o].extent=t.extent;return y({layers:r})},d.GeoJSONWrapper=m;const C=e=>e[0],O=e=>e[1];class z{constructor(e,t=C,r=O,o=64,n=Float64Array){this.nodeSize=o,this.points=e;const i=e.length<65536?Uint16Array:Uint32Array,s=this.ids=new i(e.length),a=this.coords=new n(2*e.length);for(let o=0;o<e.length;o++)s[o]=o,a[2*o]=t(e[o]),a[2*o+1]=r(e[o]);T(s,a,o,0,s.length-1,0);}range(e,t,r,o){return function(e,t,r,o,n,i,s){const a=[0,e.length-1,0],l=[];let u,h;for(;a.length;){const c=a.pop(),f=a.pop(),p=a.pop();if(f-p<=s){for(let s=p;s<=f;s++)u=t[2*s],h=t[2*s+1],u>=r&&u<=n&&h>=o&&h<=i&&l.push(e[s]);continue}const g=Math.floor((p+f)/2);u=t[2*g],h=t[2*g+1],u>=r&&u<=n&&h>=o&&h<=i&&l.push(e[g]);const d=(c+1)%2;(0===c?r<=u:o<=h)&&(a.push(p),a.push(g-1),a.push(d)),(0===c?n>=u:i>=h)&&(a.push(g+1),a.push(f),a.push(d));}return l}(this.ids,this.coords,e,t,r,o,this.nodeSize)}within(e,t,r){return function(e,t,r,o,n,i){const s=[0,e.length-1,0],a=[],l=n*n;for(;s.length;){const u=s.pop(),h=s.pop(),c=s.pop();if(h-c<=i){for(let n=c;n<=h;n++)L(t[2*n],t[2*n+1],r,o)<=l&&a.push(e[n]);continue}const f=Math.floor((c+h)/2),p=t[2*f],g=t[2*f+1];L(p,g,r,o)<=l&&a.push(e[f]);const d=(u+1)%2;(0===u?r-n<=p:o-n<=g)&&(s.push(c),s.push(f-1),s.push(d)),(0===u?r+n>=p:o+n>=g)&&(s.push(f+1),s.push(h),s.push(d));}return a}(this.ids,this.coords,e,t,r,this.nodeSize)}}const E={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},F=Math.fround||(N=new Float32Array(1),e=>(N[0]=+e,N[0]));var N;class j{constructor(e){this.options=A(Object.create(E),e),this.trees=new Array(this.options.maxZoom+1);}load(e){const{log:t,minZoom:r,maxZoom:o,nodeSize:n}=this.options;t&&console.time(\"total time\");const i=`prepare ${e.length} points`;t&&console.time(i),this.points=e;let s=[];for(let t=0;t<e.length;t++)e[t].geometry&&s.push(G(e[t],t));this.trees[o+1]=new z(s,D,$,n,Float32Array),t&&console.timeEnd(i);for(let e=o;e>=r;e--){const r=+Date.now();s=this._cluster(s,e),this.trees[e]=new z(s,D,$,n,Float32Array),t&&console.log(\"z%d: %d clusters in %dms\",e,s.length,+Date.now()-r);}return t&&console.timeEnd(\"total time\"),this}getClusters(e,t){let r=((e[0]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[1]));let n=180===e[2]?180:((e[2]+180)%360+360)%360-180;const i=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)r=-180,n=180;else if(r>n){const e=this.getClusters([r,o,180,i],t),s=this.getClusters([-180,o,n,i],t);return e.concat(s)}const s=this.trees[this._limitZoom(t)],a=s.range(Y(r),X(i),Y(n),X(o)),l=[];for(const e of a){const t=s.points[e];l.push(t.numPoints?J(t):this.points[t.index]);}return l}getChildren(e){const t=this._getOriginId(e),r=this._getOriginZoom(e),o=\"No cluster with the specified id.\",n=this.trees[r];if(!n)throw new Error(o);const i=n.points[t];if(!i)throw new Error(o);const s=this.options.radius/(this.options.extent*Math.pow(2,r-1)),a=n.within(i.x,i.y,s),l=[];for(const t of a){const r=n.points[t];r.parentId===e&&l.push(r.numPoints?J(r):this.points[r.index]);}if(0===l.length)throw new Error(o);return l}getLeaves(e,t,r){const o=[];return this._appendLeaves(o,e,t=t||10,r=r||0,0),o}getTile(e,t,r){const o=this.trees[this._limitZoom(e)],n=Math.pow(2,e),{extent:i,radius:s}=this.options,a=s/i,l=(r-a)/n,u=(r+1+a)/n,h={features:[]};return this._addTileFeatures(o.range((t-a)/n,l,(t+1+a)/n,u),o.points,t,r,n,h),0===t&&this._addTileFeatures(o.range(1-a/n,l,1,u),o.points,n,r,n,h),t===n-1&&this._addTileFeatures(o.range(0,l,a/n,u),o.points,-1,r,n,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const r=this.getChildren(e);if(t++,1!==r.length)break;e=r[0].properties.cluster_id;}return t}_appendLeaves(e,t,r,o,n){const i=this.getChildren(t);for(const t of i){const i=t.properties;if(i&&i.cluster?n+i.point_count<=o?n+=i.point_count:n=this._appendLeaves(e,i.cluster_id,r,o,n):n<o?n++:e.push(t),e.length===r)break}return n}_addTileFeatures(e,t,r,o,n,i){for(const s of e){const e=t[s],a=e.numPoints;let l,u,h;if(a)l=W(e),u=e.x,h=e.y;else {const t=this.points[e.index];l=t.properties,u=Y(t.geometry.coordinates[0]),h=X(t.geometry.coordinates[1]);}const c={type:1,geometry:[[Math.round(this.options.extent*(u*n-r)),Math.round(this.options.extent*(h*n-o))]],tags:l};let f;a?f=e.id:this.options.generateId?f=e.index:this.points[e.index].id&&(f=this.points[e.index].id),void 0!==f&&(c.id=f),i.features.push(c);}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(+e,this.options.maxZoom+1))}_cluster(e,t){const r=[],{radius:o,extent:n,reduce:i,minPoints:s}=this.options,a=o/(n*Math.pow(2,t));for(let o=0;o<e.length;o++){const n=e[o];if(n.zoom<=t)continue;n.zoom=t;const l=this.trees[t+1],u=l.within(n.x,n.y,a),h=n.numPoints||1;let c=h;for(const e of u){const r=l.points[e];r.zoom>t&&(c+=r.numPoints||1);}if(c>h&&c>=s){let e=n.x*h,s=n.y*h,a=i&&h>1?this._map(n,!0):null;const f=(o<<5)+(t+1)+this.points.length;for(const r of u){const o=l.points[r];if(o.zoom<=t)continue;o.zoom=t;const u=o.numPoints||1;e+=o.x*u,s+=o.y*u,o.parentId=f,i&&(a||(a=this._map(n,!0)),i(a,this._map(o)));}n.parentId=f,r.push(Z(e/c,s/c,f,c,a));}else if(r.push(n),c>1)for(const e of u){const o=l.points[e];o.zoom<=t||(o.zoom=t,r.push(o));}}return r}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return (e-this.points.length)%32}_map(e,t){if(e.numPoints)return t?A({},e.properties):e.properties;const r=this.points[e.index].properties,o=this.options.map(r);return t&&o===r?A({},o):o}}function Z(e,t,r,o,n){return {x:F(e),y:F(t),zoom:1/0,id:r,parentId:-1,numPoints:o,properties:n}}function G(e,t){const[r,o]=e.geometry.coordinates;return {x:F(Y(r)),y:F(X(o)),zoom:1/0,index:t,parentId:-1}}function J(e){return {type:\"Feature\",id:e.id,properties:W(e),geometry:{type:\"Point\",coordinates:[(t=e.x,360*(t-.5)),V(e.y)]}};var t;}function W(e){const t=e.numPoints,r=t>=1e4?`${Math.round(t/1e3)}k`:t>=1e3?Math.round(t/100)/10+\"k\":t;return A(A({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:r})}function Y(e){return e/360+.5}function X(e){const t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function V(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function A(e,t){for(const r in t)e[r]=t[r];return e}function D(e){return e.x}function $(e){return e.y}function B(e,t,r,o){for(var n,i=o,s=r-t>>1,a=r-t,l=e[t],u=e[t+1],h=e[r],c=e[r+1],f=t+3;f<r;f+=3){var p=R(e[f],e[f+1],l,u,h,c);if(p>i)n=f,i=p;else if(p===i){var g=Math.abs(f-s);g<a&&(n=f,a=g);}}i>o&&(n-t>3&&B(e,t,n,o),e[n+2]=i,r-n>3&&B(e,n,r,o));}function R(e,t,r,o,n,i){var s=n-r,a=i-o;if(0!==s||0!==a){var l=((e-r)*s+(t-o)*a)/(s*s+a*a);l>1?(r=n,o=i):l>0&&(r+=s*l,o+=a*l);}return (s=e-r)*s+(a=t-o)*a}function q(e,t,r,o){var n={id:void 0===e?null:e,type:t,geometry:r,tags:o,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,r=e.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)U(e,t);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var o=0;o<t.length;o++)U(e,t[o]);else if(\"MultiPolygon\"===r)for(o=0;o<t.length;o++)for(var n=0;n<t[o].length;n++)U(e,t[o][n]);}(n),n}function U(e,t){for(var r=0;r<t.length;r+=3)e.minX=Math.min(e.minX,t[r]),e.minY=Math.min(e.minY,t[r+1]),e.maxX=Math.max(e.maxX,t[r]),e.maxY=Math.max(e.maxY,t[r+1]);}function Q(e,t,r,o){if(t.geometry){var n=t.geometry.coordinates,i=t.geometry.type,s=Math.pow(r.tolerance/((1<<r.maxZoom)*r.extent),2),a=[],l=t.id;if(r.promoteId?l=t.properties[r.promoteId]:r.generateId&&(l=o||0),\"Point\"===i)H(n,a);else if(\"MultiPoint\"===i)for(var u=0;u<n.length;u++)H(n[u],a);else if(\"LineString\"===i)K(n,a,s,!1);else if(\"MultiLineString\"===i){if(r.lineMetrics){for(u=0;u<n.length;u++)K(n[u],a=[],s,!1),e.push(q(l,\"LineString\",a,t.properties));return}ee(n,a,s,!1);}else if(\"Polygon\"===i)ee(n,a,s,!0);else {if(\"MultiPolygon\"!==i){if(\"GeometryCollection\"===i){for(u=0;u<t.geometry.geometries.length;u++)Q(e,{id:l,geometry:t.geometry.geometries[u],properties:t.properties},r,o);return}throw new Error(\"Input data is not a valid GeoJSON object.\")}for(u=0;u<n.length;u++){var h=[];ee(n[u],h,s,!0),a.push(h);}}e.push(q(l,i,a,t.properties));}}function H(e,t){t.push(te(e[0])),t.push(re(e[1])),t.push(0);}function K(e,t,r,o){for(var n,i,s=0,a=0;a<e.length;a++){var l=te(e[a][0]),u=re(e[a][1]);t.push(l),t.push(u),t.push(0),a>0&&(s+=o?(n*u-l*i)/2:Math.sqrt(Math.pow(l-n,2)+Math.pow(u-i,2))),n=l,i=u;}var h=t.length-3;t[2]=1,B(t,0,h,r),t[h+2]=1,t.size=Math.abs(s),t.start=0,t.end=t.size;}function ee(e,t,r,o){for(var n=0;n<e.length;n++){var i=[];K(e[n],i,r,o),t.push(i);}}function te(e){return e/360+.5}function re(e){var t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function oe(e,t,r,o,n,i,s,a){if(o/=t,i>=(r/=t)&&s<o)return e;if(s<r||i>=o)return null;for(var l=[],u=0;u<e.length;u++){var h=e[u],c=h.geometry,f=h.type,p=0===n?h.minX:h.minY,g=0===n?h.maxX:h.maxY;if(p>=r&&g<o)l.push(h);else if(!(g<r||p>=o)){var d=[];if(\"Point\"===f||\"MultiPoint\"===f)ne(c,d,r,o,n);else if(\"LineString\"===f)ie(c,d,r,o,n,!1,a.lineMetrics);else if(\"MultiLineString\"===f)ae(c,d,r,o,n,!1);else if(\"Polygon\"===f)ae(c,d,r,o,n,!0);else if(\"MultiPolygon\"===f)for(var m=0;m<c.length;m++){var y=[];ae(c[m],y,r,o,n,!0),y.length&&d.push(y);}if(d.length){if(a.lineMetrics&&\"LineString\"===f){for(m=0;m<d.length;m++)l.push(q(h.id,f,d[m],h.tags));continue}\"LineString\"!==f&&\"MultiLineString\"!==f||(1===d.length?(f=\"LineString\",d=d[0]):f=\"MultiLineString\"),\"Point\"!==f&&\"MultiPoint\"!==f||(f=3===d.length?\"Point\":\"MultiPoint\"),l.push(q(h.id,f,d,h.tags));}}}return l.length?l:null}function ne(e,t,r,o,n){for(var i=0;i<e.length;i+=3){var s=e[i+n];s>=r&&s<=o&&(t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]));}}function ie(e,t,r,o,n,i,s){for(var a,l,u=se(e),h=0===n?ue:he,c=e.start,f=0;f<e.length-3;f+=3){var p=e[f],g=e[f+1],d=e[f+2],m=e[f+3],y=e[f+4],v=0===n?p:g,x=0===n?m:y,w=!1;s&&(a=Math.sqrt(Math.pow(p-m,2)+Math.pow(g-y,2))),v<r?x>r&&(l=h(u,p,g,m,y,r),s&&(u.start=c+a*l)):v>o?x<o&&(l=h(u,p,g,m,y,o),s&&(u.start=c+a*l)):le(u,p,g,d),x<r&&v>=r&&(l=h(u,p,g,m,y,r),w=!0),x>o&&v<=o&&(l=h(u,p,g,m,y,o),w=!0),!i&&w&&(s&&(u.end=c+a*l),t.push(u),u=se(e)),s&&(c+=a);}var S=e.length-3;p=e[S],g=e[S+1],d=e[S+2],(v=0===n?p:g)>=r&&v<=o&&le(u,p,g,d),S=u.length-3,i&&S>=3&&(u[S]!==u[0]||u[S+1]!==u[1])&&le(u,u[0],u[1],u[2]),u.length&&t.push(u);}function se(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function ae(e,t,r,o,n,i){for(var s=0;s<e.length;s++)ie(e[s],t,r,o,n,i,!1);}function le(e,t,r,o){e.push(t),e.push(r),e.push(o);}function ue(e,t,r,o,n,i){var s=(i-t)/(o-t);return e.push(i),e.push(r+(n-r)*s),e.push(1),s}function he(e,t,r,o,n,i){var s=(i-r)/(n-r);return e.push(t+(o-t)*s),e.push(i),e.push(1),s}function ce(e,t){for(var r=[],o=0;o<e.length;o++){var n,i=e[o],s=i.type;if(\"Point\"===s||\"MultiPoint\"===s||\"LineString\"===s)n=fe(i.geometry,t);else if(\"MultiLineString\"===s||\"Polygon\"===s){n=[];for(var a=0;a<i.geometry.length;a++)n.push(fe(i.geometry[a],t));}else if(\"MultiPolygon\"===s)for(n=[],a=0;a<i.geometry.length;a++){for(var l=[],u=0;u<i.geometry[a].length;u++)l.push(fe(i.geometry[a][u],t));n.push(l);}r.push(q(i.id,s,n,i.tags));}return r}function fe(e,t){var r=[];r.size=e.size,void 0!==e.start&&(r.start=e.start,r.end=e.end);for(var o=0;o<e.length;o+=3)r.push(e[o]+t,e[o+1],e[o+2]);return r}function pe(e,t){if(e.transformed)return e;var r,o,n,i=1<<e.z,s=e.x,a=e.y;for(r=0;r<e.features.length;r++){var l=e.features[r],u=l.geometry,h=l.type;if(l.geometry=[],1===h)for(o=0;o<u.length;o+=2)l.geometry.push(ge(u[o],u[o+1],t,i,s,a));else for(o=0;o<u.length;o++){var c=[];for(n=0;n<u[o].length;n+=2)c.push(ge(u[o][n],u[o][n+1],t,i,s,a));l.geometry.push(c);}}return e.transformed=!0,e}function ge(e,t,r,o,n,i){return [Math.round(r*(e*o-n)),Math.round(r*(t*o-i))]}function de(e,t,r,o,n){for(var i=t===n.maxZoom?0:n.tolerance/((1<<t)*n.extent),s={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:o,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},a=0;a<e.length;a++){s.numFeatures++,me(s,e[a],i,n);var l=e[a].minX,u=e[a].minY,h=e[a].maxX,c=e[a].maxY;l<s.minX&&(s.minX=l),u<s.minY&&(s.minY=u),h>s.maxX&&(s.maxX=h),c>s.maxY&&(s.maxY=c);}return s}function me(e,t,r,o){var n=t.geometry,i=t.type,s=[];if(\"Point\"===i||\"MultiPoint\"===i)for(var a=0;a<n.length;a+=3)s.push(n[a]),s.push(n[a+1]),e.numPoints++,e.numSimplified++;else if(\"LineString\"===i)ye(s,n,e,r,!1,!1);else if(\"MultiLineString\"===i||\"Polygon\"===i)for(a=0;a<n.length;a++)ye(s,n[a],e,r,\"Polygon\"===i,0===a);else if(\"MultiPolygon\"===i)for(var l=0;l<n.length;l++){var u=n[l];for(a=0;a<u.length;a++)ye(s,u[a],e,r,!0,0===a);}if(s.length){var h=t.tags||null;if(\"LineString\"===i&&o.lineMetrics){for(var c in h={},t.tags)h[c]=t.tags[c];h.mapbox_clip_start=n.start/n.size,h.mapbox_clip_end=n.end/n.size;}var f={geometry:s,type:\"Polygon\"===i||\"MultiPolygon\"===i?3:\"LineString\"===i||\"MultiLineString\"===i?2:1,tags:h};null!==t.id&&(f.id=t.id),e.features.push(f);}}function ye(e,t,r,o,n,i){var s=o*o;if(o>0&&t.size<(n?s:o))r.numPoints+=t.length/3;else {for(var a=[],l=0;l<t.length;l+=3)(0===o||t[l+2]>s)&&(r.numSimplified++,a.push(t[l]),a.push(t[l+1])),r.numPoints++;n&&function(e,t){for(var r=0,o=0,n=e.length,i=n-2;o<n;i=o,o+=2)r+=(e[o]-e[i])*(e[o+1]+e[i+1]);if(r>0===t)for(o=0,n=e.length;o<n/2;o+=2){var s=e[o],a=e[o+1];e[o]=e[n-2-o],e[o+1]=e[n-1-o],e[n-2-o]=s,e[n-1-o]=a;}}(a,i),e.push(a);}}function ve(e,t){var r=(t=this.options=function(e,t){for(var r in t)e[r]=t[r];return e}(Object.create(this.options),t)).debug;if(r&&console.time(\"preprocess data\"),t.maxZoom<0||t.maxZoom>24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var o=function(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var o=0;o<e.features.length;o++)Q(r,e.features[o],t,o);else Q(r,\"Feature\"===e.type?e:{geometry:e},t);return r}(e,t);this.tiles={},this.tileCoords=[],r&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),(o=function(e,t){var r=t.buffer/t.extent,o=e,n=oe(e,1,-1-r,r,0,-1,2,t),i=oe(e,1,1-r,2+r,0,-1,2,t);return (n||i)&&(o=oe(e,1,-r,1+r,0,-1,2,t)||[],n&&(o=ce(n,1).concat(o)),i&&(o=o.concat(ce(i,-1)))),o}(o,t)).length&&this.splitTile(o,0,0,0),r&&(o.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)));}function xe(e,t,r){return 32*((1<<e)*r+t)+e}function we(e,t){const r=e.tileID.canonical;if(!this._geoJSONIndex)return t(null,null);const o=this._geoJSONIndex.getTile(r.z,r.x,r.y);if(!o)return t(null,null);const n=new h(o.features);let i=d(n);0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),t(null,{vectorTile:n,rawData:i.buffer});}ve.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},ve.prototype.splitTile=function(e,t,r,o,n,i,s){for(var a=[e,t,r,o],l=this.options,u=l.debug;a.length;){o=a.pop(),r=a.pop(),t=a.pop(),e=a.pop();var h=1<<t,c=xe(t,r,o),f=this.tiles[c];if(!f&&(u>1&&console.time(\"creation\"),f=this.tiles[c]=de(e,t,r,o,l),this.tileCoords.push({z:t,x:r,y:o}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,r,o,f.numFeatures,f.numPoints,f.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+t;this.stats[p]=(this.stats[p]||0)+1,this.total++;}if(f.source=e,n){if(t===l.maxZoom||t===n)continue;var g=1<<n-t;if(r!==Math.floor(i/g)||o!==Math.floor(s/g))continue}else if(t===l.indexMaxZoom||f.numPoints<=l.indexMaxPoints)continue;if(f.source=null,0!==e.length){u>1&&console.time(\"clipping\");var d,m,y,v,x,w,S=.5*l.buffer/l.extent,M=.5-S,P=.5+S,b=1+S;d=m=y=v=null,x=oe(e,h,r-S,r+P,0,f.minX,f.maxX,l),w=oe(e,h,r+M,r+b,0,f.minX,f.maxX,l),e=null,x&&(d=oe(x,h,o-S,o+P,1,f.minY,f.maxY,l),m=oe(x,h,o+M,o+b,1,f.minY,f.maxY,l),x=null),w&&(y=oe(w,h,o-S,o+P,1,f.minY,f.maxY,l),v=oe(w,h,o+M,o+b,1,f.minY,f.maxY,l),w=null),u>1&&console.timeEnd(\"clipping\"),a.push(d||[],t+1,2*r,2*o),a.push(m||[],t+1,2*r,2*o+1),a.push(y||[],t+1,2*r+1,2*o),a.push(v||[],t+1,2*r+1,2*o+1);}}},ve.prototype.getTile=function(e,t,r){var o=this.options,n=o.extent,i=o.debug;if(e<0||e>24)return null;var s=1<<e,a=xe(e,t=(t%s+s)%s,r);if(this.tiles[a])return pe(this.tiles[a],n);i>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,r);for(var l,u=e,h=t,c=r;!l&&u>0;)u--,h=Math.floor(h/2),c=Math.floor(c/2),l=this.tiles[xe(u,h,c)];return l&&l.source?(i>1&&console.log(\"found parent tile z%d-%d-%d\",u,h,c),i>1&&console.time(\"drilling down\"),this.splitTile(l.source,u,h,c,e,t,r),i>1&&console.timeEnd(\"drilling down\"),this.tiles[a]?pe(this.tiles[a],n):null):null};class Se extends e.VectorTileWorkerSource{constructor(e,t,r,o,n){super(e,t,r,o,we),n&&(this.loadGeoJSON=n);}loadData(t,r){const o=t&&t.request,n=o&&o.collectResourceTiming;this.loadGeoJSON(t,((s,a)=>{if(s||!a)return r(s);if(\"object\"!=typeof a)return r(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));{i(a,!0);try{if(t.filter){const r=e.createExpression(t.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(\"error\"===r.result)throw new Error(r.value.map((e=>`${e.key}: ${e.message}`)).join(\", \"));const o=a.features.filter((e=>r.value.evaluate({zoom:0},e)));a={type:\"FeatureCollection\",features:o};}this._geoJSONIndex=t.cluster?new j(function({superclusterOptions:t,clusterProperties:r}){if(!r||!t)return t;const o={},n={},i={accumulated:null,zoom:0},s={properties:null},a=Object.keys(r);for(const t of a){const[i,s]=r[t],a=e.createExpression(s),l=e.createExpression(\"string\"==typeof i?[i,[\"accumulated\"],[\"get\",t]]:i);o[t]=a.value,n[t]=l.value;}return t.map=e=>{s.properties=e;const t={};for(const e of a)t[e]=o[e].evaluate(i,s);return t},t.reduce=(e,t)=>{s.properties=t;for(const t of a)i.accumulated=e[t],e[t]=n[t].evaluate(i,s);},t}(t)).load(a.features):function(e,t){return new ve(e,t)}(a,t.geojsonVtOptions);}catch(s){return r(s)}this.loaded={};const l={};if(n){const r=e.getPerformanceMeasurement(o);r&&(l.resourceTiming={},l.resourceTiming[t.source]=JSON.parse(JSON.stringify(r)));}r(null,l);}}));}reloadTile(e,t){const r=this.loaded;return r&&r[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}loadGeoJSON(t,r){if(t.request)e.getJSON(t.request,r);else {if(\"string\"!=typeof t.data)return r(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));try{return r(null,JSON.parse(t.data))}catch(e){return r(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`))}}}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId));}catch(e){t(e);}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId));}catch(e){t(e);}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset));}catch(e){t(e);}}}class Me{constructor(t){this.self=t,this.actor=new e.Actor(t,this),this.layerIndexes={},this.availableImages={},this.isSpriteLoaded={},this.projections={},this.defaultProjection=e.getProjection({name:\"mercator\"}),this.workerSourceTypes={vector:e.VectorTileWorkerSource,geojson:Se},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name \"${e}\" already registered.`);this.workerSourceTypes[e]=t;},this.self.registerRTLTextPlugin=t=>{if(e.plugin.isParsed())throw new Error(\"RTL text plugin already registered.\");e.plugin.applyArabicShaping=t.applyArabicShaping,e.plugin.processBidirectionalText=t.processBidirectionalText,e.plugin.processStyledBidirectionalText=t.processStyledBidirectionalText;};}clearCaches(e,t,r){delete this.layerIndexes[e],delete this.availableImages[e],delete this.workerSources[e],delete this.demWorkerSources[e],r();}checkIfReady(e,t,r){r();}setReferrer(e,t){this.referrer=t;}spriteLoaded(t,r){this.isSpriteLoaded[t]=r;for(const o in this.workerSources[t]){const n=this.workerSources[t][o];for(const t in n)n[t]instanceof e.VectorTileWorkerSource&&(n[t].isSpriteLoaded=r,n[t].fire(new e.Event(\"isSpriteLoaded\")));}}setImages(e,t,r){this.availableImages[e]=t;for(const r in this.workerSources[e]){const o=this.workerSources[e][r];for(const e in o)o[e].availableImages=t;}r();}enableTerrain(e,t,r){this.terrain=t,r();}setProjection(t,r){this.projections[t]=e.getProjection(r);}setLayers(e,t,r){this.getLayerIndex(e).replace(t),r();}updateLayers(e,t,r){this.getLayerIndex(e).update(t.layers,t.removedIds),r();}loadTile(t,r,o){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},r):r;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,r.type,r.source).loadTile(n,o);}loadDEMTile(t,r,o){const n=this.enableTerrain?e.extend({buildQuadTree:this.terrain},r):r;this.getDEMWorkerSource(t,r.source).loadTile(n,o);}reloadTile(t,r,o){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},r):r;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,r.type,r.source).reloadTile(n,o);}abortTile(e,t,r){this.getWorkerSource(e,t.type,t.source).abortTile(t,r);}removeTile(e,t,r){this.getWorkerSource(e,t.type,t.source).removeTile(t,r);}removeSource(e,t,r){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const o=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==o.removeSource?o.removeSource(t,r):r();}loadWorkerSource(e,t,r){try{this.self.importScripts(t.url),r();}catch(e){r(e.toString());}}syncRTLPluginState(t,r,o){try{e.plugin.setState(r);const t=e.plugin.getPluginURL();if(e.plugin.isLoaded()&&!e.plugin.isParsed()&&null!=t){this.self.importScripts(t);const r=e.plugin.isParsed();o(r?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),r);}}catch(e){o(e.toString());}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let t=this.layerIndexes[e];return t||(t=this.layerIndexes[e]=new o),t}getWorkerSource(e,t,r){return this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),this.workerSources[e][t][r]||(this.workerSources[e][t][r]=new this.workerSourceTypes[t]({send:(t,r,o,n,i,s)=>{this.actor.send(t,r,o,e,i,s);},scheduler:this.actor.scheduler},this.getLayerIndex(e),this.getAvailableImages(e),this.isSpriteLoaded[e])),this.workerSources[e][t][r]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new n),this.demWorkerSources[e][t]}enforceCacheSizeLimit(t,r){e.enforceCacheSizeLimit(r);}getWorkerPerformanceMetrics(e,t,r){r(void 0,void 0);}}return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope&&(self.worker=new Me(self)),Me}));\n\ndefine([\"./shared\"],(function(e){\"use strict\";var t=i;function i(e){return !function(e){return \"undefined\"==typeof window||\"undefined\"==typeof document?\"not a browser\":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON?function(){if(!(\"Worker\"in window&&\"Blob\"in window&&\"URL\"in window))return !1;var e,t,i=new Blob([\"\"],{type:\"text/javascript\"}),o=URL.createObjectURL(i);try{t=new Worker(o),e=!0;}catch(t){e=!1;}return t&&t.terminate(),URL.revokeObjectURL(o),e}()?\"Uint8ClampedArray\"in window?ArrayBuffer.isView?function(){var e=document.createElement(\"canvas\");e.width=e.height=1;var t=e.getContext(\"2d\");if(!t)return !1;var i=t.getImageData(0,0,1,1);return i&&i.width===e.width}()?(void 0===o[t=e&&e.failIfMajorPerformanceCaveat]&&(o[t]=function(e){var t,o=function(e){var t=document.createElement(\"canvas\"),o=Object.create(i.webGLContextAttributes);return o.failIfMajorPerformanceCaveat=e,t.getContext(\"webgl\",o)||t.getContext(\"experimental-webgl\",o)}(e);if(!o)return !1;try{t=o.createShader(o.VERTEX_SHADER);}catch(e){return !1}return !(!t||o.isContextLost())&&(o.shaderSource(t,\"void main() {}\"),o.compileShader(t),!0===o.getShaderParameter(t,o.COMPILE_STATUS))}(t)),o[t]?document.documentMode?\"insufficient ECMAScript 6 support\":void 0:\"insufficient WebGL support\"):\"insufficient Canvas/getImageData support\":\"insufficient ArrayBuffer support\":\"insufficient Uint8ClampedArray support\":\"insufficient worker support\":\"insufficient JSON support\":\"insufficient Object support\":\"insufficient Function support\":\"insufficent Array support\";var t;}(e)}var o={};function r(e,t){if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return !1;for(let i=0;i<e.length;i++)if(!r(e[i],t[i]))return !1;return !0}if(\"object\"==typeof e&&null!==e&&null!==t){if(\"object\"!=typeof t)return !1;if(Object.keys(e).length!==Object.keys(t).length)return !1;for(const i in e)if(!r(e[i],t[i]))return !1;return !0}return e===t}function n(t,i,o){const r=e.window.document.createElement(t);return void 0!==i&&(r.className=i),o&&o.appendChild(r),r}function a(t,i,o){const r=e.window.document.createElementNS(\"http://www.w3.org/2000/svg\",t);for(const e of Object.keys(i))r.setAttributeNS(null,e,i[e]);return o&&o.appendChild(r),r}i.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};const s=e.window.document&&e.window.document.documentElement.style,l=s&&void 0!==s.userSelect?\"userSelect\":\"WebkitUserSelect\";let c;function h(){s&&l&&(c=s[l],s[l]=\"none\");}function _(){s&&l&&(s[l]=c);}function u(t){t.preventDefault(),t.stopPropagation(),e.window.removeEventListener(\"click\",u,!0);}function d(){e.window.addEventListener(\"click\",u,!0),e.window.setTimeout((()=>{e.window.removeEventListener(\"click\",u,!0);}),0);}function p(e,t){const i=e.getBoundingClientRect();return g(e,i,t)}function m(e,t){const i=e.getBoundingClientRect(),o=[];for(let r=0;r<t.length;r++)o.push(g(e,i,t[r]));return o}function f(t){return void 0!==e.window.InstallTrigger&&2===t.button&&t.ctrlKey&&e.window.navigator.platform.toUpperCase().indexOf(\"MAC\")>=0?0:t.button}function g(t,i,o){const r=t.offsetWidth===i.width?1:t.offsetWidth/i.width;return new e.pointGeometry((o.clientX-i.left)*r,(o.clientY-i.top)*r)}function v(e,t){var i=t[0],o=t[1],r=t[2],n=t[3],a=i*n-r*o;return a?(e[0]=n*(a=1/a),e[1]=-o*a,e[2]=-r*a,e[3]=i*a,e):null}function x(e){const{userImage:t}=e;return !!(t&&t.render&&t.render())&&(e.data.replace(new Uint8Array(t.data.buffer)),!0)}class y extends e.Evented{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new e.RGBAImage({width:1,height:1}),this.dirty=!0;}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,callback:t}of this.requestors)this._notify(e,t);this.requestors=[];}}hasImage(e){return !!this.getImage(e)}getImage(e){return this.images[e]}addImage(e,t){this._validate(e,t)&&(this.images[e]=t);}_validate(t,i){let o=!0;return this._validateStretch(i.stretchX,i.data&&i.data.width)||(this.fire(new e.ErrorEvent(new Error(`Image \"${t}\" has invalid \"stretchX\" value`))),o=!1),this._validateStretch(i.stretchY,i.data&&i.data.height)||(this.fire(new e.ErrorEvent(new Error(`Image \"${t}\" has invalid \"stretchY\" value`))),o=!1),this._validateContent(i.content,i)||(this.fire(new e.ErrorEvent(new Error(`Image \"${t}\" has invalid \"content\" value`))),o=!1),o}_validateStretch(e,t){if(!e)return !0;let i=0;for(const o of e){if(o[0]<i||o[1]<o[0]||t<o[1])return !1;i=o[1];}return !0}_validateContent(e,t){return !(e&&(4!==e.length||e[0]<0||t.data.width<e[0]||e[1]<0||t.data.height<e[1]||e[2]<0||t.data.width<e[2]||e[3]<0||t.data.height<e[3]||e[2]<e[0]||e[3]<e[1]))}updateImage(e,t){t.version=this.images[e].version+1,this.images[e]=t,this.updatedImages[e]=!0;}removeImage(e){const t=this.images[e];delete this.images[e],delete this.patterns[e],t.userImage&&t.userImage.onRemove&&t.userImage.onRemove();}listImages(){return Object.keys(this.images)}getImages(e,t){let i=!0;if(!this.isLoaded())for(const t of e)this.images[t]||(i=!1);this.isLoaded()||i?this._notify(e,t):this.requestors.push({ids:e,callback:t});}_notify(t,i){const o={};for(const i of t){this.images[i]||this.fire(new e.Event(\"styleimagemissing\",{id:i}));const t=this.images[i];t?o[i]={data:t.data.clone(),pixelRatio:t.pixelRatio,sdf:t.sdf,version:t.version,stretchX:t.stretchX,stretchY:t.stretchY,content:t.content,hasRenderCallback:Boolean(t.userImage&&t.userImage.render)}:e.warnOnce(`Image \"${i}\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.`);}i(null,o);}getPixelSize(){const{width:e,height:t}=this.atlasImage;return {width:e,height:t}}getPattern(t){const i=this.patterns[t],o=this.getImage(t);if(!o)return null;if(i&&i.position.version===o.version)return i.position;if(i)i.position.version=o.version;else {const i={w:o.data.width+2,h:o.data.height+2,x:0,y:0},r=new e.ImagePosition(i,o);this.patterns[t]={bin:i,position:r};}return this._updatePatternAtlas(),this.patterns[t].position}bind(t){const i=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new e.Texture(t,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE);}_updatePatternAtlas(){const t=[];for(const e in this.patterns)t.push(this.patterns[e].bin);const{w:i,h:o}=e.potpack(t),r=this.atlasImage;r.resize({width:i||1,height:o||1});for(const t in this.patterns){const{bin:i}=this.patterns[t],o=i.x+1,n=i.y+1,a=this.images[t].data,s=a.width,l=a.height;e.RGBAImage.copy(a,r,{x:0,y:0},{x:o,y:n},{width:s,height:l}),e.RGBAImage.copy(a,r,{x:0,y:l-1},{x:o,y:n-1},{width:s,height:1}),e.RGBAImage.copy(a,r,{x:0,y:0},{x:o,y:n+l},{width:s,height:1}),e.RGBAImage.copy(a,r,{x:s-1,y:0},{x:o-1,y:n},{width:1,height:l}),e.RGBAImage.copy(a,r,{x:0,y:0},{x:o+s,y:n},{width:1,height:l});}this.dirty=!0;}beginFrame(){this.callbackDispatchedThisFrame={};}dispatchRenderCallbacks(e){for(const t of e){if(this.callbackDispatchedThisFrame[t])continue;this.callbackDispatchedThisFrame[t]=!0;const e=this.images[t];x(e)&&this.updateImage(t,e);}}}const b=new e.Properties({anchor:new e.DataConstantProperty(e.spec.light.anchor),position:new class{constructor(){this.specification=e.spec.light.position;}possiblyEvaluate(t,i){return function([t,i,o]){const r=e.degToRad(i+90),n=e.degToRad(o);return {x:t*Math.cos(r)*Math.sin(n),y:t*Math.sin(r)*Math.sin(n),z:t*Math.cos(n),azimuthal:i,polar:o}}(t.expression.evaluate(i))}interpolate(t,i,o){return {x:e.number(t.x,i.x,o),y:e.number(t.y,i.y,o),z:e.number(t.z,i.z,o),azimuthal:e.number(t.azimuthal,i.azimuthal,o),polar:e.number(t.polar,i.polar,o)}}},color:new e.DataConstantProperty(e.spec.light.color),intensity:new e.DataConstantProperty(e.spec.light.intensity)}),w=\"-transition\";class T extends e.Evented{constructor(t){super(),this._transitionable=new e.Transitionable(b),this.setLight(t),this._transitioning=this._transitionable.untransitioned();}getLight(){return this._transitionable.serialize()}setLight(t,i={}){if(!this._validate(e.validateLight,t,i))for(const i in t){const o=t[i];e.endsWith(i,w)?this._transitionable.setTransition(i.slice(0,-w.length),o):this._transitionable.setValue(i,o);}}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}_validate(t,i,o){return (!o||!1!==o.validate)&&e.emitValidationErrors(this,t.call(e.validateStyle,e.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:e.spec})))}}const E=new e.Properties({source:new e.DataConstantProperty(e.spec.terrain.source),exaggeration:new e.DataConstantProperty(e.spec.terrain.exaggeration)}),C=\"-transition\";class I extends e.Evented{constructor(t,i){super(),this._transitionable=new e.Transitionable(E),this.set(t),this._transitioning=this._transitionable.untransitioned(),this.drapeRenderMode=i;}get(){return this._transitionable.serialize()}set(t){for(const i in t){const o=t[i];e.endsWith(i,C)?this._transitionable.setTransition(i.slice(0,-C.length),o):this._transitionable.setValue(i,o);}}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}}function M(t,i,o,r){const n=e.smoothstep(45,65,o),[a,s]=S(t,r),l=e.length(i);let c=1-Math.min(1,Math.exp((l-a)/(s-a)*-6));return c*=c*c,c=Math.min(1,1.00747*c),c*n*t.alpha}function S(e,t){const i=.5/Math.tan(.5*t);return [e.range[0]+i,e.range[1]+i]}const z=new e.Properties({range:new e.DataConstantProperty(e.spec.fog.range),color:new e.DataConstantProperty(e.spec.fog.color),\"horizon-blend\":new e.DataConstantProperty(e.spec.fog[\"horizon-blend\"])}),D=\"-transition\";class P extends e.Evented{constructor(t,i){super(),this._transitionable=new e.Transitionable(z),this.set(t),this._transitioning=this._transitionable.untransitioned(),this._transform=i;}get state(){return {range:this.properties.get(\"range\"),horizonBlend:this.properties.get(\"horizon-blend\"),alpha:this.properties.get(\"color\").a}}get(){return this._transitionable.serialize()}set(t,i={}){if(!this._validate(e.validateFog,t,i))for(const i in t){const o=t[i];e.endsWith(i,D)?this._transitionable.setTransition(i.slice(0,-D.length),o):this._transitionable.setValue(i,o);}}getOpacity(t){if(!this._transform.projection.supportsFog)return 0;const i=this.properties&&this.properties.get(\"color\")||1;return e.smoothstep(45,65,t)*i.a}getOpacityAtLatLng(t,i){return this._transform.projection.supportsFog?function(t,i,o){const r=e.MercatorCoordinate.fromLngLat(i),n=o.elevation?o.elevation.getAtPointOrZero(r):0,a=[r.x,r.y,n];return e.transformMat4(a,a,o.mercatorFogMatrix),M(t,a,o.pitch,o._fov)}(this.state,t,i):0}getFovAdjustedRange(e){return this._transform.projection.supportsFog?S(this.state,e):[0,1]}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}_validate(t,i,o){return (!o||!1!==o.validate)&&e.emitValidationErrors(this,t.call(e.validateStyle,e.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:e.spec})))}}class A{constructor(t,i){this.workerPool=t,this.actors=[],this.currentActor=0,this.id=e.uniqueId();const o=this.workerPool.acquire(this.id);for(let e=0;e<o.length;e++){const t=new A.Actor(o[e],i,this.id);t.name=`Worker ${e}`,this.actors.push(t);}this.ready=!1,this.broadcast(\"checkIfReady\",null,(()=>{this.ready=!0;}));}broadcast(t,i,o){e.asyncAll(this.actors,((e,o)=>{e.send(t,i,o);}),o=o||function(){});}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach((e=>{e.remove();})),this.actors=[],this.workerPool.release(this.id);}}function L(t,i,o){return i*(e.EXTENT/(t.tileSize*Math.pow(2,o-t.tileID.overscaledZ)))}A.Actor=e.Actor;class R{constructor(e,t,i,o){this.screenBounds=e,this.cameraPoint=t,this._screenRaycastCache={},this._cameraRaycastCache={},this.isAboveHorizon=i,this.screenGeometry=this.bufferedScreenGeometry(0),this.screenGeometryMercator=this.screenGeometry.map((e=>o.pointCoordinate3D(e))),this.cameraGeometry=this.bufferedCameraGeometry(0);}static createFromScreenPoints(t,i){let o,r;if(t instanceof e.pointGeometry||\"number\"==typeof t[0]){const n=e.pointGeometry.convert(t);o=[e.pointGeometry.convert(t)],r=i.isPointAboveHorizon(n);}else {const n=e.pointGeometry.convert(t[0]),a=e.pointGeometry.convert(t[1]);o=[n,a],r=e.polygonizeBounds(n,a).every((e=>i.isPointAboveHorizon(e)));}return new R(o,i.getCameraPoint(),r,i)}isPointQuery(){return 1===this.screenBounds.length}bufferedScreenGeometry(t){return e.polygonizeBounds(this.screenBounds[0],1===this.screenBounds.length?this.screenBounds[0]:this.screenBounds[1],t)}bufferedCameraGeometry(t){const i=this.screenBounds[0],o=1===this.screenBounds.length?this.screenBounds[0].add(new e.pointGeometry(1,1)):this.screenBounds[1],r=e.polygonizeBounds(i,o,0,!1);return this.cameraPoint.y>o.y&&(this.cameraPoint.x>i.x&&this.cameraPoint.x<o.x?r.splice(3,0,this.cameraPoint):this.cameraPoint.x>=o.x?r[2]=this.cameraPoint:this.cameraPoint.x<=i.x&&(r[3]=this.cameraPoint)),e.bufferConvexPolygon(r,t)}containsTile(t,i,o){const r=t.queryPadding+1,n=t.tileID.wrap,a=o?this._bufferedCameraMercator(r,i).map((i=>e.getTilePoint(t.tileTransform,i,n))):this._bufferedScreenMercator(r,i).map((i=>e.getTilePoint(t.tileTransform,i,n))),s=this.screenGeometryMercator.map((i=>e.getTileVec3(t.tileTransform,i,n))),l=s.map((t=>new e.pointGeometry(t[0],t[1]))),c=i.getFreeCameraOptions().position||new e.MercatorCoordinate(0,0,0),h=e.getTileVec3(t.tileTransform,c,n),_=s.map((t=>{const i=e.sub(t,t,h);return e.normalize(i,i),new e.Ray(h,i)})),u=L(t,1,i.zoom);if(e.polygonIntersectsBox(a,0,0,e.EXTENT,e.EXTENT))return {queryGeometry:this,tilespaceGeometry:l,tilespaceRays:_,bufferedTilespaceGeometry:a,bufferedTilespaceBounds:(d=e.getBounds(a),d.min.x=e.clamp(d.min.x,0,e.EXTENT),d.min.y=e.clamp(d.min.y,0,e.EXTENT),d.max.x=e.clamp(d.max.x,0,e.EXTENT),d.max.y=e.clamp(d.max.y,0,e.EXTENT),d),tile:t,tileID:t.tileID,pixelToTileUnitsFactor:u};var d;}_bufferedScreenMercator(e,t){const i=k(e);if(this._screenRaycastCache[i])return this._screenRaycastCache[i];{const o=this.bufferedScreenGeometry(e).map((e=>t.pointCoordinate3D(e)));return this._screenRaycastCache[i]=o,o}}_bufferedCameraMercator(e,t){const i=k(e);if(this._cameraRaycastCache[i])return this._cameraRaycastCache[i];{const o=this.bufferedCameraGeometry(e).map((e=>t.pointCoordinate3D(e)));return this._cameraRaycastCache[i]=o,o}}}function k(e){return 100*e|0}function O(t,i,o){const r=function(r,n){if(r)return o(r);if(n){const r=e.pick(e.extend(n,t),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"mapbox_logo\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);n.vector_layers&&(r.vectorLayers=n.vector_layers,r.vectorLayerIds=r.vectorLayers.map((e=>e.id))),r.tiles=i.canonicalizeTileset(r,t.url),o(null,r);}};return t.url?e.getJSON(i.transformRequest(i.normalizeSourceURL(t.url),e.ResourceType.Source),r):e.exported.frame((()=>r(null,t)))}class B{constructor(t,i,o){this.bounds=e.LngLatBounds.convert(this.validateBounds(t)),this.minzoom=i||0,this.maxzoom=o||24;}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(t){const i=Math.pow(2,t.z),o=Math.floor(e.mercatorXfromLng(this.bounds.getWest())*i),r=Math.floor(e.mercatorYfromLat(this.bounds.getNorth())*i),n=Math.ceil(e.mercatorXfromLng(this.bounds.getEast())*i),a=Math.ceil(e.mercatorYfromLat(this.bounds.getSouth())*i);return t.x>=o&&t.x<n&&t.y>=r&&t.y<a}}class F{constructor(e,t,i){this.context=e;const o=e.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||t.destroy();}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(e){const t=this.context.gl;this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const U={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"};class N{constructor(e,t,i,o){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=o,this.context=e;const r=e.gl;this.buffer=r.createBuffer(),e.bindVertexBuffer.set(this.buffer),r.bufferData(r.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||t.destroy();}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(e){const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer);}enableAttributes(e,t){for(let i=0;i<this.attributes.length;i++){const o=t.attributes[this.attributes[i].name];void 0!==o&&e.enableVertexAttribArray(o);}}setVertexAttribPointers(e,t,i){for(let o=0;o<this.attributes.length;o++){const r=this.attributes[o],n=t.attributes[r.name];void 0!==n&&e.vertexAttribPointer(n,r.components,e[U[r.type]],!1,this.itemSize,r.offset+this.itemSize*(i||0));}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}class G{constructor(e){this.gl=e.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;}get(){return this.current}set(e){}getDefault(){return this.default}setDefault(){this.set(this.default);}}class j extends G{getDefault(){return e.Color.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.clearColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class Z extends G{getDefault(){return 1}set(e){(e!==this.current||this.dirty)&&(this.gl.clearDepth(e),this.current=e,this.dirty=!1);}}class V extends G{getDefault(){return 0}set(e){(e!==this.current||this.dirty)&&(this.gl.clearStencil(e),this.current=e,this.dirty=!1);}}class W extends G{getDefault(){return [!0,!0,!0,!0]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.colorMask(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class q extends G{getDefault(){return !0}set(e){(e!==this.current||this.dirty)&&(this.gl.depthMask(e),this.current=e,this.dirty=!1);}}class X extends G{getDefault(){return 255}set(e){(e!==this.current||this.dirty)&&(this.gl.stencilMask(e),this.current=e,this.dirty=!1);}}class $ extends G{getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}set(e){const t=this.current;(e.func!==t.func||e.ref!==t.ref||e.mask!==t.mask||this.dirty)&&(this.gl.stencilFunc(e.func,e.ref,e.mask),this.current=e,this.dirty=!1);}}class H extends G{getDefault(){const e=this.gl;return [e.KEEP,e.KEEP,e.KEEP]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||this.dirty)&&(this.gl.stencilOp(e[0],e[1],e[2]),this.current=e,this.dirty=!1);}}class K extends G{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.STENCIL_TEST):t.disable(t.STENCIL_TEST),this.current=e,this.dirty=!1;}}class Y extends G{getDefault(){return [0,1]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.depthRange(e[0],e[1]),this.current=e,this.dirty=!1);}}class J extends G{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.DEPTH_TEST):t.disable(t.DEPTH_TEST),this.current=e,this.dirty=!1;}}class Q extends G{getDefault(){return this.gl.LESS}set(e){(e!==this.current||this.dirty)&&(this.gl.depthFunc(e),this.current=e,this.dirty=!1);}}class ee extends G{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.BLEND):t.disable(t.BLEND),this.current=e,this.dirty=!1;}}class te extends G{getDefault(){const e=this.gl;return [e.ONE,e.ZERO]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.blendFunc(e[0],e[1]),this.current=e,this.dirty=!1);}}class ie extends G{getDefault(){return e.Color.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.blendColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class oe extends G{getDefault(){return this.gl.FUNC_ADD}set(e){(e!==this.current||this.dirty)&&(this.gl.blendEquation(e),this.current=e,this.dirty=!1);}}class re extends G{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.CULL_FACE):t.disable(t.CULL_FACE),this.current=e,this.dirty=!1;}}class ne extends G{getDefault(){return this.gl.BACK}set(e){(e!==this.current||this.dirty)&&(this.gl.cullFace(e),this.current=e,this.dirty=!1);}}class ae extends G{getDefault(){return this.gl.CCW}set(e){(e!==this.current||this.dirty)&&(this.gl.frontFace(e),this.current=e,this.dirty=!1);}}class se extends G{getDefault(){return null}set(e){(e!==this.current||this.dirty)&&(this.gl.useProgram(e),this.current=e,this.dirty=!1);}}class le extends G{getDefault(){return this.gl.TEXTURE0}set(e){(e!==this.current||this.dirty)&&(this.gl.activeTexture(e),this.current=e,this.dirty=!1);}}class ce extends G{getDefault(){const e=this.gl;return [0,0,e.drawingBufferWidth,e.drawingBufferHeight]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.viewport(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class he extends G{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,e),this.current=e,this.dirty=!1;}}class _e extends G{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindRenderbuffer(t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class ue extends G{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindTexture(t.TEXTURE_2D,e),this.current=e,this.dirty=!1;}}class de extends G{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class pe extends G{getDefault(){return null}set(e){const t=this.gl;t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class me extends G{constructor(e){super(e),this.vao=e.extVertexArrayObject;}getDefault(){return null}set(e){this.vao&&(e!==this.current||this.dirty)&&(this.vao.bindVertexArrayOES(e),this.current=e,this.dirty=!1);}}class fe extends G{getDefault(){return 4}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_ALIGNMENT,e),this.current=e,this.dirty=!1;}}class ge extends G{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e),this.current=e,this.dirty=!1;}}class ve extends G{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,e),this.current=e,this.dirty=!1;}}class xe extends G{constructor(e,t){super(e),this.context=e,this.parent=t;}getDefault(){return null}}class ye extends xe{setDirty(){this.dirty=!0;}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),this.current=e,this.dirty=!1;}}class be extends xe{attachment(){return this.gl.DEPTH_ATTACHMENT}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,this.attachment(),t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class we extends be{attachment(){return this.gl.DEPTH_STENCIL_ATTACHMENT}}class Te{constructor(e,t,i,o){this.context=e,this.width=t,this.height=i;const r=this.framebuffer=e.gl.createFramebuffer();this.colorAttachment=new ye(e,r),o&&(this.depthAttachment=new be(e,r));}destroy(){const e=this.context.gl,t=this.colorAttachment.get();if(t&&e.deleteTexture(t),this.depthAttachment){const t=this.depthAttachment.get();t&&e.deleteRenderbuffer(t);}e.deleteFramebuffer(this.framebuffer);}}class Ee{constructor(e){this.gl=e,this.extVertexArrayObject=this.gl.getExtension(\"OES_vertex_array_object\"),this.clearColor=new j(this),this.clearDepth=new Z(this),this.clearStencil=new V(this),this.colorMask=new W(this),this.depthMask=new q(this),this.stencilMask=new X(this),this.stencilFunc=new $(this),this.stencilOp=new H(this),this.stencilTest=new K(this),this.depthRange=new Y(this),this.depthTest=new J(this),this.depthFunc=new Q(this),this.blend=new ee(this),this.blendFunc=new te(this),this.blendColor=new ie(this),this.blendEquation=new oe(this),this.cullFace=new re(this),this.cullFaceSide=new ne(this),this.frontFace=new ae(this),this.program=new se(this),this.activeTexture=new le(this),this.viewport=new ce(this),this.bindFramebuffer=new he(this),this.bindRenderbuffer=new _e(this),this.bindTexture=new ue(this),this.bindVertexBuffer=new de(this),this.bindElementBuffer=new pe(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new me(this),this.pixelStoreUnpack=new fe(this),this.pixelStoreUnpackPremultiplyAlpha=new ge(this),this.pixelStoreUnpackFlipY=new ve(this),this.extTextureFilterAnisotropic=e.getExtension(\"EXT_texture_filter_anisotropic\")||e.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||e.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.extTextureFilterAnisotropicForceOff=!1,this.extTextureHalfFloat=e.getExtension(\"OES_texture_half_float\"),this.extTextureHalfFloat&&(e.getExtension(\"OES_texture_half_float_linear\"),this.extRenderToTextureHalfFloat=e.getExtension(\"EXT_color_buffer_half_float\")),this.extTimerQuery=e.getExtension(\"EXT_disjoint_timer_query\"),this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE);}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.extVertexArrayObject&&(this.bindVertexArrayOES.dirty=!0),this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;}createIndexBuffer(e,t){return new F(this,e,t)}createVertexBuffer(e,t,i){return new N(this,e,t,i)}createRenderbuffer(e,t,i){const o=this.gl,r=o.createRenderbuffer();return this.bindRenderbuffer.set(r),o.renderbufferStorage(o.RENDERBUFFER,e,t,i),this.bindRenderbuffer.set(null),r}createFramebuffer(e,t,i){return new Te(this,e,t,i)}clear({color:e,depth:t,stencil:i}){const o=this.gl;let r=0;e&&(r|=o.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==t&&(r|=o.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(t),this.depthMask.set(!0)),void 0!==i&&(r|=o.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),o.clear(r);}setCullFace(e){!1===e.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(e.mode),this.frontFace.set(e.frontFace));}setDepthMode(e){e.func!==this.gl.ALWAYS||e.mask?(this.depthTest.set(!0),this.depthFunc.set(e.func),this.depthMask.set(e.mask),this.depthRange.set(e.range)):this.depthTest.set(!1);}setStencilMode(e){e.test.func!==this.gl.ALWAYS||e.mask?(this.stencilTest.set(!0),this.stencilMask.set(e.mask),this.stencilOp.set([e.fail,e.depthFail,e.pass]),this.stencilFunc.set({func:e.test.func,ref:e.ref,mask:e.test.mask})):this.stencilTest.set(!1);}setColorMode(t){r(t.blendFunction,e.ColorMode.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(t.blendFunction),this.blendColor.set(t.blendColor)),this.colorMask.set(t.mask);}unbindVAO(){this.extVertexArrayObject&&this.bindVertexArrayOES.set(null);}}class Ce extends e.Evented{constructor(t,i,o,r){super(),this.id=t,this.dispatcher=o,this.setEventedParent(r),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=e.extend({type:\"raster\"},i),e.extend(this,e.pick(i,[\"url\",\"scheme\",\"tileSize\"]));}load(){this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=O(this._options,this.map._requestManager,((t,i)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(e.extend(this,i),i.bounds&&(this.tileBounds=new B(i.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(i.tiles),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));}loaded(){return this._loaded}onAdd(e){this.map=e,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}serialize(){return e.extend({},this._options)}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(t,i){const o=e.exported.devicePixelRatio>=2,r=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),o,this.tileSize);t.request=e.getImage(this.map._requestManager.transformRequest(r,e.ResourceType.Tile),((o,r,n,a)=>(delete t.request,t.aborted?(t.state=\"unloaded\",i(null)):o?(t.state=\"errored\",i(o)):r?(this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:n,expires:a}),t.setTexture(r,this.map.painter),t.state=\"loaded\",e.cacheEntryPossiblyAdded(this.dispatcher),void i(null)):i(null))));}static loadTileData(e,t,i){e.setTexture(t,i);}static unloadTileData(e,t){e.texture&&t.saveTileTexture(e.texture);}abortTile(e,t){e.request&&(e.request.cancel(),delete e.request),t();}unloadTile(e,t){e.texture&&this.map.painter.saveTileTexture(e.texture),t();}hasTransition(){return !1}}let Ie;function Me(t,i,o,r,n,a,s,l){const c=[t,o,n,i,r,a,1,1,1],h=[s,l,1],_=e.adjoint([],c),[u,d,p]=e.transformMat3(h,h,e.transpose(_,_));return e.multiply(c,[u,0,0,0,d,0,0,0,p],c)}class Se extends e.Evented{constructor(e,t,i,o){super(),this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(o),this.options=t;}load(t){this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,e.getImage(this.map._requestManager.transformRequest(this.url,e.ResourceType.Image),((i,o)=>{if(this._loaded=!0,i)this.fire(new e.ErrorEvent(i));else if(o){const{HTMLImageElement:i}=e.window;this.image=o instanceof i?e.exported.getImageData(o):o,this.width=this.image.width,this.height=this.image.height,t&&(this.coordinates=t),this._finishLoading();}}));}loaded(){return this._loaded}updateImage(e){return this.image&&e.url?(this.options.url=e.url,this.load(e.coordinates),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));}onAdd(e){this.map=e,this.load();}onRemove(){this.texture&&this.texture.destroy();}setCoordinates(t){this.coordinates=t,this._boundsArray=void 0;const i=t.map(e.MercatorCoordinate.fromLngLat);return this.tileID=function(t){let i=1/0,o=1/0,r=-1/0,n=-1/0;for(const e of t)i=Math.min(i,e.x),o=Math.min(o,e.y),r=Math.max(r,e.x),n=Math.max(n,e.y);const a=Math.max(r-i,n-o),s=Math.max(0,Math.floor(-Math.log(a)/Math.LN2)),l=Math.pow(2,s);return new e.CanonicalTileID(s,Math.floor((i+r)/2*l),Math.floor((o+n)/2*l))}(i),this.minzoom=this.maxzoom=this.tileID.z,this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this}_clear(){this._boundsArray=void 0;}_prepareData(t){for(const e in this.tiles){const t=this.tiles[e];\"loaded\"!==t.state&&(t.state=\"loaded\",t.texture=this.texture);}if(this._boundsArray)return;const i=e.tileTransform(this.tileID,this.map.transform.projection),[o,r,n,a]=this.coordinates.map((t=>{const o=i.projection.project(t[0],t[1]);return e.getTilePoint(i,o)._round()}));this.perspectiveTransform=function(t,i,o,r,n,a,s,l,c,h){const _=Me(0,0,t,0,0,i,t,i),u=Me(o,r,n,a,s,l,c,h);return e.multiply(u,e.adjoint(_,_),u),[u[6]/u[8]*t/e.EXTENT,u[7]/u[8]*i/e.EXTENT]}(this.width,this.height,o.x,o.y,r.x,r.y,a.x,a.y,n.x,n.y);const s=this._boundsArray=new e.StructArrayLayout4i8;s.emplaceBack(o.x,o.y,0,0),s.emplaceBack(r.x,r.y,e.EXTENT,0),s.emplaceBack(a.x,a.y,0,e.EXTENT),s.emplaceBack(n.x,n.y,e.EXTENT,e.EXTENT),this.boundsBuffer&&this.boundsBuffer.destroy(),this.boundsBuffer=t.createVertexBuffer(s,e.boundsAttributes.members),this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2);}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const t=this.map.painter.context,i=t.gl;this.texture?this.texture.update(this.image):(this.texture=new e.Texture(t,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE)),this._prepareData(t);}loadTile(e,t){this.tileID&&this.tileID.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={},t(null)):(e.state=\"errored\",t(null));}serialize(){return {type:\"image\",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return !1}}const ze={vector:class extends e.Evented{constructor(t,i,o,r){if(super(),this.id=t,this.dispatcher=o,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,e.extend(this,e.pick(i,[\"url\",\"scheme\",\"tileSize\",\"promoteId\"])),this._options=e.extend({type:\"vector\"},i),this._collectResourceTiming=i.collectResourceTiming,512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(r),this._tileWorkers={},this._deduped=new e.DedupedRequest;}load(){this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=O(this._options,this.map._requestManager,((t,i)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(e.extend(this,i),i.bounds&&(this.tileBounds=new B(i.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(i.tiles,this.map._requestManager._customAccessToken),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));}loaded(){return this._loaded}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}onAdd(e){this.map=e,this.load();}setSourceProperty(e){this._tileJSONRequest&&this._tileJSONRequest.cancel(),e();const t=this.map.style._getSourceCaches(this.id);for(const e of t)e.clearTiles();this.load();}setTiles(e){return this.setSourceProperty((()=>{this._options.tiles=e;})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e;})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}serialize(){return e.extend({},this._options)}loadTile(t,i){const o=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme)),r={request:this.map._requestManager.transformRequest(o,e.ResourceType.Tile),data:void 0,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,isSymbolTile:t.isSymbolTile};if(r.request.collectResourceTiming=this._collectResourceTiming,t.actor&&\"expired\"!==t.state)\"loading\"===t.state?t.reloadCallback=i:t.request=t.actor.send(\"reloadTile\",r,n.bind(this));else if(t.actor=this._tileWorkers[o]=this._tileWorkers[o]||this.dispatcher.getActor(),this.dispatcher.ready)t.request=t.actor.send(\"loadTile\",r,n.bind(this),void 0,!0);else {const i=e.loadVectorTile.call({deduped:this._deduped},r,((e,i)=>{e||!i?n.call(this,e):(r.data={cacheControl:i.cacheControl,expires:i.expires,rawData:i.rawData.slice(0)},t.actor&&t.actor.send(\"loadTile\",r,n.bind(this),void 0,!0));}),!0);t.request={cancel:i};}function n(o,r){return delete t.request,t.aborted?i(null):o&&404!==o.status?i(o):(r&&r.resourceTiming&&(t.resourceTiming=r.resourceTiming),this.map._refreshExpiredTiles&&r&&t.setExpiryData(r),t.loadVectorData(r,this.map.painter),e.cacheEntryPossiblyAdded(this.dispatcher),i(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.actor&&e.actor.send(\"abortTile\",{uid:e.uid,type:this.type,source:this.id});}unloadTile(e){e.unloadVectorData(),e.actor&&e.actor.send(\"removeTile\",{uid:e.uid,type:this.type,source:this.id});}hasTransition(){return !1}afterUpdate(){this._tileWorkers={};}},raster:Ce,\"raster-dem\":class extends Ce{constructor(t,i,o,r){super(t,i,o,r),this.type=\"raster-dem\",this.maxzoom=22,this._options=e.extend({type:\"raster-dem\"},i),this.encoding=i.encoding||\"mapbox\";}loadTile(t,i){const o=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),!1,this.tileSize);function r(e,o){e&&(t.state=\"errored\",i(e)),o&&(t.dem=o,t.dem.onDeserialize(),t.needsHillshadePrepare=!0,t.needsDEMTextureUpload=!0,t.state=\"loaded\",i(null));}t.request=e.getImage(this.map._requestManager.transformRequest(o,e.ResourceType.Tile),function(o,n,a,s){if(delete t.request,t.aborted)t.state=\"unloaded\",i(null);else if(o)t.state=\"errored\",i(o);else if(n){this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:a,expires:s});const i=e.window.ImageBitmap&&n instanceof e.window.ImageBitmap&&(null==Ie&&(Ie=e.window.OffscreenCanvas&&new e.window.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof e.window.createImageBitmap),Ie),o=1-(n.width-e.prevPowerOfTwo(n.width))/2;o<1||t.neighboringTiles||(t.neighboringTiles=this._getNeighboringTiles(t.tileID));const l=i?n:e.exported.getImageData(n,o),c={uid:t.uid,coord:t.tileID,source:this.id,rawImageData:l,encoding:this.encoding,padding:o};t.actor&&\"expired\"!==t.state||(t.actor=this.dispatcher.getActor(),t.actor.send(\"loadDEMTile\",c,r.bind(this),void 0,!0));}}.bind(this));}_getNeighboringTiles(t){const i=t.canonical,o=Math.pow(2,i.z),r=(i.x-1+o)%o,n=0===i.x?t.wrap-1:t.wrap,a=(i.x+1+o)%o,s=i.x+1===o?t.wrap+1:t.wrap,l={};return l[new e.OverscaledTileID(t.overscaledZ,n,i.z,r,i.y).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,s,i.z,a,i.y).key]={backfilled:!1},i.y>0&&(l[new e.OverscaledTileID(t.overscaledZ,n,i.z,r,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,t.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,s,i.z,a,i.y-1).key]={backfilled:!1}),i.y+1<o&&(l[new e.OverscaledTileID(t.overscaledZ,n,i.z,r,i.y+1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,t.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,s,i.z,a,i.y+1).key]={backfilled:!1}),l}unloadTile(e){e.demTexture&&this.map.painter.saveTileTexture(e.demTexture),e.fbo&&(e.fbo.destroy(),delete e.fbo),e.dem&&delete e.dem,delete e.neighboringTiles,e.state=\"unloaded\";}},geojson:class extends e.Evented{constructor(t,i,o,r){super(),this.id=t,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._loaded=!1,this.actor=o.getActor(),this.setEventedParent(r),this._data=i.data,this._options=e.extend({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId;const n=e.EXTENT/this.tileSize;this.workerOptions=e.extend({source:this.id,cluster:i.cluster||!1,geojsonVtOptions:{buffer:(void 0!==i.buffer?i.buffer:128)*n,tolerance:(void 0!==i.tolerance?i.tolerance:.375)*n,extent:e.EXTENT,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1},superclusterOptions:{maxZoom:void 0!==i.clusterMaxZoom?i.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,i.clusterMinPoints||2),extent:e.EXTENT,radius:(void 0!==i.clusterRadius?i.clusterRadius:50)*n,log:!1,generateId:i.generateId||!1},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions);}onAdd(e){this.map=e,this.setData(this._data);}setData(e){return this._data=e,this._updateWorkerData(),this}getClusterExpansionZoom(e,t){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:e,source:this.id},t),this}getClusterChildren(e,t){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:e,source:this.id},t),this}getClusterLeaves(e,t,i,o){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:e,limit:t,offset:i},o),this}_updateWorkerData(){if(this._pendingLoad)return void(this._coalesce=!0);this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._loaded=!1;const t=e.extend({},this.workerOptions),i=this._data;\"string\"==typeof i?(t.request=this.map._requestManager.transformRequest(e.exported.resolveURL(i),e.ResourceType.Source),t.request.collectResourceTiming=this._collectResourceTiming):t.data=JSON.stringify(i),this._pendingLoad=this.actor.send(`${this.type}.loadData`,t,((t,i)=>{if(this._loaded=!0,this._pendingLoad=null,t)this.fire(new e.ErrorEvent(t));else {const t={dataType:\"source\",sourceDataType:this._metadataFired?\"content\":\"metadata\"};this._collectResourceTiming&&i&&i.resourceTiming&&i.resourceTiming[this.id]&&(t.resourceTiming=i.resourceTiming[this.id]),this.fire(new e.Event(\"data\",t)),this._metadataFired=!0;}this._coalesce&&(this._updateWorkerData(),this._coalesce=!1);}));}loaded(){return this._loaded}loadTile(t,i){const o=t.actor?\"reloadTile\":\"loadTile\";t.actor=this.actor,t.request=this.actor.send(o,{type:this.type,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId},((e,r)=>(delete t.request,t.unloadVectorData(),t.aborted?i(null):e?i(e):(t.loadVectorData(r,this.map.painter,\"reloadTile\"===o),i(null)))),void 0,\"loadTile\"===o);}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.aborted=!0;}unloadTile(e){e.unloadVectorData(),this.actor.send(\"removeTile\",{uid:e.uid,type:this.type,source:this.id});}onRemove(){this._pendingLoad&&this._pendingLoad.cancel();}serialize(){return e.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return !1}},video:class extends Se{constructor(e,t,i,o){super(e,t,i,o),this.roundZoom=!0,this.type=\"video\",this.options=t;}load(){this._loaded=!1;const t=this.options;this.urls=[];for(const i of t.urls)this.urls.push(this.map._requestManager.transformRequest(i,e.ResourceType.Source).url);e.getVideo(this.urls,((t,i)=>{this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(this.video=i,this.video.loop=!0,this.video.setAttribute(\"playsinline\",\"\"),this.video.addEventListener(\"playing\",(()=>{this.map.triggerRepaint();})),this.map&&this.video.play(),this._finishLoading());}));}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(t){if(this.video){const i=this.video.seekable;t<i.start(0)||t>i.end(0)?this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=t;}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const t=this.map.painter.context,i=t.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new e.Texture(t,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),this.width=this.video.videoWidth,this.height=this.video.videoHeight),this._prepareData(t);}serialize(){return {type:\"video\",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}},image:Se,canvas:class extends Se{constructor(t,i,o,r){super(t,i,o,r),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((e=>!Array.isArray(e)||2!==e.length||e.some((e=>\"number\"!=typeof e))))||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property \"coordinates\"'))),i.animate&&\"boolean\"!=typeof i.animate&&this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'optional \"animate\" property must be a boolean value'))),i.canvas?\"string\"==typeof i.canvas||i.canvas instanceof e.window.HTMLCanvasElement||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property \"canvas\"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}load(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof e.window.HTMLCanvasElement?this.options.canvas:e.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new e.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());}getCanvas(){return this.canvas}onAdd(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context;this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new e.Texture(i,this.canvas,i.gl.RGBA,{premultiply:!0}),this._prepareData(i);}serialize(){return {type:\"canvas\",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of [this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return !0;return !1}},custom:class extends e.Evented{constructor(t,i,o,r){super(),this.id=t,this.type=\"custom\",this._dataType=\"raster\",this._dispatcher=o,this._implementation=i,this.setEventedParent(r),this.scheme=\"xyz\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this._loaded=!1,this.roundZoom=!0,this._implementation||this.fire(new e.ErrorEvent(new Error(`Missing implementation for ${this.id} custom source`))),this._implementation.loadTile||this.fire(new e.ErrorEvent(new Error(`Missing loadTile implementation for ${this.id} custom source`))),this._implementation.bounds&&(this.tileBounds=new B(this._implementation.bounds,this.minzoom,this.maxzoom)),i.update=this._update.bind(this),i.coveringTiles=this._coveringTiles.bind(this),e.extend(this,e.pick(i,[\"dataType\",\"scheme\",\"minzoom\",\"maxzoom\",\"tileSize\",\"attribution\",\"minTileCacheSize\",\"maxTileCacheSize\"]));}serialize(){return e.pick(this,[\"type\",\"scheme\",\"minzoom\",\"maxzoom\",\"tileSize\",\"attribution\"])}load(){this._loaded=!0,this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"}));}loaded(){return this._loaded}onAdd(t){this._map=t,this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._implementation.onAdd&&this._implementation.onAdd(t),this.load();}onRemove(e){this._implementation.onRemove&&this._implementation.onRemove(e);}hasTile(e){if(this._implementation.hasTile){const{x:t,y:i,z:o}=e.canonical;return this._implementation.hasTile({x:t,y:i,z:o})}return !this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(t,i){const{x:o,y:r,z:n}=t.tileID.canonical,a=new e.window.AbortController,s=this._implementation.loadTile({x:o,y:r,z:n},{signal:a.signal});if(!s)return this.loadTileData(t,{width:this.tileSize,height:this.tileSize,data:null}),t.state=\"loaded\",i(null);s.cancel=()=>a.abort(),t.request=s.then(function(o){return delete t.request,t.aborted?(t.state=\"unloaded\",i(null)):o?function(t){return t instanceof e.window.ImageData||t instanceof e.window.ImageBitmap||t instanceof e.window.HTMLCanvasElement}(o)?(this.loadTileData(t,o),t.state=\"loaded\",void i(null)):(t.state=\"errored\",i(new Error(`Can't infer data type for ${this.id}, only raster data supported at the moment`))):(this.loadTileData(t,{width:this.tileSize,height:this.tileSize,data:null}),t.state=\"loaded\",i(null))}.bind(this)).catch((e=>{20!==e.code&&(t.state=\"errored\",i(e));}));}loadTileData(e,t){Ce.loadTileData(e,t,this._map.painter);}unloadTileData(e){Ce.unloadTileData(e,this._map.painter);}prepareTile(e){if(!this._implementation.prepareTile)return null;const{x:t,y:i,z:o}=e.tileID.canonical,r=this._implementation.prepareTile({x:t,y:i,z:o});return r?(this.loadTileData(e,r),e.state=\"loaded\",r):null}unloadTile(e,t){if(this.unloadTileData(e),this._implementation.unloadTile){const{x:t,y:i,z:o}=e.tileID.canonical;this._implementation.unloadTile({x:t,y:i,z:o});}t();}abortTile(e,t){e.request&&e.request.cancel&&(e.request.cancel(),delete e.request),t();}hasTransition(){return !1}_coveringTiles(){return this._map.transform.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,roundZoom:this.roundZoom}).map((e=>({x:e.canonical.x,y:e.canonical.y,z:e.canonical.z})))}_update(){this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"}));}}},De=function(t,i,o,r){const n=new ze[i.type](t,i,o,r);if(n.id!==t)throw new Error(`Expected Source id to be ${t} instead of ${n.id}`);return e.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],n),n};function Pe(t,i){const o=e.identity([]);return e.scale(o,o,[.5*t.width,.5*-t.height,1]),e.translate(o,o,[1,-1,0]),e.multiply$1(o,o,t.calculateProjMatrix(i.toUnwrapped())),Float32Array.from(o)}function Ae(e,t,i,o,r,n,a,s=!1){const l=e.tilesIn(o,a,s);l.sort(Re);const c=[];for(const o of l)c.push({wrappedTileID:o.tile.tileID.wrapped().key,queryResults:o.tile.queryRenderedFeatures(t,i,e._state,o,r,n,Pe(e.transform,o.tile.tileID),s)});const h=function(e){const t={},i={};for(const o of e){const e=o.queryResults,r=o.wrappedTileID,n=i[r]=i[r]||{};for(const i in e){const o=e[i],r=n[i]=n[i]||{},a=t[i]=t[i]||[];for(const e of o)r[e.featureIndex]||(r[e.featureIndex]=!0,a.push(e));}}return t}(c);for(const t in h)h[t].forEach((t=>{const i=t.feature,o=i.layer;o&&\"background\"!==o.type&&\"sky\"!==o.type&&(i.source=o.source,o[\"source-layer\"]&&(i.sourceLayer=o[\"source-layer\"]),i.state=void 0!==i.id?e.getFeatureState(o[\"source-layer\"],i.id):{});}));return h}function Le(e,t){const i=e.getRenderableIds().map((t=>e.getTileByID(t))),o=[],r={};for(let e=0;e<i.length;e++){const n=i[e],a=n.tileID.canonical.key;r[a]||(r[a]=!0,n.querySourceFeatures(o,t));}return o}function Re(e,t){const i=e.tileID,o=t.tileID;return i.overscaledZ-o.overscaledZ||i.canonical.y-o.canonical.y||i.wrap-o.wrap||i.canonical.x-o.canonical.x}function ke(){return null!=ln.workerClass?new ln.workerClass:new e.window.Worker(ln.workerUrl)}const Oe=\"mapboxgl_preloaded_worker_pool\";class Be{constructor(){this.active={};}acquire(e){if(!this.workers)for(this.workers=[];this.workers.length<Be.workerCount;)this.workers.push(new ke);return this.active[e]=!0,this.workers.slice()}release(e){delete this.active[e],0===this.numActive()&&(this.workers.forEach((e=>{e.terminate();})),this.workers=null);}isPreloaded(){return !!this.active[Oe]}numActive(){return Object.keys(this.active).length}}let Fe;function Ue(){return Fe||(Fe=new Be),Fe}function Ne(t,i){const o={};for(const e in t)\"ref\"!==e&&(o[e]=t[e]);return e.refProperties.forEach((e=>{e in i&&(o[e]=i[e]);})),o}function Ge(e){e=e.slice();const t=Object.create(null);for(let i=0;i<e.length;i++)t[e[i].id]=e[i];for(let i=0;i<e.length;i++)\"ref\"in e[i]&&(e[i]=Ne(e[i],t[e[i].ref]));return e}Be.workerCount=2;const je={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setGeoJSONSourceData:\"setGeoJSONSourceData\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\",setTerrain:\"setTerrain\",setFog:\"setFog\",setProjection:\"setProjection\"};function Ze(e,t,i){i.push({command:je.addSource,args:[e,t[e]]});}function Ve(e,t,i){t.push({command:je.removeSource,args:[e]}),i[e]=!0;}function We(e,t,i,o){Ve(e,i,o),Ze(e,t,i);}function qe(e,t,i){let o;for(o in e[i])if(e[i].hasOwnProperty(o)&&\"data\"!==o&&!r(e[i][o],t[i][o]))return !1;for(o in t[i])if(t[i].hasOwnProperty(o)&&\"data\"!==o&&!r(e[i][o],t[i][o]))return !1;return !0}function Xe(e,t,i,o,n,a){let s;for(s in t=t||{},e=e||{})e.hasOwnProperty(s)&&(r(e[s],t[s])||i.push({command:a,args:[o,s,t[s],n]}));for(s in t)t.hasOwnProperty(s)&&!e.hasOwnProperty(s)&&(r(e[s],t[s])||i.push({command:a,args:[o,s,t[s],n]}));}function $e(e){return e.id}function He(e,t){return e[t.id]=t,e}class Ke{constructor(e,t){this.reset(e,t);}reset(e,t){this.points=e||[],this._distances=[0];for(let e=1;e<this.points.length;e++)this._distances[e]=this._distances[e-1]+this.points[e].dist(this.points[e-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(t||0,.5*this.length),this.paddedLength=this.length-2*this.padding;}lerp(t){if(1===this.points.length)return this.points[0];t=e.clamp(t,0,1);let i=1,o=this._distances[i];const r=t*this.paddedLength+this.padding;for(;o<r&&i<this._distances.length;)o=this._distances[++i];const n=i-1,a=this._distances[n],s=o-a,l=s>0?(r-a)/s:0;return this.points[n].mult(1-l).add(this.points[i].mult(l))}}class Ye{constructor(e,t,i){const o=this.boxCells=[],r=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let e=0;e<this.xCellCount*this.yCellCount;e++)o.push([]),r.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=e,this.height=t,this.xScale=this.xCellCount/e,this.yScale=this.yCellCount/t,this.boxUid=0,this.circleUid=0;}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(e,t,i,o,r){this._forEachCell(t,i,o,r,this._insertBoxCell,this.boxUid++),this.boxKeys.push(e),this.bboxes.push(t),this.bboxes.push(i),this.bboxes.push(o),this.bboxes.push(r);}insertCircle(e,t,i,o){this._forEachCell(t-o,i-o,t+o,i+o,this._insertCircleCell,this.circleUid++),this.circleKeys.push(e),this.circles.push(t),this.circles.push(i),this.circles.push(o);}_insertBoxCell(e,t,i,o,r,n){this.boxCells[r].push(n);}_insertCircleCell(e,t,i,o,r,n){this.circleCells[r].push(n);}_query(e,t,i,o,r,n){if(i<0||e>this.width||o<0||t>this.height)return !r&&[];const a=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=o){if(r)return !0;for(let e=0;e<this.boxKeys.length;e++)a.push({key:this.boxKeys[e],x1:this.bboxes[4*e],y1:this.bboxes[4*e+1],x2:this.bboxes[4*e+2],y2:this.bboxes[4*e+3]});for(let e=0;e<this.circleKeys.length;e++){const t=this.circles[3*e],i=this.circles[3*e+1],o=this.circles[3*e+2];a.push({key:this.circleKeys[e],x1:t-o,y1:i-o,x2:t+o,y2:i+o});}return n?a.filter(n):a}return this._forEachCell(e,t,i,o,this._queryCell,a,{hitTest:r,seenUids:{box:{},circle:{}}},n),r?a.length>0:a}_queryCircle(e,t,i,o,r){const n=e-i,a=e+i,s=t-i,l=t+i;if(a<0||n>this.width||l<0||s>this.height)return !o&&[];const c=[];return this._forEachCell(n,s,a,l,this._queryCellCircle,c,{hitTest:o,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},r),o?c.length>0:c}query(e,t,i,o,r){return this._query(e,t,i,o,!1,r)}hitTest(e,t,i,o,r){return this._query(e,t,i,o,!0,r)}hitTestCircle(e,t,i,o){return this._queryCircle(e,t,i,!0,o)}_queryCell(e,t,i,o,r,n,a,s){const l=a.seenUids,c=this.boxCells[r];if(null!==c){const r=this.bboxes;for(const h of c)if(!l.box[h]){l.box[h]=!0;const c=4*h;if(e<=r[c+2]&&t<=r[c+3]&&i>=r[c+0]&&o>=r[c+1]&&(!s||s(this.boxKeys[h]))){if(a.hitTest)return n.push(!0),!0;n.push({key:this.boxKeys[h],x1:r[c],y1:r[c+1],x2:r[c+2],y2:r[c+3]});}}}const h=this.circleCells[r];if(null!==h){const r=this.circles;for(const c of h)if(!l.circle[c]){l.circle[c]=!0;const h=3*c;if(this._circleAndRectCollide(r[h],r[h+1],r[h+2],e,t,i,o)&&(!s||s(this.circleKeys[c]))){if(a.hitTest)return n.push(!0),!0;{const e=r[h],t=r[h+1],i=r[h+2];n.push({key:this.circleKeys[c],x1:e-i,y1:t-i,x2:e+i,y2:t+i});}}}}}_queryCellCircle(e,t,i,o,r,n,a,s){const l=a.circle,c=a.seenUids,h=this.boxCells[r];if(null!==h){const e=this.bboxes;for(const t of h)if(!c.box[t]){c.box[t]=!0;const i=4*t;if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!s||s(this.boxKeys[t])))return n.push(!0),!0}}const _=this.circleCells[r];if(null!==_){const e=this.circles;for(const t of _)if(!c.circle[t]){c.circle[t]=!0;const i=3*t;if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!s||s(this.circleKeys[t])))return n.push(!0),!0}}}_forEachCell(e,t,i,o,r,n,a,s){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),_=this._convertToYCellCoord(o);for(let u=l;u<=h;u++)for(let l=c;l<=_;l++)if(r.call(this,e,t,i,o,this.xCellCount*l+u,n,a,s))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,o,r,n){const a=o-e,s=r-t,l=i+n;return l*l>a*a+s*s}_circleAndRectCollide(e,t,i,o,r,n,a){const s=(n-o)/2,l=Math.abs(e-(o+s));if(l>s+i)return !1;const c=(a-r)/2,h=Math.abs(t-(r+c));if(h>c+i)return !1;if(l<=s||h<=c)return !0;const _=l-s,u=h-c;return _*_+u*u<=i*i}}const Je=Math.tan(85*Math.PI/180);function Qe(t,i,o,r,n,a){const s=e.create();if(o){if(\"globe\"===n.projection.name)e.multiply$1(s,s,e.calculateGlobeLabelMatrix(n,i));else {const e=v([],a);s[0]=e[0],s[1]=e[1],s[4]=e[2],s[5]=e[3];}r||e.rotateZ(s,s,n.angle);}else e.multiply$1(s,n.labelPlaneMatrix,t);return s}function et(t,i,o,r,n,a){if(o){if(\"globe\"===n.projection.name){const s=Qe(t,i,o,r,n,a);return e.invert(s,s),e.multiply$1(s,t,s),s}{const i=e.clone(t),o=e.identity([]);return o[0]=a[0],o[1]=a[1],o[4]=a[2],o[5]=a[3],e.multiply$1(i,i,o),r||e.rotateZ(i,i,-n.angle),i}}return n.glCoordMatrix}function tt(t,i,o=0){const r=[t.x,t.y,o,1];o?e.transformMat4$1(r,r,i):pt(r,r,i);const n=r[3];return {point:new e.pointGeometry(r[0]/n,r[1]/n),signedDistanceFromCamera:n}}function it(t,i){const o=[t[0],t[1],t[2],1];e.transformMat4$1(o,o,i);const r=o[3];return {point:new e.pointGeometry(o[0]/r,o[1]/r),signedDistanceFromCamera:r}}function ot(e,t){return Math.min(.5+e/t*.5,1.5)}function rt(e,t){const i=e[0]/e[3],o=e[1]/e[3];return i>=-t[0]&&i<=t[0]&&o>=-t[1]&&o<=t[1]}function nt(t,i,o,r,n,a,s,l,c,h){const _=o.transform,u=r?t.textSizeData:t.iconSizeData,d=e.evaluateSizeForZoom(u,o.transform.zoom),p=[256/o.width*2+1,256/o.height*2+1],m=r?t.text.dynamicLayoutVertexArray:t.icon.dynamicLayoutVertexArray;m.clear();const f=t.lineVertexArray,g=r?t.text.placedSymbolArray:t.icon.placedSymbolArray,v=o.transform.width/o.transform.height;let x=!1;for(let r=0;r<g.length;r++){const y=g.get(r);if(y.writingMode!==e.WritingMode.vertical||x||0!==r&&g.get(r-1).writingMode===e.WritingMode.horizontal||(x=!0),(y.hidden||y.writingMode===e.WritingMode.vertical)&&!x){dt(y.numGlyphs,m);continue}x=!1;const b=new e.pointGeometry(y.tileAnchorX,y.tileAnchorY),w=c?c(b):[0,0,0],T=_.projection.projectTilePoint(b.x,b.y,h.canonical),E=[T.x+w[0],T.y+w[1],T.z+w[2]],C=[...E,1];if(e.transformMat4$1(C,C,i),!rt(C,p)){dt(y.numGlyphs,m);continue}const I=ot(o.transform.cameraToCenterDistance,C[3]),M=e.evaluateSizeForFeature(u,d,y),S=s?M/I:M*I,z=tt(new e.pointGeometry(E[0],E[1]),n,E[2]);if(z.signedDistanceFromCamera<=0){dt(y.numGlyphs,m);continue}let D={};const P=s?null:c,A=lt(y,S,!1,l,i,n,a,t.glyphOffsetArray,f,m,z.point,b,D,v,P,_.projection,h);x=A.useVertical,P&&A.needsFlipping&&(D={}),(A.notEnoughRoom||x||A.needsFlipping&&lt(y,S,!0,l,i,n,a,t.glyphOffsetArray,f,m,z.point,b,D,v,P,_.projection,h).notEnoughRoom)&&dt(y.numGlyphs,m);}r?t.text.dynamicLayoutVertexBuffer.updateData(m):t.icon.dynamicLayoutVertexBuffer.updateData(m);}function at(e,t,i,o,r,n,a,s,l,c,h,_,u,d,p){const m=s.glyphStartIndex+s.numGlyphs,f=s.lineStartIndex,g=s.lineStartIndex+s.lineLength,v=t.getoffsetX(s.glyphStartIndex),x=t.getoffsetX(m-1),y=_t(e*v,i,o,r,n,a,s.segment,f,g,l,c,h,_,u,!0,d,p);if(!y)return null;const b=_t(e*x,i,o,r,n,a,s.segment,f,g,l,c,h,_,u,!0,d,p);return b?{first:y,last:b}:null}function st(t,i,o,r){return t.writingMode===e.WritingMode.horizontal&&Math.abs(o.y-i.y)>Math.abs(o.x-i.x)*r?{useVertical:!0}:t.writingMode===e.WritingMode.vertical?i.y<o.y?{needsFlipping:!0}:null:0!==t.flipState&&function(e,t,i){const o=(t.x-e.x)*i;return 0===o||Math.abs((t.y-e.y)/o)>Je}(i,o,r)?1===t.flipState?{needsFlipping:!0}:null:i.x>o.x?{needsFlipping:!0}:null}function lt(t,i,o,r,n,a,s,l,c,h,_,u,d,p,m,f,g){const v=i/24,x=t.lineOffsetX*v,y=t.lineOffsetY*v;let b;if(t.numGlyphs>1){const e=t.glyphStartIndex+t.numGlyphs,i=t.lineStartIndex,n=t.lineStartIndex+t.lineLength,h=at(v,l,x,y,o,_,u,t,c,a,d,m,!1,f,g);if(!h)return {notEnoughRoom:!0};const w=tt(h.first.point,s).point,T=tt(h.last.point,s).point;if(r&&!o){const e=st(t,w,T,p);if(t.flipState=e&&e.needsFlipping?1:2,e)return e}b=[h.first];for(let r=t.glyphStartIndex+1;r<e-1;r++)b.push(_t(v*l.getoffsetX(r),x,y,o,_,u,t.segment,i,n,c,a,d,m,!1,!1,f,g));b.push(h.last);}else {if(r&&!o){const i=tt(u,n).point,o=t.lineStartIndex+t.segment+1,r=new e.pointGeometry(c.getx(o),c.gety(o)),a=tt(r,n),s=st(t,i,a.signedDistanceFromCamera>0?a.point:ht(u,r,i,1,n,void 0,f,g.canonical),p);if(t.flipState=s&&s.needsFlipping?1:2,s)return s}const i=_t(v*l.getoffsetX(t.glyphStartIndex),x,y,o,_,u,t.segment,t.lineStartIndex,t.lineStartIndex+t.lineLength,c,a,d,m,!1,!1,f,g);if(!i)return {notEnoughRoom:!0};b=[i];}for(const t of b)e.addDynamicAttributes(h,t.point,t.angle);return {}}function ct(t,i,o,r,n){const a=r.projectTilePoint(t.x,t.y,i);if(!n)return tt(a,o,a.z);const s=n(t);return tt(new e.pointGeometry(a.x+s[0],a.y+s[1]),o,a.z+s[2])}function ht(e,t,i,o,r,n,a,s){const l=ct(e.add(e.sub(t)._unit()),s,r,a,n).point,c=i.sub(l);return i.add(c._mult(o/c.mag()))}function _t(t,i,o,r,n,a,s,l,c,h,_,u,d,p,m,f,g){const v=r?t-i:t+i;let x=v>0?1:-1,y=0;r&&(x*=-1,y=Math.PI),x<0&&(y+=Math.PI);let b=x>0?l+s:l+s+1,w=n,T=n,E=0,C=0;const I=Math.abs(v),M=[],S=[];let z=a;const D=()=>{const t=b-x;return 0===E?a:new e.pointGeometry(h.getx(t),h.gety(t))},P=()=>ht(D(),z,T,I-E+1,_,d,f,g.canonical);for(;E+C<=I;){if(b+=x,b<l||b>=c)return null;if(T=w,M.push(w),p&&S.push(z||D()),w=u[b],void 0===w){z=new e.pointGeometry(h.getx(b),h.gety(b));const t=ct(z,g.canonical,_,f,d);w=t.signedDistanceFromCamera>0?u[b]=t.point:P();}else z=null;E+=C,C=T.dist(w);}m&&d&&(z=z||new e.pointGeometry(h.getx(b),h.gety(b)),u[b]=w=void 0===u[b]?w:P(),C=T.dist(w));const A=(I-E)/C,L=w.sub(T),R=L.mult(A)._add(T);o&&R._add(L._unit()._perp()._mult(o*x));const k=y+Math.atan2(w.y-T.y,w.x-T.x);return M.push(R),p&&(z=z||new e.pointGeometry(h.getx(b),h.gety(b)),S.push(function(t,i,o){const r=1-o;return new e.pointGeometry(t.x*r+i.x*o,t.y*r+i.y*o)}(S.length>0?S[S.length-1]:z,z,A))),{point:R,angle:k,path:M,tilePath:S}}const ut=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function dt(e,t){for(let i=0;i<e;i++){const e=t.length;t.resize(e+4),t.float32.set(ut,3*e);}}function pt(e,t,i){const o=t[0],r=t[1];return e[0]=i[0]*o+i[4]*r+i[12],e[1]=i[1]*o+i[5]*r+i[13],e[3]=i[3]*o+i[7]*r+i[15],e}const mt=100;class ft{constructor(e,t,i=new Ye(e.width+200,e.height+200,25),o=new Ye(e.width+200,e.height+200,25)){this.transform=e,this.grid=i,this.ignoredGrid=o,this.pitchfactor=Math.cos(e._pitch)*e.cameraToCenterDistance,this.screenRightBoundary=e.width+mt,this.screenBottomBoundary=e.height+mt,this.gridRightBoundary=e.width+200,this.gridBottomBoundary=e.height+200,this.fogState=t;}placeCollisionBox(e,t,i,o,r,n,a){let s=t.projectedAnchorX,l=t.projectedAnchorY,c=t.projectedAnchorZ;const h=t.elevation,_=t.tileID;if(h&&_){const e=this.transform.projection.upVector(_.canonical,t.tileAnchorX,t.tileAnchorY),i=this.transform.projection.upVectorScale(_.canonical,this.transform.center.lat,this.transform.worldSize).metersToTile;s+=e[0]*h*i,l+=e[1]*h*i,c+=e[2]*h*i;}const u=this.projectAndGetPerspectiveRatio(n,[s,l,c],t.tileID,\"globe\"===this.transform.projection.name||!!h||this.transform.pitch>0),d=r*u.perspectiveRatio,p=(t.x1*e+i.x-t.padding)*d+u.point.x,m=(t.y1*e+i.y-t.padding)*d+u.point.y,f=(t.x2*e+i.x+t.padding)*d+u.point.x,g=(t.y2*e+i.y+t.padding)*d+u.point.y,v=u.perspectiveRatio<=.55||u.occluded;return !this.isInsideGrid(p,m,f,g)||!o&&this.grid.hitTest(p,m,f,g,a)||v?{box:[],offscreen:!1,occluded:u.occluded}:{box:[p,m,f,g],offscreen:this.isOffscreen(p,m,f,g),occluded:!1}}placeCollisionCircles(t,i,o,r,n,a,s,l,c,h,_,u,d,p){const m=[],f=this.transform.elevation,g=f?f.getAtTileOffsetFunc(p,this.transform.center.lat,this.transform.worldSize,this.transform.projection):e=>[0,0,0],v=new e.pointGeometry(i.tileAnchorX,i.tileAnchorY),x=this.transform.projection.projectTilePoint(i.tileAnchorX,i.tileAnchorY,p.canonical),y=g(v),b=[x.x+y[0],x.y+y[1],x.z+y[2]],w=this.projectAndGetPerspectiveRatio(a,[b[0],b[1],b[2]],p,\"globe\"===this.transform.projection.name||!!f||this.transform.pitch>0),{perspectiveRatio:T}=w,E=(h?n/T:n*T)/e.ONE_EM,C=tt(new e.pointGeometry(b[0],b[1]),s,b[2]).point,I=w.signedDistanceFromCamera>0?at(E,r,i.lineOffsetX*E,i.lineOffsetY*E,!1,C,v,i,o,s,{},f&&!h?g:null,h&&!!f,this.transform.projection,p):null;let M=!1,S=!1,z=!0;if(I&&!w.occluded){const i=.5*u*T+d,o=new e.pointGeometry(-100,-100),r=new e.pointGeometry(this.screenRightBoundary,this.screenBottomBoundary),n=new Ke,a=I.first,s=I.last;let h=[];for(let e=a.path.length-1;e>=1;e--)h.push(a.path[e]);for(let e=1;e<s.path.length;e++)h.push(s.path[e]);const p=2.5*i;if(l){const e=h.map(f?(e,t)=>{const i=g(t<a.path.length-1?a.tilePath[a.path.length-1-t]:s.tilePath[t-a.path.length+2]);return tt(e,l,i[2])}:e=>tt(e,l));h=e.some((e=>e.signedDistanceFromCamera<=0))?[]:e.map((e=>e.point));}let v=[];if(h.length>0){const t=h[0].clone(),i=h[0].clone();for(let e=1;e<h.length;e++)t.x=Math.min(t.x,h[e].x),t.y=Math.min(t.y,h[e].y),i.x=Math.max(i.x,h[e].x),i.y=Math.max(i.y,h[e].y);v=t.x>=o.x&&i.x<=r.x&&t.y>=o.y&&i.y<=r.y?[h]:i.x<o.x||t.x>r.x||i.y<o.y||t.y>r.y?[]:e.clipLine([h],o.x,o.y,r.x,r.y);}for(const e of v){n.reset(e,.25*i);let o=0;o=n.length<=.5*i?1:Math.ceil(n.paddedLength/p)+1;for(let e=0;e<o;e++){const r=e/Math.max(o-1,1),a=n.lerp(r),s=a.x+mt,l=a.y+mt;m.push(s,l,i,0);const h=s-i,u=l-i,d=s+i,p=l+i;if(z=z&&this.isOffscreen(h,u,d,p),S=S||this.isInsideGrid(h,u,d,p),!t&&this.grid.hitTestCircle(s,l,i,_)&&(M=!0,!c))return {circles:[],offscreen:!1,collisionDetected:M,occluded:!1}}}}return {circles:!c&&M||!S?[]:m,offscreen:z,collisionDetected:M,occluded:w.occluded}}queryRenderedSymbols(t){if(0===t.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};const i=[];let o=1/0,r=1/0,n=-1/0,a=-1/0;for(const s of t){const t=new e.pointGeometry(s.x+mt,s.y+mt);o=Math.min(o,t.x),r=Math.min(r,t.y),n=Math.max(n,t.x),a=Math.max(a,t.y),i.push(t);}const s=this.grid.query(o,r,n,a).concat(this.ignoredGrid.query(o,r,n,a)),l={},c={};for(const t of s){const o=t.key;if(void 0===l[o.bucketInstanceId]&&(l[o.bucketInstanceId]={}),l[o.bucketInstanceId][o.featureIndex])continue;const r=[new e.pointGeometry(t.x1,t.y1),new e.pointGeometry(t.x2,t.y1),new e.pointGeometry(t.x2,t.y2),new e.pointGeometry(t.x1,t.y2)];e.polygonIntersectsPolygon(i,r)&&(l[o.bucketInstanceId][o.featureIndex]=!0,void 0===c[o.bucketInstanceId]&&(c[o.bucketInstanceId]=[]),c[o.bucketInstanceId].push(o.featureIndex));}return c}insertCollisionBox(e,t,i,o,r){(t?this.ignoredGrid:this.grid).insert({bucketInstanceId:i,featureIndex:o,collisionGroupID:r},e[0],e[1],e[2],e[3]);}insertCollisionCircles(e,t,i,o,r){const n=t?this.ignoredGrid:this.grid,a={bucketInstanceId:i,featureIndex:o,collisionGroupID:r};for(let t=0;t<e.length;t+=4)n.insertCircle(a,e[t],e[t+1],e[t+2]);}projectAndGetPerspectiveRatio(t,i,o,r){const n=[i[0],i[1],i[2],1];let a=!1;return i[2]||this.transform.pitch>0?(e.transformMat4$1(n,n,t),this.fogState&&o&&(a=function(t,i,o,r,n,a){const s=a.calculateFogTileMatrix(n),l=[i,o,r];return e.transformMat4(l,l,s),M(t,l,a.pitch,a._fov)}(this.fogState,i[0],i[1],i[2],o.toUnwrapped(),this.transform)>.9)):pt(n,n,t),{point:new e.pointGeometry((n[0]/n[3]+1)/2*this.transform.width+mt,(-n[1]/n[3]+1)/2*this.transform.height+mt),perspectiveRatio:Math.min(.5+this.transform.cameraToCenterDistance/n[3]*.5,1.5),signedDistanceFromCamera:n[3],occluded:r&&n[2]>n[3]||a}}isOffscreen(e,t,i,o){return i<mt||e>=this.screenRightBoundary||o<mt||t>this.screenBottomBoundary}isInsideGrid(e,t,i,o){return i>=0&&e<this.gridRightBoundary&&o>=0&&t<this.gridBottomBoundary}getViewportMatrix(){const t=e.identity([]);return e.translate(t,t,[-100,-100,0]),t}}class gt{constructor(e,t,i,o){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):o&&i?1:0,this.placed=i;}isHidden(){return 0===this.opacity&&!this.placed}}class vt{constructor(e,t,i,o,r,n=!1){this.text=new gt(e?e.text:null,t,i,r),this.icon=new gt(e?e.icon:null,t,o,r),this.clipped=n;}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class xt{constructor(e,t,i,o=!1){this.text=e,this.icon=t,this.skipFade=i,this.clipped=o;}}class yt{constructor(){this.invProjMatrix=e.create(),this.viewportMatrix=e.create(),this.circles=[];}}class bt{constructor(e,t,i,o,r){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=i,this.bucketIndex=o,this.tileID=r;}}class wt{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={};}get(e){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[e]){const t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t};}return this.collisionGroups[e]}}function Tt(t,i,o,r,n){const{horizontalAlign:a,verticalAlign:s}=e.getAnchorAlignment(t),l=-(a-.5)*i,c=-(s-.5)*o,h=e.evaluateVariableOffset(t,r);return new e.pointGeometry(l+h[0]*n,c+h[1]*n)}function Et(t,i,o,r,n){const a=new e.pointGeometry(t,i);return o&&a._rotate(r?n:-n),a}class Ct{constructor(e,t,i,o,r){this.transform=e.clone(),this.collisionIndex=new ft(this.transform,r),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=t,this.retainedQueryData={},this.collisionGroups=new wt(i),this.collisionCircleArrays={},this.prevPlacement=o,o&&(o.prevPlacement=void 0),this.placedOrientations={};}getBucketParts(t,i,o,r){const n=o.getBucket(i),a=o.latestFeatureIndex;if(!n||!a||i.id!==n.layerIds[0])return;const s=n.layers[0].layout,l=o.collisionBoxArray,c=Math.pow(2,this.transform.zoom-o.tileID.overscaledZ),h=o.tileSize/e.EXTENT,_=o.tileID.toUnwrapped(),u=this.transform.calculateProjMatrix(_),d=\"map\"===s.get(\"text-pitch-alignment\"),p=\"map\"===s.get(\"text-rotation-alignment\");i.compileFilter();const m=i.dynamicFilter(),f=i.dynamicFilterNeedsFeature(),g=this.transform.calculatePixelsToTileUnitsMatrix(o),v=Qe(u,o.tileID.canonical,d,p,this.transform,g);let x=null;if(d){const t=et(u,o.tileID.canonical,d,p,this.transform,g);x=e.multiply$1([],this.transform.labelPlaneMatrix,t);}let y=null;m&&o.latestFeatureIndex&&(y={unwrappedTileID:_,dynamicFilter:m,dynamicFilterNeedsFeature:f,featureIndex:o.latestFeatureIndex}),this.retainedQueryData[n.bucketInstanceId]=new bt(n.bucketInstanceId,a,n.sourceLayerIndex,n.index,o.tileID);const b={bucket:n,layout:s,posMatrix:u,textLabelPlaneMatrix:v,labelToScreenMatrix:x,clippingData:y,scale:c,textPixelRatio:h,holdingForFade:o.holdingForFade(),collisionBoxArray:l,partiallyEvaluatedTextSize:e.evaluateSizeForZoom(n.textSizeData,this.transform.zoom),partiallyEvaluatedIconSize:e.evaluateSizeForZoom(n.iconSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(n.sourceID)};if(r)for(const e of n.sortKeyRanges){const{sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:r}=e;t.push({sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:r,parameters:b});}else t.push({symbolInstanceStart:0,symbolInstanceEnd:n.symbolInstances.length,parameters:b});}attemptAnchorPlacement(e,t,i,o,r,n,a,s,l,c,h,_,u,d,p,m,f,g){const v=[_.textOffset0,_.textOffset1],x=Tt(e,i,o,v,r),y=this.collisionIndex.placeCollisionBox(r,t,Et(x.x,x.y,n,a,this.transform.angle),h,s,l,c.predicate);if((!m||0!==this.collisionIndex.placeCollisionBox(d.getSymbolInstanceIconSize(g,this.transform.zoom,u),m,Et(x.x,x.y,n,a,this.transform.angle),h,s,l,c.predicate).box.length)&&y.box.length>0){let t;return this.prevPlacement&&this.prevPlacement.variableOffsets[_.crossTileID]&&this.prevPlacement.placements[_.crossTileID]&&this.prevPlacement.placements[_.crossTileID].text&&(t=this.prevPlacement.variableOffsets[_.crossTileID].anchor),this.variableOffsets[_.crossTileID]={textOffset:v,width:i,height:o,anchor:e,textScale:r,prevAnchor:t},this.markUsedJustification(d,e,_,p),d.allowVerticalPlacement&&(this.markUsedOrientation(d,p,_),this.placedOrientations[_.crossTileID]=p),{shift:x,placedGlyphBoxes:y}}}placeLayerBucketPart(t,i,o,r){const{bucket:n,layout:a,posMatrix:s,textLabelPlaneMatrix:l,labelToScreenMatrix:c,clippingData:h,textPixelRatio:_,holdingForFade:u,collisionBoxArray:d,partiallyEvaluatedTextSize:p,partiallyEvaluatedIconSize:m,collisionGroup:f}=t.parameters,g=a.get(\"text-optional\"),v=a.get(\"icon-optional\"),x=a.get(\"text-allow-overlap\"),y=a.get(\"icon-allow-overlap\"),b=\"map\"===a.get(\"text-rotation-alignment\"),w=\"map\"===a.get(\"text-pitch-alignment\"),T=\"none\"!==a.get(\"icon-text-fit\"),E=\"viewport-y\"===a.get(\"symbol-z-order\");let C=x&&(y||!n.hasIconData()||v),I=y&&(x||!n.hasTextData()||g);!n.collisionArrays&&d&&n.deserializeCollisionBoxes(d),o&&r&&n.updateCollisionDebugBuffers(this.transform.zoom,d);const M=(t,r,d)=>{if(h){const o={zoom:this.transform.zoom,pitch:this.transform.pitch};let r=null;if(h.dynamicFilterNeedsFeature){const e=this.retainedQueryData[n.bucketInstanceId];r=h.featureIndex.loadFeature({featureIndex:t.featureIndex,bucketIndex:e.bucketIndex,sourceLayerIndex:e.sourceLayerIndex,layoutVertexArrayOffset:0});}if(!(0,h.dynamicFilter)(o,r,this.retainedQueryData[n.bucketInstanceId].tileID.canonical,new e.pointGeometry(t.tileAnchorX,t.tileAnchorY),this.transform.calculateDistanceTileData(h.unwrappedTileID)))return this.placements[t.crossTileID]=new xt(!1,!1,!1,!0),void(i[t.crossTileID]=!0)}if(i[t.crossTileID])return;if(u)return void(this.placements[t.crossTileID]=new xt(!1,!1,!1));let E=!1,M=!1,S=!0,z=!1,D=!1,P=null,A={box:null,offscreen:null,occluded:null},L={box:null,offscreen:null,occluded:null},R=null,k=null,O=null,B=0,F=0,U=0;d.textFeatureIndex?B=d.textFeatureIndex:t.useRuntimeCollisionCircles&&(B=t.featureIndex),d.verticalTextFeatureIndex&&(F=d.verticalTextFeatureIndex);const N=e=>{e.tileID=this.retainedQueryData[n.bucketInstanceId].tileID,(this.transform.elevation||e.elevation)&&(e.elevation=this.transform.elevation?this.transform.elevation.getAtTileOffset(this.retainedQueryData[n.bucketInstanceId].tileID,e.tileAnchorX,e.tileAnchorY):0);},G=d.textBox;if(G){N(G);const i=i=>{let o=e.WritingMode.horizontal;if(n.allowVerticalPlacement&&!i&&this.prevPlacement){const e=this.prevPlacement.placedOrientations[t.crossTileID];e&&(this.placedOrientations[t.crossTileID]=e,o=e,this.markUsedOrientation(n,o,t));}return o},o=(i,o)=>{if(n.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&d.verticalTextBox){for(const t of n.writingModes)if(t===e.WritingMode.vertical?(A=o(),L=A):A=i(),A&&A.box&&A.box.length)break}else A=i();};if(a.get(\"text-variable-anchor\")){let l=a.get(\"text-variable-anchor\");if(this.prevPlacement&&this.prevPlacement.variableOffsets[t.crossTileID]){const e=this.prevPlacement.variableOffsets[t.crossTileID];l.indexOf(e.anchor)>0&&(l=l.filter((t=>t!==e.anchor)),l.unshift(e.anchor));}const c=(e,i,o)=>{const a=n.getSymbolInstanceTextSize(p,t,this.transform.zoom,r),c=(e.x2-e.x1)*a+2*e.padding,h=(e.y2-e.y1)*a+2*e.padding,u=T&&!y?i:null;u&&N(u);let d={box:[],offscreen:!1,occluded:!1};const g=x?2*l.length:l.length;for(let i=0;i<g;++i){const g=this.attemptAnchorPlacement(l[i%l.length],e,c,h,a,b,w,_,s,f,i>=l.length,t,r,n,o,u,p,m);if(g&&(d=g.placedGlyphBoxes,d&&d.box&&d.box.length)){E=!0,P=g.shift;break}}return d};o((()=>c(G,d.iconBox,e.WritingMode.horizontal)),(()=>{const i=d.verticalTextBox;return i&&N(i),n.allowVerticalPlacement&&!(A&&A.box&&A.box.length)&&t.numVerticalGlyphVertices>0&&i?c(i,d.verticalIconBox,e.WritingMode.vertical):{box:null,offscreen:null,occluded:null}})),A&&(E=A.box,S=A.offscreen,z=A.occluded);const h=i(A&&A.box);if(!E&&this.prevPlacement){const e=this.prevPlacement.variableOffsets[t.crossTileID];e&&(this.variableOffsets[t.crossTileID]=e,this.markUsedJustification(n,e.anchor,t,h));}}else {const a=(i,o)=>{const a=n.getSymbolInstanceTextSize(p,t,this.transform.zoom,r),l=this.collisionIndex.placeCollisionBox(a,i,new e.pointGeometry(0,0),x,_,s,f.predicate);return l&&l.box&&l.box.length&&(this.markUsedOrientation(n,o,t),this.placedOrientations[t.crossTileID]=o),l};o((()=>a(G,e.WritingMode.horizontal)),(()=>{const i=d.verticalTextBox;return n.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&i?(N(i),a(i,e.WritingMode.vertical)):{box:null,offscreen:null,occluded:null}})),i(A&&A.box&&A.box.length);}}if(R=A,E=R&&R.box&&R.box.length>0,S=R&&R.offscreen,z=R&&R.occluded,t.useRuntimeCollisionCircles){const i=n.text.placedSymbolArray.get(t.centerJustifiedTextSymbolIndex>=0?t.centerJustifiedTextSymbolIndex:t.verticalPlacedTextSymbolIndex),r=e.evaluateSizeForFeature(n.textSizeData,p,i),h=a.get(\"text-padding\");k=this.collisionIndex.placeCollisionCircles(x,i,n.lineVertexArray,n.glyphOffsetArray,r,s,l,c,o,w,f.predicate,t.collisionCircleDiameter*r/e.ONE_EM,h,this.retainedQueryData[n.bucketInstanceId].tileID),E=x||k.circles.length>0&&!k.collisionDetected,S=S&&k.offscreen,z=k.occluded;}if(d.iconFeatureIndex&&(U=d.iconFeatureIndex),d.iconBox){const t=t=>{N(t);const i=T&&P?Et(P.x,P.y,b,w,this.transform.angle):new e.pointGeometry(0,0),o=n.getSymbolInstanceIconSize(m,this.transform.zoom,r);return this.collisionIndex.placeCollisionBox(o,t,i,y,_,s,f.predicate)};L&&L.box&&L.box.length&&d.verticalIconBox?(O=t(d.verticalIconBox),M=O.box.length>0):(O=t(d.iconBox),M=O.box.length>0),S=S&&O.offscreen,D=O.occluded;}const j=g||0===t.numHorizontalGlyphVertices&&0===t.numVerticalGlyphVertices,Z=v||0===t.numIconVertices;if(j||Z?Z?j||(M=M&&E):E=M&&E:M=E=M&&E,E&&R&&R.box&&this.collisionIndex.insertCollisionBox(R.box,a.get(\"text-ignore-placement\"),n.bucketInstanceId,L&&L.box&&F?F:B,f.ID),M&&O&&this.collisionIndex.insertCollisionBox(O.box,a.get(\"icon-ignore-placement\"),n.bucketInstanceId,U,f.ID),k&&(E&&this.collisionIndex.insertCollisionCircles(k.circles,a.get(\"text-ignore-placement\"),n.bucketInstanceId,B,f.ID),o)){const e=n.bucketInstanceId;let t=this.collisionCircleArrays[e];void 0===t&&(t=this.collisionCircleArrays[e]=new yt);for(let e=0;e<k.circles.length;e+=4)t.circles.push(k.circles[e+0]),t.circles.push(k.circles[e+1]),t.circles.push(k.circles[e+2]),t.circles.push(k.collisionDetected?1:0);}const V=\"globe\"!==this.transform.projection.name;C=C&&(V||!z),I=I&&(V||!D),this.placements[t.crossTileID]=new xt(E||C,M||I,S||n.justReloaded),i[t.crossTileID]=!0;};if(E){const e=n.getSortedSymbolIndexes(this.transform.angle);for(let t=e.length-1;t>=0;--t){const i=e[t];M(n.symbolInstances.get(i),i,n.collisionArrays[i]);}}else for(let e=t.symbolInstanceStart;e<t.symbolInstanceEnd;e++)M(n.symbolInstances.get(e),e,n.collisionArrays[e]);if(o&&n.bucketInstanceId in this.collisionCircleArrays){const t=this.collisionCircleArrays[n.bucketInstanceId];e.invert(t.invProjMatrix,s),t.viewportMatrix=this.collisionIndex.getViewportMatrix();}n.justReloaded=!1;}markUsedJustification(t,i,o,r){let n;n=r===e.WritingMode.vertical?o.verticalPlacedTextSymbolIndex:{left:o.leftJustifiedTextSymbolIndex,center:o.centerJustifiedTextSymbolIndex,right:o.rightJustifiedTextSymbolIndex}[e.getAnchorJustification(i)];const a=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex,o.verticalPlacedTextSymbolIndex];for(const e of a)e>=0&&(t.text.placedSymbolArray.get(e).crossTileID=n>=0&&e!==n?0:o.crossTileID);}markUsedOrientation(t,i,o){const r=i===e.WritingMode.horizontal||i===e.WritingMode.horizontalOnly?i:0,n=i===e.WritingMode.vertical?i:0,a=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];for(const e of a)t.text.placedSymbolArray.get(e).placedOrientation=r;o.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=n);}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const o=t?t.symbolFadeChange(e):1,r=t?t.opacities:{},n=t?t.variableOffsets:{},a=t?t.placedOrientations:{};for(const e in this.placements){const t=this.placements[e],n=r[e];n?(this.opacities[e]=new vt(n,o,t.text,t.icon,null,t.clipped),i=i||t.text!==n.text.placed||t.icon!==n.icon.placed):(this.opacities[e]=new vt(null,o,t.text,t.icon,t.skipFade,t.clipped),i=i||t.text||t.icon);}for(const e in r){const t=r[e];if(!this.opacities[e]){const r=new vt(t,o,!1,!1);r.isHidden()||(this.opacities[e]=r,i=i||t.text.placed||t.icon.placed);}}for(const e in n)this.variableOffsets[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.variableOffsets[e]=n[e]);for(const e in a)this.placedOrientations[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.placedOrientations[e]=a[e]);i?this.lastPlacementChangeTime=e:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e);}updateLayerOpacities(e,t){const i={};for(const o of t){const t=o.getBucket(e);t&&o.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,i,o.collisionBoxArray);}}updateBucketOpacities(t,i,o){t.hasTextData()&&t.text.opacityVertexArray.clear(),t.hasIconData()&&t.icon.opacityVertexArray.clear(),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();const r=t.layers[0].layout,n=!!t.layers[0].dynamicFilter(),a=new vt(null,0,!1,!1,!0),s=r.get(\"text-allow-overlap\"),l=r.get(\"icon-allow-overlap\"),c=r.get(\"text-variable-anchor\"),h=\"map\"===r.get(\"text-rotation-alignment\"),_=\"map\"===r.get(\"text-pitch-alignment\"),u=\"none\"!==r.get(\"icon-text-fit\"),d=new vt(null,0,s&&(l||!t.hasIconData()||r.get(\"icon-optional\")),l&&(s||!t.hasTextData()||r.get(\"text-optional\")),!0);!t.collisionArrays&&o&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(o);const p=(e,t,i)=>{for(let o=0;o<t/4;o++)e.opacityVertexArray.emplaceBack(i);};let m=0;for(let o=0;o<t.symbolInstances.length;o++){const r=t.symbolInstances.get(o),{numHorizontalGlyphVertices:s,numVerticalGlyphVertices:l,crossTileID:f}=r;let g=this.opacities[f];i[f]?g=a:g||(g=d,this.opacities[f]=g),i[f]=!0;const v=s>0||l>0,x=r.numIconVertices>0,y=this.placedOrientations[r.crossTileID],b=y===e.WritingMode.vertical,w=y===e.WritingMode.horizontal||y===e.WritingMode.horizontalOnly;if(!v&&!x||g.isHidden()||m++,v){const e=Rt(g.text);p(t.text,s,b?kt:e),p(t.text,l,w?kt:e);const i=g.text.isHidden();[r.rightJustifiedTextSymbolIndex,r.centerJustifiedTextSymbolIndex,r.leftJustifiedTextSymbolIndex].forEach((e=>{e>=0&&(t.text.placedSymbolArray.get(e).hidden=i||b?1:0);})),r.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(r.verticalPlacedTextSymbolIndex).hidden=i||w?1:0);const o=this.variableOffsets[r.crossTileID];o&&this.markUsedJustification(t,o.anchor,r,y);const n=this.placedOrientations[r.crossTileID];n&&(this.markUsedJustification(t,\"left\",r,n),this.markUsedOrientation(t,n,r));}if(x){const e=Rt(g.icon);r.placedIconSymbolIndex>=0&&(p(t.icon,r.numIconVertices,b?kt:e),t.icon.placedSymbolArray.get(r.placedIconSymbolIndex).hidden=g.icon.isHidden()),r.verticalPlacedIconSymbolIndex>=0&&(p(t.icon,r.numVerticalIconVertices,w?kt:e),t.icon.placedSymbolArray.get(r.verticalPlacedIconSymbolIndex).hidden=g.icon.isHidden());}if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const i=t.collisionArrays[o];if(i){let o=new e.pointGeometry(0,0),r=!0;if(i.textBox||i.verticalTextBox){if(c){const e=this.variableOffsets[f];e?(o=Tt(e.anchor,e.width,e.height,e.textOffset,e.textScale),h&&o._rotate(_?this.transform.angle:-this.transform.angle)):r=!1;}n&&(r=!g.clipped),i.textBox&&It(t.textCollisionBox.collisionVertexArray,g.text.placed,!r||b,o.x,o.y),i.verticalTextBox&&It(t.textCollisionBox.collisionVertexArray,g.text.placed,!r||w,o.x,o.y);}const a=r&&Boolean(!w&&i.verticalIconBox);i.iconBox&&It(t.iconCollisionBox.collisionVertexArray,g.icon.placed,a,u?o.x:0,u?o.y:0),i.verticalIconBox&&It(t.iconCollisionBox.collisionVertexArray,g.icon.placed,!a,u?o.x:0,u?o.y:0);}}}if(t.fullyClipped=0===m,t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.bucketInstanceId in this.collisionCircleArrays){const e=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=e.invProjMatrix,t.placementViewportMatrix=e.viewportMatrix,t.collisionCircleArray=e.circles,delete this.collisionCircleArrays[t.bucketInstanceId];}}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(e,t){const i=this.zoomAtLastRecencyCheck===t?1-this.zoomAdjustment(t):1;return this.zoomAtLastRecencyCheck=t,this.commitTime+this.fadeDuration*i>e}setStale(){this.stale=!0;}}function It(e,t,i,o,r){e.emplaceBack(t?1:0,i?1:0,o||0,r||0),e.emplaceBack(t?1:0,i?1:0,o||0,r||0),e.emplaceBack(t?1:0,i?1:0,o||0,r||0),e.emplaceBack(t?1:0,i?1:0,o||0,r||0);}const Mt=Math.pow(2,25),St=Math.pow(2,24),zt=Math.pow(2,17),Dt=Math.pow(2,16),Pt=Math.pow(2,9),At=Math.pow(2,8),Lt=Math.pow(2,1);function Rt(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*Mt+t*St+i*zt+t*Dt+i*Pt+t*At+i*Lt+t}const kt=0;class Ot{constructor(e){this._sortAcrossTiles=\"viewport-y\"!==e.layout.get(\"symbol-z-order\")&&void 0!==e.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(e,t,i,o,r){const n=this._bucketParts;for(;this._currentTileIndex<e.length;)if(t.getBucketParts(n,o,e[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,r())return !0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,n.sort(((e,t)=>e.sortKey-t.sortKey)));this._currentPartIndex<n.length;){const e=n[this._currentPartIndex];if(t.placeLayerBucketPart(e,this._seenCrossTileIDs,i,0===e.symbolInstanceStart),this._currentPartIndex++,r())return !0}return !1}}class Bt{constructor(e,t,i,o,r,n,a,s){this.placement=new Ct(e,r,n,a,s),this._currentPlacementIndex=t.length-1,this._forceFullPlacement=i,this._showCollisionBoxes=o,this._done=!1;}isDone(){return this._done}continuePlacement(t,i,o){const r=e.exported.now(),n=()=>{const t=e.exported.now()-r;return !this._forceFullPlacement&&t>2};for(;this._currentPlacementIndex>=0;){const e=i[t[this._currentPlacementIndex]],r=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===e.type&&(!e.minzoom||e.minzoom<=r)&&(!e.maxzoom||e.maxzoom>r)){if(this._inProgressLayer||(this._inProgressLayer=new Ot(e)),this._inProgressLayer.continuePlacement(o[e.source],this.placement,this._showCollisionBoxes,e,n))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(e){return this.placement.commit(e),this.placement}}const Ft=512/e.EXTENT/2;class Ut{constructor(e,t,i){this.tileID=e,this.indexedSymbolInstances={},this.bucketInstanceId=i;for(let i=0;i<t.length;i++){const o=t.get(i),r=o.key;this.indexedSymbolInstances[r]||(this.indexedSymbolInstances[r]=[]),this.indexedSymbolInstances[r].push({crossTileID:o.crossTileID,coord:this.getScaledCoordinates(o,e)});}}getScaledCoordinates(t,i){const o=Ft/Math.pow(2,i.canonical.z-this.tileID.canonical.z);return {x:Math.floor((i.canonical.x*e.EXTENT+t.tileAnchorX)*o),y:Math.floor((i.canonical.y*e.EXTENT+t.tileAnchorY)*o)}}findMatches(e,t,i){const o=this.tileID.canonical.z<t.canonical.z?1:Math.pow(2,this.tileID.canonical.z-t.canonical.z);for(let r=0;r<e.length;r++){const n=e.get(r);if(n.crossTileID)continue;const a=this.indexedSymbolInstances[n.key];if(!a)continue;const s=this.getScaledCoordinates(n,t);for(const e of a)if(Math.abs(e.coord.x-s.x)<=o&&Math.abs(e.coord.y-s.y)<=o&&!i[e.crossTileID]){i[e.crossTileID]=!0,n.crossTileID=e.crossTileID;break}}}}class Nt{constructor(){this.maxCrossTileID=0;}generate(){return ++this.maxCrossTileID}}class Gt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(const e in this.indexes){const i=this.indexes[e],o={};for(const e in i){const r=i[e];r.tileID=r.tileID.unwrapTo(r.tileID.wrap+t),o[r.tileID.key]=r;}this.indexes[e]=o;}this.lng=e;}addBucket(e,t,i){if(this.indexes[e.overscaledZ]&&this.indexes[e.overscaledZ][e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key]);}for(let e=0;e<t.symbolInstances.length;e++)t.symbolInstances.get(e).crossTileID=0;this.usedCrossTileIDs[e.overscaledZ]||(this.usedCrossTileIDs[e.overscaledZ]={});const o=this.usedCrossTileIDs[e.overscaledZ];for(const i in this.indexes){const r=this.indexes[i];if(Number(i)>e.overscaledZ)for(const i in r){const n=r[i];n.tileID.isChildOf(e)&&n.findMatches(t.symbolInstances,e,o);}else {const n=r[e.scaledTo(Number(i)).key];n&&n.findMatches(t.symbolInstances,e,o);}}for(let e=0;e<t.symbolInstances.length;e++){const r=t.symbolInstances.get(e);r.crossTileID||(r.crossTileID=i.generate(),o[r.crossTileID]=!0);}return void 0===this.indexes[e.overscaledZ]&&(this.indexes[e.overscaledZ]={}),this.indexes[e.overscaledZ][e.key]=new Ut(e,t.symbolInstances,t.bucketInstanceId),!0}removeBucketCrossTileIDs(e,t){for(const i in t.indexedSymbolInstances)for(const o of t.indexedSymbolInstances[i])delete this.usedCrossTileIDs[e][o.crossTileID];}removeStaleBuckets(e){let t=!1;for(const i in this.indexes){const o=this.indexes[i];for(const r in o)e[o[r].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,o[r]),delete o[r],t=!0);}return t}}class jt{constructor(){this.layerIndexes={},this.crossTileIDs=new Nt,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={};}addLayer(e,t,i,o){let r=this.layerIndexes[e.id];void 0===r&&(r=this.layerIndexes[e.id]=new Gt);let n=!1;const a={};\"globe\"!==o.name&&r.handleWrapJump(i);for(const i of t){const t=i.getBucket(e);t&&e.id===t.layerIds[0]&&(t.bucketInstanceId||(t.bucketInstanceId=++this.maxBucketInstanceId),r.addBucket(i.tileID,t,this.crossTileIDs)&&(n=!0),a[t.bucketInstanceId]=!0);}return r.removeStaleBuckets(a)&&(n=!0),n}pruneUnusedLayers(e){const t={};e.forEach((e=>{t[e]=!0;}));for(const e in this.layerIndexes)t[e]||delete this.layerIndexes[e];}}const Zt=(t,i)=>e.emitValidationErrors(t,i&&i.filter((e=>\"source.canvas\"!==e.identifier))),Vt=e.pick(je,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\",\"setTerrain\",\"setFog\",\"setProjection\"]),Wt=e.pick(je,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),qt={version:8,layers:[],sources:{}},Xt={fill:!0,line:!0,background:!0,hillshade:!0,raster:!0};class $t extends e.Evented{constructor(t,i={}){super(),this.map=t,this.dispatcher=new A(Ue(),this),this.imageManager=new y,this.imageManager.setEventedParent(this),this.glyphManager=new e.GlyphManager(t._requestManager,i.localFontFamily?e.LocalGlyphMode.all:i.localIdeographFontFamily?e.LocalGlyphMode.ideographs:e.LocalGlyphMode.none,i.localFontFamily||i.localIdeographFontFamily),this.lineAtlas=new e.LineAtlas(256,512),this.crossTileSymbolIndex=new jt,this._layers={},this._num3DLayers=0,this._numSymbolLayers=0,this._numCircleLayers=0,this._serializedLayers={},this._sourceCaches={},this._otherSourceCaches={},this._symbolSourceCaches={},this.zoomHistory=new e.ZoomHistory,this._loaded=!1,this._availableImages=[],this._order=[],this._drapedFirstOrder=[],this._markersNeedUpdate=!1,this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",e.getReferrer());const o=this;this._rtlTextPluginCallback=$t.registerForPluginStateChange((t=>{o.dispatcher.broadcast(\"syncRTLPluginState\",{pluginStatus:t.pluginStatus,pluginURL:t.pluginURL},((t,i)=>{if(e.triggerPluginCompletionEvent(t),i&&i.every((e=>e)))for(const e in o._sourceCaches){const t=o._sourceCaches[e],i=t.getSource().type;\"vector\"!==i&&\"geojson\"!==i||t.reload();}}));})),this.on(\"data\",(e=>{if(\"source\"!==e.dataType||\"metadata\"!==e.sourceDataType)return;const t=this.getSource(e.sourceId);if(t&&t.vectorLayerIds)for(const e in this._layers){const i=this._layers[e];i.source===t.id&&this._validateLayer(i);}}));}loadURL(t,i={}){this.fire(new e.Event(\"dataloading\",{dataType:\"style\"}));const o=\"boolean\"==typeof i.validate?i.validate:!e.isMapboxURL(t);t=this.map._requestManager.normalizeStyleURL(t,i.accessToken);const r=this.map._requestManager.transformRequest(t,e.ResourceType.Style);this._request=e.getJSON(r,((t,i)=>{this._request=null,t?this.fire(new e.ErrorEvent(t)):i&&this._load(i,o);}));}loadJSON(t,i={}){this.fire(new e.Event(\"dataloading\",{dataType:\"style\"})),this._request=e.exported.frame((()=>{this._request=null,this._load(t,!1!==i.validate);}));}loadEmpty(){this.fire(new e.Event(\"dataloading\",{dataType:\"style\"})),this._load(qt,!1);}_updateLayerCount(e,t){const i=t?1:-1;e.is3D()&&(this._num3DLayers+=i),\"circle\"===e.type&&(this._numCircleLayers+=i),\"symbol\"===e.type&&(this._numSymbolLayers+=i);}_load(t,i){if(i&&Zt(this,e.validateStyle(t)))return;this._loaded=!0,this.stylesheet=t,this._updateMapProjection();for(const e in t.sources)this.addSource(e,t.sources[e],{validate:!1});this._changed=!1,t.sprite?this._loadSprite(t.sprite):(this.imageManager.setLoaded(!0),this.dispatcher.broadcast(\"spriteLoaded\",!0)),this.glyphManager.setURL(t.glyphs);const o=Ge(this.stylesheet.layers);this._order=o.map((e=>e.id)),this._layers={},this._serializedLayers={};for(let t of o)t=e.createStyleLayer(t),t.setEventedParent(this,{layer:{id:t.id}}),this._layers[t.id]=t,this._serializedLayers[t.id]=t.serialize(),this._updateLayerCount(t,!0);this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new T(this.stylesheet.light),this.stylesheet.terrain&&!this.terrainSetForDrapingOnly()&&this._createTerrain(this.stylesheet.terrain,1),this.stylesheet.fog&&this._createFog(this.stylesheet.fog),this._updateDrapeFirstLayers(),this.fire(new e.Event(\"data\",{dataType:\"style\"})),this.fire(new e.Event(\"style.load\"));}terrainSetForDrapingOnly(){return !!this.terrain&&0===this.terrain.drapeRenderMode}setProjection(e){e?this.stylesheet.projection=e:delete this.stylesheet.projection,this.map._explicitProjection||this.map._updateProjection();}_updateMapProjection(){this.map._explicitProjection?this.applyProjectionUpdate():this.map._updateProjection();}applyProjectionUpdate(){this._loaded&&(this.dispatcher.broadcast(\"setProjection\",this.map.transform.projectionOptions),this.map.transform.projection.requiresDraping?this.getTerrain()||this.stylesheet.terrain||this.setTerrainForDraping():this.terrainSetForDrapingOnly()&&this.setTerrain(null));}_loadSprite(t){this._spriteRequest=function(t,i,o){let r,n,a;const s=e.exported.devicePixelRatio>1?\"@2x\":\"\";let l=e.getJSON(i.transformRequest(i.normalizeSpriteURL(t,s,\".json\"),e.ResourceType.SpriteJSON),((e,t)=>{l=null,a||(a=e,r=t,h());})),c=e.getImage(i.transformRequest(i.normalizeSpriteURL(t,s,\".png\"),e.ResourceType.SpriteImage),((e,t)=>{c=null,a||(a=e,n=t,h());}));function h(){if(a)o(a);else if(r&&n){const t=e.exported.getImageData(n),i={};for(const o in r){const{width:n,height:a,x:s,y:l,sdf:c,pixelRatio:h,stretchX:_,stretchY:u,content:d}=r[o],p=new e.RGBAImage({width:n,height:a});e.RGBAImage.copy(t,p,{x:s,y:l},{x:0,y:0},{width:n,height:a}),i[o]={data:p,pixelRatio:h,sdf:c,stretchX:_,stretchY:u,content:d};}o(null,i);}}return {cancel(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null);}}}(t,this.map._requestManager,((t,i)=>{if(this._spriteRequest=null,t)this.fire(new e.ErrorEvent(t));else if(i)for(const e in i)this.imageManager.addImage(e,i[e]);this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),this.dispatcher.broadcast(\"setImages\",this._availableImages),this.dispatcher.broadcast(\"spriteLoaded\",!0),this.fire(new e.Event(\"data\",{dataType:\"style\"}));}));}_validateLayer(t){const i=this.getSource(t.source);if(!i)return;const o=t.sourceLayer;o&&(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(o))&&this.fire(new e.ErrorEvent(new Error(`Source layer \"${o}\" does not exist on source \"${i.id}\" as specified by style layer \"${t.id}\"`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const e in this._sourceCaches)if(!this._sourceCaches[e].loaded())return !1;return !!this.imageManager.isLoaded()}_serializeLayers(e){const t=[];for(const i of e){const e=this._layers[i];\"custom\"!==e.type&&t.push(e.serialize());}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return !0;if(this.fog&&this.fog.hasTransition())return !0;for(const e in this._sourceCaches)if(this._sourceCaches[e].hasTransition())return !0;for(const e in this._layers)if(this._layers[e].hasTransition())return !0;return !1}get order(){return this.map._optimizeForTerrain&&this.terrain?this._drapedFirstOrder:this._order}isLayerDraped(e){return !!this.terrain&&Xt[e.type]}_checkLoaded(){if(!this._loaded)throw new Error(\"Style is not done loading\")}update(t){if(!this._loaded)return;const i=this._changed;if(this._changed){const e=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(e.length||i.length)&&this._updateWorkerLayers(e,i);for(const e in this._updatedSources){const t=this._updatedSources[e];\"reload\"===t?this._reloadSource(e):\"clear\"===t&&this._clearSource(e);}this._updateTilesForChangedImages();for(const e in this._updatedPaintProps)this._layers[e].updateTransitions(t);this.light.updateTransitions(t),this.fog&&this.fog.updateTransitions(t),this._resetUpdates();}const o={};for(const e in this._sourceCaches){const t=this._sourceCaches[e];o[e]=t.used,t.used=!1;}for(const e of this._order){const i=this._layers[e];if(i.recalculate(t,this._availableImages),!i.isHidden(t.zoom)){const e=this._getLayerSourceCache(i);e&&(e.used=!0);}const o=this.map.painter;if(o){const e=i.getProgramIds();if(!e)continue;const r=i.getProgramConfiguration(t.zoom);for(const t of e)o.useProgram(t,r);}}for(const t in o){const i=this._sourceCaches[t];o[t]!==i.used&&i.getSource().fire(new e.Event(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:i.getSource().id}));}this.light.recalculate(t),this.terrain&&this.terrain.recalculate(t),this.fog&&this.fog.recalculate(t),this.z=t.zoom,this._markersNeedUpdate&&(this._updateMarkersOpacity(),this._markersNeedUpdate=!1),i&&this.fire(new e.Event(\"data\",{dataType:\"style\"}));}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this._sourceCaches)this._sourceCaches[t].reloadTilesForDependencies([\"icons\",\"patterns\"],e);this._changedImages={};}}_updateWorkerLayers(e,t){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(e),removedIds:t});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={};}setState(t){if(this._checkLoaded(),Zt(this,e.validateStyle(t)))return !1;(t=e.clone$1(t)).layers=Ge(t.layers);const i=function(e,t){if(!e)return [{command:je.setStyle,args:[t]}];let i=[];try{if(!r(e.version,t.version))return [{command:je.setStyle,args:[t]}];r(e.center,t.center)||i.push({command:je.setCenter,args:[t.center]}),r(e.zoom,t.zoom)||i.push({command:je.setZoom,args:[t.zoom]}),r(e.bearing,t.bearing)||i.push({command:je.setBearing,args:[t.bearing]}),r(e.pitch,t.pitch)||i.push({command:je.setPitch,args:[t.pitch]}),r(e.sprite,t.sprite)||i.push({command:je.setSprite,args:[t.sprite]}),r(e.glyphs,t.glyphs)||i.push({command:je.setGlyphs,args:[t.glyphs]}),r(e.transition,t.transition)||i.push({command:je.setTransition,args:[t.transition]}),r(e.light,t.light)||i.push({command:je.setLight,args:[t.light]}),r(e.fog,t.fog)||i.push({command:je.setFog,args:[t.fog]}),r(e.projection,t.projection)||i.push({command:je.setProjection,args:[t.projection]});const o={},n=[];!function(e,t,i,o){let n;for(n in t=t||{},e=e||{})e.hasOwnProperty(n)&&(t.hasOwnProperty(n)||Ve(n,i,o));for(n in t)t.hasOwnProperty(n)&&(e.hasOwnProperty(n)?r(e[n],t[n])||(\"geojson\"===e[n].type&&\"geojson\"===t[n].type&&qe(e,t,n)?i.push({command:je.setGeoJSONSourceData,args:[n,t[n].data]}):We(n,t,i,o)):Ze(n,t,i));}(e.sources,t.sources,n,o);const a=[];e.layers&&e.layers.forEach((e=>{e.source&&o[e.source]?i.push({command:je.removeLayer,args:[e.id]}):a.push(e);}));let s=e.terrain;s&&o[s.source]&&(i.push({command:je.setTerrain,args:[void 0]}),s=void 0),i=i.concat(n),r(s,t.terrain)||i.push({command:je.setTerrain,args:[t.terrain]}),function(e,t,i){t=t||[];const o=(e=e||[]).map($e),n=t.map($e),a=e.reduce(He,{}),s=t.reduce(He,{}),l=o.slice(),c=Object.create(null);let h,_,u,d,p,m,f;for(h=0,_=0;h<o.length;h++)u=o[h],s.hasOwnProperty(u)?_++:(i.push({command:je.removeLayer,args:[u]}),l.splice(l.indexOf(u,_),1));for(h=0,_=0;h<n.length;h++)u=n[n.length-1-h],l[l.length-1-h]!==u&&(a.hasOwnProperty(u)?(i.push({command:je.removeLayer,args:[u]}),l.splice(l.lastIndexOf(u,l.length-_),1)):_++,m=l[l.length-h],i.push({command:je.addLayer,args:[s[u],m]}),l.splice(l.length-h,0,u),c[u]=!0);for(h=0;h<n.length;h++)if(u=n[h],d=a[u],p=s[u],!c[u]&&!r(d,p))if(r(d.source,p.source)&&r(d[\"source-layer\"],p[\"source-layer\"])&&r(d.type,p.type)){for(f in Xe(d.layout,p.layout,i,u,null,je.setLayoutProperty),Xe(d.paint,p.paint,i,u,null,je.setPaintProperty),r(d.filter,p.filter)||i.push({command:je.setFilter,args:[u,p.filter]}),r(d.minzoom,p.minzoom)&&r(d.maxzoom,p.maxzoom)||i.push({command:je.setLayerZoomRange,args:[u,p.minzoom,p.maxzoom]}),d)d.hasOwnProperty(f)&&\"layout\"!==f&&\"paint\"!==f&&\"filter\"!==f&&\"metadata\"!==f&&\"minzoom\"!==f&&\"maxzoom\"!==f&&(0===f.indexOf(\"paint.\")?Xe(d[f],p[f],i,u,f.slice(6),je.setPaintProperty):r(d[f],p[f])||i.push({command:je.setLayerProperty,args:[u,f,p[f]]}));for(f in p)p.hasOwnProperty(f)&&!d.hasOwnProperty(f)&&\"layout\"!==f&&\"paint\"!==f&&\"filter\"!==f&&\"metadata\"!==f&&\"minzoom\"!==f&&\"maxzoom\"!==f&&(0===f.indexOf(\"paint.\")?Xe(d[f],p[f],i,u,f.slice(6),je.setPaintProperty):r(d[f],p[f])||i.push({command:je.setLayerProperty,args:[u,f,p[f]]}));}else i.push({command:je.removeLayer,args:[u]}),m=l[l.lastIndexOf(u)+1],i.push({command:je.addLayer,args:[p,m]});}(a,t.layers,i);}catch(e){console.warn(\"Unable to compute style diff:\",e),i=[{command:je.setStyle,args:[t]}];}return i}(this.serialize(),t).filter((e=>!(e.command in Wt)));if(0===i.length)return !1;const o=i.filter((e=>!(e.command in Vt)));if(o.length>0)throw new Error(`Unimplemented: ${o.map((e=>e.command)).join(\", \")}.`);return i.forEach((e=>{\"setTransition\"!==e.command&&this[e.command].apply(this,e.args);})),this.stylesheet=t,this._updateMapProjection(),!0}addImage(t,i){return this.getImage(t)?this.fire(new e.ErrorEvent(new Error(\"An image with this name already exists.\"))):(this.imageManager.addImage(t,i),this._afterImageUpdated(t),this)}updateImage(e,t){this.imageManager.updateImage(e,t);}getImage(e){return this.imageManager.getImage(e)}removeImage(t){return this.getImage(t)?(this.imageManager.removeImage(t),this._afterImageUpdated(t),this):this.fire(new e.ErrorEvent(new Error(\"No image with this name exists.\")))}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new e.Event(\"data\",{dataType:\"style\"}));}listImages(){return this._checkLoaded(),this._availableImages.slice()}addSource(t,i,o={}){if(this._checkLoaded(),void 0!==this.getSource(t))throw new Error(\"There is already a source with this ID\");if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(\", \")}.`);if([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0&&this._validate(e.validateSource,`sources.${t}`,i,null,o))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const r=De(t,i,this.dispatcher,this);r.setEventedParent(this,(()=>({isSourceLoaded:this._isSourceCacheLoaded(t),source:r.serialize(),sourceId:t})));const n=i=>{const o=(i?\"symbol:\":\"other:\")+t,n=this._sourceCaches[o]=new e.SourceCache(o,r,i);(i?this._symbolSourceCaches:this._otherSourceCaches)[t]=n,n.style=this,n.onAdd(this.map);};n(!1),\"vector\"!==i.type&&\"geojson\"!==i.type||n(!0),r.onAdd&&r.onAdd(this.map),this._changed=!0;}removeSource(t){this._checkLoaded();const i=this.getSource(t);if(!i)throw new Error(\"There is no source with this ID\");for(const i in this._layers)if(this._layers[i].source===t)return this.fire(new e.ErrorEvent(new Error(`Source \"${t}\" cannot be removed while layer \"${i}\" is using it.`)));if(this.terrain&&this.terrain.get().source===t)return this.fire(new e.ErrorEvent(new Error(`Source \"${t}\" cannot be removed while terrain is using it.`)));const o=this._getSourceCaches(t);for(const t of o)delete this._sourceCaches[t.id],delete this._updatedSources[t.id],t.fire(new e.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:t.getSource().id})),t.setEventedParent(null),t.clearTiles();return delete this._otherSourceCaches[t],delete this._symbolSourceCaches[t],i.setEventedParent(null),i.onRemove&&i.onRemove(this.map),this._changed=!0,this}setGeoJSONSourceData(e,t){this._checkLoaded(),this.getSource(e).setData(t),this._changed=!0;}getSource(e){const t=this._getSourceCache(e);return t&&t.getSource()}addLayer(t,i,o={}){this._checkLoaded();const r=t.id;if(this.getLayer(r))return void this.fire(new e.ErrorEvent(new Error(`Layer with id \"${r}\" already exists on this map`)));let n;if(\"custom\"===t.type){if(Zt(this,e.validateCustomStyleLayer(t)))return;n=e.createStyleLayer(t);}else {if(\"object\"==typeof t.source&&(this.addSource(r,t.source),t=e.clone$1(t),t=e.extend(t,{source:r})),this._validate(e.validateLayer,`layers.${r}`,t,{arrayIndex:-1},o))return;n=e.createStyleLayer(t),this._validateLayer(n),n.setEventedParent(this,{layer:{id:r}}),this._serializedLayers[n.id]=n.serialize(),this._updateLayerCount(n,!0);}const a=i?this._order.indexOf(i):this._order.length;if(i&&-1===a)return void this.fire(new e.ErrorEvent(new Error(`Layer with id \"${i}\" does not exist on this map.`)));this._order.splice(a,0,r),this._layerOrderChanged=!0,this._layers[r]=n;const s=this._getLayerSourceCache(n);if(this._removedLayers[r]&&n.source&&s&&\"custom\"!==n.type){const e=this._removedLayers[r];delete this._removedLayers[r],e.type!==n.type?this._updatedSources[n.source]=\"clear\":(this._updatedSources[n.source]=\"reload\",s.pause());}this._updateLayer(n),n.onAdd&&n.onAdd(this.map),this._updateDrapeFirstLayers();}moveLayer(t,i){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===i)return;const o=this._order.indexOf(t);this._order.splice(o,1);const r=i?this._order.indexOf(i):this._order.length;i&&-1===r?this.fire(new e.ErrorEvent(new Error(`Layer with id \"${i}\" does not exist on this map.`))):(this._order.splice(r,0,t),this._layerOrderChanged=!0,this._updateDrapeFirstLayers());}removeLayer(t){this._checkLoaded();const i=this._layers[t];if(!i)return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be removed.`)));i.setEventedParent(null),this._updateLayerCount(i,!1);const o=this._order.indexOf(t);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=i,delete this._layers[t],delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],i.onRemove&&i.onRemove(this.map),this._updateDrapeFirstLayers();}getLayer(e){return this._layers[e]}hasLayer(e){return e in this._layers}hasLayerType(e){for(const t in this._layers)if(this._layers[t].type===e)return !0;return !1}setLayerZoomRange(t,i,o){this._checkLoaded();const r=this.getLayer(t);r?r.minzoom===i&&r.maxzoom===o||(null!=i&&(r.minzoom=i),null!=o&&(r.maxzoom=o),this._updateLayer(r)):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot have zoom extent.`)));}setFilter(t,i,o={}){this._checkLoaded();const n=this.getLayer(t);if(n){if(!r(n.filter,i))return null==i?(n.filter=void 0,void this._updateLayer(n)):void(this._validate(e.validateFilter,`layers.${n.id}.filter`,i,{layerType:n.type},o)||(n.filter=e.clone$1(i),this._updateLayer(n)))}else this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be filtered.`)));}getFilter(t){const i=this.getLayer(t);return i&&e.clone$1(i.filter)}setLayoutProperty(t,i,o,n={}){this._checkLoaded();const a=this.getLayer(t);a?r(a.getLayoutProperty(i),o)||(a.setLayoutProperty(i,o,n),this._updateLayer(a)):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be styled.`)));}getLayoutProperty(t,i){const o=this.getLayer(t);if(o)return o.getLayoutProperty(i);this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style.`)));}setPaintProperty(t,i,o,n={}){this._checkLoaded();const a=this.getLayer(t);a?r(a.getPaintProperty(i),o)||(a.setPaintProperty(i,o,n)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[t]=!0):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be styled.`)));}getPaintProperty(e,t){const i=this.getLayer(e);return i&&i.getPaintProperty(t)}setFeatureState(t,i){this._checkLoaded();const o=t.source,r=t.sourceLayer,n=this.getSource(o);if(!n)return void this.fire(new e.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const a=n.type;if(\"geojson\"===a&&r)return void this.fire(new e.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\")));if(\"vector\"===a&&!r)return void this.fire(new e.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));void 0===t.id&&this.fire(new e.ErrorEvent(new Error(\"The feature id parameter must be provided.\")));const s=this._getSourceCaches(o);for(const e of s)e.setFeatureState(r,t.id,i);}removeFeatureState(t,i){this._checkLoaded();const o=t.source,r=this.getSource(o);if(!r)return void this.fire(new e.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const n=r.type,a=\"vector\"===n?t.sourceLayer:void 0;if(\"vector\"===n&&!a)return void this.fire(new e.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));if(i&&\"string\"!=typeof t.id&&\"number\"!=typeof t.id)return void this.fire(new e.ErrorEvent(new Error(\"A feature id is required to remove its specific state property.\")));const s=this._getSourceCaches(o);for(const e of s)e.removeFeatureState(a,t.id,i);}getFeatureState(t){this._checkLoaded();const i=t.source,o=t.sourceLayer,r=this.getSource(i);if(r){if(\"vector\"!==r.type||o)return void 0===t.id&&this.fire(new e.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),this._getSourceCaches(i)[0].getFeatureState(o,t.id);this.fire(new e.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new e.ErrorEvent(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){return e.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){const t={};for(const e in this._sourceCaches){const i=this._sourceCaches[e].getSource();t[i.id]||(t[i.id]=i.serialize());}return e.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,terrain:this.stylesheet.terrain,fog:this.stylesheet.fog,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,projection:this.stylesheet.projection,sources:t,layers:this._serializeLayers(this._order)},(e=>void 0!==e))}_updateLayer(e){this._updatedLayers[e.id]=!0;const t=this._getLayerSourceCache(e);e.source&&!this._updatedSources[e.source]&&t&&\"raster\"!==t.getSource().type&&(this._updatedSources[e.source]=\"reload\",t.pause()),this._changed=!0,e.invalidateCompiledFilter();}_flattenAndSortRenderedFeatures(e){const t=e=>\"fill-extrusion\"===this._layers[e].type,i={},o=[];for(let r=this._order.length-1;r>=0;r--){const n=this._order[r];if(t(n)){i[n]=r;for(const t of e){const e=t[n];if(e)for(const t of e)o.push(t);}}}o.sort(((e,t)=>t.intersectionZ-e.intersectionZ));const r=[];for(let n=this._order.length-1;n>=0;n--){const a=this._order[n];if(t(a))for(let e=o.length-1;e>=0;e--){const t=o[e].feature;if(i[t.layer.id]<n)break;r.push(t),o.pop();}else for(const t of e){const e=t[a];if(e)for(const t of e)r.push(t.feature);}}return r}queryRenderedFeatures(t,i,o){i&&i.filter&&this._validate(e.validateFilter,\"queryRenderedFeatures.filter\",i.filter,null,i);const r={};if(i&&i.layers){if(!Array.isArray(i.layers))return this.fire(new e.ErrorEvent(new Error(\"parameters.layers must be an Array.\"))),[];for(const t of i.layers){const i=this._layers[t];if(!i)return this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be queried for features.`))),[];r[i.source]=!0;}}const n=[];i.availableImages=this._availableImages;const a=i&&i.layers?i.layers.some((e=>{const t=this.getLayer(e);return t&&t.is3D()})):this.has3DLayers(),s=R.createFromScreenPoints(t,o);for(const e in this._sourceCaches){const t=this._sourceCaches[e].getSource().id;i.layers&&!r[t]||n.push(Ae(this._sourceCaches[e],this._layers,this._serializedLayers,s,i,o,a,!!this.map._showQueryGeometry));}return this.placement&&n.push(function(e,t,i,o,r,n,a){const s={},l=n.queryRenderedSymbols(o),c=[];for(const e of Object.keys(l).map(Number))c.push(a[e]);c.sort(Re);for(const i of c){const o=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],t,i.bucketIndex,i.sourceLayerIndex,r.filter,r.layers,r.availableImages,e);for(const e in o){const t=s[e]=s[e]||[],r=o[e];r.sort(((e,t)=>{const o=i.featureSortOrder;if(o){const i=o.indexOf(e.featureIndex);return o.indexOf(t.featureIndex)-i}return t.featureIndex-e.featureIndex}));for(const e of r)t.push(e);}}for(const t in s)s[t].forEach((o=>{const r=o.feature,n=i(e[t]).getFeatureState(r.layer[\"source-layer\"],r.id);r.source=r.layer.source,r.layer[\"source-layer\"]&&(r.sourceLayer=r.layer[\"source-layer\"]),r.state=n;}));return s}(this._layers,this._serializedLayers,this._getLayerSourceCache.bind(this),s.screenGeometry,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(n)}querySourceFeatures(t,i){i&&i.filter&&this._validate(e.validateFilter,\"querySourceFeatures.filter\",i.filter,null,i);const o=this._getSourceCaches(t);let r=[];for(const e of o)r=r.concat(Le(e,i));return r}addSourceType(e,t,i){return $t.getSourceType(e)?i(new Error(`A source type called \"${e}\" already exists.`)):($t.setSourceType(e,t),t.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:e,url:t.workerSourceURL},i):i(null,null))}getLight(){return this.light.getLight()}setLight(t,i={}){this._checkLoaded();const o=this.light.getLight();let n=!1;for(const e in t)if(!r(t[e],o[e])){n=!0;break}if(!n)return;const a={now:e.exported.now(),transition:e.extend({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(t,i),this.light.updateTransitions(a);}getTerrain(){return this.terrain&&1===this.terrain.drapeRenderMode?this.terrain.get():null}setTerrainForDraping(){this.setTerrain({source:\"\",exaggeration:0},0);}setTerrain(t,i=1){if(this._checkLoaded(),!t)return delete this.terrain,delete this.stylesheet.terrain,this.dispatcher.broadcast(\"enableTerrain\",!1),this._force3DLayerUpdate(),void(this._markersNeedUpdate=!0);if(1===i){if(\"object\"==typeof t.source){const i=\"terrain-dem-src\";this.addSource(i,t.source),t=e.clone$1(t),t=e.extend(t,{source:i});}if(this._validate(e.validateTerrain,\"terrain\",t))return}if(!this.terrain||this.terrain&&i!==this.terrain.drapeRenderMode)this._createTerrain(t,i);else {const i=this.terrain,o=i.get();for(const n in t)if(!r(t[n],o[n])){i.set(t),this.stylesheet.terrain=t;const o={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};i.updateTransitions(o);break}}this._updateDrapeFirstLayers(),this._markersNeedUpdate=!0;}_createFog(t){const i=this.fog=new P(t,this.map.transform);this.stylesheet.fog=t;const o={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};i.updateTransitions(o);}_updateMarkersOpacity(){0!==this.map._markers.length&&this.map._requestDomTask((()=>{for(const e of this.map._markers)e._evaluateOpacity();}));}getFog(){return this.fog?this.fog.get():null}setFog(t){if(this._checkLoaded(),!t)return delete this.fog,delete this.stylesheet.fog,void(this._markersNeedUpdate=!0);if(this.fog){const i=this.fog,o=i.get();for(const n in t)if(!r(t[n],o[n])){i.set(t),this.stylesheet.fog=t;const o={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};i.updateTransitions(o);break}}else this._createFog(t);this._markersNeedUpdate=!0;}_updateDrapeFirstLayers(){if(!this.map._optimizeForTerrain||!this.terrain)return;const e=this._order.filter((e=>this.isLayerDraped(this._layers[e]))),t=this._order.filter((e=>!this.isLayerDraped(this._layers[e])));this._drapedFirstOrder=[],this._drapedFirstOrder.push(...e),this._drapedFirstOrder.push(...t);}_createTerrain(t,i){const o=this.terrain=new I(t,i);this.stylesheet.terrain=t,this.dispatcher.broadcast(\"enableTerrain\",!this.terrainSetForDrapingOnly()),this._force3DLayerUpdate();const r={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};o.updateTransitions(r);}_force3DLayerUpdate(){for(const e in this._layers){const t=this._layers[e];\"fill-extrusion\"===t.type&&this._updateLayer(t);}}_forceSymbolLayerUpdate(){for(const e in this._layers){const t=this._layers[e];\"symbol\"===t.type&&this._updateLayer(t);}}_validate(t,i,o,r,n={}){return (!n||!1!==n.validate)&&Zt(this,t.call(e.validateStyle,e.extend({key:i,style:this.serialize(),value:o,styleSpec:e.spec},r)))}_remove(){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),e.evented.off(\"pluginStateChange\",this._rtlTextPluginCallback);for(const e in this._layers)this._layers[e].setEventedParent(null);for(const e in this._sourceCaches)this._sourceCaches[e].clearTiles(),this._sourceCaches[e].setEventedParent(null);this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove();}_clearSource(e){const t=this._getSourceCaches(e);for(const e of t)e.clearTiles();}_reloadSource(e){const t=this._getSourceCaches(e);for(const e of t)e.resume(),e.reload();}_updateSources(e){for(const t in this._sourceCaches)this._sourceCaches[t].update(e);}_generateCollisionBoxes(){for(const e in this._sourceCaches){const t=this._sourceCaches[e];t.resume(),t.reload();}}_updatePlacement(t,i,o,r,n=!1){let a=!1,s=!1;const l={};for(const e of this._order){const i=this._layers[e];if(\"symbol\"!==i.type)continue;if(!l[i.source]){const e=this._getLayerSourceCache(i);if(!e)continue;l[i.source]=e.getRenderableIds(!0).map((t=>e.getTileByID(t))).sort(((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1)));}const o=this.crossTileSymbolIndex.addLayer(i,l[i.source],t.center.lng,t.projection);a=a||o;}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),n=n||this._layerOrderChanged||0===o,this._layerOrderChanged&&this.fire(new e.Event(\"neworder\")),(n||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(e.exported.now(),t.zoom))&&(this.pauseablePlacement=new Bt(t,this._order,n,i,o,r,this.placement,this.fog&&t.projection.supportsFog?this.fog.state:null),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(e.exported.now()),s=!0),a&&this.pauseablePlacement.placement.setStale()),s||a)for(const e of this._order){const t=this._layers[e];\"symbol\"===t.type&&this.placement.updateLayerOpacities(t,l[t.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(e.exported.now())}_releaseSymbolFadeTiles(){for(const e in this._sourceCaches)this._sourceCaches[e].releaseSymbolFadeTiles();}getImages(e,t,i){this.imageManager.getImages(t.icons,i),this._updateTilesForChangedImages();const o=e=>{e&&e.setDependencies(t.tileID.key,t.type,t.icons);};o(this._otherSourceCaches[t.source]),o(this._symbolSourceCaches[t.source]);}getGlyphs(e,t,i){this.glyphManager.getGlyphs(t.stacks,i);}getResource(t,i,o){return e.makeRequest(i,o)}_getSourceCache(e){return this._otherSourceCaches[e]}_getLayerSourceCache(e){return \"symbol\"===e.type?this._symbolSourceCaches[e.source]:this._otherSourceCaches[e.source]}_getSourceCaches(e){const t=[];return this._otherSourceCaches[e]&&t.push(this._otherSourceCaches[e]),this._symbolSourceCaches[e]&&t.push(this._symbolSourceCaches[e]),t}_isSourceCacheLoaded(t){const i=this._getSourceCaches(t);return 0===i.length?(this.fire(new e.ErrorEvent(new Error(`There is no source with ID '${t}'`))),!1):i.every((e=>e.loaded()))}has3DLayers(){return this._num3DLayers>0}hasSymbolLayers(){return this._numSymbolLayers>0}hasCircleLayers(){return this._numCircleLayers>0}_clearWorkerCaches(){this.dispatcher.broadcast(\"clearCaches\");}destroy(){this._clearWorkerCaches(),this.terrainSetForDrapingOnly()&&(delete this.terrain,delete this.stylesheet.terrain);}}$t.getSourceType=function(e){return ze[e]},$t.setSourceType=function(e,t){ze[e]=t;},$t.registerForPluginStateChange=e.registerForPluginStateChange;var Ht=\"\\n#define EPSILON 0.0000001\\n#define PI 3.141592653589793\\n#define EXTENT 8192.0\\n#define HALF_PI PI/2.0\\n#define QUARTER_PI PI/4.0\\n#define RAD_TO_DEG 180.0/PI\\n#define DEG_TO_RAD PI/180.0\\n#define GLOBE_RADIUS EXTENT/PI/2.0\\n#ifdef FOG\\nuniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;varying vec3 v_fog_pos;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}\\n#endif\",Kt=\"attribute highp vec3 a_pos_3f;uniform lowp mat4 u_matrix;varying highp vec3 v_uv;void main() {const mat3 half_neg_pi_around_x=mat3(1.0,0.0, 0.0,0.0,0.0,-1.0,0.0,1.0, 0.0);v_uv=half_neg_pi_around_x*a_pos_3f;vec4 pos=u_matrix*vec4(a_pos_3f,1.0);gl_Position=pos.xyww;}\";let Yt={},Jt={};Yt=ii(\"\",\"\\n#define ELEVATION_SCALE 7.0\\n#define ELEVATION_OFFSET 450.0\\n#ifdef PROJECTION_GLOBE_VIEW\\nuniform vec3 u_tile_tl_up;uniform vec3 u_tile_tr_up;uniform vec3 u_tile_br_up;uniform vec3 u_tile_bl_up;uniform float u_tile_up_scale;vec3 elevationVector(vec2 pos) {vec2 uv=pos/EXTENT;vec3 up=normalize(mix(\\nmix(u_tile_tl_up,u_tile_tr_up,uv.xxx),mix(u_tile_bl_up,u_tile_br_up,uv.xxx),uv.yyy));return up*u_tile_up_scale;}\\n#else\\nvec3 elevationVector(vec2 pos) { return vec3(0,0,1); }\\n#endif\\n#ifdef TERRAIN\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nuniform highp sampler2D u_dem;uniform highp sampler2D u_dem_prev;\\n#else\\nuniform sampler2D u_dem;uniform sampler2D u_dem_prev;\\n#endif\\nuniform vec4 u_dem_unpack;uniform vec2 u_dem_tl;uniform vec2 u_dem_tl_prev;uniform float u_dem_scale;uniform float u_dem_scale_prev;uniform float u_dem_size;uniform float u_dem_lerp;uniform float u_exaggeration;uniform float u_meter_to_dem;uniform mat4 u_label_plane_matrix_inv;uniform sampler2D u_depth;uniform vec2 u_depth_size_inv;vec4 tileUvToDemSample(vec2 uv,float dem_size,float dem_scale,vec2 dem_tl) {vec2 pos=dem_size*(uv*dem_scale+dem_tl)+1.0;vec2 f=fract(pos);return vec4((pos-f+0.5)/(dem_size+2.0),f);}float decodeElevation(vec4 v) {return dot(vec4(v.xyz*255.0,-1.0),u_dem_unpack);}float currentElevation(vec2 apos) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale+u_dem_tl)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem,pos).a;\\n#else\\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale,u_dem_tl);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem,pos));\\n#ifdef TERRAIN_DEM_NEAREST_FILTER\\nreturn u_exaggeration*tl;\\n#endif\\nfloat tr=decodeElevation(texture2D(u_dem,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\\n#endif\\n}float prevElevation(vec2 apos) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale_prev+u_dem_tl_prev)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem_prev,pos).a;\\n#else\\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale_prev,u_dem_tl_prev);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem_prev,pos));float tr=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem_prev,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\\n#endif\\n}\\n#ifdef TERRAIN_VERTEX_MORPHING\\nfloat elevation(vec2 apos) {float nextElevation=currentElevation(apos);float prevElevation=prevElevation(apos);return mix(prevElevation,nextElevation,u_dem_lerp);}\\n#else\\nfloat elevation(vec2 apos) {return currentElevation(apos);}\\n#endif\\nfloat unpack_depth(vec4 rgba_depth)\\n{const vec4 bit_shift=vec4(1.0/(256.0*256.0*256.0),1.0/(256.0*256.0),1.0/256.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}bool isOccluded(vec4 frag) {vec3 coord=frag.xyz/frag.w;float depth=unpack_depth(texture2D(u_depth,(coord.xy+1.0)*0.5));return coord.z > depth+0.0005;}float occlusionFade(vec4 frag) {vec3 coord=frag.xyz/frag.w;vec3 df=vec3(5.0*u_depth_size_inv,0.0);vec2 uv=0.5*coord.xy+0.5;vec4 depth=vec4(\\nunpack_depth(texture2D(u_depth,uv-df.xz)),unpack_depth(texture2D(u_depth,uv+df.xz)),unpack_depth(texture2D(u_depth,uv-df.zy)),unpack_depth(texture2D(u_depth,uv+df.zy))\\n);return dot(vec4(0.25),vec4(1.0)-clamp(300.0*(vec4(coord.z-0.001)-depth),0.0,1.0));}vec4 fourSample(vec2 pos,vec2 off) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nfloat tl=texture2D(u_dem,pos).a;float tr=texture2D(u_dem,pos+vec2(off.x,0.0)).a;float bl=texture2D(u_dem,pos+vec2(0.0,off.y)).a;float br=texture2D(u_dem,pos+off).a;\\n#else\\nvec4 demtl=vec4(texture2D(u_dem,pos).xyz*255.0,-1.0);float tl=dot(demtl,u_dem_unpack);vec4 demtr=vec4(texture2D(u_dem,pos+vec2(off.x,0.0)).xyz*255.0,-1.0);float tr=dot(demtr,u_dem_unpack);vec4 dembl=vec4(texture2D(u_dem,pos+vec2(0.0,off.y)).xyz*255.0,-1.0);float bl=dot(dembl,u_dem_unpack);vec4 dembr=vec4(texture2D(u_dem,pos+off).xyz*255.0,-1.0);float br=dot(dembr,u_dem_unpack);\\n#endif\\nreturn vec4(tl,tr,bl,br);}float flatElevation(vec2 pack) {vec2 apos=floor(pack/8.0);vec2 span=10.0*(pack-apos*8.0);vec2 uvTex=(apos-vec2(1.0,1.0))/8190.0;float size=u_dem_size+2.0;float dd=1.0/size;vec2 pos=u_dem_size*(uvTex*u_dem_scale+u_dem_tl)+1.0;vec2 f=fract(pos);pos=(pos-f+0.5)*dd;vec4 h=fourSample(pos,vec2(dd));float z=mix(mix(h.x,h.y,f.x),mix(h.z,h.w,f.x),f.y);vec2 w=floor(0.5*(span*u_meter_to_dem-1.0));vec2 d=dd*w;vec4 bounds=vec4(d,vec2(1.0)-d);h=fourSample(pos-d,2.0*d+vec2(dd));vec4 diff=abs(h.xzxy-h.ywzw);vec2 slope=min(vec2(0.25),u_meter_to_dem*0.5*(diff.xz+diff.yw)/(2.0*w+vec2(1.0)));vec2 fix=slope*span;float base=z+max(fix.x,fix.y);return u_exaggeration*base;}float elevationFromUint16(float word) {return u_exaggeration*(word/ELEVATION_SCALE-ELEVATION_OFFSET);}\\n#else\\nfloat elevation(vec2 pos) { return 0.0; }bool isOccluded(vec4 frag) { return false; }float occlusionFade(vec4 frag) { return 1.0; }\\n#endif\",!0),Jt=ii(\"#ifdef FOG\\nuniform float u_fog_temporal_offset;float fog_opacity(vec3 pos) {float depth=length(pos);return fog_opacity(fog_range(depth));}vec3 fog_apply(vec3 color,vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));opacity*=fog_horizon_blending(pos/depth);return mix(color,u_fog_color.rgb,opacity);}vec4 fog_apply_from_vert(vec4 color,float fog_opac) {float alpha=EPSILON+color.a;color.rgb=mix(color.rgb/alpha,u_fog_color.rgb,fog_opac)*alpha;return color;}vec3 fog_apply_sky_gradient(vec3 camera_ray,vec3 sky_color) {float horizon_blend=fog_horizon_blending(normalize(camera_ray));return mix(sky_color,u_fog_color.rgb,horizon_blend);}vec4 fog_apply_premultiplied(vec4 color,vec3 pos) {float alpha=EPSILON+color.a;color.rgb=fog_apply(color.rgb/alpha,pos)*alpha;return color;}vec3 fog_dither(vec3 color) {vec2 dither_seed=gl_FragCoord.xy+u_fog_temporal_offset;return dither(color,dither_seed);}vec4 fog_dither(vec4 color) {return vec4(fog_dither(color.rgb),color.a);}\\n#endif\",\"#ifdef FOG\\nuniform mat4 u_fog_matrix;vec3 fog_position(vec3 pos) {return (u_fog_matrix*vec4(pos,1.0)).xyz;}vec3 fog_position(vec2 pos) {return fog_position(vec3(pos,0.0));}float fog(vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));return opacity*fog_horizon_blending(pos/depth);}\\n#endif\",!0);const Qt=ii(\"\\nhighp vec3 hash(highp vec2 p) {highp vec3 p3=fract(p.xyx*vec3(443.8975,397.2973,491.1871));p3+=dot(p3,p3.yxz+19.19);return fract((p3.xxy+p3.yzz)*p3.zyx);}vec3 dither(vec3 color,highp vec2 seed) {vec3 rnd=hash(seed)+hash(seed+0.59374)-0.5;return color+rnd/255.0;}\\n#ifdef TERRAIN\\nhighp vec4 pack_depth(highp float ndc_z) {highp float depth=ndc_z*0.5+0.5;const highp vec4 bit_shift=vec4(256.0*256.0*256.0,256.0*256.0,256.0,1.0);const highp vec4 bit_mask =vec4(0.0,1.0/256.0,1.0/256.0,1.0/256.0);highp vec4 res=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;}\\n#endif\",\"\\nfloat wrap(float n,float min,float max) {float d=max-min;float w=mod(mod(n-min,d)+d,d)+min;return (w==min) ? max : w;}\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 mercator_tile_position(mat4 matrix,vec2 tile_anchor,vec3 tile_id,vec2 mercator_center) {\\n#ifndef PROJECTED_POS_ON_VIEWPORT\\nfloat tiles=tile_id.z;vec2 mercator=(tile_anchor/EXTENT+tile_id.xy)/tiles;mercator-=mercator_center;mercator.x=wrap(mercator.x,-0.5,0.5);vec4 mercator_tile=vec4(mercator.xy*EXTENT,EXTENT/(2.0*PI),1.0);mercator_tile=matrix*mercator_tile;return mercator_tile.xyz;\\n#else\\nreturn vec3(0.0);\\n#endif\\n}vec3 mix_globe_mercator(vec3 globe,vec3 mercator,float t) {return mix(globe,mercator,t);}mat3 globe_mercator_surface_vectors(vec3 pos_normal,vec3 up_dir,float zoom_transition) {vec3 normal=zoom_transition==0.0 ? pos_normal : normalize(mix(pos_normal,up_dir,zoom_transition));vec3 xAxis=normalize(vec3(normal.z,0.0,-normal.x));vec3 yAxis=normalize(cross(normal,xAxis));return mat3(xAxis,yAxis,normal);}\\n#endif\\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(\\nunpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}const vec4 AWAY=vec4(-1000.0,-1000.0,-1000.0,1);//Normalized device coordinate that is not rendered.\"),ei=Ht;var ti={background:ii(\"uniform vec4 u_color;uniform float u_opacity;void main() {vec4 out_color=u_color;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),backgroundPattern:ii(\"uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_mix);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),circle:ii(\"varying vec3 v_data;varying float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(\\nantialiased_blur,0.0,extrude_length-radius/(radius+stroke_width)\\n);vec4 out_color=mix(color*opacity,stroke_color*stroke_opacity,color_t);\\n#ifdef FOG\\nout_color=fog_apply_premultiplied(out_color,v_fog_pos);\\n#endif\\ngl_FragColor=out_color*(v_visibility*opacity_t);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"#define NUM_VISIBILITY_RINGS 2\\n#define INV_SQRT2 0.70710678\\n#define ELEVATION_BIAS 0.0001\\n#define NUM_SAMPLES_PER_RING 16\\nuniform mat4 u_matrix;uniform mat2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;attribute float a_scale;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\\n#endif\\nvarying vec3 v_data;varying float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvec2 calc_offset(vec2 extrusion,float radius,float stroke_width, float view_scale) {return extrusion*(radius+stroke_width)*u_extrude_scale*view_scale;}float cantilevered_elevation(vec2 pos,float radius,float stroke_width,float view_scale) {vec2 c1=pos+calc_offset(vec2(-1,-1),radius,stroke_width,view_scale);vec2 c2=pos+calc_offset(vec2(1,-1),radius,stroke_width,view_scale);vec2 c3=pos+calc_offset(vec2(1,1),radius,stroke_width,view_scale);vec2 c4=pos+calc_offset(vec2(-1,1),radius,stroke_width,view_scale);float h1=elevation(c1)+ELEVATION_BIAS;float h2=elevation(c2)+ELEVATION_BIAS;float h3=elevation(c3)+ELEVATION_BIAS;float h4=elevation(c4)+ELEVATION_BIAS;return max(h4,max(h3,max(h1,h2)));}float circle_elevation(vec2 pos) {\\n#if defined(TERRAIN)\\nreturn elevation(pos)+ELEVATION_BIAS;\\n#else\\nreturn 0.0;\\n#endif\\n}vec4 project_vertex(vec2 extrusion,vec4 world_center,vec4 projected_center,float radius,float stroke_width, float view_scale,mat3 surface_vectors) {vec2 sample_offset=calc_offset(extrusion,radius,stroke_width,view_scale);\\n#ifdef PITCH_WITH_MAP\\n#ifdef PROJECTION_GLOBE_VIEW\\nreturn u_matrix*( world_center+vec4(sample_offset.x*surface_vectors[0]+sample_offset.y*surface_vectors[1],0) );\\n#else\\nreturn u_matrix*( world_center+vec4(sample_offset,0,0) );\\n#endif\\n#else\\nreturn projected_center+vec4(sample_offset,0,0);\\n#endif\\n}float get_sample_step() {\\n#ifdef PITCH_WITH_MAP\\nreturn 2.0*PI/float(NUM_SAMPLES_PER_RING);\\n#else\\nreturn PI/float(NUM_SAMPLES_PER_RING);\\n#endif\\n}void main(void) {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec2 scaled_extrude=extrude*a_scale;vec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=scaled_extrude.x*surface_vectors[0]+scaled_extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(circle_center)*circle_elevation(circle_center);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*circle_elevation(circle_center);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,circle_center,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);vec4 world_center=vec4(pos,1);\\n#else \\nmat3 surface_vectors=mat3(1.0);float height=circle_elevation(circle_center);vec4 world_center=vec4(circle_center,height,1);\\n#endif\\nvec4 projected_center=u_matrix*world_center;float view_scale=0.0;\\n#ifdef PITCH_WITH_MAP\\n#ifdef SCALE_WITH_MAP\\nview_scale=1.0;\\n#else\\nview_scale=projected_center.w/u_camera_to_center_distance;\\n#endif\\n#else\\n#ifdef SCALE_WITH_MAP\\nview_scale=u_camera_to_center_distance;\\n#else\\nview_scale=projected_center.w;\\n#endif\\n#endif\\n#if defined(SCALE_WITH_MAP) && defined(PROJECTION_GLOBE_VIEW)\\nview_scale*=a_scale;\\n#endif\\ngl_Position=project_vertex(extrude,world_center,projected_center,radius,stroke_width,view_scale,surface_vectors);float visibility=0.0;\\n#ifdef TERRAIN\\nfloat step=get_sample_step();\\n#ifdef PITCH_WITH_MAP\\nfloat cantilevered_height=cantilevered_elevation(circle_center,radius,stroke_width,view_scale);vec4 occlusion_world_center=vec4(circle_center,cantilevered_height,1);vec4 occlusion_projected_center=u_matrix*occlusion_world_center;\\n#else\\nvec4 occlusion_world_center=world_center;vec4 occlusion_projected_center=projected_center;\\n#endif\\nfor(int ring=0; ring < NUM_VISIBILITY_RINGS; ring++) {float scale=(float(ring)+1.0)/float(NUM_VISIBILITY_RINGS);for(int i=0; i < NUM_SAMPLES_PER_RING; i++) {vec2 extrusion=vec2(cos(step*float(i)),-sin(step*float(i)))*scale;vec4 frag_pos=project_vertex(extrusion,occlusion_world_center,occlusion_projected_center,radius,stroke_width,view_scale,surface_vectors);visibility+=float(!isOccluded(frag_pos));}}visibility/=float(NUM_VISIBILITY_RINGS)*float(NUM_SAMPLES_PER_RING);\\n#else\\nvisibility=1.0;\\n#endif\\n#ifdef PROJECTION_GLOBE_VIEW\\nvisibility=1.0;\\n#endif\\nv_visibility=visibility;lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);\\n#ifdef FOG\\nv_fog_pos=fog_position(world_center.xyz);\\n#endif\\n}\"),clippingMask:ii(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),heatmap:ii(\"uniform highp float u_intensity;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main() {\\n#pragma mapbox: initialize highp float weight\\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\\n#ifdef FOG\\ngl_FragColor.r*=pow(1.0-fog_opacity(v_fog_pos),2.0);\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;attribute float a_scale;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\\n#endif\\nvarying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\nconst highp float ZERO=1.0/255.0/16.0;\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main(void) {\\n#pragma mapbox: initialize highp float weight\\n#pragma mapbox: initialize mediump float radius\\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 tilePos=floor(a_pos*0.5);\\n#ifdef PROJECTION_GLOBE_VIEW\\nextrude*=a_scale;vec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(tilePos)*elevation(tilePos);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*elevation(tilePos);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,tilePos,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\\n#else\\nvec3 pos=vec3(tilePos+extrude,elevation(tilePos));\\n#endif\\ngl_Position=u_matrix*vec4(pos,1);\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),heatmapTexture:ii(\"uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\",\"attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=vec4(a_pos,0,1);v_pos=a_pos*0.5+0.5;}\"),collisionBox:ii(\"varying float v_placed;varying float v_notUsed;void main() {vec4 red =vec4(1.0,0.0,0.0,1.0);vec4 blue=vec4(0.0,0.0,1.0,0.5);gl_FragColor =mix(red,blue,step(0.5,v_placed))*0.5;gl_FragColor*=mix(1.0,0.1,step(0.5,v_notUsed));}\",\"attribute vec3 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;attribute float a_size_scale;attribute vec2 a_padding;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_pos+elevationVector(a_anchor_pos)*elevation(a_anchor_pos),1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(\\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,1.5);gl_Position=projectedPoint;gl_Position.xy+=(a_extrude*a_size_scale+a_shift+a_padding)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),collisionCircle:ii(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos_2f;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos_2f;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(\\nmix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(\\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),debug:ii(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;\\n#endif\\nvarying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {float h=elevation(a_pos);v_uv=a_pos/8192.0;\\n#ifdef PROJECTION_GLOBE_VIEW\\ngl_Position=u_matrix*vec4(a_pos_3+elevationVector(a_pos)*h,1);\\n#else\\ngl_Position=u_matrix*vec4(a_pos*u_overlay_scale,h,1);\\n#endif\\n}\"),fill:ii(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\nvec4 out_color=color;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillOutline:ii(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=outline_color;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillOutlinePattern:ii(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=mix(color1,color2,u_fade);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillPattern:ii(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_fade);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillExtrusion:ii(\"varying vec4 v_color;void main() {vec4 color=v_color;\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\\n#endif\\ngl_FragColor=color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\\n#endif\\nvarying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 pos_nx=floor(a_pos_normal_ed.xyz*0.5);mediump vec3 top_up_ny=a_pos_normal_ed.xyz-2.0*pos_nx;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;vec2 centroid_pos=vec2(0.0);\\n#if defined(HAS_CENTROID) || defined(TERRAIN)\\ncentroid_pos=a_centroid_pos;\\n#endif\\n#ifdef TERRAIN\\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;float ele=elevation(pos_nx.xy);float c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;float h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);vec3 pos=vec3(pos_nx.xy,h);\\n#else\\nvec3 pos=vec3(pos_nx.xy,t > 0.0 ? height : base);\\n#endif\\n#ifdef PROJECTION_GLOBE_VIEW\\nfloat lift=float((t+base) > 0.0)*u_height_lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(pos.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,pos.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*pos.z;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\\n#endif\\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(pos,1),AWAY,hidden);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=(\\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.rgb+=clamp(color.rgb*directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_color*=u_opacity;\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),fillExtrusionPattern:ii(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_fade);out_color=out_color*v_lighting;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\\n#endif\\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 pos_nx=floor(a_pos_normal_ed.xyz*0.5);mediump vec3 top_up_ny=a_pos_normal_ed.xyz-2.0*pos_nx;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));float edgedistance=a_pos_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;float z=t > 0.0 ? height : base;vec2 centroid_pos=vec2(0.0);\\n#if defined(HAS_CENTROID) || defined(TERRAIN)\\ncentroid_pos=a_centroid_pos;\\n#endif\\n#ifdef TERRAIN\\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;float ele=elevation(pos_nx.xy);float c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;float h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);vec3 p=vec3(pos_nx.xy,h);\\n#else\\nvec3 p=vec3(pos_nx.xy,z);\\n#endif\\n#ifdef PROJECTION_GLOBE_VIEW\\nfloat lift=float((t+base) > 0.0)*u_height_lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(p.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,p.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*p.z;p=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\\n#endif\\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(p,1),AWAY,hidden);vec2 pos=normal.z==1.0\\n? pos_nx.xy\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=(\\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;\\n#ifdef FOG\\nv_fog_pos=fog_position(p);\\n#endif\\n}\"),hillshadePrepare:ii(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nreturn texture2D(u_image,coord).a/4.0;\\n#else\\nvec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;\\n#endif\\n}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y));float b=getElevation(v_pos+vec2(0,-epsilon.y));float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y));float d=getElevation(v_pos+vec2(-epsilon.x,0));float e=getElevation(v_pos);float f=getElevation(v_pos+vec2(epsilon.x,0));float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y));float h=getElevation(v_pos+vec2(0,epsilon.y));float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y));float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2(\\n(c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c)\\n)/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(\\nderiv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),hillshade:ii(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef FOG\\ngl_FragColor=fog_dither(fog_apply_premultiplied(gl_FragColor,v_fog_pos));\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),line:ii(\"uniform lowp float u_device_pixel_ratio;uniform float u_alpha_discard_threshold;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#ifdef RENDER_LINE_DASH\\nuniform sampler2D u_dash_image;uniform float u_mix;uniform vec3 u_scale;varying vec2 v_tex_a;varying vec2 v_tex_b;\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nuniform sampler2D u_gradient_image;varying highp vec2 v_uv;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 dash_from\\n#pragma mapbox: define lowp vec4 dash_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize lowp vec4 dash_from\\n#pragma mapbox: initialize lowp vec4 dash_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);\\n#ifdef RENDER_LINE_DASH\\nfloat sdfdist_a=texture2D(u_dash_image,v_tex_a).a;float sdfdist_b=texture2D(u_dash_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfwidth=min(dash_from.z*u_scale.y,dash_to.z*u_scale.z);float sdfgamma=1.0/(2.0*u_device_pixel_ratio)/sdfwidth;alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nvec4 out_color=texture2D(u_gradient_image,v_uv);\\n#else\\nvec4 out_color=color;\\n#endif\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\n#ifdef RENDER_LINE_ALPHA_DISCARD\\nif (alpha < u_alpha_discard_threshold) {discard;}\\n#endif\\ngl_FragColor=out_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define EXTRUDE_SCALE 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;\\n#ifdef RENDER_LINE_GRADIENT\\nattribute vec3 a_packed;\\n#else\\nattribute float a_linesofar;\\n#endif\\nuniform mat4 u_matrix;uniform mat2 u_pixels_to_tile_units;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;\\n#ifdef RENDER_LINE_DASH\\nuniform vec2 u_texsize;uniform mediump vec3 u_scale;varying vec2 v_tex_a;varying vec2 v_tex_b;\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nuniform float u_image_height;varying highp vec2 v_uv;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 dash_from\\n#pragma mapbox: define lowp vec4 dash_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize lowp vec4 dash_from\\n#pragma mapbox: initialize lowp vec4 dash_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*EXTRUDE_SCALE;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*EXTRUDE_SCALE*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\\n#ifndef RENDER_TO_TEXTURE\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#else\\nv_gamma_scale=1.0;\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nfloat a_uv_x=a_packed[0];float a_split_index=a_packed[1];float a_linesofar=a_packed[2];highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);\\n#endif\\n#ifdef RENDER_LINE_DASH\\nfloat tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;float scaleA=dash_from.z==0.0 ? 0.0 : tileZoomRatio/(dash_from.z*fromScale);float scaleB=dash_to.z==0.0 ? 0.0 : tileZoomRatio/(dash_to.z*toScale);float heightA=dash_from.y;float heightB=dash_to.y;v_tex_a=vec2(a_linesofar*scaleA/floorwidth,(-normal.y*heightA+dash_from.x+0.5)/u_texsize.y);v_tex_b=vec2(a_linesofar*scaleB/floorwidth,(-normal.y*heightB+dash_to.x+0.5)/u_texsize.y);\\n#endif\\nv_width2=vec2(outset,inset);\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),linePattern:ii(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\\n#endif\\ngl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_linesofar;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mat2 u_pixels_to_tile_units;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\\n#ifndef RENDER_TO_TEXTURE\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#else\\nv_gamma_scale=1.0;\\n#endif\\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),raster:ii(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(\\ndot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);vec3 out_color=mix(u_high_vec,u_low_vec,rgb);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=vec4(out_color*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform vec2 u_perspective_transform;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {float w=1.0+dot(a_texture_pos,u_perspective_transform);gl_Position=u_matrix*vec4(a_pos*w,0,w);v_pos0=a_texture_pos/8192.0;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),symbolIcon:ii(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_z_tile_anchor;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;\\n#ifdef PROJECTION_GLOBE_VIEW\\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\\n#endif\\nvarying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_min_font_scale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}float anchor_z=a_z_tile_anchor.x;vec2 tile_anchor=a_z_tile_anchor.yz;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(vec3(a_pos,anchor_z)+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;float globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\\n#else\\nvec3 world_pos=vec3(a_pos,anchor_z)+h;float globe_occlusion_fade=1.0;\\n#endif\\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjected_point=u_matrix*vec4(a_pos+vec2(1,0),anchor_z,1);vec2 a=projected_point.xy/projected_point.w;vec2 b=offsetProjected_point.xy/offsetProjected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 proj_pos=mix_globe_mercator(vec3(a_projected_pos.xy,anchor_z),mercator_pos,u_zoom_transition);\\n#else\\nvec3 proj_pos=vec3(a_projected_pos.xy,anchor_z);\\n#endif\\n#ifdef PROJECTED_POS_ON_VIEWPORT\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xy,0.0,1.0);\\n#else\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xyz+h,1.0);\\n#endif\\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*max(a_min_font_scale,font_scale)+a_pxoffset/16.0);\\n#ifdef PITCH_WITH_MAP_TERRAIN\\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\\n#endif\\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));float projection_transition_fade=1.0;\\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\\n#endif\\nv_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change))*projection_transition_fade;}\"),symbolSDF:ii(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_z_tile_anchor;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;\\n#ifdef PROJECTION_GLOBE_VIEW\\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\\n#endif\\nvarying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}float anchor_z=a_z_tile_anchor.x;vec2 tile_anchor=a_z_tile_anchor.yz;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(vec3(a_pos,anchor_z)+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;float globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\\n#else\\nvec3 world_pos=vec3(a_pos,anchor_z)+h;float globe_occlusion_fade=1.0;\\n#endif\\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetprojected_point=u_matrix*vec4(a_pos+vec2(1,0),anchor_z,1);vec2 a=projected_point.xy/projected_point.w;vec2 b=offsetprojected_point.xy/offsetprojected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 proj_pos=mix_globe_mercator(vec3(a_projected_pos.xy,anchor_z),mercator_pos,u_zoom_transition);\\n#else\\nvec3 proj_pos=vec3(a_projected_pos.xy,anchor_z);\\n#endif\\n#ifdef PROJECTED_POS_ON_VIEWPORT\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xy,0.0,1.0);\\n#else\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xyz+h,1.0);\\n#endif\\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset);\\n#ifdef PITCH_WITH_MAP_TERRAIN\\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\\n#endif\\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));float gamma_scale=gl_Position.w;float projection_transition_fade=1.0;\\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\\n#endif\\nvec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade);}\"),symbolTextAndIcon:ii(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_z_tile_anchor;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;\\n#ifdef PROJECTION_GLOBE_VIEW\\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\\n#endif\\nvarying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}float anchor_z=a_z_tile_anchor.x;vec2 tile_anchor=a_z_tile_anchor.yz;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(vec3(a_pos,anchor_z)+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;float globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\\n#else\\nvec3 world_pos=vec3(a_pos,anchor_z)+h;float globe_occlusion_fade=1.0;\\n#endif\\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offset_projected_point=u_matrix*vec4(a_pos+vec2(1,0),anchor_z,1);vec2 a=projected_point.xy/projected_point.w;vec2 b=offset_projected_point.xy/offset_projected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 proj_pos=mix_globe_mercator(vec3(a_projected_pos.xy,anchor_z),mercator_pos,u_zoom_transition);\\n#else\\nvec3 proj_pos=vec3(a_projected_pos.xy,anchor_z);\\n#endif\\n#ifdef PROJECTED_POS_ON_VIEWPORT\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xy,0.0,1.0);\\n#else\\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xyz+h,1.0);\\n#endif\\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*font_scale);\\n#ifdef PITCH_WITH_MAP_TERRAIN\\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\\n#endif\\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));float projection_transition_fade=1.0;\\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\\n#endif\\nv_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade,is_sdf);}\"),terrainRaster:ii(\"uniform sampler2D u_image0;varying vec2 v_pos0;\\n#ifdef FOG\\nvarying float v_fog_opacity;\\n#endif\\nvoid main() {vec4 color=texture2D(u_image0,v_pos0);\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_from_vert(color,v_fog_opacity));\\n#endif\\ngl_FragColor=color;\\n#ifdef TERRAIN_WIREFRAME\\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_skirt_height;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;\\n#ifdef FOG\\nvarying float v_fog_opacity;\\n#endif\\nconst float skirtOffset=24575.0;const float wireframeOffset=0.00015;void main() {v_pos0=a_texture_pos/8192.0;float skirt=float(a_pos.x >=skirtOffset);float elevation=elevation(a_texture_pos)-skirt*u_skirt_height;\\n#ifdef TERRAIN_WIREFRAME\\nelevation+=u_skirt_height*u_skirt_height*wireframeOffset;\\n#endif\\nvec2 decodedPos=a_pos-vec2(skirt*skirtOffset,0.0);gl_Position=u_matrix*vec4(decodedPos,elevation,1.0);\\n#ifdef FOG\\nv_fog_opacity=fog(fog_position(vec3(decodedPos,elevation)));\\n#endif\\n}\"),terrainDepth:ii(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nvarying float v_depth;void main() {gl_FragColor=pack_depth(v_depth);}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying float v_depth;void main() {float elevation=elevation(a_texture_pos);gl_Position=u_matrix*vec4(a_pos,elevation,1.0);v_depth=gl_Position.z/gl_Position.w;}\"),skybox:ii(\"\\nvarying lowp vec3 v_uv;uniform lowp samplerCube u_cubemap;uniform lowp float u_opacity;uniform highp float u_temporal_offset;uniform highp vec3 u_sun_direction;float sun_disk(highp vec3 ray_direction,highp vec3 sun_direction) {highp float cos_angle=dot(normalize(ray_direction),sun_direction);const highp float cos_sun_angular_diameter=0.99996192306;const highp float smoothstep_delta=1e-5;return smoothstep(\\ncos_sun_angular_diameter-smoothstep_delta,cos_sun_angular_diameter+smoothstep_delta,cos_angle);}float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec3 uv=v_uv;const float y_bias=0.015;uv.y+=y_bias;uv.y=pow(abs(uv.y),1.0/5.0);uv.y=map(uv.y,0.0,1.0,-1.0,1.0);vec3 sky_color=textureCube(u_cubemap,uv).rgb;\\n#ifdef FOG\\nsky_color=fog_apply_sky_gradient(v_uv.xzy,sky_color);\\n#endif\\nsky_color.rgb=dither(sky_color.rgb,gl_FragCoord.xy+u_temporal_offset);sky_color+=0.1*sun_disk(v_uv,u_sun_direction);gl_FragColor=vec4(sky_color*u_opacity,u_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",Kt),skyboxGradient:ii(\"varying highp vec3 v_uv;uniform lowp sampler2D u_color_ramp;uniform highp vec3 u_center_direction;uniform lowp float u_radius;uniform lowp float u_opacity;uniform highp float u_temporal_offset;void main() {float progress=acos(dot(normalize(v_uv),u_center_direction))/u_radius;vec4 color=texture2D(u_color_ramp,vec2(progress,0.5));\\n#ifdef FOG\\ncolor.rgb=fog_apply_sky_gradient(v_uv.xzy,color.rgb/color.a)*color.a;\\n#endif\\ncolor*=u_opacity;color.rgb=dither(color.rgb,gl_FragCoord.xy+u_temporal_offset);gl_FragColor=color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",Kt),skyboxCapture:ii(\"\\nvarying highp vec3 v_position;uniform highp float u_sun_intensity;uniform highp float u_luminance;uniform lowp vec3 u_sun_direction;uniform highp vec4 u_color_tint_r;uniform highp vec4 u_color_tint_m;\\n#ifdef GL_ES\\nprecision highp float;\\n#endif\\n#define BETA_R vec3(5.5e-6,13.0e-6,22.4e-6)\\n#define BETA_M vec3(21e-6,21e-6,21e-6)\\n#define MIE_G 0.76\\n#define DENSITY_HEIGHT_SCALE_R 8000.0\\n#define DENSITY_HEIGHT_SCALE_M 1200.0\\n#define PLANET_RADIUS 6360e3\\n#define ATMOSPHERE_RADIUS 6420e3\\n#define SAMPLE_STEPS 10\\n#define DENSITY_STEPS 4\\nfloat ray_sphere_exit(vec3 orig,vec3 dir,float radius) {float a=dot(dir,dir);float b=2.0*dot(dir,orig);float c=dot(orig,orig)-radius*radius;float d=sqrt(b*b-4.0*a*c);return (-b+d)/(2.0*a);}vec3 extinction(vec2 density) {return exp(-vec3(BETA_R*u_color_tint_r.a*density.x+BETA_M*u_color_tint_m.a*density.y));}vec2 local_density(vec3 point) {float height=max(length(point)-PLANET_RADIUS,0.0);float exp_r=exp(-height/DENSITY_HEIGHT_SCALE_R);float exp_m=exp(-height/DENSITY_HEIGHT_SCALE_M);return vec2(exp_r,exp_m);}float phase_ray(float cos_angle) {return (3.0/(16.0*PI))*(1.0+cos_angle*cos_angle);}float phase_mie(float cos_angle) {return (3.0/(8.0*PI))*((1.0-MIE_G*MIE_G)*(1.0+cos_angle*cos_angle))/((2.0+MIE_G*MIE_G)*pow(1.0+MIE_G*MIE_G-2.0*MIE_G*cos_angle,1.5));}vec2 density_to_atmosphere(vec3 point,vec3 light_dir) {float ray_len=ray_sphere_exit(point,light_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(DENSITY_STEPS);vec2 density_point_to_atmosphere=vec2(0.0);for (int i=0; i < DENSITY_STEPS;++i) {vec3 point_on_ray=point+light_dir*((float(i)+0.5)*step_len);density_point_to_atmosphere+=local_density(point_on_ray)*step_len;;}return density_point_to_atmosphere;}vec3 atmosphere(vec3 ray_dir,vec3 sun_direction,float sun_intensity) {vec2 density_orig_to_point=vec2(0.0);vec3 scatter_r=vec3(0.0);vec3 scatter_m=vec3(0.0);vec3 origin=vec3(0.0,PLANET_RADIUS,0.0);float ray_len=ray_sphere_exit(origin,ray_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(SAMPLE_STEPS);for (int i=0; i < SAMPLE_STEPS;++i) {vec3 point_on_ray=origin+ray_dir*((float(i)+0.5)*step_len);vec2 density=local_density(point_on_ray)*step_len;density_orig_to_point+=density;vec2 density_point_to_atmosphere=density_to_atmosphere(point_on_ray,sun_direction);vec2 density_orig_to_atmosphere=density_orig_to_point+density_point_to_atmosphere;vec3 extinction=extinction(density_orig_to_atmosphere);scatter_r+=density.x*extinction;scatter_m+=density.y*extinction;}float cos_angle=dot(ray_dir,sun_direction);float phase_r=phase_ray(cos_angle);float phase_m=phase_mie(cos_angle);vec3 beta_r=BETA_R*u_color_tint_r.rgb*u_color_tint_r.a;vec3 beta_m=BETA_M*u_color_tint_m.rgb*u_color_tint_m.a;return (scatter_r*phase_r*beta_r+scatter_m*phase_m*beta_m)*sun_intensity;}const float A=0.15;const float B=0.50;const float C=0.10;const float D=0.20;const float E=0.02;const float F=0.30;vec3 uncharted2_tonemap(vec3 x) {return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}void main() {vec3 ray_direction=v_position;ray_direction.y=pow(ray_direction.y,5.0);const float y_bias=0.015;ray_direction.y+=y_bias;vec3 color=atmosphere(normalize(ray_direction),u_sun_direction,u_sun_intensity);float white_scale=1.0748724675633854;color=uncharted2_tonemap((log2(2.0/pow(u_luminance,4.0)))*color)*white_scale;gl_FragColor=vec4(color,1.0);}\",\"attribute highp vec3 a_pos_3f;uniform mat3 u_matrix_3f;varying highp vec3 v_position;float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec4 pos=vec4(u_matrix_3f*a_pos_3f,1.0);v_position=pos.xyz;v_position.y*=-1.0;v_position.y=map(v_position.y,-1.0,1.0,0.0,1.0);gl_Position=vec4(a_pos_3f.xy,0.0,1.0);}\"),globeRaster:ii(\"uniform sampler2D u_image0;varying vec2 v_pos0;void main() {gl_FragColor=texture2D(u_image0,v_pos0);\\n#ifdef TERRAIN_WIREFRAME\\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_proj_matrix;uniform mat4 u_globe_matrix;uniform mat4 u_merc_matrix;uniform float u_zoom_transition;uniform vec2 u_merc_center;uniform mat3 u_grid_matrix;\\n#ifdef GLOBE_POLES\\nattribute vec3 a_globe_pos;attribute vec2 a_merc_pos;attribute vec2 a_uv;\\n#else\\nattribute vec2 a_pos;\\n#endif\\nvarying vec2 v_pos0;const float wireframeOffset=1e3;float mercatorXfromLng(float lng) {return (180.0+lng)/360.0;}float mercatorYfromLat(float lat) {return (180.0-(RAD_TO_DEG*log(tan(QUARTER_PI+lat/2.0*DEG_TO_RAD))))/360.0;}vec3 latLngToECEF(vec2 latLng) {latLng=DEG_TO_RAD*latLng;float cosLat=cos(latLng[0]);float sinLat=sin(latLng[0]);float cosLng=cos(latLng[1]);float sinLng=sin(latLng[1]);float sx=cosLat*sinLng*GLOBE_RADIUS;float sy=-sinLat*GLOBE_RADIUS;float sz=cosLat*cosLng*GLOBE_RADIUS;return vec3(sx,sy,sz);}void main() {\\n#ifdef GLOBE_POLES\\nvec3 globe_pos=a_globe_pos;vec2 merc_pos=a_merc_pos;vec2 uv=a_uv;\\n#else\\nfloat tiles=u_grid_matrix[0][2];float idy=u_grid_matrix[1][2];float S=u_grid_matrix[2][2];vec3 latLng=u_grid_matrix*vec3(a_pos,1.0);float mercatorY=mercatorYfromLat(latLng[0]);float uvY=mercatorY*tiles-idy;float mercatorX=mercatorXfromLng(latLng[1]);float uvX=a_pos[0]*S;vec3 globe_pos=latLngToECEF(latLng.xy);vec2 merc_pos=vec2(mercatorX,mercatorY);vec2 uv=vec2(uvX,uvY);\\n#endif\\nv_pos0=uv;uv=uv*EXTENT;vec4 up_vector=vec4(elevationVector(uv),1.0);float height=elevation(uv);\\n#ifdef TERRAIN_WIREFRAME\\nheight+=wireframeOffset;\\n#endif\\nvec4 globe=u_globe_matrix*vec4(globe_pos+up_vector.xyz*height,1.0);vec4 mercator=vec4(0.0);if (u_zoom_transition > 0.0) {mercator=vec4(merc_pos,height,1.0);mercator.xy-=u_merc_center;mercator.x=wrap(mercator.x,-0.5,0.5);mercator=u_merc_matrix*mercator;}vec3 position=mix(globe.xyz,mercator.xyz,u_zoom_transition);gl_Position=u_proj_matrix*vec4(position,1.0);}\"),globeAtmosphere:ii(\"uniform float u_opacity;uniform highp float u_fadeout_range;uniform vec3 u_start_color;uniform vec3 u_end_color;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;varying highp vec3 v_ray_dir;void main() {highp vec3 dir=normalize(v_ray_dir);highp vec3 closest_point=abs(dot(u_globe_pos,dir))*dir;float norm_dist_from_center=length(closest_point-u_globe_pos)/u_globe_radius;if (norm_dist_from_center < 1.0)\\ndiscard;float t=clamp(1.0-sqrt(norm_dist_from_center-1.0)/u_fadeout_range,0.0,1.0);vec3 color=mix(u_start_color,u_end_color,1.0-t);gl_FragColor=vec4(color*t*u_opacity,u_opacity);}\",\"attribute vec3 a_pos;attribute vec2 a_uv;uniform vec3 u_frustum_tl;uniform vec3 u_frustum_tr;uniform vec3 u_frustum_br;uniform vec3 u_frustum_bl;varying highp vec3 v_ray_dir;void main() {v_ray_dir=mix(mix(u_frustum_tl,u_frustum_tr,a_uv.x),mix(u_frustum_bl,u_frustum_br,a_uv.x),a_uv.y);gl_Position=vec4(a_pos,1.0);}\")};function ii(e,t,i){const o=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,r=/uniform (highp |mediump |lowp )?([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g,n=t.match(/attribute (highp |mediump |lowp )?([\\w]+) ([\\w]+)/g),a=e.match(r),s=t.match(r),l=Ht.match(r);let c=s?s.concat(a):a;i||(Yt.staticUniforms&&(c=Yt.staticUniforms.concat(c)),Jt.staticUniforms&&(c=Jt.staticUniforms.concat(c))),c&&(c=c.concat(l));const h={};return {fragmentSource:e=e.replace(o,((e,t,i,o,r)=>(h[r]=!0,\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${r}\\nvarying ${i} ${o} ${r};\\n#else\\nuniform ${i} ${o} u_${r};\\n#endif\\n`:`\\n#ifdef HAS_UNIFORM_u_${r}\\n ${i} ${o} ${r} = u_${r};\\n#endif\\n`))),vertexSource:t=t.replace(o,((e,t,i,o,r)=>{const n=\"float\"===o?\"vec2\":\"vec4\",a=r.match(/color/)?\"color\":n;return h[r]?\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${r}\\nuniform lowp float u_${r}_t;\\nattribute ${i} ${n} a_${r};\\nvarying ${i} ${o} ${r};\\n#else\\nuniform ${i} ${o} u_${r};\\n#endif\\n`:\"vec4\"===a?`\\n#ifndef HAS_UNIFORM_u_${r}\\n ${r} = a_${r};\\n#else\\n ${i} ${o} ${r} = u_${r};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${r}\\n ${r} = unpack_mix_${a}(a_${r}, u_${r}_t);\\n#else\\n ${i} ${o} ${r} = u_${r};\\n#endif\\n`:\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${r}\\nuniform lowp float u_${r}_t;\\nattribute ${i} ${n} a_${r};\\n#else\\nuniform ${i} ${o} u_${r};\\n#endif\\n`:\"vec4\"===a?`\\n#ifndef HAS_UNIFORM_u_${r}\\n ${i} ${o} ${r} = a_${r};\\n#else\\n ${i} ${o} ${r} = u_${r};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${r}\\n ${i} ${o} ${r} = unpack_mix_${a}(a_${r}, u_${r}_t);\\n#else\\n ${i} ${o} ${r} = u_${r};\\n#endif\\n`})),staticAttributes:n,staticUniforms:c}}class oi{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;}bind(e,t,i,o,r,n,a,s){this.context=e;let l=this.boundPaintVertexBuffers.length!==o.length;for(let e=0;!l&&e<o.length;e++)this.boundPaintVertexBuffers[e]!==o[e]&&(l=!0);e.extVertexArrayObject&&this.vao&&this.boundProgram===t&&this.boundLayoutVertexBuffer===i&&!l&&this.boundIndexBuffer===r&&this.boundVertexOffset===n&&this.boundDynamicVertexBuffer===a&&this.boundDynamicVertexBuffer2===s?(e.bindVertexArrayOES.set(this.vao),a&&a.bind(),r&&r.dynamicDraw&&r.bind(),s&&s.bind()):this.freshBind(t,i,o,r,n,a,s);}freshBind(e,t,i,o,r,n,a){let s;const l=e.numAttributes,c=this.context,h=c.gl;if(c.extVertexArrayObject)this.vao&&this.destroy(),this.vao=c.extVertexArrayObject.createVertexArrayOES(),c.bindVertexArrayOES.set(this.vao),s=0,this.boundProgram=e,this.boundLayoutVertexBuffer=t,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=o,this.boundVertexOffset=r,this.boundDynamicVertexBuffer=n,this.boundDynamicVertexBuffer2=a;else {s=c.currentNumAttributes||0;for(let e=l;e<s;e++)h.disableVertexAttribArray(e);}t.enableAttributes(h,e);for(const t of i)t.enableAttributes(h,e);n&&n.enableAttributes(h,e),a&&a.enableAttributes(h,e),t.bind(),t.setVertexAttribPointers(h,e,r);for(const t of i)t.bind(),t.setVertexAttribPointers(h,e,r);n&&(n.bind(),n.setVertexAttribPointers(h,e,r)),o&&o.bind(),a&&(a.bind(),a.setVertexAttribPointers(h,e,r)),c.currentNumAttributes=l;}destroy(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null);}}function ri(t,i){const o=Math.pow(2,i.canonical.z),r=i.canonical.y;return [new e.MercatorCoordinate(0,r/o).toLngLat().lat,new e.MercatorCoordinate(0,(r+1)/o).toLngLat().lat]}function ni(t,i,o,r,n,a,s){const l=t.context,c=l.gl,h=o.fbo;if(!h)return;t.prepareDrawTile();const _=t.useProgram(\"hillshade\");l.activeTexture.set(c.TEXTURE0),c.bindTexture(c.TEXTURE_2D,h.colorAttachment.get());const u=((e,t,i,o)=>{const r=i.paint.get(\"hillshade-shadow-color\"),n=i.paint.get(\"hillshade-highlight-color\"),a=i.paint.get(\"hillshade-accent-color\");let s=i.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);\"viewport\"===i.paint.get(\"hillshade-illumination-anchor\")&&(s-=e.transform.angle);const l=!e.options.moving;return {u_matrix:o||e.transform.calculateProjMatrix(t.tileID.toUnwrapped(),l),u_image:0,u_latrange:ri(0,t.tileID),u_light:[i.paint.get(\"hillshade-exaggeration\"),s],u_shadow:r,u_highlight:n,u_accent:a}})(t,o,r,t.terrain?i.projMatrix:null);t.prepareDrawProgram(l,_,i.toUnwrapped());const{tileBoundsBuffer:d,tileBoundsIndexBuffer:p,tileBoundsSegments:m}=t.getTileBoundsBuffers(o);_.draw(l,c.TRIANGLES,n,a,s,e.CullFaceMode.disabled,u,r.id,d,p,m);}function ai(t,i,o){if(!i.needsDEMTextureUpload)return;const r=t.context,n=r.gl;r.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||t.getTileTexture(o.stride);const a=o.getPixels();i.demTexture?i.demTexture.update(a,{premultiply:!1}):i.demTexture=new e.Texture(r,a,n.RGBA,{premultiply:!1}),i.needsDEMTextureUpload=!1;}function si(t,i,o,r,n,a){const s=t.context,l=s.gl;if(!i.dem)return;const c=i.dem;if(s.activeTexture.set(l.TEXTURE1),ai(t,i,c),!i.demTexture)return;i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);const h=c.dim;s.activeTexture.set(l.TEXTURE0);let _=i.fbo;if(!_){const t=new e.Texture(s,{width:h,height:h,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),_=i.fbo=s.createFramebuffer(h,h,!0),_.colorAttachment.set(t.texture);}s.bindFramebuffer.set(_.framebuffer),s.viewport.set([0,0,h,h]);const{tileBoundsBuffer:u,tileBoundsIndexBuffer:d,tileBoundsSegments:p}=t.getMercatorTileBoundsBuffers();t.useProgram(\"hillshadePrepare\").draw(s,l.TRIANGLES,r,n,a,e.CullFaceMode.disabled,((t,i)=>{const o=i.stride,r=e.create();return e.ortho(r,0,e.EXTENT,-e.EXTENT,0,0,1),e.translate(r,r,[0,-e.EXTENT,0]),{u_matrix:r,u_image:1,u_dimension:[o,o],u_zoom:t.overscaledZ,u_unpack:i.unpackVector}})(i.tileID,c),o.id,u,d,p),i.needsHillshadePrepare=!1;}const li=(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image0:new e.Uniform1i(t,i.u_image0),u_skirt_height:new e.Uniform1f(t,i.u_skirt_height)}),ci=(e,t)=>({u_matrix:e,u_image0:0,u_skirt_height:t}),hi=(e,t,i,o,r,n)=>({u_proj_matrix:Float32Array.from(e),u_globe_matrix:t,u_merc_matrix:i,u_zoom_transition:o,u_merc_center:r,u_image0:0,u_grid_matrix:n?Float32Array.from(n):new Float32Array(9)});function _i(e,t){return null!=e&&null!=t&&!(!e.hasData()||!t.hasData())&&null!=e.demTexture&&null!=t.demTexture&&e.tileID.key!==t.tileID.key}const ui=new class{constructor(){this.operations={};}newMorphing(e,t,i,o,r){if(e in this.operations){const t=this.operations[e];t.to.tileID.key!==i.tileID.key&&(t.queued=i);}else this.operations[e]={startTime:o,phase:0,duration:r,from:t,to:i,queued:null};}getMorphValuesForProxy(e){if(!(e in this.operations))return null;const t=this.operations[e];return {from:t.from,to:t.to,phase:t.phase}}update(e){for(const t in this.operations){const i=this.operations[t];for(i.phase=(e-i.startTime)/i.duration;i.phase>=1||!this._validOp(i);)if(!this._nextOp(i,e)){delete this.operations[t];break}}}_nextOp(e,t){return !!e.queued&&(e.from=e.to,e.to=e.queued,e.queued=null,e.phase=0,e.startTime=t,!0)}_validOp(e){return e.from.hasData()&&e.to.hasData()}},di={0:null,1:\"TERRAIN_VERTEX_MORPHING\",2:\"TERRAIN_WIREFRAME\"};function pi(e,t){const i=1<<e.z;return !t&&(0===e.x||e.x===i-1)||0===e.y||e.y===i-1}const mi=e=>({u_matrix:e});function fi(t,i,o,r,n){if(n>0){const a=e.exported.now(),s=(a-t.timeAdded)/n,l=i?(a-i.timeAdded)/n:-1,c=o.getSource(),h=r.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),_=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(t.tileID.overscaledZ-h),u=_&&t.refreshedUponExpiration?1:e.clamp(_?s:1-l,0,1);return t.refreshedUponExpiration&&s>=1&&(t.refreshedUponExpiration=!1),i?{opacity:1,mix:1-u}:{opacity:u,mix:0}}return {opacity:1,mix:0}}const gi=2*e.mercatorZfromAltitude(1,0)*e.GLOBE_RADIUS*Math.PI;class vi extends e.SourceCache{constructor(e){const t={type:\"raster-dem\",maxzoom:e.transform.maxZoom},i=new A(Ue(),null),o=De(\"mock-dem\",t,i,e.style);super(\"mock-dem\",o,!1),o.setEventedParent(this),this._sourceLoaded=!0;}_loadTile(e,t){e.state=\"loaded\",t(null);}}class xi extends e.SourceCache{constructor(e){const t=De(\"proxy\",{type:\"geojson\",maxzoom:e.transform.maxZoom},new A(Ue(),null),e.style);super(\"proxy\",t,!1),t.setEventedParent(this),this.map=this.getSource().map=e,this.used=this._sourceLoaded=!0,this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={};}update(t,i,o){if(t.freezeTileCoverage)return;this.transform=t;const r=t.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}).reduce(((i,o)=>{if(i[o.key]=\"\",!this._tiles[o.key]){const i=new e.Tile(o,this._source.tileSize*o.overscaleFactor(),t.tileZoom);i.state=\"loaded\",this._tiles[o.key]=i;}return i}),{});for(const e in this._tiles)e in r||(this.freeFBO(e),this._tiles[e].unloadVectorData(),delete this._tiles[e]);}freeFBO(e){const t=this.proxyCachedFBO[e];if(void 0!==t){const i=Object.values(t);this.renderCachePool.push(...i),delete this.proxyCachedFBO[e];}}deallocRenderCache(){this.renderCache.forEach((e=>e.fb.destroy())),this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={};}}class yi extends e.OverscaledTileID{constructor(e,t,i){super(e.overscaledZ,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y),this.proxyTileKey=t,this.projMatrix=i;}}class bi extends e.Elevation{constructor(t,i){super(),this.painter=t,this.terrainTileForTile={},this.prevTerrainTileForTile={};const[o,r,n]=function(t){const i=new e.StructArrayLayout4i8,o=new e.StructArrayLayout3ui6,r=131;i.reserve(17161),o.reserve(33800);const n=e.EXTENT/128,a=e.EXTENT+n/2,s=a+n;for(let t=-n;t<s;t+=n)for(let o=-n;o<s;o+=n){const r=o<0||o>a||t<0||t>a?24575:0,n=e.clamp(Math.round(o),0,e.EXTENT),s=e.clamp(Math.round(t),0,e.EXTENT);i.emplaceBack(n+r,s,n,s);}const l=(e,t)=>{const i=t*r+e;o.emplaceBack(i+1,i,i+r),o.emplaceBack(i+r,i+r+1,i+1);};for(let e=1;e<129;e++)for(let t=1;t<129;t++)l(t,e);return [0,129].forEach((e=>{for(let t=0;t<130;t++)l(t,e),l(e,t);})),[i,o,32768]}(),a=t.context;this.gridBuffer=a.createVertexBuffer(o,e.boundsAttributes.members),this.gridIndexBuffer=a.createIndexBuffer(r),this.gridSegments=e.SegmentVector.simpleSegment(0,0,o.length,r.length),this.gridNoSkirtSegments=e.SegmentVector.simpleSegment(0,0,o.length,n),this.proxyCoords=[],this.proxiedCoords={},this._visibleDemTiles=[],this._drapedRenderBatches=[],this._sourceTilesOverlap={},this.proxySourceCache=new xi(i.map),this.orthoMatrix=e.create(),e.ortho(this.orthoMatrix,0,e.EXTENT,0,e.EXTENT,0,1);const s=a.gl;this._overlapStencilMode=new e.StencilMode({func:s.GEQUAL,mask:255},0,255,s.KEEP,s.KEEP,s.REPLACE),this._previousZoom=t.transform.zoom,this.pool=[],this._findCoveringTileCache={},this._tilesDirty={},this.style=i,this._useVertexMorphing=!0,this._exaggeration=1,this._mockSourceCache=new vi(i.map);}set style(e){e.on(\"data\",this._onStyleDataEvent.bind(this)),e.on(\"neworder\",this._checkRenderCacheEfficiency.bind(this)),this._style=e,this._checkRenderCacheEfficiency();}update(t,i,o){if(t&&t.terrain){this._style!==t&&(this.style=t),this.enabled=!0;const r=t.terrain.properties;this.sourceCache=0===t.terrain.drapeRenderMode?this._mockSourceCache:t._getSourceCache(r.get(\"source\")),this._exaggeration=r.get(\"exaggeration\");const n=()=>{this.sourceCache.used&&e.warnOnce(`Raster DEM source '${this.sourceCache.id}' is used both for terrain and as layer source.\\nThis leads to lower resolution of hillshade. For full hillshade resolution but higher memory consumption, define another raster DEM source.`);const t=this.getScaledDemTileSize();this.sourceCache.update(i,t,!0),this.resetTileLookupCache(this.sourceCache.id);};this.sourceCache.usedForTerrain||(this.resetTileLookupCache(this.sourceCache.id),this.sourceCache.usedForTerrain=!0,n(),this._initializing=!0),n(),i.updateElevation(!o),this.resetTileLookupCache(this.proxySourceCache.id),this.proxySourceCache.update(i),this._emptyDEMTextureDirty=!0;}else this._disable();}resetTileLookupCache(e){this._findCoveringTileCache[e]={};}getScaledDemTileSize(){return this.sourceCache.getSource().tileSize/128*this.proxySourceCache.getSource().tileSize}_checkRenderCacheEfficiency(){const t=this.renderCacheEfficiency(this._style);this._style.map._optimizeForTerrain||100!==t.efficiency&&e.warnOnce(`Terrain render cache efficiency is not optimal (${t.efficiency}%) and performance\\n may be affected negatively, consider placing all background, fill and line layers before layer\\n with id '${t.firstUndrapedLayer}' or create a map using optimizeForTerrain: true option.`);}_onStyleDataEvent(e){e.coord&&\"source\"===e.dataType?this._clearRenderCacheForTile(e.sourceCacheId,e.coord):\"style\"===e.dataType&&(this._invalidateRenderCache=!0);}_disable(){if(this.enabled&&(this.enabled=!1,this._sharedDepthStencil=void 0,this.proxySourceCache.deallocRenderCache(),this._style))for(const e in this._style._sourceCaches)this._style._sourceCaches[e].usedForTerrain=!1;}destroy(){this._disable(),this._emptyDEMTexture&&this._emptyDEMTexture.destroy(),this._emptyDepthBufferTexture&&this._emptyDepthBufferTexture.destroy(),this.pool.forEach((e=>e.fb.destroy())),this.pool=[],this._depthFBO&&(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0);}_source(){return this.enabled?this.sourceCache:null}exaggeration(){return this._exaggeration}get visibleDemTiles(){return this._visibleDemTiles}get drapeBufferSize(){const e=2*this.proxySourceCache.getSource().tileSize;return [e,e]}set useVertexMorphing(e){this._useVertexMorphing=e;}updateTileBinding(t){if(!this.enabled)return;this.prevTerrainTileForTile=this.terrainTileForTile;const i=this.proxySourceCache,o=this.painter.transform;this._initializing&&(this._initializing=0===o._centerAltitude&&-1===this.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(o.center),-1),this._emptyDEMTextureDirty=!this._initializing);const r=this.proxyCoords=i.getIds().map((e=>{const t=i.getTileByID(e).tileID;return t.projMatrix=o.calculateProjMatrix(t.toUnwrapped()),t}));!function(t,i){const o=i.transform.pointCoordinate(i.transform.getCameraPoint()),r=new e.pointGeometry(o.x,o.y);t.sort(((t,i)=>{if(i.overscaledZ-t.overscaledZ)return i.overscaledZ-t.overscaledZ;const o=new e.pointGeometry(t.canonical.x+(1<<t.canonical.z)*t.wrap,t.canonical.y),n=new e.pointGeometry(i.canonical.x+(1<<i.canonical.z)*i.wrap,i.canonical.y),a=r.mult(1<<t.canonical.z);return a.x-=.5,a.y-=.5,a.distSqr(o)-a.distSqr(n)}));}(r,this.painter),this._previousZoom=o.zoom;const n=this.proxyToSource||{};this.proxyToSource={},r.forEach((e=>{this.proxyToSource[e.key]={};})),this.terrainTileForTile={};const a=this._style._sourceCaches;for(const e in a){const i=a[e];if(!i.used)continue;if(i!==this.sourceCache&&this.resetTileLookupCache(i.id),this._setupProxiedCoordsForOrtho(i,t[e],n),i.usedForTerrain)continue;const o=t[e];i.getSource().reparseOverscaled&&this._assignTerrainTiles(o);}this.proxiedCoords[i.id]=r.map((e=>new yi(e,e.key,this.orthoMatrix))),this._assignTerrainTiles(r),this._prepareDEMTextures(),this._setupDrapedRenderBatches(),this._initFBOPool(),this._setupRenderCache(n),this.renderingToTexture=!1,this._updateTimestamp=e.exported.now();const s={};this._visibleDemTiles=[];for(const e of this.proxyCoords){const t=this.terrainTileForTile[e.key];if(!t)continue;const i=t.tileID.key;i in s||(this._visibleDemTiles.push(t),s[i]=i);}}_assignTerrainTiles(e){this._initializing||e.forEach((e=>{if(this.terrainTileForTile[e.key])return;const t=this._findTileCoveringTileID(e,this.sourceCache);t&&(this.terrainTileForTile[e.key]=t);}));}_prepareDEMTextures(){const e=this.painter.context,t=e.gl;for(const i in this.terrainTileForTile){const o=this.terrainTileForTile[i],r=o.dem;!r||o.demTexture&&!o.needsDEMTextureUpload||(e.activeTexture.set(t.TEXTURE1),ai(this.painter,o,r));}}_prepareDemTileUniforms(e,t,i,o){if(!t||null==t.demTexture)return !1;const r=e.tileID.canonical,n=Math.pow(2,t.tileID.canonical.z-r.z),a=o||\"\";return i[`u_dem_tl${a}`]=[r.x*n%1,r.y*n%1],i[`u_dem_scale${a}`]=n,!0}get emptyDEMTexture(){return !this._emptyDEMTextureDirty&&this._emptyDEMTexture?this._emptyDEMTexture:this._updateEmptyDEMTexture()}get emptyDepthBufferTexture(){const t=this.painter.context,i=t.gl;if(!this._emptyDepthBufferTexture){const o=new e.RGBAImage({width:1,height:1},Uint8Array.of(255,255,255,255));this._emptyDepthBufferTexture=new e.Texture(t,o,i.RGBA,{premultiply:!1});}return this._emptyDepthBufferTexture}_getLoadedAreaMinimum(){let e=0;const t=this._visibleDemTiles.reduce(((t,i)=>{if(!i.dem)return t;const o=i.dem.tree.minimums[0];return o>0&&e++,t+o}),0);return e?t/e:0}_updateEmptyDEMTexture(){const t=this.painter.context,i=t.gl;t.activeTexture.set(i.TEXTURE2);const o=this._getLoadedAreaMinimum(),r=new e.RGBAImage({width:1,height:1},new Uint8Array(e.DEMData.pack(o,this.sourceCache.getSource().encoding)));this._emptyDEMTextureDirty=!1;let n=this._emptyDEMTexture;return n?n.update(r,{premultiply:!1}):n=this._emptyDEMTexture=new e.Texture(t,r,i.RGBA,{premultiply:!1}),n}setupElevationDraw(t,i,o){const r=this.painter.context,n=r.gl,a=(s=this.sourceCache.getSource().encoding,{u_dem:2,u_dem_prev:4,u_dem_unpack:e.DEMData.getUnpackVector(s),u_dem_tl:[0,0],u_dem_tl_prev:[0,0],u_dem_scale:0,u_dem_scale_prev:0,u_dem_size:0,u_dem_lerp:1,u_depth:3,u_depth_size_inv:[0,0],u_exaggeration:0,u_tile_tl_up:[0,0,1],u_tile_tr_up:[0,0,1],u_tile_br_up:[0,0,1],u_tile_bl_up:[0,0,1],u_tile_up_scale:1});var s;a.u_dem_size=this.sourceCache.getSource().tileSize,a.u_exaggeration=this.exaggeration();const l=this.painter.transform,c=l.projection,h=t.tileID.canonical;a.u_tile_tl_up=c.upVector(h,0,0),a.u_tile_tr_up=c.upVector(h,e.EXTENT,0),a.u_tile_br_up=c.upVector(h,e.EXTENT,e.EXTENT),a.u_tile_bl_up=c.upVector(h,0,e.EXTENT),a.u_tile_up_scale=o&&o.useDenormalizedUpVectorScale?gi:c.upVectorScale(h,l.center.lat,l.worldSize).metersToTile;let _=null,u=null,d=1;if(o&&o.morphing&&this._useVertexMorphing){const e=o.morphing.srcDemTile,i=o.morphing.dstDemTile;d=o.morphing.phase,e&&i&&(this._prepareDemTileUniforms(t,e,a,\"_prev\")&&(u=e),this._prepareDemTileUniforms(t,i,a)&&(_=i));}if(u&&_?(r.activeTexture.set(n.TEXTURE2),_.demTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE,n.NEAREST),r.activeTexture.set(n.TEXTURE4),u.demTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE,n.NEAREST),a.u_dem_lerp=d):(_=this.terrainTileForTile[t.tileID.key],r.activeTexture.set(n.TEXTURE2),(this._prepareDemTileUniforms(t,_,a)?_.demTexture:this.emptyDEMTexture).bind(n.NEAREST,n.CLAMP_TO_EDGE)),r.activeTexture.set(n.TEXTURE3),o&&o.useDepthForOcclusion?(this._depthTexture&&this._depthTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE),this._depthFBO&&(a.u_depth_size_inv=[1/this._depthFBO.width,1/this._depthFBO.height])):(this.emptyDepthBufferTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE),a.u_depth_size_inv=[1,1]),o&&o.useMeterToDem&&_){const t=(1<<_.tileID.canonical.z)*e.mercatorZfromAltitude(1,this.painter.transform.center.lat)*this.sourceCache.getSource().tileSize;a.u_meter_to_dem=t;}o&&o.labelPlaneMatrixInv&&(a.u_label_plane_matrix_inv=o.labelPlaneMatrixInv),i.setTerrainUniformValues(r,a);}renderToBackBuffer(t){const i=this.painter,o=this.painter.context;0!==t.length&&(o.bindFramebuffer.set(null),o.viewport.set([0,0,i.width,i.height]),this.renderingToTexture=!1,function(t,i,o,r,n){if(\"globe\"===t.transform.projection.name)!function(t,i,o,r,n){const a=t.context,s=a.gl;let l,c;const h=t.options.showTerrainWireframe?2:0,_=(e,i)=>{if(c===e)return;const o=[di[e],\"PROJECTION_GLOBE_VIEW\"];i&&o.push(di[h]),l=t.useProgram(\"globeRaster\",null,o),c=e;},u=t.colorModeForRenderPass(),d=new e.DepthMode(s.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);ui.update(n);const p=t.transform,m=e.calculateGlobeMercatorMatrix(p),f=[e.mercatorXfromLng(p.center.lng),e.mercatorYfromLat(p.center.lat)],g=t.globeSharedBuffers;if((h?[!1,!0]:[!1]).forEach((h=>{c=-1;const v=h?s.LINES:s.TRIANGLES;for(const c of r){const r=o.getTile(c),x=e.StencilMode.disabled,y=i.prevTerrainTileForTile[c.key],b=i.terrainTileForTile[c.key];_i(y,b)&&ui.newMorphing(c.key,y,b,n,250),a.activeTexture.set(s.TEXTURE0),r.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE);const w=ui.getMorphValuesForProxy(c.key),T=w?1:0,E={useDenormalizedUpVectorScale:!0};w&&e.extend$1(E,{morphing:{srcDemTile:w.from,dstDemTile:w.to,phase:e.easeCubicInOut(w.phase)}});const C=Float32Array.from(p.globeMatrix),I=e.globeTileLatLngCorners(c.canonical),M=e.getGridMatrix(c.canonical,I),S=hi(p.projMatrix,C,m,e.globeToMercatorTransition(p.zoom),f,M);if(_(T,h),i.setupElevationDraw(r,l,E),t.prepareDrawProgram(a,l,c.toUnwrapped()),g){const[i,o,r]=h?g.getWirefameBuffers(t.context):g.getGridBuffers();l.draw(a,v,d,x,u,e.CullFaceMode.backCCW,S,\"globe_raster\",i,o,r);}}})),g){l=t.useProgram(\"globeRaster\",null,[\"GLOBE_POLES\",\"PROJECTION_GLOBE_VIEW\"]);for(const n of r){const{x:r,y:c,z:h}=n.canonical,_=0===c,m=c===(1<<h)-1,[v,x,y,b]=g.getPoleBuffers(h);if(b&&(_||m)){const c=o.getTile(n);a.activeTexture.set(s.TEXTURE0),c.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE);let g=e.globePoleMatrixForTile(h,r,p);const w=(t,i)=>t.draw(a,s.TRIANGLES,d,e.StencilMode.disabled,u,e.CullFaceMode.disabled,hi(p.projMatrix,g,g,0,f),\"globe_pole_raster\",i,y,b);i.setupElevationDraw(c,l,{}),t.prepareDrawProgram(a,l,n.toUnwrapped()),_&&w(l,v),m&&(g=e.scale(e.create(),g,[1,-1,1]),w(l,x));}}}}(t,i,o,r,n);else {const a=t.context,s=a.gl;let l,c;const h=t.options.showTerrainWireframe?2:0,_=(e,i)=>{if(c===e)return;const o=[di[e]];i&&o.push(di[h]),l=t.useProgram(\"terrainRaster\",null,o),c=e;},u=t.colorModeForRenderPass(),d=new e.DepthMode(s.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);ui.update(n);const p=t.transform,m=6*Math.pow(1.5,22-p.zoom)*i.exaggeration();(h?[!1,!0]:[!1]).forEach((h=>{c=-1;const f=h?s.LINES:s.TRIANGLES,[g,v]=h?i.getWirefameBuffer():[i.gridIndexBuffer,i.gridSegments];for(const c of r){const r=o.getTile(c),x=e.StencilMode.disabled,y=i.prevTerrainTileForTile[c.key],b=i.terrainTileForTile[c.key];_i(y,b)&&ui.newMorphing(c.key,y,b,n,250),a.activeTexture.set(s.TEXTURE0),r.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE,s.LINEAR_MIPMAP_NEAREST);const w=ui.getMorphValuesForProxy(c.key),T=w?1:0;let E;w&&(E={morphing:{srcDemTile:w.from,dstDemTile:w.to,phase:e.easeCubicInOut(w.phase)}});const C=ci(c.projMatrix,pi(c.canonical,p.renderWorldCopies)?m/10:m);_(T,h),i.setupElevationDraw(r,l,E),t.prepareDrawProgram(a,l,c.toUnwrapped()),l.draw(a,f,d,x,u,e.CullFaceMode.backCCW,C,\"terrain_raster\",i.gridBuffer,g,v);}}));}}(i,this,this.proxySourceCache,t,this._updateTimestamp),this.renderingToTexture=!0,t.splice(0,t.length));}renderBatch(t){if(0===this._drapedRenderBatches.length)return t+1;this.renderingToTexture=!0;const i=this.painter,o=this.painter.context,r=this.proxySourceCache,n=this.proxiedCoords[r.id],a=this._drapedRenderBatches.shift(),s=[],l=i.style.order;let c=0;for(const h of n){const n=r.getTileByID(h.proxyTileKey),_=r.proxyCachedFBO[h.key]?r.proxyCachedFBO[h.key][t]:void 0,u=void 0!==_?r.renderCache[_]:this.pool[c++],d=void 0!==_;if(n.texture=u.tex,d&&!u.dirty){s.push(n.tileID);continue}let p;o.bindFramebuffer.set(u.fb.framebuffer),this.renderedToTile=!1,u.dirty&&(o.clear({color:e.Color.transparent,stencil:0}),u.dirty=!1);for(let e=a.start;e<=a.end;++e){const t=i.style._layers[l[e]];if(t.isHidden(i.transform.zoom))continue;const r=i.style._getLayerSourceCache(t),n=r?this.proxyToSource[h.key][r.id]:[h];if(!n)continue;const a=n;o.viewport.set([0,0,u.fb.width,u.fb.height]),p!==(r?r.id:null)&&(this._setupStencil(u,n,t,r),p=r?r.id:null),i.renderLayer(i,r,t,a);}this.renderedToTile?(u.dirty=!0,s.push(n.tileID)):d||--c,5===c&&(c=0,this.renderToBackBuffer(s));}return this.renderToBackBuffer(s),this.renderingToTexture=!1,o.bindFramebuffer.set(null),o.viewport.set([0,0,i.width,i.height]),a.end+1}postRender(){}renderCacheEfficiency(e){const t=e.order.length;if(0===t)return {efficiency:100};let i,o=0,r=0,n=!1;for(let a=0;a<t;++a){const t=e._layers[e.order[a]];this._style.isLayerDraped(t)?(n&&++o,++r):n||(n=!0,i=t.id);}return 0===r?{efficiency:100}:{efficiency:100*(1-o/r),firstUndrapedLayer:i}}getMinElevationBelowMSL(){let e=0;return this._visibleDemTiles.filter((e=>e.dem)).forEach((t=>{e=Math.min(e,t.dem.tree.minimums[0]);})),0===e?e:(e-30)*this._exaggeration}raycast(e,t,i){if(!this._visibleDemTiles)return null;const o=this._visibleDemTiles.filter((e=>e.dem)).map((o=>{const r=o.tileID,n=Math.pow(2,r.overscaledZ),{x:a,y:s}=r.canonical,l=a/n,c=(a+1)/n,h=s/n,_=(s+1)/n;return {minx:l,miny:h,maxx:c,maxy:_,t:o.dem.tree.raycastRoot(l,h,c,_,e,t,i),tile:o}}));o.sort(((e,t)=>(null!==e.t?e.t:Number.MAX_VALUE)-(null!==t.t?t.t:Number.MAX_VALUE)));for(const r of o){if(null==r.t)return null;const o=r.tile.dem.tree.raycast(r.minx,r.miny,r.maxx,r.maxy,e,t,i);if(null!=o)return o}return null}_createFBO(){const t=this.painter.context,i=t.gl,o=this.drapeBufferSize;t.activeTexture.set(i.TEXTURE0);const r=new e.Texture(t,{width:o[0],height:o[1],data:null},i.RGBA);r.bind(i.LINEAR,i.CLAMP_TO_EDGE);const n=t.createFramebuffer(o[0],o[1],!1);return n.colorAttachment.set(r.texture),n.depthAttachment=new we(t,n.framebuffer),void 0===this._sharedDepthStencil?(this._sharedDepthStencil=t.createRenderbuffer(t.gl.DEPTH_STENCIL,o[0],o[1]),this._stencilRef=0,n.depthAttachment.set(this._sharedDepthStencil),t.clear({stencil:0})):n.depthAttachment.set(this._sharedDepthStencil),t.extTextureFilterAnisotropic&&!t.extTextureFilterAnisotropicForceOff&&i.texParameterf(i.TEXTURE_2D,t.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.extTextureFilterAnisotropicMax),{fb:n,tex:r,dirty:!1}}_initFBOPool(){for(;this.pool.length<Math.min(5,this.proxyCoords.length);)this.pool.push(this._createFBO());}_shouldDisableRenderCache(){if(this._style.light&&this._style.light.hasTransition())return !0;for(const e in this._style._sourceCaches)if(this._style._sourceCaches[e].hasTransition())return !0;return this._style.order.some((e=>{const t=this._style._layers[e],i=t.isHidden(this.painter.transform.zoom),o=t.getCrossfadeParameters(),r=!!o&&1!==o.t,n=t.hasTransition();return \"custom\"!==t.type&&!i&&(r||n)}))}_clearRasterFadeFromRenderCache(){let e=!1;for(const t in this._style._sourceCaches)if(this._style._sourceCaches[t]._source instanceof Ce){e=!0;break}if(e)for(let e=0;e<this._style.order.length;++e){const t=this._style._layers[this._style.order[e]],i=t.isHidden(this.painter.transform.zoom),o=this._style._getLayerSourceCache(t);if(\"raster\"!==t.type||i||!o)continue;const r=t.paint.get(\"raster-fade-duration\");for(const e of this.proxyCoords){const t=this.proxyToSource[e.key][o.id];if(t)for(const e of t){const t=fi(o.getTile(e),o.findLoadedParent(e,0),o,this.painter.transform,r);(1!==t.opacity||0!==t.mix)&&this._clearRenderCacheForTile(o.id,e);}}}}_setupDrapedRenderBatches(){const e=this._style.order,t=e.length;if(0===t)return;const i=[];let o,r=0,n=this._style._layers[e[r]];for(;!this._style.isLayerDraped(n)&&n.isHidden(this.painter.transform.zoom)&&++r<t;)n=this._style._layers[e[r]];for(;r<t;++r){const t=this._style._layers[e[r]];t.isHidden(this.painter.transform.zoom)||(this._style.isLayerDraped(t)?void 0===o&&(o=r):void 0!==o&&(i.push({start:o,end:r-1}),o=void 0));}void 0!==o&&i.push({start:o,end:r-1}),this._drapedRenderBatches=i;}_setupRenderCache(e){const t=this.proxySourceCache;if(this._shouldDisableRenderCache()||this._invalidateRenderCache){if(this._invalidateRenderCache=!1,t.renderCache.length>t.renderCachePool.length){const e=Object.values(t.proxyCachedFBO);t.proxyCachedFBO={};for(let i=0;i<e.length;++i){const o=Object.values(e[i]);t.renderCachePool.push(...o);}}return}this._clearRasterFadeFromRenderCache();const i=this.proxyCoords,o=this._tilesDirty;for(let r=i.length-1;r>=0;r--){const n=i[r];if(t.getTileByID(n.key),void 0!==t.proxyCachedFBO[n.key]){const i=e[n.key],r=this.proxyToSource[n.key];let a=0;for(const e in r){const t=r[e],n=i[e];if(!n||n.length!==t.length||t.some(((t,i)=>t!==n[i]||o[e]&&o[e].hasOwnProperty(t.key)))){a=-1;break}++a;}for(const e in t.proxyCachedFBO[n.key])t.renderCache[t.proxyCachedFBO[n.key][e]].dirty=a<0||a!==Object.values(i).length;}}const r=[...this._drapedRenderBatches];r.sort(((e,t)=>t.end-t.start-(e.end-e.start)));for(const e of r)for(const o of i){if(t.proxyCachedFBO[o.key])continue;let i=t.renderCachePool.pop();void 0===i&&t.renderCache.length<50&&(i=t.renderCache.length,t.renderCache.push(this._createFBO())),void 0!==i&&(t.proxyCachedFBO[o.key]={},t.proxyCachedFBO[o.key][e.start]=i,t.renderCache[i].dirty=!0);}this._tilesDirty={};}_setupStencil(e,t,i,o){if(!o||!this._sourceTilesOverlap[o.id])return void(this._overlapStencilType&&(this._overlapStencilType=!1));const r=this.painter.context,n=r.gl;if(t.length<=1)return void(this._overlapStencilType=!1);let a;if(i.isTileClipped())a=t.length,this._overlapStencilMode.test={func:n.EQUAL,mask:255},this._overlapStencilType=\"Clip\";else {if(!(t[0].overscaledZ>t[t.length-1].overscaledZ))return void(this._overlapStencilType=!1);a=1,this._overlapStencilMode.test={func:n.GREATER,mask:255},this._overlapStencilType=\"Mask\";}this._stencilRef+a>255&&(r.clear({stencil:0}),this._stencilRef=0),this._stencilRef+=a,this._overlapStencilMode.ref=this._stencilRef,i.isTileClipped()&&this._renderTileClippingMasks(t,this._overlapStencilMode.ref);}clipOrMaskOverlapStencilType(){return \"Clip\"===this._overlapStencilType||\"Mask\"===this._overlapStencilType}stencilModeForRTTOverlap(t){return this.renderingToTexture&&this._overlapStencilType?(\"Clip\"===this._overlapStencilType&&(this._overlapStencilMode.ref=this.painter._tileClippingMaskIDs.get(t.key)||0),this._overlapStencilMode):e.StencilMode.disabled}_renderTileClippingMasks(t,i){const o=this.painter,r=this.painter.context,n=r.gl;o._tileClippingMaskIDs.clear(),r.setColorMode(e.ColorMode.disabled),r.setDepthMode(e.DepthMode.disabled);const a=o.useProgram(\"clippingMask\");for(const s of t){const t=--i;o._tileClippingMaskIDs.set(s.key,t),a.draw(r,n.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:n.ALWAYS,mask:0},t,255,n.KEEP,n.KEEP,n.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,mi(s.projMatrix),\"$clipping\",o.tileExtentBuffer,o.quadTriangleIndexBuffer,o.tileExtentSegments);}}pointCoordinate(t){const i=this.painter.transform;if(t.x<0||t.x>i.width||t.y<0||t.y>i.height)return null;const o=[t.x,t.y,1,1];e.transformMat4$1(o,o,i.pixelMatrixInverse),e.scale$1(o,o,1/o[3]),o[0]/=i.worldSize,o[1]/=i.worldSize;const r=i._camera.position,n=e.mercatorZfromAltitude(1,i.center.lat),a=[r[0],r[1],r[2]/n,0],s=e.subtract([],o.slice(0,3),a);e.normalize(s,s);const l=this.raycast(a,s,this._exaggeration);return null!==l&&l?(e.scaleAndAdd(a,a,s,l),a[3]=a[2],a[2]*=n,a):null}drawDepth(){const t=this.painter,i=t.context,o=this.proxySourceCache,r=Math.ceil(t.width),n=Math.ceil(t.height);if(!this._depthFBO||this._depthFBO.width===r&&this._depthFBO.height===n||(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0),!this._depthFBO){const t=i.gl,o=i.createFramebuffer(r,n,!0);i.activeTexture.set(t.TEXTURE0);const a=new e.Texture(i,{width:r,height:n,data:null},t.RGBA);a.bind(t.NEAREST,t.CLAMP_TO_EDGE),o.colorAttachment.set(a.texture);const s=i.createRenderbuffer(i.gl.DEPTH_COMPONENT16,r,n);o.depthAttachment.set(s),this._depthFBO=o,this._depthTexture=a;}i.bindFramebuffer.set(this._depthFBO.framebuffer),i.viewport.set([0,0,r,n]),function(t,i,o,r){if(\"globe\"===t.transform.projection.name)return;const n=t.context,a=n.gl;n.clear({depth:1});const s=t.useProgram(\"terrainDepth\"),l=new e.DepthMode(a.LESS,e.DepthMode.ReadWrite,t.depthRangeFor3D);for(const t of r){const r=o.getTile(t),c=ci(t.projMatrix,0);i.setupElevationDraw(r,s),s.draw(n,a.TRIANGLES,l,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.backCCW,c,\"terrain_depth\",i.gridBuffer,i.gridIndexBuffer,i.gridNoSkirtSegments);}}(t,this,o,this.proxyCoords);}_setupProxiedCoordsForOrtho(e,t,i){if(e.getSource()instanceof Se)return this._setupProxiedCoordsForImageSource(e,t,i);this._findCoveringTileCache[e.id]=this._findCoveringTileCache[e.id]||{};const o=this.proxiedCoords[e.id]=[],r=this.proxyCoords;for(let t=0;t<r.length;t++){const n=r[t],a=this._findTileCoveringTileID(n,e);if(a){const t=this._createProxiedId(n,a,i[n.key]&&i[n.key][e.id]);o.push(t),this.proxyToSource[n.key][e.id]=[t];}}let n=!1;for(let r=0;r<t.length;r++){const a=e.getTile(t[r]);if(!a||!a.hasData())continue;const s=this._findTileCoveringTileID(a.tileID,this.proxySourceCache);if(s&&s.tileID.canonical.z!==a.tileID.canonical.z){const t=this.proxyToSource[s.tileID.key][e.id],r=this._createProxiedId(s.tileID,a,i[s.tileID.key]&&i[s.tileID.key][e.id]);t?t.splice(t.length-1,0,r):this.proxyToSource[s.tileID.key][e.id]=[r],o.push(r),n=!0;}}this._sourceTilesOverlap[e.id]=n;}_setupProxiedCoordsForImageSource(t,i,o){if(!t.getSource().loaded())return;const r=this.proxiedCoords[t.id]=[],n=this.proxyCoords,a=t.getSource(),s=new e.pointGeometry(a.tileID.x,a.tileID.y)._div(1<<a.tileID.z),l=a.coordinates.map(e.MercatorCoordinate.fromLngLat).reduce(((e,t)=>(e.min.x=Math.min(e.min.x,t.x-s.x),e.min.y=Math.min(e.min.y,t.y-s.y),e.max.x=Math.max(e.max.x,t.x-s.x),e.max.y=Math.max(e.max.y,t.y-s.y),e)),{min:new e.pointGeometry(Number.MAX_VALUE,Number.MAX_VALUE),max:new e.pointGeometry(-Number.MAX_VALUE,-Number.MAX_VALUE)}),c=(t,i)=>{const o=t.wrap+t.canonical.x/(1<<t.canonical.z),r=t.canonical.y/(1<<t.canonical.z),n=e.EXTENT/(1<<t.canonical.z),a=i.wrap+i.canonical.x/(1<<i.canonical.z),s=i.canonical.y/(1<<i.canonical.z);return o+n<a+l.min.x||o>a+l.max.x||r+n<s+l.min.y||r>s+l.max.y};for(let e=0;e<n.length;e++){const a=n[e];for(let e=0;e<i.length;e++){const n=t.getTile(i[e]);if(!n||!n.hasData())continue;if(c(a,n.tileID))continue;const s=this._createProxiedId(a,n,o[a.key]&&o[a.key][t.id]),l=this.proxyToSource[a.key][t.id];l?l.push(s):this.proxyToSource[a.key][t.id]=[s],r.push(s);}}}_createProxiedId(t,i,o){let r=this.orthoMatrix;if(o){const e=o.find((e=>e.key===i.tileID.key));if(e)return e}if(i.tileID.key!==t.key){const o=t.canonical.z-i.tileID.canonical.z;let n,a,s;r=e.create();const l=i.tileID.wrap-t.wrap<<t.overscaledZ;o>0?(n=e.EXTENT>>o,a=n*((i.tileID.canonical.x<<o)-t.canonical.x+l),s=n*((i.tileID.canonical.y<<o)-t.canonical.y)):(n=e.EXTENT<<-o,a=e.EXTENT*(i.tileID.canonical.x-(t.canonical.x+l<<-o)),s=e.EXTENT*(i.tileID.canonical.y-(t.canonical.y<<-o))),e.ortho(r,0,n,0,n,0,1),e.translate(r,r,[a,s,0]);}return new yi(i.tileID,t.key,r)}_findTileCoveringTileID(t,i){let o=i.getTile(t);if(o&&o.hasData())return o;const r=this._findCoveringTileCache[i.id],n=r[t.key];if(o=n?i.getTileByID(n):null,o&&o.hasData()||null===n)return o;let a=o?o.tileID:t,s=a.overscaledZ;const l=i.getSource().minzoom,c=[];if(!n){const r=i.getSource().maxzoom;if(t.canonical.z>=r){const o=t.canonical.z-r;i.getSource().reparseOverscaled?(s=Math.max(t.canonical.z+2,i.transform.tileZoom),a=new e.OverscaledTileID(s,t.wrap,r,t.canonical.x>>o,t.canonical.y>>o)):0!==o&&(s=r,a=new e.OverscaledTileID(s,t.wrap,r,t.canonical.x>>o,t.canonical.y>>o));}a.key!==t.key&&(c.push(a.key),o=i.getTile(a));}const h=e=>{c.forEach((t=>{r[t]=e;})),c.length=0;};for(s-=1;s>=l&&(!o||!o.hasData());s--){o&&h(o.tileID.key);const e=a.calculateScaledKey(s);if(o=i.getTileByID(e),o&&o.hasData())break;const t=r[e];if(null===t)break;void 0===t?c.push(e):o=i.getTileByID(t);}return h(o?o.tileID.key:null),o&&o.hasData()?o:null}findDEMTileFor(e){return this.enabled?this._findTileCoveringTileID(e,this.sourceCache):null}prepareDrawTile(){this.renderedToTile=!0;}_clearRenderCacheForTile(e,t){let i=this._tilesDirty[e];i||(i=this._tilesDirty[e]={}),i[t.key]=!0;}getWirefameBuffer(){if(!this.wireframeSegments){const t=function(t){let i=0;const o=new e.StructArrayLayout2ui4,r=131;for(let e=1;e<129;e++){for(let t=1;t<129;t++)i=e*r+t,o.emplaceBack(i,i+1),o.emplaceBack(i,i+r),o.emplaceBack(i+1,i+r),128===e&&o.emplaceBack(i+r,i+r+1);o.emplaceBack(i+1,i+1+r);}return o}();this.wireframeIndexBuffer=this.painter.context.createIndexBuffer(t),this.wireframeSegments=e.SegmentVector.simpleSegment(0,0,this.gridBuffer.length,t.length);}return [this.wireframeIndexBuffer,this.wireframeSegments]}}function wi(e){const t=[];for(let i=0;i<e.length;i++){if(null===e[i])continue;const o=e[i].split(\" \");t.push(o.pop());}return t}class Ti{static cacheKey(e,t,i){let o=`${e}${i?i.cacheKey:\"\"}`;for(const e of t)o+=`/${e}`;return o}constructor(t,i,o,r,n,a){const s=t.gl;this.program=s.createProgram();const l=wi(o.staticAttributes),c=r?r.getBinderAttributes():[],h=l.concat(c),_=o.staticUniforms?wi(o.staticUniforms):[],u=r?r.getBinderUniforms():[],d=_.concat(u),p=[];for(const e of d)p.indexOf(e)<0&&p.push(e);let m=r?r.defines():[];m=m.concat(a.map((e=>`#define ${e}`)));const f=m.concat(\"\\n#ifdef GL_ES\\nprecision mediump float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\",ei,Qt.fragmentSource,Jt.fragmentSource,o.fragmentSource).join(\"\\n\"),g=m.concat(\"\\n#ifdef GL_ES\\nprecision highp float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\",ei,Qt.vertexSource,Jt.vertexSource,Yt.vertexSource,o.vertexSource).join(\"\\n\"),v=s.createShader(s.FRAGMENT_SHADER);if(s.isContextLost())return void(this.failedToCreate=!0);s.shaderSource(v,f),s.compileShader(v),s.attachShader(this.program,v);const x=s.createShader(s.VERTEX_SHADER);if(s.isContextLost())return void(this.failedToCreate=!0);s.shaderSource(x,g),s.compileShader(x),s.attachShader(this.program,x),this.attributes={};const y={};this.numAttributes=h.length;for(let e=0;e<this.numAttributes;e++)h[e]&&(s.bindAttribLocation(this.program,e,h[e]),this.attributes[h[e]]=e);s.linkProgram(this.program),s.deleteShader(x),s.deleteShader(v);for(let e=0;e<p.length;e++){const t=p[e];if(t&&!y[t]){const e=s.getUniformLocation(this.program,t);e&&(y[t]=e);}}this.fixedUniforms=n(t,y),this.binderUniforms=r?r.getUniforms(t,y):[],-1!==a.indexOf(\"TERRAIN\")&&(this.terrainUniforms=((t,i)=>({u_dem:new e.Uniform1i(t,i.u_dem),u_dem_prev:new e.Uniform1i(t,i.u_dem_prev),u_dem_unpack:new e.Uniform4f(t,i.u_dem_unpack),u_dem_tl:new e.Uniform2f(t,i.u_dem_tl),u_dem_scale:new e.Uniform1f(t,i.u_dem_scale),u_dem_tl_prev:new e.Uniform2f(t,i.u_dem_tl_prev),u_dem_scale_prev:new e.Uniform1f(t,i.u_dem_scale_prev),u_dem_size:new e.Uniform1f(t,i.u_dem_size),u_dem_lerp:new e.Uniform1f(t,i.u_dem_lerp),u_exaggeration:new e.Uniform1f(t,i.u_exaggeration),u_depth:new e.Uniform1i(t,i.u_depth),u_depth_size_inv:new e.Uniform2f(t,i.u_depth_size_inv),u_meter_to_dem:new e.Uniform1f(t,i.u_meter_to_dem),u_label_plane_matrix_inv:new e.UniformMatrix4f(t,i.u_label_plane_matrix_inv),u_tile_tl_up:new e.Uniform3f(t,i.u_tile_tl_up),u_tile_tr_up:new e.Uniform3f(t,i.u_tile_tr_up),u_tile_br_up:new e.Uniform3f(t,i.u_tile_br_up),u_tile_bl_up:new e.Uniform3f(t,i.u_tile_bl_up),u_tile_up_scale:new e.Uniform1f(t,i.u_tile_up_scale)}))(t,y)),-1!==a.indexOf(\"FOG\")&&(this.fogUniforms=((t,i)=>({u_fog_matrix:new e.UniformMatrix4f(t,i.u_fog_matrix),u_fog_range:new e.Uniform2f(t,i.u_fog_range),u_fog_color:new e.Uniform4f(t,i.u_fog_color),u_fog_horizon_blend:new e.Uniform1f(t,i.u_fog_horizon_blend),u_fog_temporal_offset:new e.Uniform1f(t,i.u_fog_temporal_offset)}))(t,y));}setTerrainUniformValues(e,t){if(!this.terrainUniforms)return;const i=this.terrainUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e].set(t[e]);}}setFogUniformValues(e,t){if(!this.fogUniforms)return;const i=this.fogUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e].location&&i[e].set(t[e]);}}draw(e,t,i,o,r,n,a,s,l,c,h,_,u,d,p,m){const f=e.gl;if(this.failedToCreate)return;e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(o),e.setColorMode(r),e.setCullFace(n);for(const e of Object.keys(this.fixedUniforms))this.fixedUniforms[e].set(a[e]);d&&d.setUniforms(e,this.binderUniforms,_,{zoom:u});const g={[f.LINES]:2,[f.TRIANGLES]:3,[f.LINE_STRIP]:1}[t];for(const i of h.get()){const o=i.vaos||(i.vaos={});(o[s]||(o[s]=new oi)).bind(e,this,l,d?d.getPaintVertexBuffers():[],c,i.vertexOffset,p,m),f.drawElements(t,i.primitiveLength*g,f.UNSIGNED_SHORT,i.primitiveOffset*g*2);}}}function Ei(e,t,i){const o=1/L(i,1,t.transform.tileZoom),r=Math.pow(2,i.tileID.overscaledZ),n=i.tileSize*Math.pow(2,t.transform.tileZoom)/r,a=n*(i.tileID.canonical.x+i.tileID.wrap*r),s=n*i.tileID.canonical.y;return {u_image:0,u_texsize:i.imageAtlasTexture.size,u_scale:[o,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[a>>16,s>>16],u_pixel_coord_lower:[65535&a,65535&s]}}const Ci=e.create(),Ii=(t,i,o,r,n,a,s,l,c)=>{const h=i.style.light,_=h.properties.get(\"position\"),u=[_.x,_.y,_.z],d=e.create$1();\"viewport\"===h.properties.get(\"anchor\")&&(e.fromRotation(d,-i.transform.angle),e.transformMat3(u,u,d));const p=h.properties.get(\"color\"),m=i.transform,f={u_matrix:t,u_lightpos:u,u_lightintensity:h.properties.get(\"intensity\"),u_lightcolor:[p.r,p.g,p.b],u_vertical_gradient:+o,u_opacity:r,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:Ci,u_merc_center:[0,0],u_up_dir:[0,0,0],u_height_lift:0};return \"globe\"===m.projection.name&&(f.u_tile_id=[n.canonical.x,n.canonical.y,1<<n.canonical.z],f.u_zoom_transition=s,f.u_inv_rot_matrix=c,f.u_merc_center=l,f.u_up_dir=m.projection.upVector(new e.CanonicalTileID(0,0,0),l[0]*e.EXTENT,l[1]*e.EXTENT),f.u_height_lift=a),f},Mi=(t,i,o,r,n,a,s,l,c,h,_)=>{const u=Ii(t,i,o,r,n,l,c,h,_),d={u_height_factor:-Math.pow(2,n.overscaledZ)/s.tileSize/8};return e.extend(u,Ei(a,i,s),d)},Si=e=>({u_matrix:e}),zi=(t,i,o,r)=>e.extend(Si(t),Ei(o,i,r)),Di=(e,t)=>({u_matrix:e,u_world:t}),Pi=(t,i,o,r,n)=>e.extend(zi(t,i,o,r),{u_world:n}),Ai=e.create(),Li=(t,i,o,r,n,a)=>{const s=t.transform,l=\"globe\"===s.projection.name;let c;if(\"map\"===a.paint.get(\"circle-pitch-alignment\"))if(l){const t=e.globePixelsToTileUnits(s.zoom,i.canonical);c=Float32Array.from([t,0,0,t]);}else c=s.calculatePixelsToTileUnitsMatrix(o);else c=new Float32Array([s.pixelsToGLUnits[0],0,0,s.pixelsToGLUnits[1]]);const h={u_camera_to_center_distance:s.cameraToCenterDistance,u_matrix:t.translatePosMatrix(i.projMatrix,o,a.paint.get(\"circle-translate\"),a.paint.get(\"circle-translate-anchor\")),u_device_pixel_ratio:e.exported.devicePixelRatio,u_extrude_scale:c,u_inv_rot_matrix:Ai,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};return l&&(h.u_inv_rot_matrix=r,h.u_merc_center=n,h.u_tile_id=[i.canonical.x,i.canonical.y,1<<i.canonical.z],h.u_zoom_transition=e.globeToMercatorTransition(s.zoom),h.u_up_dir=s.projection.upVector(i.canonical,n[0],n[1])),h},Ri=e=>{const t=[];return \"map\"===e.paint.get(\"circle-pitch-alignment\")&&t.push(\"PITCH_WITH_MAP\"),\"map\"===e.paint.get(\"circle-pitch-scale\")&&t.push(\"SCALE_WITH_MAP\"),t},ki=(t,i,o)=>{const r=e.EXTENT/o.tileSize;return {u_matrix:t,u_camera_to_center_distance:i.cameraToCenterDistance,u_extrude_scale:[i.pixelsToGLUnits[0]/r,i.pixelsToGLUnits[1]/r]}},Oi=(e,t,i=1)=>({u_matrix:e,u_color:t,u_overlay:0,u_overlay_scale:i}),Bi=e.create(),Fi=(t,i,o,r,n,a,s)=>{const l=t.transform,c=\"globe\"===l.projection.name,h=c?e.globePixelsToTileUnits(l.zoom,i.canonical):L(o,1,a),_={u_matrix:i.projMatrix,u_extrude_scale:h,u_intensity:s,u_inv_rot_matrix:Bi,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};return c&&(_.u_inv_rot_matrix=r,_.u_merc_center=n,_.u_tile_id=[i.canonical.x,i.canonical.y,1<<i.canonical.z],_.u_zoom_transition=e.globeToMercatorTransition(l.zoom),_.u_up_dir=l.projection.upVector(i.canonical,n[0],n[1])),_},Ui=(e,t,i,o,r,n,a)=>{const s=e.transform,l=s.calculatePixelsToTileUnitsMatrix(t),c={u_matrix:ji(e,t,i,r),u_pixels_to_tile_units:l,u_device_pixel_ratio:a,u_units_to_pixels:[1/s.pixelsToGLUnits[0],1/s.pixelsToGLUnits[1]],u_dash_image:0,u_gradient_image:1,u_image_height:n,u_texsize:[0,0],u_scale:[0,0,0],u_mix:0,u_alpha_discard_threshold:0};if(Zi(i)){const i=Gi(t,e.transform);c.u_texsize=t.lineAtlasTexture.size,c.u_scale=[i,o.fromScale,o.toScale],c.u_mix=o.t;}return c},Ni=(e,t,i,o,r,n)=>{const a=e.transform,s=Gi(t,a);return {u_matrix:ji(e,t,i,r),u_texsize:t.imageAtlasTexture.size,u_pixels_to_tile_units:a.calculatePixelsToTileUnitsMatrix(t),u_device_pixel_ratio:n,u_image:0,u_scale:[s,o.fromScale,o.toScale],u_fade:o.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]],u_alpha_discard_threshold:0}};function Gi(e,t){return 1/L(e,1,t.tileZoom)}function ji(e,t,i,o){return e.translatePosMatrix(o||t.tileID.projMatrix,t,i.paint.get(\"line-translate\"),i.paint.get(\"line-translate-anchor\"))}function Zi(e){const t=e.paint.get(\"line-dasharray\").value;return t.value||\"constant\"!==t.kind}const Vi=(e,t,i,o,r,n)=>{return {u_matrix:e,u_tl_parent:t,u_scale_parent:i,u_fade_t:o.mix,u_opacity:o.opacity*r.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:r.paint.get(\"raster-brightness-min\"),u_brightness_high:r.paint.get(\"raster-brightness-max\"),u_saturation_factor:(s=r.paint.get(\"raster-saturation\"),s>0?1-1/(1.001-s):-s),u_contrast_factor:(a=r.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Wi(r.paint.get(\"raster-hue-rotate\")),u_perspective_transform:n};var a,s;};function Wi(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return [(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const qi=e.create(),Xi=(t,i,o,r,n,a,s,l,c,h,_,u,d,p)=>{const m=n.transform,f={u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:i?i.uSizeT:0,u_size:i?i.uSize:0,u_camera_to_center_distance:m.cameraToCenterDistance,u_rotate_symbol:+o,u_aspect_ratio:m.width/m.height,u_fade_change:n.options.fadeDuration?n.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:s,u_coord_matrix:l,u_is_text:+c,u_pitch_with_map:+r,u_texsize:h,u_texture:0,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:qi,u_merc_center:[0,0],u_camera_forward:[0,0,0],u_ecef_origin:[0,0,0],u_tile_matrix:qi};return \"globe\"===m.projection.name&&(f.u_tile_id=[_.canonical.x,_.canonical.y,1<<_.canonical.z],f.u_zoom_transition=u,f.u_inv_rot_matrix=p,f.u_merc_center=d,f.u_camera_forward=m._camera.forward(),f.u_ecef_origin=e.globeECEFOrigin(m.globeMatrix,_.toUnwrapped()),f.u_tile_matrix=Float32Array.from(m.globeMatrix)),f},$i=(t,i,o,r,n,a,s,l,c,h,_,u,d,p,m)=>{const{cameraToCenterDistance:f,_pitch:g}=n.transform;return e.extend(Xi(t,i,o,r,n,a,s,l,c,h,u,d,p,m),{u_gamma_scale:r?f*Math.cos(n.terrain?0:g):1,u_device_pixel_ratio:e.exported.devicePixelRatio,u_is_halo:+_})},Hi=(t,i,o,r,n,a,s,l,c,h,_,u,d,p)=>e.extend($i(t,i,o,r,n,a,s,l,!0,c,!0,_,u,d,p),{u_texsize_icon:h,u_texture_icon:1}),Ki=(e,t,i)=>({u_matrix:e,u_opacity:t,u_color:i}),Yi=(t,i,o,r,n,a)=>e.extend(function(e,t,i,o){const r=i.imageManager.getPattern(e.from.toString()),n=i.imageManager.getPattern(e.to.toString()),{width:a,height:s}=i.imageManager.getPixelSize(),l=Math.pow(2,o.tileID.overscaledZ),c=o.tileSize*Math.pow(2,i.transform.tileZoom)/l,h=c*(o.tileID.canonical.x+o.tileID.wrap*l),_=c*o.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:n.tl,u_pattern_br_b:n.br,u_texsize:[a,s],u_mix:t.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:n.displaySize,u_scale_a:t.fromScale,u_scale_b:t.toScale,u_tile_units_to_pixels:1/L(o,1,i.transform.tileZoom),u_pixel_coord_upper:[h>>16,_>>16],u_pixel_coord_lower:[65535&h,65535&_]}}(r,a,o,n),{u_matrix:t,u_opacity:i}),Ji={fillExtrusion:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_lightpos:new e.Uniform3f(t,i.u_lightpos),u_lightintensity:new e.Uniform1f(t,i.u_lightintensity),u_lightcolor:new e.Uniform3f(t,i.u_lightcolor),u_vertical_gradient:new e.Uniform1f(t,i.u_vertical_gradient),u_opacity:new e.Uniform1f(t,i.u_opacity),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_up_dir:new e.Uniform3f(t,i.u_up_dir),u_height_lift:new e.Uniform1f(t,i.u_height_lift)}),fillExtrusionPattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_lightpos:new e.Uniform3f(t,i.u_lightpos),u_lightintensity:new e.Uniform1f(t,i.u_lightintensity),u_lightcolor:new e.Uniform3f(t,i.u_lightcolor),u_vertical_gradient:new e.Uniform1f(t,i.u_vertical_gradient),u_height_factor:new e.Uniform1f(t,i.u_height_factor),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_up_dir:new e.Uniform3f(t,i.u_up_dir),u_height_lift:new e.Uniform1f(t,i.u_height_lift),u_image:new e.Uniform1i(t,i.u_image),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade),u_opacity:new e.Uniform1f(t,i.u_opacity)}),fill:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix)}),fillPattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image:new e.Uniform1i(t,i.u_image),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade)}),fillOutline:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_world:new e.Uniform2f(t,i.u_world)}),fillOutlinePattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_world:new e.Uniform2f(t,i.u_world),u_image:new e.Uniform1i(t,i.u_image),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade)}),circle:(t,i)=>({u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_extrude_scale:new e.UniformMatrix2f(t,i.u_extrude_scale),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_up_dir:new e.Uniform3f(t,i.u_up_dir)}),collisionBox:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_extrude_scale:new e.Uniform2f(t,i.u_extrude_scale)}),collisionCircle:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_inv_matrix:new e.UniformMatrix4f(t,i.u_inv_matrix),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_viewport_size:new e.Uniform2f(t,i.u_viewport_size)}),debug:(t,i)=>({u_color:new e.UniformColor(t,i.u_color),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_overlay:new e.Uniform1i(t,i.u_overlay),u_overlay_scale:new e.Uniform1f(t,i.u_overlay_scale)}),clippingMask:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix)}),heatmap:(t,i)=>({u_extrude_scale:new e.Uniform1f(t,i.u_extrude_scale),u_intensity:new e.Uniform1f(t,i.u_intensity),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_up_dir:new e.Uniform3f(t,i.u_up_dir)}),heatmapTexture:(t,i)=>({u_image:new e.Uniform1i(t,i.u_image),u_color_ramp:new e.Uniform1i(t,i.u_color_ramp),u_opacity:new e.Uniform1f(t,i.u_opacity)}),hillshade:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image:new e.Uniform1i(t,i.u_image),u_latrange:new e.Uniform2f(t,i.u_latrange),u_light:new e.Uniform2f(t,i.u_light),u_shadow:new e.UniformColor(t,i.u_shadow),u_highlight:new e.UniformColor(t,i.u_highlight),u_accent:new e.UniformColor(t,i.u_accent)}),hillshadePrepare:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image:new e.Uniform1i(t,i.u_image),u_dimension:new e.Uniform2f(t,i.u_dimension),u_zoom:new e.Uniform1f(t,i.u_zoom),u_unpack:new e.Uniform4f(t,i.u_unpack)}),line:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_pixels_to_tile_units:new e.UniformMatrix2f(t,i.u_pixels_to_tile_units),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_units_to_pixels:new e.Uniform2f(t,i.u_units_to_pixels),u_dash_image:new e.Uniform1i(t,i.u_dash_image),u_gradient_image:new e.Uniform1i(t,i.u_gradient_image),u_image_height:new e.Uniform1f(t,i.u_image_height),u_texsize:new e.Uniform2f(t,i.u_texsize),u_scale:new e.Uniform3f(t,i.u_scale),u_mix:new e.Uniform1f(t,i.u_mix),u_alpha_discard_threshold:new e.Uniform1f(t,i.u_alpha_discard_threshold)}),linePattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixels_to_tile_units:new e.UniformMatrix2f(t,i.u_pixels_to_tile_units),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_image:new e.Uniform1i(t,i.u_image),u_units_to_pixels:new e.Uniform2f(t,i.u_units_to_pixels),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade),u_alpha_discard_threshold:new e.Uniform1f(t,i.u_alpha_discard_threshold)}),raster:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_tl_parent:new e.Uniform2f(t,i.u_tl_parent),u_scale_parent:new e.Uniform1f(t,i.u_scale_parent),u_fade_t:new e.Uniform1f(t,i.u_fade_t),u_opacity:new e.Uniform1f(t,i.u_opacity),u_image0:new e.Uniform1i(t,i.u_image0),u_image1:new e.Uniform1i(t,i.u_image1),u_brightness_low:new e.Uniform1f(t,i.u_brightness_low),u_brightness_high:new e.Uniform1f(t,i.u_brightness_high),u_saturation_factor:new e.Uniform1f(t,i.u_saturation_factor),u_contrast_factor:new e.Uniform1f(t,i.u_contrast_factor),u_spin_weights:new e.Uniform3f(t,i.u_spin_weights),u_perspective_transform:new e.Uniform2f(t,i.u_perspective_transform)}),symbolIcon:(t,i)=>({u_is_size_zoom_constant:new e.Uniform1i(t,i.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(t,i.u_is_size_feature_constant),u_size_t:new e.Uniform1f(t,i.u_size_t),u_size:new e.Uniform1f(t,i.u_size),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_rotate_symbol:new e.Uniform1i(t,i.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(t,i.u_aspect_ratio),u_fade_change:new e.Uniform1f(t,i.u_fade_change),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(t,i.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(t,i.u_coord_matrix),u_is_text:new e.Uniform1i(t,i.u_is_text),u_pitch_with_map:new e.Uniform1i(t,i.u_pitch_with_map),u_texsize:new e.Uniform2f(t,i.u_texsize),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_camera_forward:new e.Uniform3f(t,i.u_camera_forward),u_tile_matrix:new e.UniformMatrix4f(t,i.u_tile_matrix),u_ecef_origin:new e.Uniform3f(t,i.u_ecef_origin),u_texture:new e.Uniform1i(t,i.u_texture)}),symbolSDF:(t,i)=>({u_is_size_zoom_constant:new e.Uniform1i(t,i.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(t,i.u_is_size_feature_constant),u_size_t:new e.Uniform1f(t,i.u_size_t),u_size:new e.Uniform1f(t,i.u_size),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_rotate_symbol:new e.Uniform1i(t,i.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(t,i.u_aspect_ratio),u_fade_change:new e.Uniform1f(t,i.u_fade_change),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(t,i.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(t,i.u_coord_matrix),u_is_text:new e.Uniform1i(t,i.u_is_text),u_pitch_with_map:new e.Uniform1i(t,i.u_pitch_with_map),u_texsize:new e.Uniform2f(t,i.u_texsize),u_texture:new e.Uniform1i(t,i.u_texture),u_gamma_scale:new e.Uniform1f(t,i.u_gamma_scale),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_camera_forward:new e.Uniform3f(t,i.u_camera_forward),u_tile_matrix:new e.UniformMatrix4f(t,i.u_tile_matrix),u_ecef_origin:new e.Uniform3f(t,i.u_ecef_origin),u_is_halo:new e.Uniform1i(t,i.u_is_halo)}),symbolTextAndIcon:(t,i)=>({u_is_size_zoom_constant:new e.Uniform1i(t,i.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(t,i.u_is_size_feature_constant),u_size_t:new e.Uniform1f(t,i.u_size_t),u_size:new e.Uniform1f(t,i.u_size),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_rotate_symbol:new e.Uniform1i(t,i.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(t,i.u_aspect_ratio),u_fade_change:new e.Uniform1f(t,i.u_fade_change),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(t,i.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(t,i.u_coord_matrix),u_is_text:new e.Uniform1i(t,i.u_is_text),u_pitch_with_map:new e.Uniform1i(t,i.u_pitch_with_map),u_texsize:new e.Uniform2f(t,i.u_texsize),u_texsize_icon:new e.Uniform2f(t,i.u_texsize_icon),u_texture:new e.Uniform1i(t,i.u_texture),u_texture_icon:new e.Uniform1i(t,i.u_texture_icon),u_gamma_scale:new e.Uniform1f(t,i.u_gamma_scale),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_is_halo:new e.Uniform1i(t,i.u_is_halo)}),background:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_opacity:new e.Uniform1f(t,i.u_opacity),u_color:new e.UniformColor(t,i.u_color)}),backgroundPattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_opacity:new e.Uniform1f(t,i.u_opacity),u_image:new e.Uniform1i(t,i.u_image),u_pattern_tl_a:new e.Uniform2f(t,i.u_pattern_tl_a),u_pattern_br_a:new e.Uniform2f(t,i.u_pattern_br_a),u_pattern_tl_b:new e.Uniform2f(t,i.u_pattern_tl_b),u_pattern_br_b:new e.Uniform2f(t,i.u_pattern_br_b),u_texsize:new e.Uniform2f(t,i.u_texsize),u_mix:new e.Uniform1f(t,i.u_mix),u_pattern_size_a:new e.Uniform2f(t,i.u_pattern_size_a),u_pattern_size_b:new e.Uniform2f(t,i.u_pattern_size_b),u_scale_a:new e.Uniform1f(t,i.u_scale_a),u_scale_b:new e.Uniform1f(t,i.u_scale_b),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_tile_units_to_pixels:new e.Uniform1f(t,i.u_tile_units_to_pixels)}),terrainRaster:li,terrainDepth:li,skybox:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_sun_direction:new e.Uniform3f(t,i.u_sun_direction),u_cubemap:new e.Uniform1i(t,i.u_cubemap),u_opacity:new e.Uniform1f(t,i.u_opacity),u_temporal_offset:new e.Uniform1f(t,i.u_temporal_offset)}),skyboxGradient:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_color_ramp:new e.Uniform1i(t,i.u_color_ramp),u_center_direction:new e.Uniform3f(t,i.u_center_direction),u_radius:new e.Uniform1f(t,i.u_radius),u_opacity:new e.Uniform1f(t,i.u_opacity),u_temporal_offset:new e.Uniform1f(t,i.u_temporal_offset)}),skyboxCapture:(t,i)=>({u_matrix_3f:new e.UniformMatrix3f(t,i.u_matrix_3f),u_sun_direction:new e.Uniform3f(t,i.u_sun_direction),u_sun_intensity:new e.Uniform1f(t,i.u_sun_intensity),u_color_tint_r:new e.Uniform4f(t,i.u_color_tint_r),u_color_tint_m:new e.Uniform4f(t,i.u_color_tint_m),u_luminance:new e.Uniform1f(t,i.u_luminance)}),globeRaster:(t,i)=>({u_proj_matrix:new e.UniformMatrix4f(t,i.u_proj_matrix),u_globe_matrix:new e.UniformMatrix4f(t,i.u_globe_matrix),u_merc_matrix:new e.UniformMatrix4f(t,i.u_merc_matrix),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_image0:new e.Uniform1i(t,i.u_image0),u_grid_matrix:new e.UniformMatrix3f(t,i.u_grid_matrix)}),globeAtmosphere:(t,i)=>({u_frustum_tl:new e.Uniform3f(t,i.u_frustum_tl),u_frustum_tr:new e.Uniform3f(t,i.u_frustum_tr),u_frustum_br:new e.Uniform3f(t,i.u_frustum_br),u_frustum_bl:new e.Uniform3f(t,i.u_frustum_bl),u_globe_pos:new e.Uniform3f(t,i.u_globe_pos),u_globe_radius:new e.Uniform1f(t,i.u_globe_radius),u_opacity:new e.Uniform1f(t,i.u_opacity),u_fadeout_range:new e.Uniform1f(t,i.u_fadeout_range),u_start_color:new e.Uniform3f(t,i.u_start_color),u_end_color:new e.Uniform3f(t,i.u_end_color)})};let Qi;function eo(t,i,o,r,n,a,s){const l=t.context,c=l.gl,h=t.useProgram(\"collisionBox\"),_=[];let u=0,d=0;for(let p=0;p<r.length;p++){const m=r[p],f=i.getTile(m),g=f.getBucket(o);if(!g)continue;let v=m.projMatrix;0===n[0]&&0===n[1]||(v=t.translatePosMatrix(m.projMatrix,f,n,a));const x=s?g.textCollisionBox:g.iconCollisionBox,y=g.collisionCircleArray;if(y.length>0){const i=e.create(),o=v;e.mul(i,g.placementInvProjMatrix,t.transform.glCoordMatrix),e.mul(i,i,g.placementViewportMatrix),_.push({circleArray:y,circleOffset:d,transform:o,invTransform:i}),u+=y.length/4,d=u;}x&&(t.terrain&&t.terrain.setupElevationDraw(f,h),h.draw(l,c.LINES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,ki(v,t.transform,f),o.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,t.transform.zoom,null,x.collisionVertexBuffer,x.collisionVertexBufferExt));}if(!s||!_.length)return;const p=t.useProgram(\"collisionCircle\"),m=new e.StructArrayLayout2f1f2i16;m.resize(4*u),m._trim();let f=0;for(const e of _)for(let t=0;t<e.circleArray.length/4;t++){const i=4*t,o=e.circleArray[i+0],r=e.circleArray[i+1],n=e.circleArray[i+2],a=e.circleArray[i+3];m.emplace(f++,o,r,n,a,0),m.emplace(f++,o,r,n,a,1),m.emplace(f++,o,r,n,a,2),m.emplace(f++,o,r,n,a,3);}(!Qi||Qi.length<2*u)&&(Qi=function(t){const i=2*t,o=new e.StructArrayLayout3ui6;o.resize(i),o._trim();for(let e=0;e<i;e++){const t=6*e;o.uint16[t+0]=4*e+0,o.uint16[t+1]=4*e+1,o.uint16[t+2]=4*e+2,o.uint16[t+3]=4*e+2,o.uint16[t+4]=4*e+3,o.uint16[t+5]=4*e+0;}return o}(u));const g=l.createIndexBuffer(Qi,!0),v=l.createVertexBuffer(m,e.collisionCircleLayout.members,!0);for(const i of _){const r={u_matrix:i.transform,u_inv_matrix:i.invTransform,u_camera_to_center_distance:(x=t.transform).cameraToCenterDistance,u_viewport_size:[x.width,x.height]};p.draw(l,c.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,r,o.id,v,g,e.SegmentVector.simpleSegment(0,2*i.circleOffset,i.circleArray.length,i.circleArray.length/2),null,t.transform.zoom,null,null,null);}var x;v.destroy(),g.destroy();}const to=e.create();function io(t,i,o,r,n,a){const{horizontalAlign:s,verticalAlign:l}=e.getAnchorAlignment(t),c=-(s-.5)*i,h=-(l-.5)*o,_=e.evaluateVariableOffset(t,r);return new e.pointGeometry((c/n+_[0])*a,(h/n+_[1])*a)}function oo(t,i,o,r,n,a,s,l,c,h,_,u){const d=t.text.placedSymbolArray,p=t.text.dynamicLayoutVertexArray,m=t.icon.dynamicLayoutVertexArray,f={},g=l.projMatrix,v=a.elevation,x=u.upVectorScale(l.canonical,a.center.lat,a.worldSize);p.clear();for(let m=0;m<d.length;m++){const y=d.get(m),b=t.allowVerticalPlacement&&!y.placedOrientation,w=y.hidden||!y.crossTileID||b?null:r[y.crossTileID];if(w){const r=new e.pointGeometry(y.tileAnchorX,y.tileAnchorY),d=u.upVector(l.canonical,r.x,r.y),m=v?v.getAtTileOffset(l,r.x,r.y):0,b=it([y.projectedAnchorX+m*d[0]*x.metersToTile,y.projectedAnchorY+m*d[1]*x.metersToTile,y.projectedAnchorZ+m*d[2]*x.metersToTile],o?g:s),T=ot(a.cameraToCenterDistance,b.signedDistanceFromCamera);let E=n.evaluateSizeForFeature(t.textSizeData,h,y)*T/e.ONE_EM;o&&(E*=t.tilePixelRatio/c);const{width:C,height:I,anchor:M,textOffset:S,textScale:z}=w,D=io(M,C,I,S,z,E),P=o?tt(r.add(D),s,m*x.metersToLabelSpace).point:b.point.add(i?D.rotate(-a.angle):D),A=t.allowVerticalPlacement&&y.placedOrientation===e.WritingMode.vertical?Math.PI/2:0;for(let t=0;t<y.numGlyphs;t++)e.addDynamicAttributes(p,P,A);_&&y.associatedIconIndex>=0&&(f[y.associatedIconIndex]={shiftedAnchor:P,angle:A});}else dt(y.numGlyphs,p);}if(_){m.clear();const i=t.icon.placedSymbolArray;for(let t=0;t<i.length;t++){const o=i.get(t);if(o.hidden)dt(o.numGlyphs,m);else {const i=f[t];if(i)for(let t=0;t<o.numGlyphs;t++)e.addDynamicAttributes(m,i.shiftedAnchor,i.angle);else dt(o.numGlyphs,m);}}t.icon.dynamicLayoutVertexBuffer.updateData(m);}t.text.dynamicLayoutVertexBuffer.updateData(p);}function ro(e,t,i){return i.iconsInText&&t?\"symbolTextAndIcon\":e?\"symbolSDF\":\"symbolIcon\"}function no(t,i,o,r,n,a,s,l,c,h,_,u){const d=t.context,p=d.gl,m=t.transform,f=\"map\"===l,g=\"map\"===c,v=f&&\"point\"!==o.layout.get(\"symbol-placement\"),x=f&&!g&&!v,y=void 0!==o.layout.get(\"symbol-sort-key\").constantOr(1);let b=!1;const w=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),T=[e.mercatorXfromLng(m.center.lng),e.mercatorYfromLat(m.center.lat)],E=o.layout.get(\"text-variable-anchor\"),C=\"globe\"===m.projection.name,I=C?e.globeToMercatorTransition(m.zoom):0,M=[],S=[];t.terrain&&g&&S.push(\"PITCH_WITH_MAP_TERRAIN\"),C&&S.push(\"PROJECTION_GLOBE_VIEW\");for(const l of r){const r=i.getTile(l),c=r.getBucket(o);if(!c||c.projection!==m.projection.name)continue;const _=n?c.text:c.icon;if(!_||c.fullyClipped||!_.segments.get().length)continue;const u=_.programConfigurations.get(o.id),d=n||c.sdfIcons,w=n?c.textSizeData:c.iconSizeData,C=g||0!==m.pitch,z=e.evaluateSizeForZoom(w,m.zoom);let D,P,A,L,R=[0,0],k=null;if(n){if(P=r.glyphAtlasTexture,A=p.LINEAR,D=r.glyphAtlasTexture.size,c.iconsInText){R=r.imageAtlasTexture.size,k=r.imageAtlasTexture;const e=\"composite\"===w.kind||\"camera\"===w.kind;L=C||t.options.rotating||t.options.zooming||e?p.LINEAR:p.NEAREST;}}else {const e=1!==o.layout.get(\"icon-size\").constantOr(0)||c.iconsNeedLinear;P=r.imageAtlasTexture,A=d||t.options.rotating||t.options.zooming||e||C?p.LINEAR:p.NEAREST,D=r.imageAtlasTexture.size;}const O=t.transform.calculatePixelsToTileUnitsMatrix(r),B=Qe(l.projMatrix,r.tileID.canonical,g,f,t.transform,O),F=t.terrain&&g&&v?e.invert(e.create(),B):to,U=et(l.projMatrix,r.tileID.canonical,g,f,t.transform,O),N=E&&c.hasTextData(),G=\"none\"!==o.layout.get(\"icon-text-fit\")&&N&&c.hasIconData();if(v){const e=m.elevation,i=e?e.getAtTileOffsetFunc(l,m.center.lat,m.worldSize,m.projection):e=>[0,0,0];nt(c,l.projMatrix,t,n,B,U,g,h,i,l);}const j=v||n&&E||G,Z=t.translatePosMatrix(l.projMatrix,r,a,s),V=j?to:B,W=t.translatePosMatrix(U,r,a,s,!0),q=m.projection.createInversionMatrix(m,l.canonical),X=j?S.concat([\"PROJECTED_POS_ON_VIEWPORT\"]):S,$=d&&0!==o.paint.get(n?\"text-halo-width\":\"icon-halo-width\").constantOr(1);let H;H=d?c.iconsInText?Hi(w.kind,z,x,g,t,Z,V,W,D,R,l,I,T,q):$i(w.kind,z,x,g,t,Z,V,W,n,D,!0,l,I,T,q):Xi(w.kind,z,x,g,t,Z,V,W,n,D,l,I,T,q);const K={program:t.useProgram(ro(d,n,c),u,X),buffers:_,uniformValues:H,atlasTexture:P,atlasTextureIcon:k,atlasInterpolation:A,atlasInterpolationIcon:L,isSDF:d,hasHalo:$,tile:r,labelPlaneMatrixInv:F};if(y&&c.canOverlap){b=!0;const t=_.segments.get();for(const i of t)M.push({segments:new e.SegmentVector([i]),sortKey:i.sortKey,state:K});}else M.push({segments:_.segments,sortKey:0,state:K});}b&&M.sort(((e,t)=>e.sortKey-t.sortKey));for(const e of M){const i=e.state;if(t.terrain&&t.terrain.setupElevationDraw(i.tile,i.program,{useDepthForOcclusion:!C,labelPlaneMatrixInv:i.labelPlaneMatrixInv}),d.activeTexture.set(p.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,p.CLAMP_TO_EDGE),i.atlasTextureIcon&&(d.activeTexture.set(p.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,p.CLAMP_TO_EDGE)),i.isSDF){const r=i.uniformValues;i.hasHalo&&(r.u_is_halo=1,ao(i.buffers,e.segments,o,t,i.program,w,_,u,r)),r.u_is_halo=0;}ao(i.buffers,e.segments,o,t,i.program,w,_,u,i.uniformValues);}}function ao(t,i,o,r,n,a,s,l,c){const h=r.context;n.draw(h,h.gl.TRIANGLES,a,s,l,e.CullFaceMode.disabled,c,o.id,t.layoutVertexBuffer,t.indexBuffer,i,o.paint,r.transform.zoom,t.programConfigurations.get(o.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer);}function so(t,i,o,r,n,a,s){const l=t.context.gl,c=o.paint.get(\"fill-pattern\"),h=c&&c.constantOr(1),_=o.getCrossfadeParameters();let u,d,p,m,f;s?(d=h&&!o.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",u=l.LINES):(d=h?\"fillPattern\":\"fill\",u=l.TRIANGLES);for(const g of r){const r=i.getTile(g);if(h&&!r.patternsLoaded())continue;const v=r.getBucket(o);if(!v)continue;t.prepareDrawTile();const x=v.programConfigurations.get(o.id),y=t.useProgram(d,x);h&&(t.context.activeTexture.set(l.TEXTURE0),r.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),x.updatePaintBuffers(_));const b=c.constantOr(null);if(b&&r.imageAtlas){const e=r.imageAtlas,t=e.patternPositions[b.to.toString()],i=e.patternPositions[b.from.toString()];t&&i&&x.setConstantPatternPositions(t,i);}const w=t.translatePosMatrix(g.projMatrix,r,o.paint.get(\"fill-translate\"),o.paint.get(\"fill-translate-anchor\"));if(s){m=v.indexBuffer2,f=v.segments2;const e=t.terrain&&t.terrain.renderingToTexture?t.terrain.drapeBufferSize:[l.drawingBufferWidth,l.drawingBufferHeight];p=\"fillOutlinePattern\"===d&&h?Pi(w,t,_,r,e):Di(w,e);}else m=v.indexBuffer,f=v.segments,p=h?zi(w,t,_,r):Si(w);t.prepareDrawProgram(t.context,y,g.toUnwrapped()),y.draw(t.context,u,n,t.stencilModeForClipping(g),a,e.CullFaceMode.disabled,p,o.id,v.layoutVertexBuffer,m,f,o.paint,t.transform.zoom,x);}}function lo(t,i,o,r,n,a,s){const l=t.context,c=l.gl,h=t.transform,_=o.paint.get(\"fill-extrusion-pattern\"),u=_.constantOr(1),d=o.getCrossfadeParameters(),p=o.paint.get(\"fill-extrusion-opacity\"),m=function(t){if(\"globe\"!==t.projection.name)return 0;const i=Math.PI/32,o=Math.tan(i),r=e.earthRadius;return r*Math.sqrt(1+2*o*o)-r}(h),f=\"globe\"===h.projection.name,g=f?e.globeToMercatorTransition(h.zoom):0,v=[e.mercatorXfromLng(h.center.lng),e.mercatorYfromLat(h.center.lat)],x=[];f&&x.push(\"PROJECTION_GLOBE_VIEW\");for(const y of r){const r=i.getTile(y),b=r.getBucket(o);if(!b||b.projection!==h.projection.name)continue;const w=b.programConfigurations.get(o.id),T=t.useProgram(u?\"fillExtrusionPattern\":\"fillExtrusion\",w,x);if(t.terrain){const e=t.terrain;if(t.style.terrainSetForDrapingOnly())e.setupElevationDraw(r,T,{useMeterToDem:!0});else {if(!b.enableTerrain)continue;if(e.setupElevationDraw(r,T,{useMeterToDem:!0}),co(l,i,y,b,o,e),!b.centroidVertexBuffer){const e=T.attributes.a_centroid_pos;void 0!==e&&c.vertexAttrib2f(e,0,0);}}}u&&(t.context.activeTexture.set(c.TEXTURE0),r.imageAtlasTexture.bind(c.LINEAR,c.CLAMP_TO_EDGE),w.updatePaintBuffers(d));const E=_.constantOr(null);if(E&&r.imageAtlas){const e=r.imageAtlas,t=e.patternPositions[E.to.toString()],i=e.patternPositions[E.from.toString()];t&&i&&w.setConstantPatternPositions(t,i);}const C=t.translatePosMatrix(y.projMatrix,r,o.paint.get(\"fill-extrusion-translate\"),o.paint.get(\"fill-extrusion-translate-anchor\")),I=h.projection.createInversionMatrix(h,y.canonical),M=o.paint.get(\"fill-extrusion-vertical-gradient\"),S=u?Mi(C,t,M,p,y,d,r,m,g,v,I):Ii(C,t,M,p,y,m,g,v,I);t.prepareDrawProgram(l,T,y.toUnwrapped()),T.draw(l,l.gl.TRIANGLES,n,a,s,e.CullFaceMode.backCCW,S,o.id,b.layoutVertexBuffer,b.indexBuffer,b.segments,o.paint,t.transform.zoom,w,t.terrain?b.centroidVertexBuffer:null,f?b.layoutVertexExtBuffer:null);}}function co(t,i,o,r,n,a){const s=[t=>{let i=t.canonical.x-1,o=t.wrap;return i<0&&(i=(1<<t.canonical.z)-1,o--),new e.OverscaledTileID(t.overscaledZ,o,t.canonical.z,i,t.canonical.y)},t=>{let i=t.canonical.x+1,o=t.wrap;return i===1<<t.canonical.z&&(i=0,o++),new e.OverscaledTileID(t.overscaledZ,o,t.canonical.z,i,t.canonical.y)},t=>new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,(0===t.canonical.y?1<<t.canonical.z:t.canonical.y)-1),t=>new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y===(1<<t.canonical.z)-1?0:t.canonical.y+1)],l=e=>{const t=i.getSource().minzoom,o=e=>{const t=i.getTileByID(e);if(t&&t.hasData())return t.getBucket(n)},r=[0,-1,1];for(const i of r){if(e.overscaledZ+i<t)continue;const r=o(e.calculateScaledKey(e.overscaledZ+i));if(r)return r}},c=[0,0,0],h=(t,i)=>(c[0]=Math.min(t.min.y,i.min.y),c[1]=Math.max(t.max.y,i.max.y),c[2]=e.EXTENT-i.min.x>t.max.x?i.min.x-e.EXTENT:t.max.x,c),_=(t,i)=>(c[0]=Math.min(t.min.x,i.min.x),c[1]=Math.max(t.max.x,i.max.x),c[2]=e.EXTENT-i.min.y>t.max.y?i.min.y-e.EXTENT:t.max.y,c),u=[(e,t)=>h(e,t),(e,t)=>h(t,e),(e,t)=>_(e,t),(e,t)=>_(t,e)],d=new e.pointGeometry(0,0);let p,m,f;const g=(t,i,r,n,s)=>{const l=[[n?r:t,n?t:r,0],[n?r:i,n?i:r,0]],c=s<0?e.EXTENT+s:s,h=[n?c:(t+i)/2,n?(t+i)/2:c,0];return 0===r&&s<0||0!==r&&s>0?a.getForTilePoints(f,[h],!0,m):l.push(h),a.getForTilePoints(o,l,!0,p),Math.max(l[0][2],l[1][2],h[2])/a.exaggeration()};for(let t=0;t<4;t++){const i=(t<2?1:5)-t,n=r.borders[t];if(0===n.length)continue;const c=f=s[t](o),h=l(c);if(!(h&&h instanceof e.FillExtrusionBucket&&h.enableTerrain))continue;if(r.borderDoneWithNeighborZ[t]===h.canonical.z&&h.borderDoneWithNeighborZ[i]===r.canonical.z)continue;if(m=a.findDEMTileFor(c),!m||!m.dem)continue;if(!p){const e=a.findDEMTileFor(o);if(!e||!e.dem)return;p=e;}const _=h.borders[i];let v=0;const x=h.borderDoneWithNeighborZ[i]!==r.canonical.z;if(r.canonical.z===h.canonical.z){for(let o=0;o<n.length;o++){const a=r.featuresOnBorder[n[o]],s=a.borders[t];let l;for(;v<_.length&&(l=h.featuresOnBorder[_[v]],!(l.borders[i][1]>s[0]+3));)x&&h.encodeCentroid(void 0,l,!1),v++;if(l&&v<_.length){const o=v;let n=0;for(;!(l.borders[i][0]>s[1]-3)&&(n++,++v!==_.length);)l=h.featuresOnBorder[_[v]];if(l=h.featuresOnBorder[_[o]],a.intersectsCount()>1||l.intersectsCount()>1||1!==n){1!==n&&(v=o),r.encodeCentroid(void 0,a,!1),x&&h.encodeCentroid(void 0,l,!1);continue}const c=u[t](a,l),p=t%2?e.EXTENT-1:0;d.x=g(c[0],Math.min(e.EXTENT-1,c[1]),p,t<2,c[2]),d.y=0,r.encodeCentroid(d,a,!1),x&&h.encodeCentroid(d,l,!1);}else r.encodeCentroid(void 0,a,!1);}r.borderDoneWithNeighborZ[t]=h.canonical.z,r.needsCentroidUpdate=!0,x&&(h.borderDoneWithNeighborZ[i]=r.canonical.z,h.needsCentroidUpdate=!0);}else {for(const e of n)r.encodeCentroid(void 0,r.featuresOnBorder[e],!1);if(x){for(const e of _)h.encodeCentroid(void 0,h.featuresOnBorder[e],!1);h.borderDoneWithNeighborZ[i]=r.canonical.z,h.needsCentroidUpdate=!0;}r.borderDoneWithNeighborZ[t]=h.canonical.z,r.needsCentroidUpdate=!0;}}(r.needsCentroidUpdate||!r.centroidVertexBuffer&&0!==r.centroidVertexArray.length)&&r.uploadCentroid(t);}const ho=new e.Color(1,0,0,1),_o=new e.Color(0,1,0,1),uo=new e.Color(0,0,1,1),po=new e.Color(1,0,1,1),mo=new e.Color(0,1,1,1);function fo(e,t,i,o){vo(e,0,t+i/2,e.transform.width,i,o);}function go(e,t,i,o){vo(e,t-i/2,0,i,e.transform.height,o);}function vo(t,i,o,r,n,a){const s=t.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(i*e.exported.devicePixelRatio,o*e.exported.devicePixelRatio,r*e.exported.devicePixelRatio,n*e.exported.devicePixelRatio),s.clear({color:a}),l.disable(l.SCISSOR_TEST);}function xo(t,i,o){const r=t.context,n=r.gl,a=\"globe\"===t.transform.projection.name,s=o.projMatrix,l=t.useProgram(\"debug\",null,a?[\"PROJECTION_GLOBE_VIEW\"]:null),c=i.getTileByID(o.key);t.terrain&&t.terrain.setupElevationDraw(c,l);const h=e.DepthMode.disabled,_=e.StencilMode.disabled,u=t.colorModeForRenderPass(),d=\"$debug\";r.activeTexture.set(n.TEXTURE0),t.emptyTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE),a?c._makeGlobeTileDebugBuffers(t.context,t.transform.projection):c._makeDebugTileBoundsBuffers(t.context,t.transform.projection);const p=c._tileDebugBuffer||t.debugBuffer,m=c._tileDebugIndexBuffer||t.debugIndexBuffer,f=c._tileDebugSegments||t.debugSegments;l.draw(r,n.LINE_STRIP,h,_,u,e.CullFaceMode.disabled,Oi(s,e.Color.red),d,p,m,f,null,null,null,c._globeTileDebugBorderBuffer);const g=c.latestRawTileData,v=Math.floor((g&&g.byteLength||0)/1024),x=i.getTile(o).tileSize,y=512/Math.min(x,512)*(o.overscaledZ/t.transform.zoom)*.5;let b=o.canonical.toString();o.overscaledZ!==o.canonical.z&&(b+=` => ${o.overscaledZ}`),function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,o=e.context.gl,r=e.debugOverlayCanvas.getContext(\"2d\");r.clearRect(0,0,i.width,i.height),r.shadowColor=\"white\",r.shadowBlur=2,r.lineWidth=1.5,r.strokeStyle=\"white\",r.textBaseline=\"top\",r.font=\"bold 36px Open Sans, sans-serif\",r.fillText(t,5,5),r.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE);}(t,`${b} ${v}kb`);const w=c._tileDebugTextBuffer||t.debugBuffer,T=c._tileDebugTextIndexBuffer||t.quadTriangleIndexBuffer,E=c._tileDebugTextSegments||t.debugSegments;l.draw(r,n.TRIANGLES,h,_,e.ColorMode.alphaBlended,e.CullFaceMode.disabled,Oi(s,e.Color.transparent,y),d,w,T,E,null,null,null,c._globeTileDebugTextBuffer);}const yo=e.createLayout([{name:\"a_pos_3f\",components:3,type:\"Float32\"}]),{members:bo}=yo;function wo(e,t,i,o){e.emplaceBack(t,i,o);}class To{constructor(t){this.vertexArray=new e.StructArrayLayout3f12,this.indices=new e.StructArrayLayout3ui6,wo(this.vertexArray,-1,-1,1),wo(this.vertexArray,1,-1,1),wo(this.vertexArray,-1,1,1),wo(this.vertexArray,1,1,1),wo(this.vertexArray,-1,-1,-1),wo(this.vertexArray,1,-1,-1),wo(this.vertexArray,-1,1,-1),wo(this.vertexArray,1,1,-1),this.indices.emplaceBack(5,1,3),this.indices.emplaceBack(3,7,5),this.indices.emplaceBack(6,2,0),this.indices.emplaceBack(0,4,6),this.indices.emplaceBack(2,6,7),this.indices.emplaceBack(7,3,2),this.indices.emplaceBack(5,4,0),this.indices.emplaceBack(0,1,5),this.indices.emplaceBack(0,2,3),this.indices.emplaceBack(3,1,0),this.indices.emplaceBack(7,6,4),this.indices.emplaceBack(4,5,7),this.vertexBuffer=t.createVertexBuffer(this.vertexArray,bo),this.indexBuffer=t.createIndexBuffer(this.indices),this.segment=e.SegmentVector.simpleSegment(0,0,36,12);}}function Eo(t,i,o,r,n,a){const s=t.gl,l=i.paint.get(\"sky-atmosphere-color\"),c=i.paint.get(\"sky-atmosphere-halo-color\"),h=i.paint.get(\"sky-atmosphere-sun-intensity\"),_=((e,t,i,o,r)=>({u_matrix_3f:e,u_sun_direction:t,u_sun_intensity:i,u_color_tint_r:[o.r,o.g,o.b,o.a],u_color_tint_m:[r.r,r.g,r.b,r.a],u_luminance:5e-5}))(e.fromMat4(e.create$1(),r),n,h,l,c);s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_CUBE_MAP_POSITIVE_X+a,i.skyboxTexture,0),o.draw(t,s.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.frontCW,_,\"skyboxCapture\",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment);}function Co(t,i){return e.transformMat4(t,t,i)}const Io={symbol:function(t,i,o,r,n){if(\"translucent\"!==t.renderPass)return;const a=e.StencilMode.disabled,s=t.colorModeForRenderPass();o.layout.get(\"text-variable-anchor\")&&function(t,i,o,r,n,a,s){const l=i.transform,c=\"map\"===n,h=\"map\"===a;for(const n of t){const t=r.getTile(n),a=t.getBucket(o);if(!a||a.projection!==l.projection.name||!a.text||!a.text.segments.get().length)continue;const _=e.evaluateSizeForZoom(a.textSizeData,l.zoom),u=i.transform.calculatePixelsToTileUnitsMatrix(t),d=Qe(n.projMatrix,t.tileID.canonical,h,c,i.transform,u),p=\"none\"!==o.layout.get(\"icon-text-fit\")&&a.hasIconData();if(_){const i=Math.pow(2,l.zoom-t.tileID.overscaledZ);oo(a,c,h,s,e.symbolSize,l,d,n,i,_,p,l.projection);}}}(r,t,o,i,o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),n),0!==o.paint.get(\"icon-opacity\").constantOr(1)&&no(t,i,o,r,!1,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),o.layout.get(\"icon-rotation-alignment\"),o.layout.get(\"icon-pitch-alignment\"),o.layout.get(\"icon-keep-upright\"),a,s),0!==o.paint.get(\"text-opacity\").constantOr(1)&&no(t,i,o,r,!0,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),o.layout.get(\"text-keep-upright\"),a,s),i.map.showCollisionBoxes&&(eo(t,i,o,r,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),!0),eo(t,i,o,r,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),!1));},circle:function(t,i,o,r){if(\"translucent\"!==t.renderPass)return;const n=o.paint.get(\"circle-opacity\"),a=o.paint.get(\"circle-stroke-width\"),s=o.paint.get(\"circle-stroke-opacity\"),l=void 0!==o.layout.get(\"circle-sort-key\").constantOr(1);if(0===n.constantOr(1)&&(0===a.constantOr(1)||0===s.constantOr(1)))return;const c=t.context,h=c.gl,_=t.transform,u=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),d=e.StencilMode.disabled,p=t.colorModeForRenderPass(),m=\"globe\"===_.projection.name,f=[e.mercatorXfromLng(_.center.lng),e.mercatorYfromLat(_.center.lat)],g=[];for(let n=0;n<r.length;n++){const a=r[n],s=i.getTile(a),c=s.getBucket(o);if(!c)continue;const h=c.programConfigurations.get(o.id),u=Ri(o);m&&u.push(\"PROJECTION_GLOBE_VIEW\");const d=t.useProgram(\"circle\",h,u),p=c.layoutVertexBuffer,v=c.globeExtVertexBuffer,x=c.indexBuffer,y=_.projection.createInversionMatrix(_,a.canonical),b={programConfiguration:h,program:d,layoutVertexBuffer:p,globeExtVertexBuffer:v,indexBuffer:x,uniformValues:Li(t,a,s,y,f,o),tile:s};if(l){const t=c.segments.get();for(const i of t)g.push({segments:new e.SegmentVector([i]),sortKey:i.sortKey,state:b});}else g.push({segments:c.segments,sortKey:0,state:b});}l&&g.sort(((e,t)=>e.sortKey-t.sortKey));const v={useDepthForOcclusion:!m};for(const i of g){const{programConfiguration:r,program:n,layoutVertexBuffer:a,globeExtVertexBuffer:s,indexBuffer:l,uniformValues:f,tile:g}=i.state,x=i.segments;t.terrain&&t.terrain.setupElevationDraw(g,n,v),t.prepareDrawProgram(c,n,g.tileID.toUnwrapped()),n.draw(c,h.TRIANGLES,u,d,p,e.CullFaceMode.disabled,f,o.id,a,l,x,o.paint,_.zoom,r,m?s:null);}},heatmap:function(t,i,o,r){if(0!==o.paint.get(\"heatmap-opacity\"))if(\"offscreen\"===t.renderPass){const n=t.context,a=n.gl,s=e.StencilMode.disabled,l=new e.ColorMode([a.ONE,a.ONE],e.Color.transparent,[!0,!0,!0,!0]);!function(e,t,i){const o=e.gl;e.activeTexture.set(o.TEXTURE1),e.viewport.set([0,0,t.width/4,t.height/4]);let r=i.heatmapFbo;if(r)o.bindTexture(o.TEXTURE_2D,r.colorAttachment.get()),e.bindFramebuffer.set(r.framebuffer);else {const n=o.createTexture();o.bindTexture(o.TEXTURE_2D,n),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),r=i.heatmapFbo=e.createFramebuffer(t.width/4,t.height/4,!1),function(e,t,i,o){const r=e.gl;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t.width/4,t.height/4,0,r.RGBA,e.extRenderToTextureHalfFloat?e.extTextureHalfFloat.HALF_FLOAT_OES:r.UNSIGNED_BYTE,null),o.colorAttachment.set(i);}(e,t,n,r);}}(n,t,o),n.clear({color:e.Color.transparent});const c=t.transform,h=\"globe\"===c.projection.name,_=h?[\"PROJECTION_GLOBE_VIEW\"]:null,u=[e.mercatorXfromLng(c.center.lng),e.mercatorYfromLat(c.center.lat)];for(let d=0;d<r.length;d++){const p=r[d];if(i.hasRenderableParent(p))continue;const m=i.getTile(p),f=m.getBucket(o);if(!f)continue;const g=f.programConfigurations.get(o.id),v=t.useProgram(\"heatmap\",g,_),{zoom:x}=t.transform;t.terrain&&t.terrain.setupElevationDraw(m,v),t.prepareDrawProgram(n,v,p.toUnwrapped());const y=c.projection.createInversionMatrix(c,p.canonical);v.draw(n,a.TRIANGLES,e.DepthMode.disabled,s,l,e.CullFaceMode.disabled,Fi(t,p,m,y,u,x,o.paint.get(\"heatmap-intensity\")),o.id,f.layoutVertexBuffer,f.indexBuffer,f.segments,o.paint,t.transform.zoom,g,h?f.globeExtVertexBuffer:null);}n.viewport.set([0,0,t.width,t.height]);}else \"translucent\"===t.renderPass&&(t.context.setColorMode(t.colorModeForRenderPass()),function(t,i){const o=t.context,r=o.gl,n=i.heatmapFbo;if(!n)return;o.activeTexture.set(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,n.colorAttachment.get()),o.activeTexture.set(r.TEXTURE1);let a=i.colorRampTexture;a||(a=i.colorRampTexture=new e.Texture(o,i.colorRamp,r.RGBA)),a.bind(r.LINEAR,r.CLAMP_TO_EDGE),t.useProgram(\"heatmapTexture\").draw(o,r.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,((e,t,i,o)=>({u_image:0,u_color_ramp:1,u_opacity:t.paint.get(\"heatmap-opacity\")}))(0,i),i.id,t.viewportBuffer,t.quadTriangleIndexBuffer,t.viewportSegments,i.paint,t.transform.zoom);}(t,o));},line:function(t,i,o,r){if(\"translucent\"!==t.renderPass)return;const n=o.paint.get(\"line-opacity\"),a=o.paint.get(\"line-width\");if(0===n.constantOr(1)||0===a.constantOr(1))return;const s=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),l=t.colorModeForRenderPass(),c=t.terrain&&t.terrain.renderingToTexture?1:e.exported.devicePixelRatio,h=o.paint.get(\"line-dasharray\"),_=h.constantOr(1),u=o.layout.get(\"line-cap\"),d=o.paint.get(\"line-pattern\"),p=d.constantOr(1),m=o.paint.get(\"line-gradient\"),f=o.getCrossfadeParameters(),g=p?\"linePattern\":\"line\",v=t.context,x=v.gl,y=(e=>{const t=[];Zi(e)&&t.push(\"RENDER_LINE_DASH\"),e.paint.get(\"line-gradient\")&&t.push(\"RENDER_LINE_GRADIENT\");const i=e.paint.get(\"line-pattern\").constantOr(1),o=1!==e.paint.get(\"line-opacity\").constantOr(1);return !i&&o&&t.push(\"RENDER_LINE_ALPHA_DISCARD\"),t})(o);let b=y.includes(\"RENDER_LINE_ALPHA_DISCARD\");t.terrain&&t.terrain.clipOrMaskOverlapStencilType()&&(b=!1);for(const n of r){const r=i.getTile(n);if(p&&!r.patternsLoaded())continue;const a=r.getBucket(o);if(!a)continue;t.prepareDrawTile();const w=a.programConfigurations.get(o.id),T=t.useProgram(g,w,y),E=d.constantOr(null);if(E&&r.imageAtlas){const e=r.imageAtlas,t=e.patternPositions[E.to.toString()],i=e.patternPositions[E.from.toString()];t&&i&&w.setConstantPatternPositions(t,i);}const C=h.constantOr(null),I=u.constantOr(null);if(!p&&C&&I&&r.lineAtlas){const e=r.lineAtlas,t=e.getDash(C.to,I),i=e.getDash(C.from,I);t&&i&&w.setConstantPatternPositions(t,i);}const M=t.terrain?n.projMatrix:null,S=p?Ni(t,r,o,f,M,c):Ui(t,r,o,f,M,a.lineClipsArray.length,c);if(m){const r=a.gradients[o.id];let s=r.texture;if(o.gradientVersion!==r.version){let l=256;if(o.stepInterpolant){const o=i.getSource().maxzoom,r=n.canonical.z===o?Math.ceil(1<<t.transform.maxZoom-n.canonical.z):1;l=e.clamp(e.nextPowerOfTwo(a.maxLineLength/e.EXTENT*1024*r),256,v.maxTextureSize);}r.gradient=e.renderColorRamp({expression:o.gradientExpression(),evaluationKey:\"lineProgress\",resolution:l,image:r.gradient||void 0,clips:a.lineClipsArray}),r.texture?r.texture.update(r.gradient):r.texture=new e.Texture(v,r.gradient,x.RGBA),r.version=o.gradientVersion,s=r.texture;}v.activeTexture.set(x.TEXTURE1),s.bind(o.stepInterpolant?x.NEAREST:x.LINEAR,x.CLAMP_TO_EDGE);}_&&(v.activeTexture.set(x.TEXTURE0),r.lineAtlasTexture.bind(x.LINEAR,x.REPEAT),w.updatePaintBuffers(f)),p&&(v.activeTexture.set(x.TEXTURE0),r.imageAtlasTexture.bind(x.LINEAR,x.CLAMP_TO_EDGE),w.updatePaintBuffers(f)),t.prepareDrawProgram(v,T,n.toUnwrapped());const z=i=>{T.draw(v,x.TRIANGLES,s,i,l,e.CullFaceMode.disabled,S,o.id,a.layoutVertexBuffer,a.indexBuffer,a.segments,o.paint,t.transform.zoom,w,a.layoutVertexBuffer2);};if(b){const i=t.stencilModeForClipping(n).ref;0===i&&t.terrain&&v.clear({stencil:0});const o={func:x.EQUAL,mask:255};S.u_alpha_discard_threshold=.8,z(new e.StencilMode(o,i,255,x.KEEP,x.KEEP,x.INVERT)),S.u_alpha_discard_threshold=0,z(new e.StencilMode(o,i,255,x.KEEP,x.KEEP,x.KEEP));}else z(t.stencilModeForClipping(n));}b&&(t.resetStencilClippingMasks(),t.terrain&&v.clear({stencil:0}));},fill:function(t,i,o,r){const n=o.paint.get(\"fill-color\"),a=o.paint.get(\"fill-opacity\");if(0===a.constantOr(1))return;const s=t.colorModeForRenderPass(),l=o.paint.get(\"fill-pattern\"),c=t.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===n.constantOr(e.Color.transparent).a&&1===a.constantOr(0)?\"opaque\":\"translucent\";if(t.renderPass===c){const n=t.depthModeForSublayer(1,\"opaque\"===t.renderPass?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly);so(t,i,o,r,n,s,!1);}if(\"translucent\"===t.renderPass&&o.paint.get(\"fill-antialias\")){const n=t.depthModeForSublayer(o.getPaintProperty(\"fill-outline-color\")?2:0,e.DepthMode.ReadOnly);so(t,i,o,r,n,s,!0);}},\"fill-extrusion\":function(t,i,o,r){const n=o.paint.get(\"fill-extrusion-opacity\");if(0!==n&&\"translucent\"===t.renderPass){const a=new e.DepthMode(t.context.gl.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);if(1!==n||o.paint.get(\"fill-extrusion-pattern\").constantOr(1))lo(t,i,o,r,a,e.StencilMode.disabled,e.ColorMode.disabled),lo(t,i,o,r,a,t.stencilModeFor3D(),t.colorModeForRenderPass()),t.resetStencilClippingMasks();else {const n=t.colorModeForRenderPass();lo(t,i,o,r,a,e.StencilMode.disabled,n);}}},hillshade:function(t,i,o,r){if(\"offscreen\"!==t.renderPass&&\"translucent\"!==t.renderPass)return;const n=t.context,a=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),s=t.colorModeForRenderPass(),l=t.terrain&&t.terrain.renderingToTexture,[c,h]=\"translucent\"!==t.renderPass||l?[{},r]:t.stencilConfigForOverlap(r);for(const r of h){const n=i.getTile(r);if(n.needsHillshadePrepare&&\"offscreen\"===t.renderPass)si(t,n,o,a,e.StencilMode.disabled,s);else if(\"translucent\"===t.renderPass){const e=l&&t.terrain?t.terrain.stencilModeForRTTOverlap(r):c[r.overscaledZ];ni(t,r,n,o,a,e,s);}}n.viewport.set([0,0,t.width,t.height]),t.resetStencilClippingMasks();},raster:function(t,i,o,r,n,a){if(\"translucent\"!==t.renderPass)return;if(0===o.paint.get(\"raster-opacity\"))return;if(!r.length)return;const s=t.context,l=s.gl,c=i.getSource(),h=t.useProgram(\"raster\"),_=t.colorModeForRenderPass(),u=t.terrain&&t.terrain.renderingToTexture,[d,p]=c instanceof Se||u?[{},r]:t.stencilConfigForOverlap(r),m=p[p.length-1].overscaledZ,f=!t.options.moving;for(const r of p){const n=u?e.DepthMode.disabled:t.depthModeForSublayer(r.overscaledZ-m,1===o.paint.get(\"raster-opacity\")?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly,l.LESS),p=r.toUnwrapped(),g=i.getTile(r);if(u&&(!g||!g.hasData()))continue;const v=u?r.projMatrix:t.transform.calculateProjMatrix(p,f),x=t.terrain&&u?t.terrain.stencilModeForRTTOverlap(r):d[r.overscaledZ],y=a?0:o.paint.get(\"raster-fade-duration\");g.registerFadeDuration(y);const b=i.findLoadedParent(r,0),w=fi(g,b,i,t.transform,y);let T,E;t.terrain&&t.terrain.prepareDrawTile();const C=\"nearest\"===o.paint.get(\"raster-resampling\")?l.NEAREST:l.LINEAR;s.activeTexture.set(l.TEXTURE0),g.texture.bind(C,l.CLAMP_TO_EDGE),s.activeTexture.set(l.TEXTURE1),b?(b.texture.bind(C,l.CLAMP_TO_EDGE),T=Math.pow(2,b.tileID.overscaledZ-g.tileID.overscaledZ),E=[g.tileID.canonical.x*T%1,g.tileID.canonical.y*T%1]):g.texture.bind(C,l.CLAMP_TO_EDGE);const I=Vi(v,E||[0,0],T||1,w,o,c instanceof Se?c.perspectiveTransform:[0,0]);if(t.prepareDrawProgram(s,h,p),c instanceof Se)c.boundsBuffer&&c.boundsSegments&&h.draw(s,l.TRIANGLES,n,e.StencilMode.disabled,_,e.CullFaceMode.disabled,I,o.id,c.boundsBuffer,t.quadTriangleIndexBuffer,c.boundsSegments);else {const{tileBoundsBuffer:i,tileBoundsIndexBuffer:r,tileBoundsSegments:a}=t.getTileBoundsBuffers(g);h.draw(s,l.TRIANGLES,n,x,_,e.CullFaceMode.disabled,I,o.id,i,r,a);}}t.resetStencilClippingMasks();},background:function(t,i,o,r){const n=o.paint.get(\"background-color\"),a=o.paint.get(\"background-opacity\");if(0===a)return;const s=t.context,l=s.gl,c=t.transform,h=c.tileSize,_=o.paint.get(\"background-pattern\");if(t.isPatternMissing(_))return;const u=!_&&1===n.a&&1===a&&t.opaquePassEnabledForLayer()?\"opaque\":\"translucent\";if(t.renderPass!==u)return;const d=e.StencilMode.disabled,p=t.depthModeForSublayer(0,\"opaque\"===u?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly),m=t.colorModeForRenderPass(),f=t.useProgram(_?\"backgroundPattern\":\"background\");let g,v=r;v||(g=t.getBackgroundTiles(),v=Object.values(g).map((e=>e.tileID))),_&&(s.activeTexture.set(l.TEXTURE0),t.imageManager.bind(t.context));const x=o.getCrossfadeParameters();for(const u of v){const v=u.toUnwrapped(),y=r?u.projMatrix:t.transform.calculateProjMatrix(v);t.prepareDrawTile();const b=i?i.getTile(u):g?g[u.key]:new e.Tile(u,h,c.zoom,t),w=_?Yi(y,a,t,_,{tileID:u,tileSize:h},x):Ki(y,a,n);t.prepareDrawProgram(s,f,v);const{tileBoundsBuffer:T,tileBoundsIndexBuffer:E,tileBoundsSegments:C}=t.getTileBoundsBuffers(b);f.draw(s,l.TRIANGLES,p,d,m,e.CullFaceMode.disabled,w,o.id,T,E,C);}},sky:function(t,i,o){const r=t.transform,n=\"mercator\"===r.projection.name||\"globe\"===r.projection.name?1:e.smoothstep(7,8,r.zoom),a=o.paint.get(\"sky-opacity\")*n;if(0===a)return;const s=t.context,l=o.paint.get(\"sky-type\"),c=new e.DepthMode(s.gl.LEQUAL,e.DepthMode.ReadOnly,[0,1]),h=t.frameCounter/1e3%1;\"atmosphere\"===l?\"offscreen\"===t.renderPass?o.needsSkyboxCapture(t)&&(function(t,i,o,r){const n=t.context,a=n.gl;let s=i.skyboxFbo;if(!s){s=i.skyboxFbo=n.createFramebuffer(32,32,!1),i.skyboxGeometry=new To(n),i.skyboxTexture=n.gl.createTexture(),a.bindTexture(a.TEXTURE_CUBE_MAP,i.skyboxTexture),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_MAG_FILTER,a.LINEAR);for(let e=0;e<6;++e)a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,a.RGBA,32,32,0,a.RGBA,a.UNSIGNED_BYTE,null);}n.bindFramebuffer.set(s.framebuffer),n.viewport.set([0,0,32,32]);const l=i.getCenter(t,!0),c=t.useProgram(\"skyboxCapture\"),h=new Float64Array(16);e.identity(h),e.rotateY(h,h,.5*-Math.PI),Eo(n,i,c,h,l,0),e.identity(h),e.rotateY(h,h,.5*Math.PI),Eo(n,i,c,h,l,1),e.identity(h),e.rotateX(h,h,.5*-Math.PI),Eo(n,i,c,h,l,2),e.identity(h),e.rotateX(h,h,.5*Math.PI),Eo(n,i,c,h,l,3),e.identity(h),Eo(n,i,c,h,l,4),e.identity(h),e.rotateY(h,h,Math.PI),Eo(n,i,c,h,l,5),n.viewport.set([0,0,t.width,t.height]);}(t,o),o.markSkyboxValid(t)):\"sky\"===t.renderPass&&function(t,i,o,r,n){const a=t.context,s=a.gl,l=t.transform,c=t.useProgram(\"skybox\");a.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_CUBE_MAP,i.skyboxTexture);const h=((e,t,i,o,r)=>({u_matrix:e,u_sun_direction:t,u_cubemap:0,u_opacity:o,u_temporal_offset:r}))(l.skyboxMatrix,i.getCenter(t,!1),0,r,n);t.prepareDrawProgram(a,c),c.draw(a,s.TRIANGLES,o,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,h,\"skybox\",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment);}(t,o,c,a,h):\"gradient\"===l&&\"sky\"===t.renderPass&&function(t,i,o,r,n){const a=t.context,s=a.gl,l=t.transform,c=t.useProgram(\"skyboxGradient\");i.skyboxGeometry||(i.skyboxGeometry=new To(a)),a.activeTexture.set(s.TEXTURE0);let h=i.colorRampTexture;h||(h=i.colorRampTexture=new e.Texture(a,i.colorRamp,s.RGBA)),h.bind(s.LINEAR,s.CLAMP_TO_EDGE);const _=((t,i,o,r,n)=>({u_matrix:t,u_color_ramp:0,u_center_direction:i,u_radius:e.degToRad(o),u_opacity:r,u_temporal_offset:n}))(l.skyboxMatrix,i.getCenter(t,!1),i.paint.get(\"sky-gradient-radius\"),r,n);t.prepareDrawProgram(a,c),c.draw(a,s.TRIANGLES,o,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,_,\"skyboxGradient\",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment);}(t,o,c,a,h);},debug:function(e,t,i){for(let o=0;o<i.length;o++)xo(e,t,i[o]);},custom:function(t,i,o){const r=t.context,n=o.implementation;if(t.transform.projection.unsupportedLayers&&t.transform.projection.unsupportedLayers.includes(\"custom\"))e.warnOnce(\"Custom layers are not yet supported with non-mercator projections. Use mercator to enable custom layers.\");else if(\"offscreen\"===t.renderPass){const e=n.prerender;e&&(t.setCustomLayerDefaults(),r.setColorMode(t.colorModeForRenderPass()),e.call(n,r.gl,t.transform.customLayerMatrix()),r.setDirty(),t.setBaseState());}else if(\"translucent\"===t.renderPass){t.setCustomLayerDefaults(),r.setColorMode(t.colorModeForRenderPass()),r.setStencilMode(e.StencilMode.disabled);const i=\"3d\"===n.renderingMode?new e.DepthMode(t.context.gl.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,e.DepthMode.ReadOnly);r.setDepthMode(i),n.render(r.gl,t.transform.customLayerMatrix()),r.setDirty(),t.setBaseState(),r.bindFramebuffer.set(null);}}};class Mo{constructor(t,i){this.context=new Ee(t),this.transform=i,this._tileTextures={},this.frameCopies=[],this.loadTimeStamps=[],this.setup(),this.numSublayers=e.SourceCache.maxUnderzooming+e.SourceCache.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new jt,this.gpuTimers={},this.frameCounter=0,this._backgroundTiles={},this._tileClippingMaskIDs=new Map,this._skippedStencilTileIDs=new Set;}updateTerrain(e,t){const i=!!e&&!!e.terrain&&this.transform.projection.supportsTerrain;if(!(i||this._terrain&&this._terrain.enabled))return;this._terrain||(this._terrain=new bi(this,e));const o=this._terrain;this.transform.elevation=i?o:null,o.update(e,this.transform,t);}_updateFog(e){const t=e.fog;if(!t||t.getOpacity(this.transform.pitch)<1||t.properties.get(\"horizon-blend\")<.03)return void(this.transform.fogCullDistSq=null);const[i,o]=t.getFovAdjustedRange(this.transform._fov);if(i>o)return void(this.transform.fogCullDistSq=null);const r=i+.78*(o-i);this.transform.fogCullDistSq=r*r;}get terrain(){return this.transform._terrainEnabled()&&this._terrain&&this._terrain.enabled?this._terrain:null}resize(t,i){if(this.width=t*e.exported.devicePixelRatio,this.height=i*e.exported.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const e of this.style.order)this.style._layers[e].resize();}setup(){const t=this.context,i=new e.StructArrayLayout2i4;i.emplaceBack(0,0),i.emplaceBack(e.EXTENT,0),i.emplaceBack(0,e.EXTENT),i.emplaceBack(e.EXTENT,e.EXTENT),this.tileExtentBuffer=t.createVertexBuffer(i,e.posAttributes.members),this.tileExtentSegments=e.SegmentVector.simpleSegment(0,0,4,2);const o=new e.StructArrayLayout2i4;o.emplaceBack(0,0),o.emplaceBack(e.EXTENT,0),o.emplaceBack(0,e.EXTENT),o.emplaceBack(e.EXTENT,e.EXTENT),this.debugBuffer=t.createVertexBuffer(o,e.posAttributes.members),this.debugSegments=e.SegmentVector.simpleSegment(0,0,4,5);const r=new e.StructArrayLayout2i4;r.emplaceBack(-1,-1),r.emplaceBack(1,-1),r.emplaceBack(-1,1),r.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(r,e.posAttributes.members),this.viewportSegments=e.SegmentVector.simpleSegment(0,0,4,2);const n=new e.StructArrayLayout4i8;n.emplaceBack(0,0,0,0),n.emplaceBack(e.EXTENT,0,e.EXTENT,0),n.emplaceBack(0,e.EXTENT,0,e.EXTENT),n.emplaceBack(e.EXTENT,e.EXTENT,e.EXTENT,e.EXTENT),this.mercatorBoundsBuffer=t.createVertexBuffer(n,e.boundsAttributes.members),this.mercatorBoundsSegments=e.SegmentVector.simpleSegment(0,0,4,2);const a=new e.StructArrayLayout3ui6;a.emplaceBack(0,1,2),a.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(a);const s=new e.StructArrayLayout1ui2;for(const e of [0,1,3,2,0])s.emplaceBack(e);this.debugIndexBuffer=t.createIndexBuffer(s),this.emptyTexture=new e.Texture(t,new e.RGBAImage({width:1,height:1},Uint8Array.of(0,0,0,0)),t.gl.RGBA),this.identityMat=e.create();const l=this.context.gl;this.stencilClearMode=new e.StencilMode({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO),this.loadTimeStamps.push(e.window.performance.now());}getMercatorTileBoundsBuffers(){return {tileBoundsBuffer:this.mercatorBoundsBuffer,tileBoundsIndexBuffer:this.quadTriangleIndexBuffer,tileBoundsSegments:this.mercatorBoundsSegments}}getTileBoundsBuffers(e){return e._makeTileBoundsBuffers(this.context,this.transform.projection),e._tileBoundsBuffer?{tileBoundsBuffer:e._tileBoundsBuffer,tileBoundsIndexBuffer:e._tileBoundsIndexBuffer,tileBoundsSegments:e._tileBoundsSegments}:this.getMercatorTileBoundsBuffers()}clearStencil(){const t=this.context,i=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0,this._tileClippingMaskIDs.clear(),this._skippedStencilTileIDs.clear(),this.useProgram(\"clippingMask\").draw(t,i.TRIANGLES,e.DepthMode.disabled,this.stencilClearMode,e.ColorMode.disabled,e.CullFaceMode.disabled,mi(this.identityMat),\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);}resetStencilClippingMasks(){this.terrain||(this.currentStencilSource=void 0,this._tileClippingMaskIDs.clear(),this._skippedStencilTileIDs.clear());}_renderTileClippingMasks(t,i,o){if(!i||this.currentStencilSource===i.id||!t.isTileClipped()||!o||0===o.length)return;const r=[];let n=!1;if(this._tileClippingMaskIDs&&!this.terrain){for(const e of o)if(this._tileClippingMaskIDs.has(e.key)||(n=!0),this._skippedStencilTileIDs.has(e.key)){if(!i.getTile(e).getBucket(t))continue;this._skippedStencilTileIDs.delete(e.key),r.push(e);}if(!n&&0===r.length)return}const a=this.context,s=a.gl;a.setColorMode(e.ColorMode.disabled),a.setDepthMode(e.DepthMode.disabled);const l=this.useProgram(\"clippingMask\"),c=t=>{const o=i.getTile(t),{tileBoundsBuffer:r,tileBoundsIndexBuffer:n,tileBoundsSegments:c}=this.getTileBoundsBuffers(o);l.draw(a,s.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:s.GREATER,mask:255},this._tileClippingMaskIDs.get(t.key)||0,255,s.KEEP,s.KEEP,s.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,mi(t.projMatrix),\"$clipping\",r,n,c);};if(!n&&r.length>0)for(const e of r)c(e);else {(0===this._tileClippingMaskIDs.size||this.nextStencilID+o.length>256)&&this.clearStencil(),this._tileClippingMaskIDs.clear(),this._skippedStencilTileIDs.clear();for(const e of o)this._tileClippingMaskIDs.set(e.key,this.nextStencilID++),i.getTile(e).getBucket(t)?c(e):this._skippedStencilTileIDs.add(e.key);}0===this._skippedStencilTileIDs.size&&(this.currentStencilSource=i.id);}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,i=this.context.gl;return new e.StencilMode({func:i.NOTEQUAL,mask:255},t,255,i.KEEP,i.KEEP,i.REPLACE)}stencilModeForClipping(t){if(this.terrain)return this.terrain.stencilModeForRTTOverlap(t);const i=this.context.gl;return new e.StencilMode({func:i.EQUAL,mask:255},this._tileClippingMaskIDs.get(t.key)||0,0,i.KEEP,i.KEEP,i.REPLACE)}stencilConfigForOverlap(t){const i=this.context.gl,o=t.sort(((e,t)=>t.overscaledZ-e.overscaledZ)),r=o[o.length-1].overscaledZ,n=o[0].overscaledZ-r+1;if(n>1){this.currentStencilSource=void 0,this.nextStencilID+n>256&&this.clearStencil();const t={};for(let o=0;o<n;o++)t[o+r]=new e.StencilMode({func:i.GEQUAL,mask:255},o+this.nextStencilID,255,i.KEEP,i.KEEP,i.REPLACE);return this.nextStencilID+=n,[t,o]}return [{[r]:e.StencilMode.disabled},o]}colorModeForRenderPass(){const t=this.context.gl;if(this._showOverdrawInspector){const i=1/8;return new e.ColorMode([t.CONSTANT_COLOR,t.ONE],new e.Color(i,i,i,0),[!0,!0,!0,!0])}return \"opaque\"===this.renderPass?e.ColorMode.unblended:e.ColorMode.alphaBlended}depthModeForSublayer(t,i,o){if(!this.opaquePassEnabledForLayer())return e.DepthMode.disabled;const r=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new e.DepthMode(o||this.context.gl.LEQUAL,i,[r,r])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(t,i){this.style=t,this.options=i,this.lineAtlas=t.lineAtlas,this.imageManager=t.imageManager,this.glyphManager=t.glyphManager,this.symbolFadeChange=t.placement.symbolFadeChange(e.exported.now()),this.imageManager.beginFrame();const o=this.style.order,r=this.style._sourceCaches;for(const e in r){const t=r[e];t.used&&t.prepare(this.context);}const n={},a={},s={};for(const e in r){const t=r[e];n[e]=t.getVisibleCoordinates(),a[e]=n[e].slice().reverse(),s[e]=t.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(let e=0;e<o.length;e++)if(this.style._layers[o[e]].is3D()){this.opaquePassCutoff=e;break}if(this.terrain&&(this.terrain.updateTileBinding(s),this.opaquePassCutoff=0),\"globe\"!==this.transform.projection.name||this.globeSharedBuffers||(this.globeSharedBuffers=new e.GlobeSharedBuffers(this.context)),!e.isMapAuthenticated(this.context.gl))return;this.renderPass=\"offscreen\";for(const e of o){const i=this.style._layers[e],o=t._getLayerSourceCache(i);if(!i.hasOffscreenPass()||i.isHidden(this.transform.zoom))continue;const r=o?a[o.id]:void 0;(\"custom\"===i.type||i.isSky()||r&&r.length)&&this.renderLayer(this,o,i,r);}this.depthRangeFor3D=[0,1-(t.order.length+2)*this.numSublayers*this.depthEpsilon],this.terrain&&(this.style.hasSymbolLayers()||this.style.hasCircleLayers())&&this.terrain.drawDepth(),this.context.bindFramebuffer.set(null),this.context.viewport.set([0,0,this.width,this.height]);let l=e.Color.transparent;if(this.style.fog&&this.style.fog.getOpacity(this.transform.pitch)&&(l=this.style.fog.properties.get(\"color\")),this.context.clear({color:i.showOverdrawInspector?e.Color.black:l,depth:1}),this.clearStencil(),this._showOverdrawInspector=i.showOverdrawInspector,this.renderPass=\"opaque\",!this.terrain)for(this.currentLayer=o.length-1;this.currentLayer>=0;this.currentLayer--){const e=this.style._layers[o[this.currentLayer]],i=t._getLayerSourceCache(e);if(e.isSky())continue;const r=i?a[i.id]:void 0;this._renderTileClippingMasks(e,i,r),this.renderLayer(this,i,e,r);}if(this.renderPass=\"sky\",(e.globeToMercatorTransition(this.transform.zoom)>0||\"globe\"!==this.transform.projection.name)&&this.transform.isHorizonVisible())for(this.currentLayer=0;this.currentLayer<o.length;this.currentLayer++){const e=this.style._layers[o[this.currentLayer]],i=t._getLayerSourceCache(e);e.isSky()&&this.renderLayer(this,i,e,i?a[i.id]:void 0);}for(\"globe\"===this.transform.projection.name&&function(t){const i=t.context,o=i.gl,r=t.transform,n=new e.DepthMode(o.LEQUAL,e.DepthMode.ReadOnly,[0,1]),a=t.useProgram(\"globeAtmosphere\"),s=r.centerOffset,l=r._camera.getCameraToClipPerspective(r._fov,r.width/r.height,r._nearZ,r._farZ);l[8]=2*-s.x/r.width,l[9]=2*s.y/r.height;const c=e.invert([],l),h=e.mul([],c,r.projMatrix),_={u_frustum_tl:Co([-1,1,1],c),u_frustum_tr:Co([1,1,1],c),u_frustum_br:Co([1,-1,1],c),u_frustum_bl:Co([-1,-1,1],c),u_globe_pos:Co([r.globeMatrix[12],r.globeMatrix[13],r.globeMatrix[14]],h),u_globe_radius:r.worldSize/2/Math.PI-1,u_opacity:1-e.globeToMercatorTransition(r.zoom),u_fadeout_range:2,u_start_color:[1,1,1],u_end_color:[.0118,.7451,.9882]};t.prepareDrawProgram(i,a);const u=t.globeSharedBuffers;u&&a.draw(i,o.TRIANGLES,n,e.StencilMode.disabled,e.ColorMode.alphaBlended,e.CullFaceMode.backCW,_,\"skybox\",u.atmosphereVertexBuffer,u.atmosphereIndexBuffer,u.atmosphereSegments);}(this),this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer<o.length;){const e=this.style._layers[o[this.currentLayer]],i=t._getLayerSourceCache(e);if(e.isSky()){++this.currentLayer;continue}if(this.terrain&&this.style.isLayerDraped(e)){if(e.isHidden(this.transform.zoom)){++this.currentLayer;continue}this.currentLayer=this.terrain.renderBatch(this.currentLayer);continue}const r=i?(\"symbol\"===e.type?s:a)[i.id]:void 0;this._renderTileClippingMasks(e,i,i?n[i.id]:void 0),this.renderLayer(this,i,e,r),++this.currentLayer;}if(this.terrain&&this.terrain.postRender(),this.options.showTileBoundaries||this.options.showQueryGeometry){let i=null;e.values(this.style._layers).forEach((e=>{const o=t._getLayerSourceCache(e);o&&!e.isHidden(this.transform.zoom)&&(!i||i.getSource().maxzoom<o.getSource().maxzoom)&&(i=o);})),i&&this.options.showTileBoundaries&&Io.debug(this,i,i.getVisibleCoordinates());}this.options.showPadding&&function(e){const t=e.transform.padding;fo(e,e.transform.height-(t.top||0),3,ho),fo(e,t.bottom||0,3,_o),go(e,t.left||0,3,uo),go(e,e.transform.width-(t.right||0),3,po);const i=e.transform.centerPoint;!function(e,t,i,o){vo(e,t-1,i-10,2,20,o),vo(e,t-10,i-1,20,2,o);}(e,i.x,e.transform.height-i.y,mo);}(this),this.context.setDefault(),this.frameCounter=(this.frameCounter+1)%Number.MAX_SAFE_INTEGER,this.tileLoaded&&this.options.speedIndexTiming&&(this.loadTimeStamps.push(e.window.performance.now()),this.saveCanvasCopy());}renderLayer(e,t,i,o){i.isHidden(this.transform.zoom)||(\"background\"===i.type||\"sky\"===i.type||\"custom\"===i.type||o&&o.length)&&(this.id=i.id,this.gpuTimingStart(i),e.transform.projection.unsupportedLayers&&e.transform.projection.unsupportedLayers.includes(i.type)||Io[i.type](e,t,i,o,this.style.placement.variableOffsets,this.options.isInitialLoad),this.gpuTimingEnd());}gpuTimingStart(e){if(!this.options.gpuTiming)return;const t=this.context.extTimerQuery;let i=this.gpuTimers[e.id];i||(i=this.gpuTimers[e.id]={calls:0,cpuTime:0,query:t.createQueryEXT()}),i.calls++,t.beginQueryEXT(t.TIME_ELAPSED_EXT,i.query);}gpuTimingEnd(){if(!this.options.gpuTiming)return;const e=this.context.extTimerQuery;e.endQueryEXT(e.TIME_ELAPSED_EXT);}collectGpuTimers(){const e=this.gpuTimers;return this.gpuTimers={},e}queryGpuTimers(e){const t={};for(const i in e){const o=e[i],r=this.context.extTimerQuery,n=r.getQueryObjectEXT(o.query,r.QUERY_RESULT_EXT)/1e6;r.deleteQueryEXT(o.query),t[i]=n;}return t}translatePosMatrix(t,i,o,r,n){if(!o[0]&&!o[1])return t;const a=n?\"map\"===r?this.transform.angle:0:\"viewport\"===r?-this.transform.angle:0;if(a){const e=Math.sin(a),t=Math.cos(a);o=[o[0]*t-o[1]*e,o[0]*e+o[1]*t];}const s=[n?o[0]:L(i,o[0],this.transform.zoom),n?o[1]:L(i,o[1],this.transform.zoom),0],l=new Float32Array(16);return e.translate(l,t,s),l}saveTileTexture(e){const t=this._tileTextures[e.size[0]];t?t.push(e):this._tileTextures[e.size[0]]=[e];}getTileTexture(e){const t=this._tileTextures[e];return t&&t.length>0?t.pop():null}isPatternMissing(e){if(!e)return !1;if(!e.from||!e.to)return !0;const t=this.imageManager.getPattern(e.from.toString()),i=this.imageManager.getPattern(e.to.toString());return !t||!i}currentGlobalDefines(){const e=this.terrain&&this.terrain.renderingToTexture,t=this.style&&this.style.fog,i=[];return this.terrain&&!this.terrain.renderingToTexture&&i.push(\"TERRAIN\"),t&&!e&&0!==t.getOpacity(this.transform.pitch)&&i.push(\"FOG\"),e&&i.push(\"RENDER_TO_TEXTURE\"),this._showOverdrawInspector&&i.push(\"OVERDRAW_INSPECTOR\"),i}useProgram(e,t,i){this.cache=this.cache||{};const o=i||[],r=this.currentGlobalDefines().concat(o),n=Ti.cacheKey(e,r,t);return this.cache[n]||(this.cache[n]=new Ti(this.context,e,ti[e],t,Ji[e],r)),this.cache[n]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.frontFace.setDefault(),this.context.cullFaceSide.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=e.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new e.Texture(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){this._terrain&&this._terrain.destroy(),this.globeSharedBuffers&&this.globeSharedBuffers.destroy(),this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy();}prepareDrawTile(){this.terrain&&this.terrain.prepareDrawTile();}prepareDrawProgram(e,t,i){if(this.terrain&&this.terrain.renderingToTexture)return;const o=this.style.fog;if(o){const r=o.getOpacity(this.transform.pitch);0!==r&&t.setFogUniformValues(e,((e,t,i,o)=>{const r=t.properties.get(\"color\"),n=e.frameCounter/1e3%1,a=[r.r/r.a,r.g/r.a,r.b/r.a,o];return {u_fog_matrix:i?e.transform.calculateFogTileMatrix(i):e.identityMat,u_fog_range:t.getFovAdjustedRange(e.transform._fov),u_fog_color:a,u_fog_horizon_blend:t.properties.get(\"horizon-blend\"),u_fog_temporal_offset:n}})(this,o,i,r));}}setTileLoadedFlag(e){this.tileLoaded=e;}saveCanvasCopy(){this.frameCopies.push(this.canvasCopy()),this.tileLoaded=!1;}canvasCopy(){const e=this.context.gl,t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.copyTexImage2D(e.TEXTURE_2D,0,e.RGBA,0,0,e.drawingBufferWidth,e.drawingBufferHeight,0),t}getCanvasCopiesAndTimestamps(){return {canvasCopies:this.frameCopies,timeStamps:this.loadTimeStamps}}averageElevationNeedsEasing(){if(!this.transform._elevation)return !1;const e=this.style&&this.style.fog;return !!e&&0!==e.getOpacity(this.transform.pitch)}getBackgroundTiles(){const t=this._backgroundTiles,i=this._backgroundTiles={},o=this.transform.coveringTiles({tileSize:512});for(const r of o)i[r.key]=t[r.key]||new e.Tile(r,512,this.transform.tileZoom,this);return i}clearBackgroundTiles(){this._backgroundTiles={};}}class So{constructor(e=0,t=0,i=0,o=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(o)||o<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=e,this.bottom=t,this.left=i,this.right=o;}interpolate(t,i,o){return null!=i.top&&null!=t.top&&(this.top=e.number(t.top,i.top,o)),null!=i.bottom&&null!=t.bottom&&(this.bottom=e.number(t.bottom,i.bottom,o)),null!=i.left&&null!=t.left&&(this.left=e.number(t.left,i.left,o)),null!=i.right&&null!=t.right&&(this.right=e.number(t.right,i.right,o)),this}getCenter(t,i){const o=e.clamp((this.left+t-this.right)/2,0,t),r=e.clamp((this.top+i-this.bottom)/2,0,i);return new e.pointGeometry(o,r)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new So(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function zo(t,i){const o=e.getColumn(t,3);e.fromQuat(t,i),e.setColumn(t,3,o);}function Do(t,i){const o=e.identity$1([]);return e.rotateZ$1(o,o,-i),e.rotateX$1(o,o,-t),o}function Po(t,i){const o=[t[0],t[1],0],r=[i[0],i[1],0];if(e.length(o)>=1e-15){const t=e.normalize([],o);e.scale$2(r,t,e.dot(r,t)),i[0]=r[0],i[1]=r[1];}const n=e.cross([],i,t);if(e.len(n)<1e-15)return null;const a=Math.atan2(-n[1],n[0]);return Do(Math.atan2(Math.sqrt(t[0]*t[0]+t[1]*t[1]),-t[2]),a)}class Ao{constructor(e,t){this.position=e,this.orientation=t;}get position(){return this._position}set position(t){if(t){const i=t instanceof e.MercatorCoordinate?t:new e.MercatorCoordinate(t[0],t[1],t[2]);this._renderWorldCopies&&(i.x=e.wrap(i.x,0,1)),this._position=i;}else this._position=null;}lookAtPoint(t,i){if(this.orientation=null,!this.position)return;const o=this._elevation?this._elevation.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(t)):0,r=this.position,n=e.MercatorCoordinate.fromLngLat(t,o),a=[n.x-r.x,n.y-r.y,n.z-r.z];i||(i=[0,0,1]),i[2]=Math.abs(i[2]),this.orientation=Po(a,i);}setPitchBearing(t,i){this.orientation=Do(e.degToRad(t),e.degToRad(-i));}}class Lo{constructor(t,i){this._transform=e.identity([]),this.orientation=i,this.position=t;}get mercatorPosition(){const t=this.position;return new e.MercatorCoordinate(t[0],t[1],t[2])}get position(){const t=e.getColumn(this._transform,3);return [t[0],t[1],t[2]]}set position(t){var i;t&&e.setColumn(this._transform,3,[(i=t)[0],i[1],i[2],1]);}get orientation(){return this._orientation}set orientation(t){this._orientation=t||e.identity$1([]),t&&zo(this._transform,this._orientation);}getPitchBearing(){const e=this.forward(),t=this.right();return {bearing:Math.atan2(-t[1],t[0]),pitch:Math.atan2(Math.sqrt(e[0]*e[0]+e[1]*e[1]),-e[2])}}setPitchBearing(e,t){this._orientation=Do(e,t),zo(this._transform,this._orientation);}forward(){const t=e.getColumn(this._transform,2);return [-t[0],-t[1],-t[2]]}up(){const t=e.getColumn(this._transform,1);return [-t[0],-t[1],-t[2]]}right(){const t=e.getColumn(this._transform,0);return [t[0],t[1],t[2]]}getCameraToWorld(t,i){const o=new Float64Array(16);return e.invert(o,this.getWorldToCamera(t,i)),o}getWorldToCameraPosition(t,i,o){const r=this.position;e.scale$2(r,r,-t);const n=new Float64Array(16);return e.fromScaling(n,[o,o,o]),e.translate(n,n,r),n[10]*=i,n}getWorldToCamera(t,i){const o=new Float64Array(16),r=new Float64Array(4),n=this.position;return e.conjugate(r,this._orientation),e.scale$2(n,n,-t),e.fromQuat(o,r),e.translate(o,o,n),o[1]*=-1,o[5]*=-1,o[9]*=-1,o[13]*=-1,o[8]*=i,o[9]*=i,o[10]*=i,o[11]*=i,o}getCameraToClipPerspective(t,i,o,r){const n=new Float64Array(16);return e.perspective(n,t,i,o,r),n}getDistanceToElevation(t){const i=0===t?0:e.mercatorZfromAltitude(t,this.position[1]),o=this.forward();return (i-this.position[2])/o[2]}clone(){return new Lo([...this.position],[...this.orientation])}}function Ro(t,i){const o=Oo(t),r=function(t,i,o,r,n){const a=new e.LngLat(o.lng-180*Bo,o.lat),s=new e.LngLat(o.lng+180*Bo,o.lat),l=t.project(a.lng,a.lat),c=t.project(s.lng,s.lat),h=-Math.atan2(c.y-l.y,c.x-l.x),_=e.MercatorCoordinate.fromLngLat(o);_.y=e.clamp(_.y,-.999975,.999975);const u=_.toLngLat(),d=t.project(u.lng,u.lat),p=e.MercatorCoordinate.fromLngLat(u);p.x+=Bo;const m=p.toLngLat(),f=t.project(m.lng,m.lat),g=Uo(f.x-d.x,f.y-d.y,h),v=e.MercatorCoordinate.fromLngLat(u);v.y+=Bo;const x=v.toLngLat(),y=t.project(x.lng,x.lat),b=Uo(y.x-d.x,y.y-d.y,h),w=Math.abs(g.x)/Math.abs(b.y),T=e.identity([]);e.rotateZ(T,T,-h*(1-(n?0:r)));const E=e.identity([]);return e.scale(E,E,[1,1-(1-w)*r,1]),E[4]=-b.x/b.y*r,e.rotateZ(E,E,h),e.multiply$1(E,T,E),E}(t.projection,0,t.center,o,i),n=ko(t);return e.scale(r,r,[n,n,1]),r}function ko(t){const i=t.projection,o=Oo(t),r=Fo(i,t.center),n=Fo(i,e.LngLat.convert(i.center));return Math.pow(2,r*o+(1-o)*n)}function Oo(t){const i=t.projection.range;if(!i)return 0;const o=Math.max(t.width,t.height),r=Math.log(o/1024)/Math.LN2;return e.smoothstep(i[0]+r,i[1]+r,t.zoom)}const Bo=1/4e4;function Fo(t,i){const o=e.clamp(i.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),r=new e.LngLat(i.lng-180*Bo,o),n=new e.LngLat(i.lng+180*Bo,o),a=t.project(r.lng,o),s=t.project(n.lng,o),l=e.MercatorCoordinate.fromLngLat(r),c=e.MercatorCoordinate.fromLngLat(n),h=s.x-a.x,_=s.y-a.y,u=c.x-l.x,d=c.y-l.y,p=Math.sqrt((u*u+d*d)/(h*h+_*_));return Math.log(p)/Math.LN2}function Uo(e,t,i){const o=Math.cos(i),r=Math.sin(i);return {x:e*o-t*r,y:e*r+t*o}}class No{constructor(t,i,o,r,n,a,s){this.tileSize=512,this._renderWorldCopies=void 0===n||n,this._minZoom=t||0,this._maxZoom=i||22,this._minPitch=null==o?0:o,this._maxPitch=null==r?60:r,this.setProjection(a),this.setMaxBounds(s),this.width=0,this.height=0,this._center=new e.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._nearZ=0,this._farZ=0,this._unmodified=!0,this._edgeInsets=new So,this._projMatrixCache={},this._alignedProjMatrixCache={},this._fogTileMatrixCache={},this._distanceTileDataCache={},this._camera=new Lo,this._centerAltitude=0,this._centerAltitudeValidForExaggeration=0,this._averageElevation=0,this.cameraElevationReference=\"ground\",this._projectionScaler=1,this._horizonShift=.1;}clone(){const e=new No(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies,this.getProjection());return e._elevation=this._elevation,e._centerAltitude=this._centerAltitude,e._centerAltitudeValidForExaggeration=this._centerAltitudeValidForExaggeration,e.tileSize=this.tileSize,e.width=this.width,e.height=this.height,e.cameraElevationReference=this.cameraElevationReference,e._center=this._center,e._setZoom(this.zoom),e._seaLevelZoom=this._seaLevelZoom,e.angle=this.angle,e._fov=this._fov,e._pitch=this._pitch,e._nearZ=this._nearZ,e._farZ=this._farZ,e._averageElevation=this._averageElevation,e._unmodified=this._unmodified,e._edgeInsets=this._edgeInsets.clone(),e._camera=this._camera.clone(),e._calcMatrices(),e.freezeTileCoverage=this.freezeTileCoverage,e}get elevation(){return this._elevation}set elevation(e){this._elevation!==e&&(this._elevation=e,this._updateCameraOnTerrain(),this._calcMatrices());}updateElevation(e){const t=this._elevation&&this._elevation.exaggeration()!==this._centerAltitudeValidForExaggeration;(null==this._seaLevelZoom||t)&&this._updateCameraOnTerrain(),(e||t)&&this._constrainCameraAltitude(),this._calcMatrices();}getProjection(){return e.pick(this.projection,[\"name\",\"center\",\"parallels\"])}setProjection(t){null==t&&(t={name:\"mercator\"}),this.projectionOptions=t;const i=this.projection?this.getProjection():void 0;this.projection=e.getProjection(t);const o=this.getProjection();return r(i,o)?null:(this._calcMatrices(),o)}get minZoom(){return this._minZoom}set minZoom(e){this._minZoom!==e&&(this._minZoom=e,this.zoom=Math.max(this.zoom,e));}get maxZoom(){return this._maxZoom}set maxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.zoom=Math.min(this.zoom,e));}get minPitch(){return this._minPitch}set minPitch(e){this._minPitch!==e&&(this._minPitch=e,this.pitch=Math.max(this.pitch,e));}get maxPitch(){return this._maxPitch}set maxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.pitch=Math.min(this.pitch,e));}get renderWorldCopies(){return this._renderWorldCopies&&!0===this.projection.supportsWorldCopies}set renderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e;}get worldSize(){return this.tileSize*this.scale}get cameraWorldSize(){const e=Math.max(this._camera.getDistanceToElevation(this._averageElevation),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(e))}get pixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.worldSize)}get cameraPixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.cameraWorldSize)}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new e.pointGeometry(this.width,this.height)}get bearing(){return e.wrap(this.rotation,-180,180)}set bearing(e){this.rotation=e;}get rotation(){return -this.angle/Math.PI*180}set rotation(t){const i=-t*Math.PI/180;var o;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=(o=new e.ARRAY_TYPE(4),e.ARRAY_TYPE!=Float32Array&&(o[1]=0,o[2]=0),o[0]=1,o[3]=1,o),function(e,t,i){var o=t[0],r=t[1],n=t[2],a=t[3],s=Math.sin(i),l=Math.cos(i);e[0]=o*l+n*s,e[1]=r*l+a*s,e[2]=o*-s+n*l,e[3]=r*-s+a*l;}(this.rotationMatrix,this.rotationMatrix,this.angle));}get pitch(){return this._pitch/Math.PI*180}set pitch(t){const i=e.clamp(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());}get fov(){return this._fov/Math.PI*180}set fov(e){e=Math.max(.01,Math.min(60,e)),this._fov!==e&&(this._unmodified=!1,this._fov=e/180*Math.PI,this._calcMatrices());}get averageElevation(){return this._averageElevation}set averageElevation(e){this._averageElevation=e,this._calcFogMatrices(),this._distanceTileDataCache={};}get zoom(){return this._zoom}set zoom(e){const t=Math.min(Math.max(e,this.minZoom),this.maxZoom);this._zoom!==t&&(this._unmodified=!1,this._setZoom(t),this._updateSeaLevelZoom(),this._constrain(),this._calcMatrices());}_setZoom(e){this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom;}_updateCameraOnTerrain(){if(!this._elevation||!this._elevation.isDataAvailableAtPoint(this.locationCoordinate(this.center)))return this._centerAltitude=0,this._seaLevelZoom=null,void(this._centerAltitudeValidForExaggeration=0);const e=this._elevation;this._centerAltitude=e.getAtPointOrZero(this.locationCoordinate(this.center)),this._centerAltitudeValidForExaggeration=e.exaggeration(),this._updateSeaLevelZoom();}_updateSeaLevelZoom(){0!==this._centerAltitudeValidForExaggeration&&(this._seaLevelZoom=this._zoomFromMercatorZ((this.pixelsPerMeter*this._centerAltitude+this.cameraToCenterDistance)/this.worldSize));}sampleAverageElevation(){if(!this._elevation)return 0;const t=this._elevation,i=[[.5,.2],[.3,.5],[.5,.5],[.7,.5],[.5,.8]],o=this.horizonLineFromTop();let r=0,n=0;for(let a=0;a<i.length;a++){const s=new e.pointGeometry(i[a][0]*this.width,o+i[a][1]*(this.height-o)),l=t.pointCoordinate(s);if(!l)continue;const c=1/Math.hypot(l[0]-this._camera.position[0],l[1]-this._camera.position[1]);r+=l[3]*c,n+=c;}return 0===n?NaN:r/n}get center(){return this._center}set center(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this._unmodified=!1,this._center=e,this._terrainEnabled()&&(\"ground\"===this.cameraElevationReference?this._updateCameraOnTerrain():this._updateZoomFromElevation()),this._constrain(),this._calcMatrices());}_updateZoomFromElevation(){if(null==this._seaLevelZoom||!this._elevation)return;const e=this._seaLevelZoom,t=this._elevation.getAtPointOrZero(this.locationCoordinate(this.center)),i=this.pixelsPerMeter/this.worldSize*t,o=this._mercatorZfromZoom(e),r=this._mercatorZfromZoom(this._maxZoom),n=Math.max(o-i,r);this._setZoom(this._zoomFromMercatorZ(n));}get padding(){return this._edgeInsets.toJSON()}set padding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this._calcMatrices());}computeZoomRelativeTo(t){const i=this.rayIntersectionCoordinate(this.pointRayIntersection(this.centerPoint,t.toAltitude()));let o;o=t.z<this._camera.position[2]?[i.x,i.y,i.z]:[t.x,t.y,t.z];const r=e.length(e.sub([],this._camera.position,o));return e.clamp(this._zoomFromMercatorZ(r),this._minZoom,this._maxZoom)}setFreeCameraOptions(t){if(!this.height)return;if(!t.position&&!t.orientation)return;this._updateCameraState();let i=!1;if(t.orientation&&!e.exactEquals(t.orientation,this._camera.orientation)&&(i=this._setCameraOrientation(t.orientation)),t.position){const o=[t.position.x,t.position.y,t.position.z];e.exactEquals$1(o,this._camera.position)||(this._setCameraPosition(o),i=!0);}i&&(this._updateStateFromCamera(),this.recenterOnTerrain());}getFreeCameraOptions(){this._updateCameraState();const t=this._camera.position,i=new Ao;return i.position=new e.MercatorCoordinate(t[0],t[1],t[2]),i.orientation=this._camera.orientation,i._elevation=this.elevation,i._renderWorldCopies=this.renderWorldCopies,i}_setCameraOrientation(t){if(!e.length$1(t))return !1;e.normalize$1(t,t);const i=e.transformQuat([],[0,0,-1],t),o=e.transformQuat([],[0,-1,0],t);if(o[2]<0)return !1;const r=Po(i,o);return !!r&&(this._camera.orientation=r,!0)}_setCameraPosition(t){const i=this.zoomScale(this.minZoom)*this.tileSize,o=this.zoomScale(this.maxZoom)*this.tileSize,r=this.cameraToCenterDistance;t[2]=e.clamp(t[2],r/o,r/i),this._camera.position=t;}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}get fovAboveCenter(){return this._fov*(.5+this.centerOffset.y/this.height)}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,i){this._unmodified=!1,this._edgeInsets.interpolate(e,t,i),this._constrain(),this._calcMatrices();}coveringZoomLevel(e){const t=(e.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/e.tileSize));return Math.max(0,t)}getVisibleUnwrappedCoordinates(t){const i=[new e.UnwrappedTileID(0,t)];if(this.renderWorldCopies){const o=this.pointCoordinate(new e.pointGeometry(0,0)),r=this.pointCoordinate(new e.pointGeometry(this.width,0)),n=this.pointCoordinate(new e.pointGeometry(this.width,this.height)),a=this.pointCoordinate(new e.pointGeometry(0,this.height)),s=Math.floor(Math.min(o.x,r.x,n.x,a.x)),l=Math.floor(Math.max(o.x,r.x,n.x,a.x)),c=1;for(let o=s-c;o<=l+c;o++)0!==o&&i.push(new e.UnwrappedTileID(o,t));}return i}coveringTiles(t){let i=this.coveringZoomLevel(t);const o=i,r=this.elevation&&!t.isTerrainDEM,n=\"mercator\"===this.projection.name;if(void 0!==t.minzoom&&i<t.minzoom)return [];void 0!==t.maxzoom&&i>t.maxzoom&&(i=t.maxzoom);const a=this.locationCoordinate(this.center),s=this.center.lat,l=1<<i,c=[l*a.x,l*a.y,0],h=\"globe\"===this.projection.name,_=!h,u=e.Frustum.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,i,_),d=h?this._camera.mercatorPosition:this.pointCoordinate(this.getCameraPoint()),p=l*e.mercatorZfromAltitude(1,this.center.lat),m=this._camera.position[2]/e.mercatorZfromAltitude(1,this.center.lat),f=[l*d.x,l*d.y,m*(_?1:p)],g=this.cameraToCenterDistance/t.tileSize*(t.roundZoom?1:.502),v=this.pitch<=60&&this._edgeInsets.top<=this._edgeInsets.bottom&&!this._elevation&&!this.projection.isReprojectedInTileSpace?i:0,x=t.isTerrainDEM&&this._elevation?1e4*this._elevation.exaggeration():this._centerAltitude,y=t.isTerrainDEM?-x:this._elevation?this._elevation.getMinElevationBelowMSL():0,b=this.projection.isReprojectedInTileSpace?ko(this):1,w=t=>{const i=1/4e4,o=new e.MercatorCoordinate(t.x+i,t.y,t.z),r=new e.MercatorCoordinate(t.x,t.y+i,t.z),n=t.toLngLat(),a=o.toLngLat(),s=r.toLngLat(),l=this.locationCoordinate(n),c=this.locationCoordinate(a),h=this.locationCoordinate(s),_=Math.hypot(c.x-l.x,c.y-l.y),u=Math.hypot(h.x-l.x,h.y-l.y);return Math.sqrt(_*u)*b/i},T=t=>{const i=x,o=y;return {aabb:e.tileAABB(this,l,0,0,0,t,o,i,this.projection),zoom:0,x:0,y:0,minZ:o,maxZ:i,wrap:t,fullyVisible:!1}},E=[];let C=[];const I=i,M=t.reparseOverscaled?o:i,S=e=>e*e,z=S((m-this._centerAltitude)*p),D=e=>{if(!this._elevation||!e.tileID||!n)return;const t=this._elevation.getMinMaxForTile(e.tileID),i=e.aabb;t?(i.min[2]=t.min,i.max[2]=t.max,i.center[2]=(i.min[2]+i.max[2])/2):(e.shouldSplit=P(e),e.shouldSplit||(i.min[2]=i.max[2]=i.center[2]=this._centerAltitude));},P=t=>{if(t.zoom<v)return !0;if(t.zoom===I)return !1;if(null!=t.shouldSplit)return t.shouldSplit;const i=t.aabb.distanceX(f),n=t.aabb.distanceY(f);let a=z,l=1;if(h){a=S(t.aabb.distanceZ(f));const i=Math.pow(2,t.zoom),o=e.latFromMercatorY((t.y+1)/i),r=e.latFromMercatorY(t.y/i),n=Math.min(Math.max(s,o),r),c=e.circumferenceAtLatitude(n)/e.circumferenceAtLatitude(s);l=Math.min(c,1);}else if(r&&(a=S(t.aabb.distanceZ(f)*p)),this.projection.isReprojectedInTileSpace&&o<=5){const i=Math.pow(2,t.zoom),o=w(new e.MercatorCoordinate((t.x+.5)/i,(t.y+.5)/i));l=o>.85?1:o;}const c=i*i+n*n+a;return c<S((1<<I-t.zoom)*g*l*((e,t)=>{if(t*S(.707)<e)return 1;const i=Math.sqrt(t/e);return i/(1.4144271570014144+(Math.pow(1.1,i-1.4144271570014144+1)-1)/(1.1-1)-1)})(Math.max(a,z),c))};if(this.renderWorldCopies)for(let e=1;e<=3;e++)E.push(T(-e)),E.push(T(e));for(E.push(T(0));E.length>0;){const o=E.pop(),a=o.x,s=o.y;let _=o.fullyVisible;if(!_){const e=o.aabb.intersects(u);if(0===e)continue;_=2===e;}if(o.zoom!==I&&P(o))for(let t=0;t<4;t++){const i=(a<<1)+t%2,c=(s<<1)+(t>>1),u={aabb:n?o.aabb.quadrant(t):e.tileAABB(this,l,o.zoom+1,i,c,o.wrap,o.minZ,o.maxZ,this.projection),zoom:o.zoom+1,x:i,y:c,wrap:o.wrap,fullyVisible:_,tileID:void 0,shouldSplit:void 0,minZ:o.minZ,maxZ:o.maxZ};r&&!h&&(u.tileID=new e.OverscaledTileID(o.zoom+1===I?M:o.zoom+1,o.wrap,o.zoom+1,i,c),D(u)),E.push(u);}else {const r=o.zoom===I?M:o.zoom;if(t.minzoom&&t.minzoom>r)continue;const n=c[0]-(.5+a+(o.wrap<<o.zoom))*(1<<i-o.zoom),l=c[1]-.5-s,h=o.tileID?o.tileID:new e.OverscaledTileID(r,o.wrap,o.zoom,a,s);C.push({tileID:h,distanceSq:n*n+l*l});}}if(this.fogCullDistSq){const i=this.fogCullDistSq,o=this.horizonLineFromTop();C=C.filter((r=>{const n=[0,0,0,1],a=[e.EXTENT,e.EXTENT,0,1],s=this.calculateFogTileMatrix(r.tileID.toUnwrapped());e.transformMat4$1(n,n,s),e.transformMat4$1(a,a,s);const l=e.getAABBPointSquareDist(n,a);if(0===l)return !0;let c=!1;const h=this._elevation;if(h&&l>i&&0!==o){const i=this.calculateProjMatrix(r.tileID.toUnwrapped());let n;t.isTerrainDEM||(n=h.getMinMaxForTile(r.tileID)),n||(n={min:y,max:x});const a=e.furthestTileCorner(this.rotation),s=[a[0]*e.EXTENT,a[1]*e.EXTENT,n.max];e.transformMat4(s,s,i),c=(1-s[1])*this.height*.5<o;}return l<i||c}));}return C.sort(((e,t)=>e.distanceSq-t.distanceSq)).map((e=>e.tileID))}resize(e,t){this.width=e,this.height=t,this.pixelsToGLUnits=[2/e,-2/t],this._constrain(),this._calcMatrices();}get unmodified(){return this._unmodified}zoomScale(e){return Math.pow(2,e)}scaleZoom(e){return Math.log(e)/Math.LN2}project(t){const i=e.clamp(t.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),o=this.projection.project(t.lng,i);return new e.pointGeometry(o.x*this.worldSize,o.y*this.worldSize)}unproject(e){return this.projection.unproject(e.x/this.worldSize,e.y/this.worldSize)}get point(){return this.project(this.center)}setLocationAtPoint(t,i){let o,r;const n=this.centerPoint;if(\"globe\"===this.projection.name){const e=this.worldSize;o=(i.x-n.x)/e,r=(i.y-n.y)/e;}else {const e=this.pointCoordinate(i),t=this.pointCoordinate(n);o=e.x-t.x,r=e.y-t.y;}const a=this.locationCoordinate(t);this.setLocation(new e.MercatorCoordinate(a.x-o,a.y-r));}setLocation(e){this.center=this.coordinateLocation(e),this.projection.wrap&&(this.center=this.center.wrap());}locationPoint(e){return this.projection.locationPoint(this,e)}locationPoint3D(e){return this._coordinatePoint(this.locationCoordinate(e),!0)}pointLocation(e){return this.coordinateLocation(this.pointCoordinate(e))}pointLocation3D(e){return this.coordinateLocation(this.pointCoordinate3D(e))}locationCoordinate(t,i){const o=i?e.mercatorZfromAltitude(i,t.lat):void 0,r=this.projection.project(t.lng,t.lat);return new e.MercatorCoordinate(r.x,r.y,o)}coordinateLocation(e){return this.projection.unproject(e.x,e.y)}pointRayIntersection(t,i){const o=null!=i?i:this._centerAltitude,r=[t.x,t.y,0,1],n=[t.x,t.y,1,1];e.transformMat4$1(r,r,this.pixelMatrixInverse),e.transformMat4$1(n,n,this.pixelMatrixInverse);const a=n[3];e.scale$1(r,r,1/r[3]),e.scale$1(n,n,1/a);const s=r[2],l=n[2];return {p0:r,p1:n,t:s===l?0:(o-s)/(l-s)}}screenPointToMercatorRay(t){const i=[t.x,t.y,0,1],o=[t.x,t.y,1,1];return e.transformMat4$1(i,i,this.pixelMatrixInverse),e.transformMat4$1(o,o,this.pixelMatrixInverse),e.scale$1(i,i,1/i[3]),e.scale$1(o,o,1/o[3]),i[2]=e.mercatorZfromAltitude(i[2],this._center.lat)*this.worldSize,o[2]=e.mercatorZfromAltitude(o[2],this._center.lat)*this.worldSize,e.scale$1(i,i,1/this.worldSize),e.scale$1(o,o,1/this.worldSize),new e.Ray([i[0],i[1],i[2]],e.normalize([],e.sub([],o,i)))}rayIntersectionCoordinate(t){const{p0:i,p1:o,t:r}=t,n=e.mercatorZfromAltitude(i[2],this._center.lat),a=e.mercatorZfromAltitude(o[2],this._center.lat);return new e.MercatorCoordinate(e.number(i[0],o[0],r)/this.worldSize,e.number(i[1],o[1],r)/this.worldSize,e.number(n,a,r))}pointCoordinate(e,t=this._centerAltitude){return this.projection.pointCoordinate(this,e.x,e.y,t)}pointCoordinate3D(t){if(!this.elevation)return this.pointCoordinate(t);const i=this.elevation;let o=this.elevation.pointCoordinate(t);if(o)return new e.MercatorCoordinate(o[0],o[1],o[2]);let r=0,n=this.horizonLineFromTop();if(t.y>n)return this.pointCoordinate(t);const a=.02*n,s=t.clone();for(let t=0;t<10&&n-r>a;t++){s.y=e.number(r,n,.66);const t=i.pointCoordinate(s);t?(n=s.y,o=t):r=s.y;}return o?new e.MercatorCoordinate(o[0],o[1],o[2]):this.pointCoordinate(t)}isPointAboveHorizon(e){if(this.elevation)return !this.elevation.pointCoordinate(e);{const t=this.horizonLineFromTop();return e.y<t}}_coordinatePoint(t,i){const o=i&&this.elevation?this.elevation.getAtPointOrZero(t,this._centerAltitude):this._centerAltitude,r=[t.x*this.worldSize,t.y*this.worldSize,o+t.toAltitude(),1];return e.transformMat4$1(r,r,this.pixelMatrix),r[3]>0?new e.pointGeometry(r[0]/r[3],r[1]/r[3]):new e.pointGeometry(Number.MAX_VALUE,Number.MAX_VALUE)}_getBounds(t,i){const o=new e.pointGeometry(this._edgeInsets.left,this._edgeInsets.top),r=new e.pointGeometry(this.width-this._edgeInsets.right,this._edgeInsets.top),n=new e.pointGeometry(this.width-this._edgeInsets.right,this.height-this._edgeInsets.bottom),a=new e.pointGeometry(this._edgeInsets.left,this.height-this._edgeInsets.bottom);let s=this.pointCoordinate(o,t),l=this.pointCoordinate(r,t);const c=this.pointCoordinate(n,i),h=this.pointCoordinate(a,i),_=(e,t)=>(t.y-e.y)/(t.x-e.x);return s.y>1&&l.y>=0?s=new e.MercatorCoordinate((1-h.y)/_(h,s)+h.x,1):s.y<0&&l.y<=1&&(s=new e.MercatorCoordinate(-h.y/_(h,s)+h.x,0)),l.y>1&&s.y>=0?l=new e.MercatorCoordinate((1-c.y)/_(c,l)+c.x,1):l.y<0&&s.y<=1&&(l=new e.MercatorCoordinate(-c.y/_(c,l)+c.x,0)),(new e.LngLatBounds).extend(this.coordinateLocation(s)).extend(this.coordinateLocation(l)).extend(this.coordinateLocation(h)).extend(this.coordinateLocation(c))}_getBounds3D(){const e=this.elevation;if(!e.visibleDemTiles.length)return this._getBounds(0,0);const t=e.visibleDemTiles.reduce(((e,t)=>{if(t.dem){const i=t.dem.tree;e.min=Math.min(e.min,i.minimums[0]),e.max=Math.max(e.max,i.maximums[0]);}return e}),{min:Number.MAX_VALUE,max:0});return this._getBounds(t.min*e.exaggeration(),t.max*e.exaggeration())}getBounds(){return this._terrainEnabled()?this._getBounds3D():this._getBounds(0,0)}horizonLineFromTop(e=!0){const t=this.height/2/Math.tan(this._fov/2)/Math.tan(Math.max(this._pitch,.1))+this.centerOffset.y,i=this.height/2-t*(1-this._horizonShift);return e?Math.max(0,i):i}getMaxBounds(){return this.maxBounds}setMaxBounds(t){this.maxBounds=t,this.minLat=-e.MAX_MERCATOR_LATITUDE,this.maxLat=e.MAX_MERCATOR_LATITUDE,this.minLng=-180,this.maxLng=180,t&&(this.minLat=t.getSouth(),this.maxLat=t.getNorth(),this.minLng=t.getWest(),this.maxLng=t.getEast(),this.maxLng<this.minLng&&(this.maxLng+=360)),this.worldMinX=e.mercatorXfromLng(this.minLng)*this.tileSize,this.worldMaxX=e.mercatorXfromLng(this.maxLng)*this.tileSize,this.worldMinY=e.mercatorYfromLat(this.maxLat)*this.tileSize,this.worldMaxY=e.mercatorYfromLat(this.minLat)*this.tileSize,this._constrain();}calculatePosMatrix(e,t){return this.projection.createTileMatrix(this,t,e)}calculateDistanceTileData(t){const i=t.key,o=this._distanceTileDataCache;if(o[i])return o[i];const r=t.canonical,n=1/this.height,a=this.cameraWorldSize/this.zoomScale(r.z),s=(r.x+Math.pow(2,r.z)*t.wrap)*a,l=r.y*a,c=this.point,h=this.angle,_=Math.sin(-h),u=-Math.cos(-h);return o[i]={bearing:[_,u],center:[(c.x-s)*n,(c.y-l)*n],scale:a/e.EXTENT*n},o[i]}calculateFogTileMatrix(t){const i=t.key,o=this._fogTileMatrixCache;if(o[i])return o[i];const r=this.calculatePosMatrix(t,this.cameraWorldSize);return e.multiply$1(r,this.worldToFogMatrix,r),o[i]=new Float32Array(r),o[i]}calculateProjMatrix(t,i=!1){const o=t.key,r=i?this._alignedProjMatrixCache:this._projMatrixCache;if(r[o])return r[o];const n=this.calculatePosMatrix(t,this.worldSize);return e.multiply$1(n,this.projection.isReprojectedInTileSpace?this.mercatorMatrix:i?this.alignedProjMatrix:this.projMatrix,n),r[o]=new Float32Array(n),r[o]}calculatePixelsToTileUnitsMatrix(t){const i=t.tileID.key,o=this._pixelsToTileUnitsCache;if(o[i])return o[i];const r=function(t,i){const{scale:o}=t.tileTransform,r=o*e.EXTENT/(t.tileSize*Math.pow(2,i.zoom-t.tileID.overscaledZ+t.tileID.canonical.z));return n=new Float32Array(4),l=(a=i.inverseAdjustmentMatrix)[1],c=a[2],h=a[3],u=(s=[r,r])[1],n[0]=a[0]*(_=s[0]),n[1]=l*_,n[2]=c*u,n[3]=h*u,n;var n,a,s,l,c,h,_,u;}(t,this);return o[i]=r,o[i]}customLayerMatrix(){return this.mercatorMatrix.slice()}recenterOnTerrain(){if(!this._elevation)return;const t=this._elevation;this._updateCameraState();const i=e.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,o=this._computeCameraPosition(i),r=this._camera.forward(),n=e.mercatorZfromAltitude(1,this._center.lat);o[2]/=n,r[2]/=n,e.normalize(r,r);const a=t.raycast(o,r,t.exaggeration());if(a){const t=e.scaleAndAdd([],o,r,a),i=new e.MercatorCoordinate(t[0],t[1],e.mercatorZfromAltitude(t[2],e.latFromMercatorY(t[1]))),s=(i.z+e.length([i.x-o[0],i.y-o[1],i.z-o[2]*n]))*this._projectionScaler;this._seaLevelZoom=this._zoomFromMercatorZ(s),this._centerAltitude=i.toAltitude(),this._center=this.coordinateLocation(i),this._updateZoomFromElevation(),this._constrain(),this._calcMatrices();}}_constrainCameraAltitude(){if(!this._elevation)return;const t=this._elevation;this._updateCameraState();const i=e.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,o=this._computeCameraPosition(i),r=t.getAtPointOrZero(new e.MercatorCoordinate(...o)),n=this._minimumHeightOverTerrain()*Math.cos(e.degToRad(this._maxPitch)),a=this._camera.position[2]-this.pixelsPerMeter/this.worldSize*r;if(a<n){const t=this.locationCoordinate(this._center,this._centerAltitude),i=[t.x-o[0],t.y-o[1],t.z-o[2]],r=e.length(i);i[2]-=(n-a)/this._projectionScaler;const s=e.length(i);if(0===s)return;e.scale$2(i,i,r/s*this._projectionScaler),this._camera.position=[t.x-i[0],t.y-i[1],t.z*this._projectionScaler-i[2]],this._camera.orientation=Po(i,this._camera.up()),this._updateStateFromCamera();}}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;if(this._constraining=!0,this.projection.isReprojectedInTileSpace){const t=this.center;return t.lat=e.clamp(t.lat,this.minLat,this.maxLat),!this.maxBounds&&this.renderWorldCopies||(t.lng=e.clamp(t.lng,this.minLng,this.maxLng)),this.center=t,void(this._constraining=!1)}const t=this._unmodified,{x:i,y:o}=this.point;let r=0,n=i,a=o;const s=this.width/2,l=this.height/2,c=this.worldMinY*this.scale,h=this.worldMaxY*this.scale;if(o-l<c&&(a=c+l),o+l>h&&(a=h-l),h-c<this.height&&(r=Math.max(r,this.height/(h-c)),a=(h+c)/2),this.maxBounds||!this._renderWorldCopies||!this.projection.wrap){const e=this.worldMinX*this.scale,t=this.worldMaxX*this.scale,o=this.worldSize/2-(e+t)/2;n=(i+o+this.worldSize)%this.worldSize-o,n-s<e&&(n=e+s),n+s>t&&(n=t-s),t-e<this.width&&(r=Math.max(r,this.width/(t-e)),n=(t+e)/2);}n===i&&a===o||(this.center=this.unproject(new e.pointGeometry(n,a))),r&&(this.zoom+=this.scaleZoom(r)),this._constrainCameraAltitude(),this._unmodified=t,this._constraining=!1;}_minZoomForBounds(){let e=Math.max(0,this.scaleZoom(this.height/(this.worldMaxY-this.worldMinY)));return this.maxBounds&&(e=Math.max(e,this.scaleZoom(this.width/(this.worldMaxX-this.worldMinX)))),e}_maxCameraBoundsDistance(){return this._mercatorZfromZoom(this._minZoomForBounds())}_calcMatrices(){if(!this.height)return;const t=this._fov/2,i=this.centerOffset,o=this.pixelsPerMeter;this._projectionScaler=o/(e.mercatorZfromAltitude(1,this.center.lat)*this.worldSize),this.cameraToCenterDistance=.5/Math.tan(t)*this.height*this._projectionScaler,this._updateCameraState(),this._farZ=this.projection.farthestPixelDistance(this),this._nearZ=this.height/50;const r=this._camera.getWorldToCamera(this.worldSize,\"meters\"===this.projection.zAxisUnit?o:1),n=this._camera.getCameraToClipPerspective(this._fov,this.width/this.height,this._nearZ,this._farZ);n[8]=2*-i.x/this.width,n[9]=2*i.y/this.height;let a=e.mul([],n,r);if(this.projection.isReprojectedInTileSpace){const t=this.locationCoordinate(this.center),i=e.identity([]);e.translate(i,i,[t.x*this.worldSize,t.y*this.worldSize,0]),e.multiply$1(i,i,Ro(this)),e.translate(i,i,[-t.x*this.worldSize,-t.y*this.worldSize,0]),e.multiply$1(a,a,i),this.inverseAdjustmentMatrix=function(e){const t=Ro(e,!0);return v([],[t[0],t[1],t[4],t[5]])}(this);}else this.inverseAdjustmentMatrix=[1,0,0,1];this.mercatorMatrix=e.scale([],a,[this.worldSize,this.worldSize,this.worldSize/o,1]),this.projMatrix=a,this.invProjMatrix=e.invert(new Float64Array(16),this.projMatrix);const s=new Float32Array(16);e.identity(s),e.scale(s,s,[1,-1,1]),e.rotateX(s,s,this._pitch),e.rotateZ(s,s,this.angle);const l=e.perspective(new Float32Array(16),this._fov,this.width/this.height,this._nearZ,this._farZ),c=(Math.PI/2-this._pitch)*(this.height/this._fov)*this._horizonShift;l[8]=2*-i.x/this.width,l[9]=2*(i.y+c)/this.height,this.skyboxMatrix=e.multiply$1(s,l,s);const h=this.point,_=h.x,u=h.y,d=this.width%2/2,p=this.height%2/2,m=Math.cos(this.angle),f=Math.sin(this.angle),g=_-Math.round(_)+m*d+f*p,x=u-Math.round(u)+m*p+f*d,y=new Float64Array(a);if(e.translate(y,y,[g>.5?g-1:g,x>.5?x-1:x,0]),this.alignedProjMatrix=y,a=e.create(),e.scale(a,a,[this.width/2,-this.height/2,1]),e.translate(a,a,[1,-1,0]),this.labelPlaneMatrix=a,a=e.create(),e.scale(a,a,[1,-1,1]),e.translate(a,a,[-1,-1,0]),e.scale(a,a,[2/this.width,2/this.height,1]),this.glCoordMatrix=a,this.pixelMatrix=e.multiply$1(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),this._calcFogMatrices(),this._distanceTileDataCache={},a=e.invert(new Float64Array(16),this.pixelMatrix),!a)throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=a,this.globeMatrix=\"globe\"===this.projection.name?e.calculateGlobeMatrix(this):a,this._projMatrixCache={},this._alignedProjMatrixCache={},this._pixelsToTileUnitsCache={};}_calcFogMatrices(){this._fogTileMatrixCache={};const t=this.cameraWorldSize,i=this.cameraPixelsPerMeter,o=this._camera.position,r=1/this.height,n=[t,t,i];e.scale$2(n,n,r),e.scale$2(o,o,-1),e.multiply$2(o,o,n);const a=e.create();e.translate(a,a,o),e.scale(a,a,n),this.mercatorFogMatrix=a,this.worldToFogMatrix=this._camera.getWorldToCameraPosition(t,i,r);}_computeCameraPosition(e){const t=(e=e||this.pixelsPerMeter)/this.pixelsPerMeter,i=this._camera.forward(),o=this.point,r=this._mercatorZfromZoom(this._seaLevelZoom?this._seaLevelZoom:this._zoom)*t-e/this.worldSize*this._centerAltitude;return [o.x/this.worldSize-i[0]*r,o.y/this.worldSize-i[1]*r,e/this.worldSize*this._centerAltitude-i[2]*r]}_updateCameraState(){this.height&&(this._camera.setPitchBearing(this._pitch,this.angle),this._camera.position=this._computeCameraPosition());}_translateCameraConstrained(t){const i=this._maxCameraBoundsDistance()*Math.cos(this._pitch),o=t[2];let r=1;o>0&&(r=Math.min((i-this._camera.position[2])/o,1)),this._camera.position=e.scaleAndAdd([],this._camera.position,t,r),this._updateStateFromCamera(),this.projection.wrap&&(this.center=this.center.wrap());}_updateStateFromCamera(){const t=this._camera.position,i=this._camera.forward(),{pitch:o,bearing:r}=this._camera.getPitchBearing(),n=e.mercatorZfromAltitude(this._centerAltitude,this.center.lat)*this._projectionScaler,a=this._mercatorZfromZoom(this._maxZoom)*Math.cos(e.degToRad(this._maxPitch)),s=Math.max((t[2]-n)/Math.cos(o),a),l=this._zoomFromMercatorZ(s);e.scaleAndAdd(t,t,i,s),this._pitch=e.clamp(o,e.degToRad(this.minPitch),e.degToRad(this.maxPitch)),this.angle=e.wrap(r,-Math.PI,Math.PI),this._setZoom(e.clamp(l,this._minZoom,this._maxZoom)),this._updateSeaLevelZoom(),this._center=this.coordinateLocation(new e.MercatorCoordinate(t[0],t[1],t[2])),this._unmodified=!1,this._constrain(),this._calcMatrices();}_worldSizeFromZoom(e){return Math.pow(2,e)*this.tileSize}_mercatorZfromZoom(e){return this.cameraToCenterDistance/this._worldSizeFromZoom(e)}_minimumHeightOverTerrain(){const e=Math.min((null!=this._seaLevelZoom?this._seaLevelZoom:this._zoom)+2,this._maxZoom);return this._mercatorZfromZoom(e)}_zoomFromMercatorZ(e){return this.scaleZoom(this.cameraToCenterDistance/(e*this.tileSize))}_terrainEnabled(){return !(!this._elevation||!this.projection.supportsTerrain&&(e.warnOnce(\"Terrain is not yet supported with alternate projections. Use mercator to enable terrain.\"),1))}anyCornerOffEdge(t,i){const o=Math.min(t.x,i.x),r=Math.max(t.x,i.x),n=Math.min(t.y,i.y),a=Math.max(t.y,i.y);if(n<this.horizonLineFromTop(!1))return !0;if(\"mercator\"!==this.projection.name)return !1;const s=[new e.pointGeometry(o,n),new e.pointGeometry(r,a),new e.pointGeometry(o,a),new e.pointGeometry(r,n)],l=this.renderWorldCopies?-3:0,c=this.renderWorldCopies?4:1;for(const e of s){const t=this.pointRayIntersection(e);if(t.t<0)return !0;const i=this.rayIntersectionCoordinate(t);if(i.x<l||i.y<0||i.x>c||i.y>1)return !0}return !1}isHorizonVisible(){return this.pitch+e.radToDeg(this.fovAboveCenter)>88||this.anyCornerOffEdge(new e.pointGeometry(0,0),new e.pointGeometry(this.width,this.height))}zoomDeltaToMovement(t,i){const o=e.length(e.sub([],this._camera.position,t)),r=this._zoomFromMercatorZ(o)+i;return o-this._mercatorZfromZoom(r)}getCameraPoint(){const t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new e.pointGeometry(0,t))}}function Go(e,t){let i=!1,o=null;const r=()=>{o=null,i&&(e(),o=setTimeout(r,t),i=!1);};return ()=>(i=!0,o||r(),o)}class jo{constructor(t){this._hashName=t&&encodeURIComponent(t),e.bindAll([\"_getCurrentHash\",\"_onHashChange\",\"_updateHash\"],this),this._updateHash=Go(this._updateHashUnthrottled.bind(this),300);}addTo(t){return this._map=t,e.window.addEventListener(\"hashchange\",this._onHashChange,!1),t.on(\"moveend\",this._updateHash),this}remove(){return this._map?(this._map.off(\"moveend\",this._updateHash),e.window.removeEventListener(\"hashchange\",this._onHashChange,!1),clearTimeout(this._updateHash()),this._map=void 0,this):this}getHashString(t){const i=this._map;if(!i)return \"\";const o=i.getCenter(),r=Math.round(100*i.getZoom())/100,n=Math.ceil((r*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,n),s=Math.round(o.lng*a)/a,l=Math.round(o.lat*a)/a,c=i.getBearing(),h=i.getPitch();let _=\"\";if(_+=t?`/${s}/${l}/${r}`:`${r}/${l}/${s}`,(c||h)&&(_+=\"/\"+Math.round(10*c)/10),h&&(_+=`/${Math.round(h)}`),this._hashName){const t=this._hashName;let i=!1;const o=e.window.location.hash.slice(1).split(\"&\").map((e=>{const o=e.split(\"=\")[0];return o===t?(i=!0,`${o}=${_}`):e})).filter((e=>e));return i||o.push(`${t}=${_}`),`#${o.join(\"&\")}`}return `#${_}`}_getCurrentHash(){const t=e.window.location.hash.replace(\"#\",\"\");if(this._hashName){let e;return t.split(\"&\").map((e=>e.split(\"=\"))).forEach((t=>{t[0]===this._hashName&&(e=t);})),(e&&e[1]||\"\").split(\"/\")}return t.split(\"/\")}_onHashChange(){const e=this._map;if(!e)return !1;const t=this._getCurrentHash();if(t.length>=3&&!t.some((e=>isNaN(e)))){const i=e.dragRotate.isEnabled()&&e.touchZoomRotate.isEnabled()?+(t[3]||0):e.getBearing();return e.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:i,pitch:+(t[4]||0)}),!0}return !1}_updateHashUnthrottled(){const t=e.window.location.href.replace(/(#.+)?$/,this.getHashString());e.window.history.replaceState(e.window.history.state,null,t);}}const Zo={linearity:.3,easing:e.bezier(0,0,.3,1)},Vo=e.extend({deceleration:2500,maxSpeed:1400},Zo),Wo=e.extend({deceleration:20,maxSpeed:1400},Zo),qo=e.extend({deceleration:1e3,maxSpeed:360},Zo),Xo=e.extend({deceleration:1e3,maxSpeed:90},Zo);class $o{constructor(e){this._map=e,this.clear();}clear(){this._inertiaBuffer=[];}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:e.exported.now(),settings:t});}_drainInertiaBuffer(){const t=this._inertiaBuffer,i=e.exported.now();for(;t.length>0&&i-t[0].time>160;)t.shift();}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,pan:new e.pointGeometry(0,0),pinchAround:void 0,around:void 0};for(const{settings:e}of this._inertiaBuffer)i.zoom+=e.zoomDelta||0,i.bearing+=e.bearingDelta||0,i.pitch+=e.pitchDelta||0,e.panDelta&&i.pan._add(e.panDelta),e.around&&(i.around=e.around),e.pinchAround&&(i.pinchAround=e.pinchAround);const o=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,r={};if(i.pan.mag()){const n=Ko(i.pan.mag(),o,e.extend({},Vo,t||{}));r.offset=i.pan.mult(n.amount/i.pan.mag()),r.center=this._map.transform.center,Ho(r,n);}if(i.zoom){const e=Ko(i.zoom,o,Wo);r.zoom=this._map.transform.zoom+e.amount,Ho(r,e);}if(i.bearing){const t=Ko(i.bearing,o,qo);r.bearing=this._map.transform.bearing+e.clamp(t.amount,-179,179),Ho(r,t);}if(i.pitch){const e=Ko(i.pitch,o,Xo);r.pitch=this._map.transform.pitch+e.amount,Ho(r,e);}if(r.zoom||r.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;r.around=e?this._map.unproject(e):this._map.getCenter();}return this.clear(),r.noMoveStart=!0,r}}function Ho(e,t){(!e.duration||e.duration<t.duration)&&(e.duration=t.duration,e.easing=t.easing);}function Ko(t,i,o){const{maxSpeed:r,linearity:n,deceleration:a}=o,s=e.clamp(t*n/(i/1e3),-r,r),l=Math.abs(s)/(a*n);return {easing:o.easing,duration:1e3*l,amount:s*(l/2)}}class Yo extends e.Event{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(t,i,o,r={}){const n=p(i.getCanvasContainer(),o),a=i.unproject(n);super(t,e.extend({point:n,lngLat:a,originalEvent:o},r)),this._defaultPrevented=!1,this.target=i;}}class Jo extends e.Event{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(t,i,o){const r=\"touchend\"===t?o.changedTouches:o.touches,n=m(i.getCanvasContainer(),r),a=n.map((e=>i.unproject(e))),s=n.reduce(((e,t,i,o)=>e.add(t.div(o.length))),new e.pointGeometry(0,0));super(t,{points:n,point:s,lngLats:a,lngLat:i.unproject(s),originalEvent:o}),this._defaultPrevented=!1;}}class Qo extends e.Event{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1;}}class er{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance;}reset(){this._mousedownPos=void 0;}wheel(e){return this._firePreventable(new Qo(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new Yo(e.type,this._map,e))}mouseup(e){this._map.fire(new Yo(e.type,this._map,e));}preclick(t){const i=e.extend({},t);i.type=\"preclick\",this._map.fire(new Yo(i.type,this._map,i));}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||(this.preclick(e),this._map.fire(new Yo(e.type,this._map,e)));}dblclick(e){return this._firePreventable(new Yo(e.type,this._map,e))}mouseover(e){this._map.fire(new Yo(e.type,this._map,e));}mouseout(e){this._map.fire(new Yo(e.type,this._map,e));}touchstart(e){return this._firePreventable(new Jo(e.type,this._map,e))}touchmove(e){this._map.fire(new Jo(e.type,this._map,e));}touchend(e){this._map.fire(new Jo(e.type,this._map,e));}touchcancel(e){this._map.fire(new Jo(e.type,this._map,e));}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class tr{constructor(e){this._map=e;}reset(){this._delayContextMenu=!1,this._contextMenuEvent=void 0;}mousemove(e){this._map.fire(new Yo(e.type,this._map,e));}mousedown(){this._delayContextMenu=!0;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Yo(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._map.fire(new Yo(e.type,this._map,e)),this._map.listens(\"contextmenu\")&&e.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class ir{constructor(e,t){this._map=e,this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1;}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(h(),this._startPos=this._lastPos=t,this._active=!0);}mousemoveWindow(e,t){if(!this._active)return;const i=t;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)<this._clickTolerance)return;const o=this._startPos;this._lastPos=i,this._box||(this._box=n(\"div\",\"mapboxgl-boxzoom\",this._container),this._container.classList.add(\"mapboxgl-crosshair\"),this._fireEvent(\"boxzoomstart\",e));const r=Math.min(o.x,i.x),a=Math.max(o.x,i.x),s=Math.min(o.y,i.y),l=Math.max(o.y,i.y);this._map._requestDomTask((()=>{this._box&&(this._box.style.transform=`translate(${r}px,${s}px)`,this._box.style.width=a-r+\"px\",this._box.style.height=l-s+\"px\");}));}mouseupWindow(t,i){if(!this._active)return;if(0!==t.button)return;const o=this._startPos,r=i;if(this.reset(),d(),o.x!==r.x||o.y!==r.y)return this._map.fire(new e.Event(\"boxzoomend\",{originalEvent:t})),{cameraAnimation:e=>e.fitScreenCoordinates(o,r,this._map.getBearing(),{linear:!1})};this._fireEvent(\"boxzoomcancel\",t);}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent(\"boxzoomcancel\",e));}blur(){this.reset();}reset(){this._active=!1,this._container.classList.remove(\"mapboxgl-crosshair\"),this._box&&(this._box.remove(),this._box=null),_(),delete this._startPos,delete this._lastPos;}_fireEvent(t,i){return this._map.fire(new e.Event(t,{originalEvent:i}))}}function or(e,t){const i={};for(let o=0;o<e.length;o++)i[e[o].identifier]=t[o];return i}class rr{constructor(e){this.reset(),this.numTouches=e.numTouches;}reset(){this.centroid=void 0,this.startTime=0,this.touches={},this.aborted=!1;}touchstart(t,i,o){(this.centroid||o.length>this.numTouches)&&(this.aborted=!0),this.aborted||(0===this.startTime&&(this.startTime=t.timeStamp),o.length===this.numTouches&&(this.centroid=function(t){const i=new e.pointGeometry(0,0);for(const e of t)i._add(e);return i.div(t.length)}(i),this.touches=or(o,i)));}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const o=or(i,t);for(const e in this.touches){const t=this.touches[e],i=o[e];(!i||i.dist(t)>30)&&(this.aborted=!0);}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class nr{constructor(e){this.singleTap=new rr(e),this.numTaps=e.numTaps,this.reset();}reset(){this.lastTime=1/0,this.lastTap=void 0,this.count=0,this.singleTap.reset();}touchstart(e,t,i){this.singleTap.touchstart(e,t,i);}touchmove(e,t,i){this.singleTap.touchmove(e,t,i);}touchend(e,t,i){const o=this.singleTap.touchend(e,t,i);if(o){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(o)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=o,this.count===this.numTaps)return this.reset(),o}}}class ar{constructor(){this._zoomIn=new nr({numTouches:1,numTaps:2}),this._zoomOut=new nr({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i);}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i);}touchend(e,t,i){const o=this._zoomIn.touchend(e,t,i),r=this._zoomOut.touchend(e,t,i);return o?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()+1,around:t.unproject(o)},{originalEvent:e})}):r?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()-1,around:t.unproject(r)},{originalEvent:e})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}const sr={0:1,2:2};class lr{constructor(e){this.reset(),this._clickTolerance=e.clickTolerance||1;}blur(){this.reset();}reset(){this._active=!1,this._moved=!1,this._lastPoint=void 0,this._eventButton=void 0;}_correctButton(e,t){return !1}_move(e,t){return {}}mousedown(e,t){if(this._lastPoint)return;const i=f(e);this._correctButton(e,i)&&(this._lastPoint=t,this._eventButton=i);}mousemoveWindow(e,t){const i=this._lastPoint;if(i)if(e.preventDefault(),null!=this._eventButton&&function(e,t){const i=sr[t];return void 0===e.buttons||(e.buttons&i)!==i}(e,this._eventButton))this.reset();else if(this._moved||!(t.dist(i)<this._clickTolerance))return this._moved=!0,this._lastPoint=t,this._move(i,t)}mouseupWindow(e){this._lastPoint&&f(e)===this._eventButton&&(this._moved&&d(),this.reset());}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class cr extends lr{mousedown(e,t){super.mousedown(e,t),this._lastPoint&&(this._active=!0);}_correctButton(e,t){return 0===t&&!e.ctrlKey}_move(e,t){return {around:t,panDelta:t.sub(e)}}}class hr extends lr{_correctButton(e,t){return 0===t&&e.ctrlKey||2===t}_move(e,t){const i=.8*(t.x-e.x);if(i)return this._active=!0,{bearingDelta:i}}contextmenu(e){e.preventDefault();}}class _r extends lr{_correctButton(e,t){return 0===t&&e.ctrlKey||2===t}_move(e,t){const i=-.5*(t.y-e.y);if(i)return this._active=!0,{pitchDelta:i}}contextmenu(e){e.preventDefault();}}class ur{constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._minTouches=1,this._clickTolerance=i.clickTolerance||1,this.reset(),e.bindAll([\"_addTouchPanBlocker\",\"_showTouchPanBlockerAlert\"],this);}reset(){this._active=!1,this._touches={},this._sum=new e.pointGeometry(0,0);}touchstart(e,t,i){return this._calculateTransform(e,t,i)}touchmove(e,t,i){if(this._active&&!(i.length<this._minTouches)){if(this._map._cooperativeGestures&&!this._map.isMoving()){if(1===i.length)return void this._showTouchPanBlockerAlert();\"hidden\"!==this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"hidden\",clearTimeout(this._alertTimer));}return e.preventDefault(),this._calculateTransform(e,t,i)}}touchend(e,t,i){this._calculateTransform(e,t,i),this._active&&i.length<this._minTouches&&this.reset();}touchcancel(){this.reset();}_calculateTransform(t,i,o){o.length>0&&(this._active=!0);const r=or(o,i),n=new e.pointGeometry(0,0),a=new e.pointGeometry(0,0);let s=0;for(const e in r){const t=r[e],i=this._touches[e];i&&(n._add(t),a._add(t.sub(i)),s++,r[e]=t);}if(this._touches=r,s<this._minTouches||!a.mag())return;const l=a.div(s);return this._sum._add(l),this._sum.mag()<this._clickTolerance?void 0:{around:n.div(s),panDelta:l}}enable(){this._enabled=!0,this._map._cooperativeGestures&&(this._addTouchPanBlocker(),this._el.classList.add(\"mapboxgl-touch-pan-blocker-override\",\"mapboxgl-scrollable-page\"));}disable(){this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove(),this._el.classList.remove(\"mapboxgl-touch-pan-blocker-override\",\"mapboxgl-scrollable-page\")),this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}_addTouchPanBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=n(\"div\",\"mapboxgl-touch-pan-blocker\",this._map._container),this._alertContainer.textContent=this._map._getUIString(\"TouchPanBlocker.Message\"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`);}_showTouchPanBlockerAlert(){\"hidden\"===this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"visible\"),this._alertContainer.classList.add(\"mapboxgl-touch-pan-blocker-show\"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout((()=>{this._alertContainer.classList.remove(\"mapboxgl-touch-pan-blocker-show\");}),500);}}class dr{constructor(){this.reset();}reset(){this._active=!1,this._firstTwoTouches=void 0;}_start(e){}_move(e,t,i){return {}}touchstart(e,t,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([t[0],t[1]]));}touchmove(e,t,i){const o=this._firstTwoTouches;if(!o)return;e.preventDefault();const[r,n]=o,a=pr(i,t,r),s=pr(i,t,n);if(!a||!s)return;const l=this._aroundCenter?null:a.add(s).div(2);return this._move([a,s],l,e)}touchend(e,t,i){if(!this._firstTwoTouches)return;const[o,r]=this._firstTwoTouches,n=pr(i,t,o),a=pr(i,t,r);n&&a||(this._active&&d(),this.reset());}touchcancel(){this.reset();}enable(e){this._enabled=!0,this._aroundCenter=!!e&&\"center\"===e.around;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}function pr(e,t,i){for(let o=0;o<e.length;o++)if(e[o].identifier===i)return t[o]}function mr(e,t){return Math.log(e/t)/Math.LN2}class fr extends dr{reset(){super.reset(),this._distance=0,this._startDistance=0;}_start(e){this._startDistance=this._distance=e[0].dist(e[1]);}_move(e,t){const i=this._distance;if(this._distance=e[0].dist(e[1]),this._active||!(Math.abs(mr(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:mr(this._distance,i),pinchAround:t}}}function gr(e,t){return 180*e.angleWith(t)/Math.PI}class vr extends dr{reset(){super.reset(),this._minDiameter=0,this._startVector=void 0,this._vector=void 0;}_start(e){this._startVector=this._vector=e[0].sub(e[1]),this._minDiameter=e[0].dist(e[1]);}_move(e,t){const i=this._vector;if(this._vector=e[0].sub(e[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:gr(this._vector,i),pinchAround:t}}_isBelowThreshold(e){this._minDiameter=Math.min(this._minDiameter,e.mag());const t=25/(Math.PI*this._minDiameter)*360,i=gr(e,this._startVector);return Math.abs(i)<t}}function xr(e){return Math.abs(e.y)>Math.abs(e.x)}class yr extends dr{constructor(e){super(),this._map=e;}reset(){super.reset(),this._valid=void 0,this._firstMove=void 0,this._lastPoints=void 0;}_start(e){this._lastPoints=e,xr(e[0].sub(e[1]))&&(this._valid=!1);}_move(e,t,i){const o=this._lastPoints;if(!o)return;const r=e[0].sub(o[0]),n=e[1].sub(o[1]);return this._map._cooperativeGestures&&i.touches.length<3||(this._valid=this.gestureBeginsVertically(r,n,i.timeStamp),!this._valid)?void 0:(this._lastPoints=e,this._active=!0,{pitchDelta:(r.y+n.y)/2*-.5})}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const o=e.mag()>=2,r=t.mag()>=2;if(!o&&!r)return;if(!o||!r)return null==this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const n=e.y>0==t.y>0;return xr(e)&&xr(t)&&n}}const br={panStep:100,bearingStep:15,pitchStep:10};class wr{constructor(){const e=br;this._panStep=e.panStep,this._bearingStep=e.bearingStep,this._pitchStep=e.pitchStep,this._rotationDisabled=!1;}blur(){this.reset();}reset(){this._active=!1;}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,i=0,o=0,r=0,n=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?i=-1:(e.preventDefault(),r=-1);break;case 39:e.shiftKey?i=1:(e.preventDefault(),r=1);break;case 38:e.shiftKey?o=1:(e.preventDefault(),n=-1);break;case 40:e.shiftKey?o=-1:(e.preventDefault(),n=1);break;default:return}return this._rotationDisabled&&(i=0,o=0),{cameraAnimation:a=>{const s=a.getZoom();a.easeTo({duration:300,easeId:\"keyboardHandler\",easing:Tr,zoom:t?Math.round(s)+t*(e.shiftKey?2:1):s,bearing:a.getBearing()+i*this._bearingStep,pitch:a.getPitch()+o*this._pitchStep,offset:[-r*this._panStep,-n*this._panStep],center:a.getCenter()},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function Tr(e){return e*(2-e)}const Er=4.000244140625;class Cr{constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._handler=i,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,e.bindAll([\"_onTimeout\",\"_addScrollZoomBlocker\",\"_showBlockerAlert\",\"_isFullscreen\"],this);}setZoomRate(e){this._defaultZoomRate=e;}setWheelZoomRate(e){this._wheelZoomRate=e;}isEnabled(){return !!this._enabled}isActive(){return !!this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&\"center\"===e.around,this._map._cooperativeGestures&&this._addScrollZoomBlocker());}disable(){this.isEnabled()&&(this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove()));}wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!(t.ctrlKey||t.metaKey||this.isZooming()||this._isFullscreen()))return void this._showBlockerAlert();\"hidden\"!==this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"hidden\",clearTimeout(this._alertTimer));}let i=t.deltaMode===e.window.WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const o=e.exported.now(),r=o-(this._lastWheelEventTime||0);this._lastWheelEventTime=o,0!==i&&i%Er==0?this._type=\"wheel\":0!==i&&Math.abs(i)<4?this._type=\"trackpad\":r>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(r*i)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),t.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=t,this._delta-=i,this._active||this._start(t)),t.preventDefault();}_onTimeout(e){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(e);}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const t=p(this._el,e);this._aroundPoint=this._aroundCenter?this._map.transform.centerPoint:t,this._aroundCoord=this._map.transform.pointCoordinate3D(this._aroundPoint),this._targetZoom=void 0,this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame());}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const t=this._map.transform,i=()=>t._terrainEnabled()&&this._aroundCoord?t.computeZoomRelativeTo(this._aroundCoord):t.zoom;if(0!==this._delta){const e=\"wheel\"===this._type&&Math.abs(this._delta)>Er?this._wheelZoomRate:this._defaultZoomRate;let o=2/(1+Math.exp(-Math.abs(this._delta*e)));this._delta<0&&0!==o&&(o=1/o);const r=i(),n=Math.pow(2,r),a=\"number\"==typeof this._targetZoom?t.zoomScale(this._targetZoom):n;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(a*o))),\"wheel\"===this._type&&(this._startZoom=i(),this._easing=this._smoothOutEasing(200)),this._delta=0;}const o=\"number\"==typeof this._targetZoom?this._targetZoom:i(),r=this._startZoom,n=this._easing;let a,s=!1;if(\"wheel\"===this._type&&r&&n){const t=Math.min((e.exported.now()-this._lastWheelEventTime)/200,1),i=n(t);a=e.number(r,o,i),t<1?this._frameId||(this._frameId=!0):s=!0;}else a=o,s=!0;return this._active=!0,s&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout;}),200)),{noInertia:!0,needsRenderFrame:!s,zoomDelta:a-i(),around:this._aroundPoint,aroundCoord:this._aroundCoord,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let i=e.ease;if(this._prevEase){const t=this._prevEase,o=(e.exported.now()-t.start)/t.duration,r=t.easing(o+.01)-t.easing(o),n=.27/Math.sqrt(r*r+1e-4)*.01,a=Math.sqrt(.0729-n*n);i=e.bezier(n,a,.25,1);}return this._prevEase={start:e.exported.now(),duration:t,easing:i},i}blur(){this.reset();}reset(){this._active=!1;}_addScrollZoomBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=n(\"div\",\"mapboxgl-scroll-zoom-blocker\",this._map._container),this._alertContainer.textContent=/(Mac|iPad)/i.test(e.window.navigator.userAgent)?this._map._getUIString(\"ScrollZoomBlocker.CmdMessage\"):this._map._getUIString(\"ScrollZoomBlocker.CtrlMessage\"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`);}_isFullscreen(){return !!e.window.document.fullscreenElement||!!e.window.document.webkitFullscreenElement}_showBlockerAlert(){\"hidden\"===this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"visible\"),this._alertContainer.classList.add(\"mapboxgl-scroll-zoom-blocker-show\"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout((()=>{this._alertContainer.classList.remove(\"mapboxgl-scroll-zoom-blocker-show\");}),200);}}class Ir{constructor(e,t){this._clickZoom=e,this._tapZoom=t;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Mr{constructor(){this.reset();}reset(){this._active=!1;}blur(){this.reset();}dblclick(e,t){return e.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:i.getZoom()+(e.shiftKey?-1:1),around:i.unproject(t)},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Sr{constructor(){this._tap=new nr({numTouches:1,numTaps:1}),this.reset();}reset(){this._active=!1,this._swipePoint=void 0,this._swipeTouch=0,this._tapTime=0,this._tap.reset();}touchstart(e,t,i){this._swipePoint||(this._tapTime&&e.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?i.length>0&&(this._swipePoint=t[0],this._swipeTouch=i[0].identifier):this._tap.touchstart(e,t,i));}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const o=t[0],r=o.y-this._swipePoint.y;return this._swipePoint=o,e.preventDefault(),this._active=!0,{zoomDelta:r/128}}}else this._tap.touchmove(e,t,i);}touchend(e,t,i){this._tapTime?this._swipePoint&&0===i.length&&this.reset():this._tap.touchend(e,t,i)&&(this._tapTime=e.timeStamp);}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class zr{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i;}enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Dr{constructor(e,t,i){this._pitchWithRotate=e.pitchWithRotate,this._mouseRotate=t,this._mousePitch=i;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Pr{constructor(e,t,i,o){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=o,this._rotationDisabled=!1,this._enabled=!0;}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}const Ar=e=>e.zoom||e.drag||e.pitch||e.rotate;class Lr extends e.Event{}class Rr{constructor(){this.constants=[1,1,.01],this.radius=0;}setup(t,i){const o=e.sub([],i,t);this.radius=e.length(o[2]<0?e.div([],o,this.constants):[o[0],o[1],0]);}projectRay(t){e.div(t,t,this.constants),e.normalize(t,t),e.mul$1(t,t,this.constants);const i=e.scale$2([],t,this.radius);if(i[2]>0){const t=e.scale$2([],[0,0,1],e.dot(i,[0,0,1])),o=e.scale$2([],e.normalize([],[i[0],i[1],0]),this.radius),r=e.add([],i,e.scale$2([],e.sub([],e.add([],o,t),i),2));i[0]=r[0],i[1]=r[1];}return i}}function kr(e){return e.panDelta&&e.panDelta.mag()||e.zoomDelta||e.bearingDelta||e.pitchDelta}class Or{constructor(t,i){this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new $o(t),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._trackingEllipsoid=new Rr,this._dragOrigin=null,this._eventsInProgress={},this._addDefaultHandlers(i),e.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);const o=this._el;this._listeners=[[o,\"touchstart\",{passive:!0}],[o,\"touchmove\",{passive:!1}],[o,\"touchend\",void 0],[o,\"touchcancel\",void 0],[o,\"mousedown\",void 0],[o,\"mousemove\",void 0],[o,\"mouseup\",void 0],[e.window.document,\"mousemove\",{capture:!0}],[e.window.document,\"mouseup\",void 0],[o,\"mouseover\",void 0],[o,\"mouseout\",void 0],[o,\"dblclick\",void 0],[o,\"click\",void 0],[o,\"keydown\",{capture:!1}],[o,\"keyup\",void 0],[o,\"wheel\",{passive:!1}],[o,\"contextmenu\",void 0],[e.window,\"blur\",void 0]];for(const[t,i,o]of this._listeners)t.addEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,o);}destroy(){for(const[t,i,o]of this._listeners)t.removeEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,o);}_addDefaultHandlers(e){const t=this._map,i=t.getCanvasContainer();this._add(\"mapEvent\",new er(t,e));const o=t.boxZoom=new ir(t,e);this._add(\"boxZoom\",o);const r=new ar,n=new Mr;t.doubleClickZoom=new Ir(n,r),this._add(\"tapZoom\",r),this._add(\"clickZoom\",n);const a=new Sr;this._add(\"tapDragZoom\",a);const s=t.touchPitch=new yr(t);this._add(\"touchPitch\",s);const l=new hr(e),c=new _r(e);t.dragRotate=new Dr(e,l,c),this._add(\"mouseRotate\",l,[\"mousePitch\"]),this._add(\"mousePitch\",c,[\"mouseRotate\"]);const h=new cr(e),_=new ur(t,e);t.dragPan=new zr(i,h,_),this._add(\"mousePan\",h),this._add(\"touchPan\",_,[\"touchZoom\",\"touchRotate\"]);const u=new vr,d=new fr;t.touchZoomRotate=new Pr(i,d,u,a),this._add(\"touchRotate\",u,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",d,[\"touchPan\",\"touchRotate\"]),this._add(\"blockableMapEvent\",new tr(t));const p=t.scrollZoom=new Cr(t,this);this._add(\"scrollZoom\",p,[\"mousePan\"]);const m=t.keyboard=new wr;this._add(\"keyboard\",m);for(const i of [\"boxZoom\",\"doubleClickZoom\",\"tapDragZoom\",\"touchPitch\",\"dragRotate\",\"dragPan\",\"touchZoomRotate\",\"scrollZoom\",\"keyboard\"])e.interactive&&e[i]&&t[i].enable(e[i]);}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t;}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[];}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return !!Ar(this._eventsInProgress)||this.isZooming()}_blockedByActive(e,t,i){for(const o in e)if(o!==i&&(!t||t.indexOf(o)<0))return !0;return !1}handleWindowEvent(e){this.handleEvent(e,`${e.type}Window`);}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}handleEvent(e,t){this._updatingCamera=!0;const i=\"renderFrame\"===e.type,o=i?void 0:e,r={needsRenderFrame:!1},n={},a={},s=e.touches?this._getMapTouches(e.touches):void 0,l=s?m(this._el,s):i?void 0:p(this._el,e);for(const{handlerName:i,handler:c,allowed:h}of this._handlers){if(!c.isEnabled())continue;let _;this._blockedByActive(a,h,i)?c.reset():c[t||e.type]&&(_=c[t||e.type](e,l,s),this.mergeHandlerResult(r,n,_,i,o),_&&_.needsRenderFrame&&this._triggerRenderFrame()),(_||c.isActive())&&(a[i]=c);}const c={};for(const e in this._previousActiveHandlers)a[e]||(c[e]=o);this._previousActiveHandlers=a,(Object.keys(c).length||kr(r))&&(this._changes.push([r,n,c]),this._triggerRenderFrame()),(Object.keys(a).length||kr(r))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:h}=r;h&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],h(this._map));}mergeHandlerResult(t,i,o,r,n){if(!o)return;e.extend(t,o);const a={handlerName:r,originalEvent:o.originalEvent||n};void 0!==o.zoomDelta&&(i.zoom=a),void 0!==o.panDelta&&(i.drag=a),void 0!==o.pitchDelta&&(i.pitch=a),void 0!==o.bearingDelta&&(i.rotate=a);}_applyChanges(){const t={},i={},o={};for(const[r,n,a]of this._changes)r.panDelta&&(t.panDelta=(t.panDelta||new e.pointGeometry(0,0))._add(r.panDelta)),r.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+r.zoomDelta),r.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+r.bearingDelta),r.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+r.pitchDelta),void 0!==r.around&&(t.around=r.around),void 0!==r.aroundCoord&&(t.aroundCoord=r.aroundCoord),void 0!==r.pinchAround&&(t.pinchAround=r.pinchAround),r.noInertia&&(t.noInertia=r.noInertia),e.extend(i,n),e.extend(o,a);this._updateMapTransform(t,i,o),this._changes=[];}_updateMapTransform(t,i,o){const r=this._map,n=r.transform,a=e=>[e.x,e.y,e.z];if((e=>{const t=this._eventsInProgress.drag;return t&&!this._handlersById[t.handlerName].isActive()})()&&!kr(t)){const e=n.zoom;n.cameraElevationReference=\"sea\",n.recenterOnTerrain(),n.cameraElevationReference=\"ground\",e!==n.zoom&&this._map._update(!0);}if(!kr(t))return void this._fireEvents(i,o,!0);let{panDelta:s,zoomDelta:l,bearingDelta:c,pitchDelta:h,around:_,aroundCoord:u,pinchAround:d}=t;void 0!==d&&(_=d),(e=>i.drag&&!this._eventsInProgress.drag)()&&_&&(this._dragOrigin=a(n.pointCoordinate3D(_)),this._trackingEllipsoid.setup(n._camera.position,this._dragOrigin)),n.cameraElevationReference=\"sea\",r._stop(!0),_=_||r.transform.centerPoint,c&&(n.bearing+=c),h&&(n.pitch+=h),n._updateCameraState();const p=[0,0,0];if(s){const t=n.pointCoordinate(_);if(\"globe\"===n.projection.name){const i=e.latFromMercatorY(t.y),o=n.center.lat,r=Math.min(e.mercatorZfromAltitude(1,i)/e.mercatorZfromAltitude(1,o),2);s=s.rotate(-n.angle),p[0]=-s.x/n.worldSize*r,p[1]=-s.y/n.worldSize*r;}else {const e=n.pointCoordinate(_.sub(s));t&&e&&(p[0]=e.x-t.x,p[1]=e.y-t.y);}}const m=n.zoom,f=[0,0,0];if(l){const t=a(u||n.pointCoordinate3D(_)),i={dir:e.normalize([],e.sub([],t,n._camera.position))};if(i.dir[2]<0){const o=n.zoomDeltaToMovement(t,l);e.scale$2(f,i.dir,o);}}const g=e.add(p,p,f);n._translateCameraConstrained(g),l&&Math.abs(n.zoom-m)>1e-4&&n.recenterOnTerrain(),n.cameraElevationReference=\"ground\",this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(i,o,!0);}_fireEvents(t,i,o){const r=Ar(this._eventsInProgress),n=Ar(t),a={};for(const e in t){const{originalEvent:i}=t[e];this._eventsInProgress[e]||(a[`${e}start`]=i),this._eventsInProgress[e]=t[e];}!r&&n&&this._fireEvent(\"movestart\",n.originalEvent);for(const e in a)this._fireEvent(e,a[e]);n&&this._fireEvent(\"move\",n.originalEvent);for(const e in t){const{originalEvent:i}=t[e];this._fireEvent(e,i);}const s={};let l;for(const e in this._eventsInProgress){const{handlerName:t,originalEvent:o}=this._eventsInProgress[e];this._handlersById[t].isActive()||(delete this._eventsInProgress[e],l=i[t]||o,s[`${e}end`]=l);}for(const e in s)this._fireEvent(e,s[e]);const c=Ar(this._eventsInProgress);if(o&&(r||n)&&!c){this._updatingCamera=!0;const t=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap<e&&e<this._bearingSnap;t?(i(t.bearing||this._map.getBearing())&&(t.bearing=0),this._map.easeTo(t,{originalEvent:l})):(this._map.fire(new e.Event(\"moveend\",{originalEvent:l})),i(this._map.getBearing())&&this._map.resetNorth()),this._updatingCamera=!1;}}_fireEvent(t,i){this._map.fire(new e.Event(t,i?{originalEvent:i}:{}));}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add((e=>{this._frameId=void 0,this.handleEvent(new Lr(\"renderFrame\",{timeStamp:e})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}const Br=\"map.setFreeCameraOptions(...) and map.getFreeCameraOptions() are not yet supported for non-mercator projections.\";class Fr extends e.Evented{constructor(t,i){super(),this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=i.bearingSnap,e.bindAll([\"_renderFrameCallback\"],this);}getCenter(){return new e.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}panBy(t,i,o){return t=e.pointGeometry.convert(t).mult(-1),this.panTo(this.transform.center,e.extend({offset:t},i),o)}panTo(t,i,o){return this.easeTo(e.extend({center:t},i),o)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(t,i,o){return this.easeTo(e.extend({zoom:t},i),o)}zoomIn(e,t){return this.zoomTo(this.getZoom()+1,e,t),this}zoomOut(e,t){return this.zoomTo(this.getZoom()-1,e,t),this}getBearing(){return this.transform.bearing}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(t,i,o){return this.easeTo(e.extend({bearing:t},i),o)}resetNorth(t,i){return this.rotateTo(0,e.extend({duration:1e3},t),i),this}resetNorthPitch(t,i){return this.easeTo(e.extend({bearing:0,pitch:0,duration:1e3},t),i),this}snapToNorth(e,t){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(e,t):this}getPitch(){return this.transform.pitch}setPitch(e,t){return this.jumpTo({pitch:e},t),this}cameraForBounds(t,i){t=e.LngLatBounds.convert(t);const o=i&&i.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),o,i)}_extendCameraOptions(t){const i={top:0,bottom:0,right:0,left:0};if(\"number\"==typeof(t=e.extend({padding:i,offset:[0,0],maxZoom:this.transform.maxZoom},t)).padding){const e=t.padding;t.padding={top:e,bottom:e,right:e,left:e};}return t.padding=e.extend(i,t.padding),t}_cameraForBoxAndBearing(t,i,o,r){const n=this._extendCameraOptions(r),a=this.transform,s=a.padding,l=a.project(e.LngLat.convert(t)),c=a.project(e.LngLat.convert(i)),h=new e.pointGeometry(l.x,c.y),_=new e.pointGeometry(c.x,l.y),u=-e.degToRad(o),d=l.rotate(u),p=c.rotate(u),m=h.rotate(u),f=_.rotate(u),g=new e.pointGeometry(Math.max(d.x,p.x,m.x,f.x),Math.max(d.y,p.y,m.y,f.y)),v=new e.pointGeometry(Math.min(d.x,p.x,m.x,f.x),Math.min(d.y,p.y,m.y,f.y)),x=g.sub(v),y=(a.width-((s.left||0)+(s.right||0)+n.padding.left+n.padding.right))/x.x,b=(a.height-((s.top||0)+(s.bottom||0)+n.padding.top+n.padding.bottom))/x.y;if(b<0||y<0)return void e.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");const w=Math.min(a.scaleZoom(a.scale*Math.min(y,b)),n.maxZoom),T=\"number\"==typeof n.offset.x&&\"number\"==typeof n.offset.y?new e.pointGeometry(n.offset.x,n.offset.y):e.pointGeometry.convert(n.offset),E=new e.pointGeometry((n.padding.left-n.padding.right)/2,(n.padding.top-n.padding.bottom)/2).rotate(o*Math.PI/180),C=T.add(E).mult(a.scale/a.zoomScale(w));return {center:a.unproject(l.add(c).div(2).sub(C)),zoom:w,bearing:o}}_cameraForBox(t,i,o,r,n){const a=this._extendCameraOptions(n);o=o||0,r=r||0,t=e.LngLat.convert(t),i=e.LngLat.convert(i);const s=this.transform.clone();s.padding=a.padding;const l=this.getFreeCameraOptions(),c=new e.LngLat(.5*(t.lng+i.lng),.5*(t.lat+i.lat)),h=.5*(o+r);if(s._camera.position[2]<e.mercatorZfromAltitude(h,c.lat))return void e.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");l.lookAtPoint(c),s.setFreeCameraOptions(l);const _=e.MercatorCoordinate.fromLngLat(t),u=e.MercatorCoordinate.fromLngLat(i),d=s.pointRayIntersection(s.centerPoint,h),p=[(m=s.rayIntersectionCoordinate(d)).x,m.y,m.z];var m;const f=s.screenPointToMercatorRay(s.centerPoint),g=\"globe\"!==s.projection.name;let v,x=0;do{const t=Math.floor(s.zoom),i=1<<t,n=Math.min(i*_.x,i*u.x),a=Math.min(i*_.y,i*u.y),l=Math.max(i*_.x,i*u.x),c=Math.max(i*_.y,i*u.y),h=new e.Aabb([n,a,o],[l,c,r]),d=e.Frustum.fromInvProjectionMatrix(s.invProjMatrix,s.worldSize,t,g);if(2!==h.intersects(d)){v&&(s._camera.position=e.scaleAndAdd([],s._camera.position,f.dir,-v),s._updateStateFromCamera());break}const m=e.sub([],s._camera.position,p);v=.5*e.length(m),s._camera.position=e.scaleAndAdd([],s._camera.position,f.dir,v);try{s._updateStateFromCamera();}catch(t){return void e.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\")}}while(++x<10);return {center:s.center,zoom:s.zoom,bearing:s.bearing,pitch:s.pitch}}fitBounds(e,t,i){return this._fitInternal(this.cameraForBounds(e,t),t,i)}_raycastElevationBox(t,i){const o=this.transform.elevation;if(!o)return;const r=new e.pointGeometry(t.x,i.y),n=new e.pointGeometry(i.x,t.y),a=o.pointCoordinate(t);if(!a)return;const s=o.pointCoordinate(i);if(!s)return;const l=o.pointCoordinate(r);if(!l)return;const c=o.pointCoordinate(n);if(!c)return;const h=new e.MercatorCoordinate(a[0],a[1]).toLngLat(),_=new e.MercatorCoordinate(s[0],s[1]).toLngLat(),u=new e.MercatorCoordinate(l[0],l[1]).toLngLat(),d=new e.MercatorCoordinate(c[0],c[1]).toLngLat(),p=Math.min(h.lng,Math.min(_.lng,Math.min(u.lng,d.lng))),m=Math.min(h.lat,Math.min(_.lat,Math.min(u.lat,d.lat))),f=Math.max(h.lng,Math.max(_.lng,Math.max(u.lng,d.lng))),g=Math.max(h.lat,Math.max(_.lat,Math.max(u.lat,d.lat))),v=Math.min(a[3],Math.min(s[3],Math.min(l[3],c[3]))),x=Math.max(a[3],Math.max(s[3],Math.max(l[3],c[3])));return {minLngLat:new e.LngLat(p,m),maxLngLat:new e.LngLat(f,g),minAltitude:v,maxAltitude:x}}fitScreenCoordinates(t,i,o,r,n){let a,s,l,c;const h=e.pointGeometry.convert(t),_=e.pointGeometry.convert(i),u=this._raycastElevationBox(h,_);if(u)a=u.minLngLat,s=u.maxLngLat,l=u.minAltitude,c=u.maxAltitude;else {if(this.transform.anyCornerOffEdge(h,_))return this;a=this.transform.pointLocation(h),s=this.transform.pointLocation(_);}return this._fitInternal(0===this.transform.pitch?this._cameraForBoxAndBearing(this.transform.pointLocation(e.pointGeometry.convert(t)),this.transform.pointLocation(e.pointGeometry.convert(i)),o,r):this._cameraForBox(a,s,l,c,r),r,n)}_fitInternal(t,i,o){return t?(delete(i=e.extend(t,i)).padding,i.linear?this.easeTo(i,o):this.flyTo(i,o)):this}jumpTo(t,i){this.stop();const o=t.preloadOnly?this.transform.clone():this.transform;let r=!1,n=!1,a=!1;return \"zoom\"in t&&o.zoom!==+t.zoom&&(r=!0,o.zoom=+t.zoom),void 0!==t.center&&(o.center=e.LngLat.convert(t.center)),\"bearing\"in t&&o.bearing!==+t.bearing&&(n=!0,o.bearing=+t.bearing),\"pitch\"in t&&o.pitch!==+t.pitch&&(a=!0,o.pitch=+t.pitch),null==t.padding||o.isPaddingEqual(t.padding)||(o.padding=t.padding),t.preloadOnly?(this._preloadTiles(o),this):(this.fire(new e.Event(\"movestart\",i)).fire(new e.Event(\"move\",i)),r&&this.fire(new e.Event(\"zoomstart\",i)).fire(new e.Event(\"zoom\",i)).fire(new e.Event(\"zoomend\",i)),n&&this.fire(new e.Event(\"rotatestart\",i)).fire(new e.Event(\"rotate\",i)).fire(new e.Event(\"rotateend\",i)),a&&this.fire(new e.Event(\"pitchstart\",i)).fire(new e.Event(\"pitch\",i)).fire(new e.Event(\"pitchend\",i)),this.fire(new e.Event(\"moveend\",i)))}getFreeCameraOptions(){return this.transform.projection.supportsFreeCamera||e.warnOnce(Br),this.transform.getFreeCameraOptions()}setFreeCameraOptions(t,i){const o=this.transform;if(!o.projection.supportsFreeCamera)return e.warnOnce(Br),this;this.stop();const r=o.zoom,n=o.pitch,a=o.bearing;o.setFreeCameraOptions(t);const s=r!==o.zoom,l=n!==o.pitch,c=a!==o.bearing;return this.fire(new e.Event(\"movestart\",i)).fire(new e.Event(\"move\",i)),s&&this.fire(new e.Event(\"zoomstart\",i)).fire(new e.Event(\"zoom\",i)).fire(new e.Event(\"zoomend\",i)),c&&this.fire(new e.Event(\"rotatestart\",i)).fire(new e.Event(\"rotate\",i)).fire(new e.Event(\"rotateend\",i)),l&&this.fire(new e.Event(\"pitchstart\",i)).fire(new e.Event(\"pitch\",i)).fire(new e.Event(\"pitchend\",i)),this.fire(new e.Event(\"moveend\",i)),this}easeTo(t,i){this._stop(!1,t.easeId),(!1===(t=e.extend({offset:[0,0],duration:500,easing:e.ease},t)).animate||!t.essential&&e.exported.prefersReducedMotion)&&(t.duration=0);const o=this.transform,r=this.getZoom(),n=this.getBearing(),a=this.getPitch(),s=this.getPadding(),l=\"zoom\"in t?+t.zoom:r,c=\"bearing\"in t?this._normalizeBearing(t.bearing,n):n,h=\"pitch\"in t?+t.pitch:a,_=\"padding\"in t?t.padding:o.padding,u=e.pointGeometry.convert(t.offset);let d,p,m;if(\"globe\"===o.projection.name){const i=e.MercatorCoordinate.fromLngLat(o.center),r=u.rotate(-o.angle);i.x+=r.x/o.worldSize,i.y+=r.y/o.worldSize;const n=i.toLngLat(),a=e.LngLat.convert(t.center||n);this._normalizeCenter(a),d=o.centerPoint.add(r),p=new e.pointGeometry(i.x,i.y).mult(o.worldSize),m=new e.pointGeometry(e.mercatorXfromLng(a.lng),e.mercatorYfromLat(a.lat)).mult(o.worldSize).sub(p);}else {d=o.centerPoint.add(u);const i=o.pointLocation(d),r=e.LngLat.convert(t.center||i);this._normalizeCenter(r),p=o.project(i),m=o.project(r).sub(p);}const f=o.zoomScale(l-r);let g,v;t.around&&(g=e.LngLat.convert(t.around),v=o.locationPoint(g));const x=this._zooming||l!==r,y=this._rotating||n!==c,b=this._pitching||h!==a,w=!o.isPaddingEqual(_),T=o=>T=>{if(x&&(o.zoom=e.number(r,l,T)),y&&(o.bearing=e.number(n,c,T)),b&&(o.pitch=e.number(a,h,T)),w&&(o.interpolatePadding(s,_,T),d=o.centerPoint.add(u)),g)o.setLocationAtPoint(g,v);else {const e=o.zoomScale(o.zoom-r),t=l>r?Math.min(2,f):Math.max(.5,f),i=Math.pow(t,1-T),n=o.unproject(p.add(m.mult(T*i)).mult(e));o.setLocationAtPoint(o.renderWorldCopies?n.wrap():n,d);}return t.preloadOnly||this._fireMoveEvents(i),o};if(t.preloadOnly){const e=this._emulate(T,t.duration,o);return this._preloadTiles(e),this}const E={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=x,this._rotating=y,this._pitching=b,this._padding=w,this._easeId=t.easeId,this._prepareEase(i,t.noMoveStart,E),this._ease(T(o),(e=>{o.recenterOnTerrain(),this._afterEase(i,e);}),t),this}_prepareEase(t,i,o={}){this._moving=!0,this.transform.cameraElevationReference=\"sea\",i||o.moving||this.fire(new e.Event(\"movestart\",t)),this._zooming&&!o.zooming&&this.fire(new e.Event(\"zoomstart\",t)),this._rotating&&!o.rotating&&this.fire(new e.Event(\"rotatestart\",t)),this._pitching&&!o.pitching&&this.fire(new e.Event(\"pitchstart\",t));}_fireMoveEvents(t){this.fire(new e.Event(\"move\",t)),this._zooming&&this.fire(new e.Event(\"zoom\",t)),this._rotating&&this.fire(new e.Event(\"rotate\",t)),this._pitching&&this.fire(new e.Event(\"pitch\",t));}_afterEase(t,i){if(this._easeId&&i&&this._easeId===i)return;this._easeId=void 0,this.transform.cameraElevationReference=\"ground\";const o=this._zooming,r=this._rotating,n=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,o&&this.fire(new e.Event(\"zoomend\",t)),r&&this.fire(new e.Event(\"rotateend\",t)),n&&this.fire(new e.Event(\"pitchend\",t)),this.fire(new e.Event(\"moveend\",t));}flyTo(t,i){if(!t.essential&&e.exported.prefersReducedMotion){const o=e.pick(t,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(o,i)}this.stop(),t=e.extend({offset:[0,0],speed:1.2,curve:1.42,easing:e.ease},t);const o=this.transform,r=this.getZoom(),n=this.getBearing(),a=this.getPitch(),s=this.getPadding(),l=\"zoom\"in t?e.clamp(+t.zoom,o.minZoom,o.maxZoom):r,c=\"bearing\"in t?this._normalizeBearing(t.bearing,n):n,h=\"pitch\"in t?+t.pitch:a,_=\"padding\"in t?t.padding:o.padding,u=o.zoomScale(l-r),d=e.pointGeometry.convert(t.offset);let p=o.centerPoint.add(d);const m=o.pointLocation(p),f=e.LngLat.convert(t.center||m);this._normalizeCenter(f);const g=o.project(m),v=o.project(f).sub(g);let x=t.curve;const y=Math.max(o.width,o.height),b=y/u,w=v.mag();if(\"minZoom\"in t){const i=e.clamp(Math.min(t.minZoom,r,l),o.minZoom,o.maxZoom),n=y/o.zoomScale(i-r);x=Math.sqrt(n/w*2);}const T=x*x;function E(e){const t=(b*b-y*y+(e?-1:1)*T*T*w*w)/(2*(e?b:y)*T*w);return Math.log(Math.sqrt(t*t+1)-t)}function C(e){return (Math.exp(e)-Math.exp(-e))/2}function I(e){return (Math.exp(e)+Math.exp(-e))/2}const M=E(0);let S=function(e){return I(M)/I(M+x*e)},z=function(e){return y*((I(M)*(C(t=M+x*e)/I(t))-C(M))/T)/w;var t;},D=(E(1)-M)/x;if(Math.abs(w)<1e-6||!isFinite(D)){if(Math.abs(y-b)<1e-6)return this.easeTo(t,i);const e=b<y?-1:1;D=Math.abs(Math.log(b/y))/x,z=function(){return 0},S=function(t){return Math.exp(e*x*t)};}t.duration=\"duration\"in t?+t.duration:1e3*D/(\"screenSpeed\"in t?+t.screenSpeed/x:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0);const P=n!==c,A=h!==a,L=!o.isPaddingEqual(_),R=o=>u=>{const m=u*D,x=1/S(m);o.zoom=1===u?l:r+o.scaleZoom(x),P&&(o.bearing=e.number(n,c,u)),A&&(o.pitch=e.number(a,h,u)),L&&(o.interpolatePadding(s,_,u),p=o.centerPoint.add(d));const y=1===u?f:o.unproject(g.add(v.mult(z(m))).mult(x));return o.setLocationAtPoint(o.renderWorldCopies?y.wrap():y,p),o._updateCameraOnTerrain(),t.preloadOnly||this._fireMoveEvents(i),o};if(t.preloadOnly){const e=this._emulate(R,t.duration,o);return this._preloadTiles(e),this}return this._zooming=!0,this._rotating=P,this._pitching=A,this._padding=L,this._prepareEase(i,!1),this._ease(R(o),(()=>this._afterEase(i)),t),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(e,t){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),this._easeFrameId=void 0,this._onEaseFrame=void 0),this._onEaseEnd){const e=this._onEaseEnd;this._onEaseEnd=void 0,e.call(this,t);}if(!e){const e=this.handlers;e&&e.stop(!1);}return this}_ease(t,i,o){!1===o.animate||0===o.duration?(t(1),i()):(this._easeStart=e.exported.now(),this._easeOptions=o,this._onEaseFrame=t,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_renderFrameCallback(){const t=Math.min((e.exported.now()-this._easeStart)/this._easeOptions.duration,1),i=this._onEaseFrame;i&&i(this._easeOptions.easing(t)),t<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();}_normalizeBearing(t,i){t=e.wrap(t,-180,180);const o=Math.abs(t-i);return Math.abs(t-360-i)<o&&(t-=360),Math.abs(t+360-i)<o&&(t+=360),t}_normalizeCenter(e){const t=this.transform;if(!t.renderWorldCopies||t.maxBounds)return;const i=e.lng-t.center.lng;e.lng+=i>180?-360:i<-180?360:0;}_emulate(e,t,i){const o=Math.ceil(15*t/1e3),r=[],n=e(i.clone());for(let e=0;e<=o;e++){const t=n(e/o);r.push(t.clone());}return r}}class Ur{constructor(t={}){this.options=t,e.bindAll([\"_toggleAttribution\",\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this);}getDefaultPosition(){return \"bottom-right\"}onAdd(e){const t=this.options&&this.options.compact;return this._map=e,this._container=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._compactButton=n(\"button\",\"mapboxgl-ctrl-attrib-button\",this._container),n(\"span\",\"mapboxgl-ctrl-icon\",this._compactButton).setAttribute(\"aria-hidden\",\"true\"),this._compactButton.type=\"button\",this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=n(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),this._innerContainer.setAttribute(\"role\",\"list\"),t&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===t&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container}onRemove(){this._container.remove(),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0;}_setElementTitle(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.setAttribute(\"aria-label\",i),e.removeAttribute(\"title\"),e.firstElementChild&&e.firstElementChild.setAttribute(\"title\",i);}_toggleAttribution(){this._container.classList.contains(\"mapboxgl-compact-show\")?(this._container.classList.remove(\"mapboxgl-compact-show\"),this._compactButton.setAttribute(\"aria-expanded\",\"false\")):(this._container.classList.add(\"mapboxgl-compact-show\"),this._compactButton.setAttribute(\"aria-expanded\",\"true\"));}_updateEditLink(){let t=this._editLink;t||(t=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));const i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||e.config.ACCESS_TOKEN}];if(t){const o=i.reduce(((e,t,o)=>(t.value&&(e+=`${t.key}=${t.value}${o<i.length-1?\"&\":\"\"}`),e)),\"?\");t.href=`${e.config.FEEDBACK_URL}/${o}${this._map._hash?this._map._hash.getHashString(!0):\"\"}`,t.rel=\"noopener nofollow\",this._setElementTitle(t,\"MapFeedback\");}}_updateData(e){!e||\"metadata\"!==e.sourceDataType&&\"visibility\"!==e.sourceDataType&&\"style\"!==e.dataType||(this._updateAttributions(),this._updateEditLink());}_updateAttributions(){if(!this._map.style)return;let e=[];if(this._map.style.stylesheet){const e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id;}const t=this._map.style._sourceCaches;for(const i in t){const o=t[i];if(o.used){const t=o.getSource();t.attribution&&e.indexOf(t.attribution)<0&&e.push(t.attribution);}}e.sort(((e,t)=>e.length-t.length)),e=e.filter(((t,i)=>{for(let o=i+1;o<e.length;o++)if(e[o].indexOf(t)>=0)return !1;return !0})),this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=[...this.options.customAttribution,...e]:e.unshift(this.options.customAttribution));const i=e.join(\" | \");i!==this._attribHTML&&(this._attribHTML=i,e.length?(this._innerContainer.innerHTML=i,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null);}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\",\"mapboxgl-compact-show\");}}class Nr{constructor(){e.bindAll([\"_updateLogo\",\"_updateCompact\"],this);}onAdd(e){this._map=e,this._container=n(\"div\",\"mapboxgl-ctrl\");const t=n(\"a\",\"mapboxgl-ctrl-logo\");return t.target=\"_blank\",t.rel=\"noopener nofollow\",t.href=\"https://www.mapbox.com/\",t.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),t.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(t),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact);}getDefaultPosition(){return \"bottom-left\"}_updateLogo(e){e&&\"metadata\"!==e.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\");}_logoRequired(){if(!this._map.style)return !0;const e=this._map.style._sourceCaches;if(0===Object.entries(e).length)return !0;for(const t in e){const i=e[t].getSource();if(i.hasOwnProperty(\"mapbox_logo\")&&!i.mapbox_logo)return !1}return !0}_updateCompact(){const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<250?t.classList.add(\"mapboxgl-compact\"):t.classList.remove(\"mapboxgl-compact\");}}}class Gr{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const t of i)if(t.id===e)return void(t.cancelled=!0)}run(e=0){const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}function jr(t,i,o){if(t=new e.LngLat(t.lng,t.lat),i){const r=new e.LngLat(t.lng-360,t.lat),n=new e.LngLat(t.lng+360,t.lat),a=360*Math.ceil(Math.abs(t.lng-o.center.lng)/360),s=o.locationPoint(t).distSqr(i),l=i.x<0||i.y<0||i.x>o.width||i.y>o.height;o.locationPoint(r).distSqr(i)<s&&(l||Math.abs(r.lng-o.center.lng)<a)?t=r:o.locationPoint(n).distSqr(i)<s&&(l||Math.abs(n.lng-o.center.lng)<a)&&(t=n);}for(;Math.abs(t.lng-o.center.lng)>180;){const e=o.locationPoint(t);if(e.x>=0&&e.y>=0&&e.x<=o.width&&e.y<=o.height)break;t.lng>o.center.lng?t.lng-=360:t.lng+=360;}return t}const Zr={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};class Vr extends e.Evented{constructor(t,i){if(super(),(t instanceof e.window.HTMLElement||i)&&(t=e.extend({element:t},i)),e.bindAll([\"_update\",\"_onMove\",\"_onUp\",\"_addDragHandler\",\"_onMapClick\",\"_onKeyPress\",\"_clearFadeTimer\"],this),this._anchor=t&&t.anchor||\"center\",this._color=t&&t.color||\"#3FB1CE\",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._isDragging=!1,this._state=\"inactive\",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||\"auto\",this._pitchAlignment=t&&t.pitchAlignment&&\"auto\"!==t.pitchAlignment?t.pitchAlignment:this._rotationAlignment,this._updateMoving=()=>this._update(!0),t&&t.element)this._element=t.element,this._offset=e.pointGeometry.convert(t&&t.offset||[0,0]);else {this._defaultMarker=!0,this._element=n(\"div\");const i=41,o=27,r=a(\"svg\",{display:\"block\",height:i*this._scale+\"px\",width:o*this._scale+\"px\",viewBox:`0 0 ${o} ${i}`},this._element),s=a(\"radialGradient\",{id:\"shadowGradient\"},a(\"defs\",{},r));a(\"stop\",{offset:\"10%\",\"stop-opacity\":.4},s),a(\"stop\",{offset:\"100%\",\"stop-opacity\":.05},s),a(\"ellipse\",{cx:13.5,cy:34.8,rx:10.5,ry:5.25,fill:\"url(#shadowGradient)\"},r),a(\"path\",{fill:this._color,d:\"M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z\"},r),a(\"path\",{opacity:.25,d:\"M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z\"},r),a(\"circle\",{fill:\"white\",cx:13.5,cy:13.5,r:5.5},r),this._offset=e.pointGeometry.convert(t&&t.offset||[0,-14]);}this._element.hasAttribute(\"aria-label\")||this._element.setAttribute(\"aria-label\",\"Map marker\"),this._element.classList.add(\"mapboxgl-marker\"),this._element.addEventListener(\"dragstart\",(e=>{e.preventDefault();})),this._element.addEventListener(\"mousedown\",(e=>{e.preventDefault();}));const o=this._element.classList;for(const e in Zr)o.remove(`mapboxgl-marker-anchor-${e}`);o.add(`mapboxgl-marker-anchor-${this._anchor}`),this._popup=null;}addTo(e){return e===this._map||(this.remove(),this._map=e,e.getCanvasContainer().appendChild(this._element),e.on(\"move\",this._updateMoving),e.on(\"moveend\",this._update),e.on(\"remove\",this._clearFadeTimer),e._addMarker(this),this.setDraggable(this._draggable),this._update(),e.on(\"click\",this._onMapClick)),this}remove(){const e=this._map;return e&&(e.off(\"click\",this._onMapClick),e.off(\"move\",this._updateMoving),e.off(\"moveend\",this._update),e.off(\"mousedown\",this._addDragHandler),e.off(\"touchstart\",this._addDragHandler),e.off(\"mouseup\",this._onUp),e.off(\"touchend\",this._onUp),e.off(\"mousemove\",this._onMove),e.off(\"touchmove\",this._onMove),e.off(\"remove\",this._clearFadeTimer),e._removeMarker(this),this._map=void 0),this._clearFadeTimer(),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=e.LngLat.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(!0),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeAttribute(\"role\"),this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),e){if(!(\"offset\"in e.options)){const t=38.1,i=13.5,o=Math.sqrt(Math.pow(i,2)/2);e.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-t],\"bottom-left\":[o,-1*(t-i+o)],\"bottom-right\":[-o,-1*(t-i+o)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset;}this._popup=e,this._lngLat&&this._popup.setLngLat(this._lngLat),this._element.setAttribute(\"role\",\"button\"),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress),this._element.setAttribute(\"aria-expanded\",\"false\");}return this}_onKeyPress(e){const t=e.code,i=e.charCode||e.keyCode;\"Space\"!==t&&\"Enter\"!==t&&32!==i&&13!==i||this.togglePopup();}_onMapClick(e){const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup();}getPopup(){return this._popup}togglePopup(){const e=this._popup;return e?(e.isOpen()?(e.remove(),this._element.setAttribute(\"aria-expanded\",\"false\")):this._map&&(e.addTo(this._map),this._element.setAttribute(\"aria-expanded\",\"true\")),this):this}_evaluateOpacity(){const e=this._map;if(!e)return;const t=this._pos;if(!t||t.x<0||t.x>e.transform.width||t.y<0||t.y>e.transform.height)return void this._clearFadeTimer();const i=e.unproject(t);let o=!1;if(e.transform._terrainEnabled()&&e.getTerrain()){const t=e.getFreeCameraOptions();if(t.position){const e=t.position.toLngLat();o=e.distanceTo(i)<.9*e.distanceTo(this._lngLat);}}const r=(1-e._queryFogOpacity(i))*(o?.2:1);this._element.style.opacity=`${r}`,this._popup&&this._popup._setOpacity(`${r}`),this._fadeTimer=null;}_clearFadeTimer(){this._fadeTimer&&(clearTimeout(this._fadeTimer),this._fadeTimer=null);}_updateDOM(){const e=this._pos;if(!e)return;const t=this._offset.mult(this._scale),i=this._calculatePitch(),o=this._calculateRotation();this._element.style.transform=`\\n translate(${e.x}px, ${e.y}px) ${Zr[this._anchor]}\\n rotateX(${i}deg) rotateZ(${o}deg)\\n translate(${t.x}px, ${t.y}px)\\n `;}_calculatePitch(){return \"viewport\"===this._pitchAlignment||\"auto\"===this._pitchAlignment?0:this._map&&\"map\"===this._pitchAlignment?this._map.getPitch():0}_calculateRotation(){return \"viewport\"===this._rotationAlignment||\"auto\"===this._rotationAlignment?this._rotation:this._map&&\"map\"===this._rotationAlignment?this._rotation-this._map.getBearing():0}_update(t){e.window.cancelAnimationFrame(this._updateFrameId);const i=this._map;i&&(i.transform.renderWorldCopies&&(this._lngLat=jr(this._lngLat,this._pos,i.transform)),this._pos=i.project(this._lngLat),!0===t?this._updateFrameId=e.window.requestAnimationFrame((()=>{this._element&&this._pos&&this._anchor&&(this._pos=this._pos.round(),this._updateDOM());})):this._pos=this._pos.round(),i._requestDomTask((()=>{this._map&&(this._element&&this._pos&&this._anchor&&this._updateDOM(),!i.getTerrain()&&!i.getFog()||this._fadeTimer||(this._fadeTimer=setTimeout(this._evaluateOpacity.bind(this),60)));})));}getOffset(){return this._offset}setOffset(t){return this._offset=e.pointGeometry.convert(t),this._update(),this}_onMove(t){const i=this._map;if(i){if(!this._isDragging){const e=this._clickTolerance||i._clickTolerance;this._isDragging=t.point.dist(this._pointerdownPos)>=e;}this._isDragging&&(this._pos=t.point.sub(this._positionDelta),this._lngLat=i.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",\"pending\"===this._state&&(this._state=\"active\",this.fire(new e.Event(\"dragstart\"))),this.fire(new e.Event(\"drag\")));}}_onUp(){this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1;const t=this._map;t&&(t.off(\"mousemove\",this._onMove),t.off(\"touchmove\",this._onMove)),\"active\"===this._state&&this.fire(new e.Event(\"dragend\")),this._state=\"inactive\";}_addDragHandler(e){const t=this._map;t&&this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos),this._pointerdownPos=e.point,this._state=\"pending\",t.on(\"mousemove\",this._onMove),t.on(\"touchmove\",this._onMove),t.once(\"mouseup\",this._onUp),t.once(\"touchend\",this._onUp));}setDraggable(e){this._draggable=!!e;const t=this._map;return t&&(e?(t.on(\"mousedown\",this._addDragHandler),t.on(\"touchstart\",this._addDragHandler)):(t.off(\"mousedown\",this._addDragHandler),t.off(\"touchstart\",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||\"auto\",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e&&\"auto\"!==e?e:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}class Wr{constructor(e){this.jumpTo(e);}getValue(t){if(t<=this._startTime)return this._start;if(t>=this._endTime)return this._end;const i=e.easeCubicInOut((t-this._startTime)/(this._endTime-this._startTime));return this._start*(1-i)+this._end*i}isEasing(e){return e>=this._startTime&&e<=this._endTime}jumpTo(e){this._startTime=-1/0,this._endTime=-1/0,this._start=e,this._end=e;}easeTo(e,t,i){this._start=this.getValue(t),this._end=e,this._startTime=t,this._endTime=t+i;}}const qr={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\",\"ScrollZoomBlocker.CtrlMessage\":\"Use ctrl + scroll to zoom the map\",\"ScrollZoomBlocker.CmdMessage\":\"Use ⌘ + scroll to zoom the map\",\"TouchPanBlocker.Message\":\"Use two fingers to move the map\"},Xr={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:85,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,optimizeForTerrain:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,minTileCacheSize:null,maxTileCacheSize:null,localIdeographFontFamily:\"sans-serif\",localFontFamily:null,transformRequest:null,accessToken:null,fadeDuration:300,crossSourceCollisions:!0};function $r(e){e.parentNode&&e.parentNode.removeChild(e);}const Hr={showCompass:!0,showZoom:!0,visualizePitch:!1};class Kr{constructor(t,i,o=!1){this._clickTolerance=10,this.element=i,this.mouseRotate=new hr({clickTolerance:t.dragRotate._mouseRotate._clickTolerance}),this.map=t,o&&(this.mousePitch=new _r({clickTolerance:t.dragRotate._mousePitch._clickTolerance})),e.bindAll([\"mousedown\",\"mousemove\",\"mouseup\",\"touchstart\",\"touchmove\",\"touchend\",\"reset\"],this),i.addEventListener(\"mousedown\",this.mousedown),i.addEventListener(\"touchstart\",this.touchstart,{passive:!1}),i.addEventListener(\"touchmove\",this.touchmove),i.addEventListener(\"touchend\",this.touchend),i.addEventListener(\"touchcancel\",this.reset);}down(e,t){this.mouseRotate.mousedown(e,t),this.mousePitch&&this.mousePitch.mousedown(e,t),h();}move(e,t){const i=this.map,o=this.mouseRotate.mousemoveWindow(e,t),r=o&&o.bearingDelta;if(r&&i.setBearing(i.getBearing()+r),this.mousePitch){const o=this.mousePitch.mousemoveWindow(e,t),r=o&&o.pitchDelta;r&&i.setPitch(i.getPitch()+r);}}off(){const e=this.element;e.removeEventListener(\"mousedown\",this.mousedown),e.removeEventListener(\"touchstart\",this.touchstart,{passive:!1}),e.removeEventListener(\"touchmove\",this.touchmove),e.removeEventListener(\"touchend\",this.touchend),e.removeEventListener(\"touchcancel\",this.reset),this.offTemp();}offTemp(){_(),e.window.removeEventListener(\"mousemove\",this.mousemove),e.window.removeEventListener(\"mouseup\",this.mouseup);}mousedown(t){this.down(e.extend({},t,{ctrlKey:!0,preventDefault:()=>t.preventDefault()}),p(this.element,t)),e.window.addEventListener(\"mousemove\",this.mousemove),e.window.addEventListener(\"mouseup\",this.mouseup);}mousemove(e){this.move(e,p(this.element,e));}mouseup(e){this.mouseRotate.mouseupWindow(e),this.mousePitch&&this.mousePitch.mouseupWindow(e),this.offTemp();}touchstart(e){1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=m(this.element,e.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:()=>e.preventDefault()},this._startPos));}touchmove(e){1!==e.targetTouches.length?this.reset():(this._lastPos=m(this.element,e.targetTouches)[0],this.move({preventDefault:()=>e.preventDefault()},this._lastPos));}touchend(e){0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),this.reset();}reset(){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp();}}const Yr={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0,showUserHeading:!1};let Jr,Qr=0,en=!1;const tn={maxWidth:100,unit:\"metric\"};function on(e,t,i){const o=i&&i.maxWidth||100,r=e._containerHeight/2,n=e._containerWidth/2-o/2,a=e.unproject([n,r]),s=e.unproject([n+o,r]),l=a.distanceTo(s);if(i&&\"imperial\"===i.unit){const i=3.2808*l;i>5280?rn(t,o,i/5280,e._getUIString(\"ScaleControl.Miles\"),e):rn(t,o,i,e._getUIString(\"ScaleControl.Feet\"),e);}else i&&\"nautical\"===i.unit?rn(t,o,l/1852,e._getUIString(\"ScaleControl.NauticalMiles\"),e):l>=1e3?rn(t,o,l/1e3,e._getUIString(\"ScaleControl.Kilometers\"),e):rn(t,o,l,e._getUIString(\"ScaleControl.Meters\"),e);}function rn(e,t,i,o,r){const n=function(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}(i),a=n/i;r._requestDomTask((()=>{e.style.width=t*a+\"px\",e.innerHTML=`${n}&nbsp;${o}`;}));}const nn={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\"},an=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \");function sn(t=new e.pointGeometry(0,0),i=\"bottom\"){if(\"number\"==typeof t){const o=Math.round(Math.sqrt(.5*Math.pow(t,2)));switch(i){case\"top\":return new e.pointGeometry(0,t);case\"top-left\":return new e.pointGeometry(o,o);case\"top-right\":return new e.pointGeometry(-o,o);case\"bottom\":return new e.pointGeometry(0,-t);case\"bottom-left\":return new e.pointGeometry(o,-o);case\"bottom-right\":return new e.pointGeometry(-o,-o);case\"left\":return new e.pointGeometry(t,0);case\"right\":return new e.pointGeometry(-t,0)}return new e.pointGeometry(0,0)}return t instanceof e.pointGeometry||Array.isArray(t)?e.pointGeometry.convert(t):e.pointGeometry.convert(t[i]||[0,0])}const ln={version:e.version,supported:t,setRTLTextPlugin:e.setRTLTextPlugin,getRTLTextPluginStatus:e.getRTLTextPluginStatus,Map:class extends Fr{constructor(t){if(null!=(t=e.extend({},Xr,t)).minZoom&&null!=t.maxZoom&&t.minZoom>t.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=t.minPitch&&null!=t.maxPitch&&t.minPitch>t.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=t.minPitch&&t.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=t.maxPitch&&t.maxPitch>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(t.antialias&&e.isSafariWithAntialiasingBug(e.window)&&(t.antialias=!1,e.warnOnce(\"Antialiasing is disabled for this WebGL context to avoid browser bug: https://github.com/mapbox/mapbox-gl-js/issues/11609\")),super(new No(t.minZoom,t.maxZoom,t.minPitch,t.maxPitch,t.renderWorldCopies),t),this._interactive=t.interactive,this._minTileCacheSize=t.minTileCacheSize,this._maxTileCacheSize=t.maxTileCacheSize,this._failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=t.preserveDrawingBuffer,this._antialias=t.antialias,this._trackResize=t.trackResize,this._bearingSnap=t.bearingSnap,this._refreshExpiredTiles=t.refreshExpiredTiles,this._fadeDuration=t.fadeDuration,this._isInitialLoad=!0,this._crossSourceCollisions=t.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=t.collectResourceTiming,this._optimizeForTerrain=t.optimizeForTerrain,this._renderTaskQueue=new Gr,this._domRenderTaskQueue=new Gr,this._controls=[],this._markers=[],this._mapId=e.uniqueId(),this._locale=e.extend({},qr,t.locale),this._clickTolerance=t.clickTolerance,this._cooperativeGestures=t.cooperativeGestures,this._containerWidth=0,this._containerHeight=0,this._averageElevationLastSampledAt=-1/0,this._averageElevationExaggeration=0,this._averageElevation=new Wr(0),this._explicitProjection=null,this._requestManager=new e.RequestManager(t.transformRequest,t.accessToken,t.testMode),this._silenceAuthErrors=!!t.testMode,\"string\"==typeof t.container){if(this._container=e.window.document.getElementById(t.container),!this._container)throw new Error(`Container '${t.container}' not found.`)}else {if(!(t.container instanceof e.window.HTMLElement))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=t.container;}if(this._container.childNodes.length>0&&e.warnOnce(\"The map container element should be empty, otherwise the map's interactivity will be negatively impacted. If you want to display a message when WebGL is not supported, use the Mapbox GL Supported plugin instead.\"),t.maxBounds&&this.setMaxBounds(t.maxBounds),e.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_onMapScroll\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(()=>this._update(!1))),this.on(\"moveend\",(()=>this._update(!1))),this.on(\"zoom\",(()=>this._update(!0))),void 0!==e.window&&(e.window.addEventListener(\"online\",this._onWindowOnline,!1),e.window.addEventListener(\"resize\",this._onWindowResize,!1),e.window.addEventListener(\"orientationchange\",this._onWindowResize,!1),e.window.addEventListener(\"webkitfullscreenchange\",this._onWindowResize,!1)),this.handlers=new Or(this,t),this._localFontFamily=t.localFontFamily,this._localIdeographFontFamily=t.localIdeographFontFamily,t.style&&this.setStyle(t.style,{localFontFamily:this._localFontFamily,localIdeographFontFamily:this._localIdeographFontFamily}),t.projection&&this.setProjection(t.projection),this._hash=t.hash&&new jo(\"string\"==typeof t.hash&&t.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:t.center,zoom:t.zoom,bearing:t.bearing,pitch:t.pitch}),t.bounds&&(this.resize(),this.fitBounds(t.bounds,e.extend({},t.fitBoundsOptions,{duration:0})))),this.resize(),t.attributionControl&&this.addControl(new Ur({customAttribution:t.customAttribution})),this._logoControl=new Nr,this.addControl(this._logoControl,t.logoPosition),this.on(\"style.load\",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet);})),this.on(\"data\",(t=>{this._update(\"style\"===t.dataType),this.fire(new e.Event(`${t.dataType}data`,t));})),this.on(\"dataloading\",(t=>{this.fire(new e.Event(`${t.dataType}dataloading`,t));}));}_getMapId(){return this._mapId}addControl(t,i){if(void 0===i&&(i=t.getDefaultPosition?t.getDefaultPosition():\"top-right\"),!t||!t.onAdd)return this.fire(new e.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));const o=t.onAdd(this);this._controls.push(t);const r=this._controlPositions[i];return -1!==i.indexOf(\"bottom\")?r.insertBefore(o,r.firstChild):r.appendChild(o),this}removeControl(t){if(!t||!t.onRemove)return this.fire(new e.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));const i=this._controls.indexOf(t);return i>-1&&this._controls.splice(i,1),t.onRemove(this),this}hasControl(e){return this._controls.indexOf(e)>-1}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}resize(t){if(this._updateContainerDimensions(),this._containerWidth===this.transform.width&&this._containerHeight===this.transform.height)return this;this._resizeCanvas(this._containerWidth,this._containerHeight),this.transform.resize(this._containerWidth,this._containerHeight),this.painter.resize(Math.ceil(this._containerWidth),Math.ceil(this._containerHeight));const i=!this._moving;return i&&this.fire(new e.Event(\"movestart\",t)).fire(new e.Event(\"move\",t)),this.fire(new e.Event(\"resize\",t)),i&&this.fire(new e.Event(\"moveend\",t)),this}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()||null}setMaxBounds(t){return this.transform.setMaxBounds(e.LngLatBounds.convert(t)),this._update()}setMinZoom(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t?this.setZoom(t):this.fire(new e.Event(\"zoomstart\")).fire(new e.Event(\"zoom\")).fire(new e.Event(\"zoomend\")),this;throw new Error(\"minZoom must be between -2 and the current maxZoom, inclusive\")}getMinZoom(){return this.transform.minZoom}setMaxZoom(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t?this.setZoom(t):this.fire(new e.Event(\"zoomstart\")).fire(new e.Event(\"zoom\")).fire(new e.Event(\"zoomend\")),this;throw new Error(\"maxZoom must be greater than the current minZoom\")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t?this.setPitch(t):this.fire(new e.Event(\"pitchstart\")).fire(new e.Event(\"pitch\")).fire(new e.Event(\"pitchend\")),this;throw new Error(\"minPitch must be between 0 and the current maxPitch, inclusive\")}getMinPitch(){return this.transform.minPitch}setMaxPitch(t){if((t=null==t?85:t)>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t?this.setPitch(t):this.fire(new e.Event(\"pitchstart\")).fire(new e.Event(\"pitch\")).fire(new e.Event(\"pitchend\")),this;throw new Error(\"maxPitch must be greater than the current minPitch\")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.renderWorldCopies=e,this._update()}getProjection(){return this._explicitProjection?this._explicitProjection:this.style&&this.style.stylesheet&&this.style.stylesheet.projection?this.style.stylesheet.projection:{name:\"mercator\",center:[0,0]}}setProjection(e){return this._lazyInitEmptyStyle(),e?\"string\"==typeof e&&(e={name:e}):e=null,this._updateProjection(e)}_updateProjection(e){null===e&&(this._explicitProjection=null);const t=e||this.getProjection(),i=this.transform.setProjection(t);if(e&&(this._explicitProjection=this.transform.getProjection()),i){this.painter.clearBackgroundTiles();for(const e in this.style._sourceCaches)this.style._sourceCaches[e].clearTiles();this.style.applyProjectionUpdate(),this._update(!0);}return this}project(t){return this.transform.locationPoint3D(e.LngLat.convert(t))}unproject(t){return this.transform.pointLocation3D(e.pointGeometry.convert(t))}isMoving(){return this._moving||this.handlers&&this.handlers.isMoving()||!1}isZooming(){return this._zooming||this.handlers&&this.handlers.isZooming()||!1}isRotating(){return this._rotating||this.handlers&&this.handlers.isRotating()||!1}_createDelegatedListener(e,t,i){if(\"mouseenter\"===e||\"mouseover\"===e){let o=!1;const r=r=>{const n=t.filter((e=>this.getLayer(e))),a=n.length?this.queryRenderedFeatures(r.point,{layers:n}):[];a.length?o||(o=!0,i.call(this,new Yo(e,this,r.originalEvent,{features:a}))):o=!1;},n=()=>{o=!1;};return {layers:new Set(t),listener:i,delegates:{mousemove:r,mouseout:n}}}if(\"mouseleave\"===e||\"mouseout\"===e){let o=!1;const r=r=>{const n=t.filter((e=>this.getLayer(e)));(n.length?this.queryRenderedFeatures(r.point,{layers:n}):[]).length?o=!0:o&&(o=!1,i.call(this,new Yo(e,this,r.originalEvent)));},n=t=>{o&&(o=!1,i.call(this,new Yo(e,this,t.originalEvent)));};return {layers:new Set(t),listener:i,delegates:{mousemove:r,mouseout:n}}}{const o=e=>{const o=t.filter((e=>this.getLayer(e))),r=o.length?this.queryRenderedFeatures(e.point,{layers:o}):[];r.length&&(e.features=r,i.call(this,e),delete e.features);};return {layers:new Set(t),listener:i,delegates:{[e]:o}}}}on(e,t,i){if(void 0===i)return super.on(e,t);Array.isArray(t)||(t=[t]);const o=this._createDelegatedListener(e,t,i);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(o);for(const e in o.delegates)this.on(e,o.delegates[e]);return this}once(e,t,i){if(void 0===i)return super.once(e,t);Array.isArray(t)||(t=[t]);const o=this._createDelegatedListener(e,t,i);for(const e in o.delegates)this.once(e,o.delegates[e]);return this}off(e,t,i){if(void 0===i)return super.off(e,t);t=new Set(Array.isArray(t)?t:[t]);const o=(e,t)=>{if(e.size!==t.size)return !1;for(const i of e)if(!t.has(i))return !1;return !0},r=this._delegatedListeners?this._delegatedListeners[e]:void 0;return r&&(e=>{for(let r=0;r<e.length;r++){const n=e[r];if(n.listener===i&&o(n.layers,t)){for(const e in n.delegates)this.off(e,n.delegates[e]);return e.splice(r,1),this}}})(r),this}queryRenderedFeatures(t,i){return this.style?(void 0!==i||void 0===t||t instanceof e.pointGeometry||Array.isArray(t)||(i=t,t=void 0),this.style.queryRenderedFeatures(t=t||[[0,0],[this.transform.width,this.transform.height]],i=i||{},this.transform)):[]}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}queryTerrainElevation(t,i){const o=this.transform.elevation;return o?(i=e.extend({},{exaggerated:!0},i),o.getAtPoint(e.MercatorCoordinate.fromLngLat(t),null,i.exaggerated)):null}setStyle(t,i){return !1!==(i=e.extend({},{localIdeographFontFamily:this._localIdeographFontFamily,localFontFamily:this._localFontFamily},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&i.localFontFamily===this._localFontFamily&&this.style&&t?(this._diffStyle(t,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._localFontFamily=i.localFontFamily,this._updateStyle(t,i))}_getUIString(e){const t=this._locale[e];if(null==t)throw new Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){return this.style&&(this.style.setEventedParent(null),this.style._remove(),this.style=void 0),e&&(this.style=new $t(this,t||{}),this.style.setEventedParent(this,{style:this.style}),\"string\"==typeof e?this.style.loadURL(e):this.style.loadJSON(e)),this._updateTerrain(),this}_lazyInitEmptyStyle(){this.style||(this.style=new $t(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());}_diffStyle(t,i){if(\"string\"==typeof t){const o=this._requestManager.normalizeStyleURL(t),r=this._requestManager.transformRequest(o,e.ResourceType.Style);e.getJSON(r,((t,o)=>{t?this.fire(new e.ErrorEvent(t)):o&&this._updateDiff(o,i);}));}else \"object\"==typeof t&&this._updateDiff(t,i);}_updateDiff(t,i){try{this.style.setState(t)&&this._update(!0);}catch(o){e.warnOnce(`Unable to perform style diff: ${o.message||o.error||o}. Rebuilding the style from scratch.`),this._updateStyle(t,i);}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():(e.warnOnce(\"There is no style added to the map.\"),!1)}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){return !!this.style&&this.style._isSourceCacheLoaded(e)}areTilesLoaded(){const e=this.style&&this.style._sourceCaches;for(const t in e){const i=e[t]._tiles;for(const e in i){const t=i[e];if(\"loaded\"!==t.state&&\"errored\"!==t.state)return !1}}return !0}addSourceType(e,t,i){this._lazyInitEmptyStyle(),this.style.addSourceType(e,t,i);}removeSource(e){return this.style.removeSource(e),this._updateTerrain(),this._update(!0)}getSource(e){return this.style.getSource(e)}addImage(t,i,{pixelRatio:o=1,sdf:r=!1,stretchX:n,stretchY:a,content:s}={}){if(this._lazyInitEmptyStyle(),i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap){const{width:l,height:c,data:h}=e.exported.getImageData(i);this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},h),pixelRatio:o,stretchX:n,stretchY:a,content:s,sdf:r,version:0});}else if(void 0===i.width||void 0===i.height)this.fire(new e.ErrorEvent(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));else {const{width:l,height:c}=i,h=i;this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},new Uint8Array(h.data)),pixelRatio:o,stretchX:n,stretchY:a,content:s,sdf:r,version:0,userImage:h}),h.onAdd&&h.onAdd(this,t);}}updateImage(t,i){const o=this.style.getImage(t);if(!o)return void this.fire(new e.ErrorEvent(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));const r=i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap?e.exported.getImageData(i):i,{width:n,height:a}=r;void 0!==n&&void 0!==a?n===o.data.width&&a===o.data.height?(o.data.replace(r.data,!(i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap)),this.style.updateImage(t,o)):this.fire(new e.ErrorEvent(new Error(\"The width and height of the updated image must be that same as the previous version of the image\"))):this.fire(new e.ErrorEvent(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));}hasImage(t){return t?!!this.style.getImage(t):(this.fire(new e.ErrorEvent(new Error(\"Missing required image id\"))),!1)}removeImage(e){this.style.removeImage(e);}loadImage(t,i){e.getImage(this._requestManager.transformRequest(t,e.ResourceType.Image),((t,o)=>{i(t,o instanceof e.window.HTMLImageElement?e.exported.getImageData(o):o);}));}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,o={}){return this.style.setPaintProperty(e,t,i,o),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,o={}){return this.style.setLayoutProperty(e,t,i,o),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setTerrain(e){return this._lazyInitEmptyStyle(),!e&&this.transform.projection.requiresDraping?this.style.setTerrainForDraping():this.style.setTerrain(e),this._averageElevationLastSampledAt=-1/0,this._update(!0)}getTerrain(){return this.style?this.style.getTerrain():null}setFog(e){return this._lazyInitEmptyStyle(),this.style.setFog(e),this._update(!0)}getFog(){return this.style?this.style.getFog():null}_queryFogOpacity(t){return this.style&&this.style.fog?this.style.fog.getOpacityAtLatLng(e.LngLat.convert(t),this.transform):0}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}_updateContainerDimensions(){if(!this._container)return;const t=this._container.getBoundingClientRect().width||400,i=this._container.getBoundingClientRect().height||300;let o,r,n,a=this._container;for(;a&&(!r||!n);){const t=e.window.getComputedStyle(a).transform;t&&\"none\"!==t&&(o=t.match(/matrix.*\\((.+)\\)/)[1].split(\", \"),o[0]&&\"0\"!==o[0]&&\"1\"!==o[0]&&(r=o[0]),o[3]&&\"0\"!==o[3]&&\"1\"!==o[3]&&(n=o[3])),a=a.parentElement;}this._containerWidth=r?Math.abs(t/r):t,this._containerHeight=n?Math.abs(i/n):i;}_detectMissingCSS(){\"rgb(250, 128, 114)\"!==e.window.getComputedStyle(this._missingCSSCanary).getPropertyValue(\"background-color\")&&e.warnOnce(\"This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.\");}_setupContainer(){const e=this._container;e.classList.add(\"mapboxgl-map\"),(this._missingCSSCanary=n(\"div\",\"mapboxgl-canary\",e)).style.visibility=\"hidden\",this._detectMissingCSS();const t=this._canvasContainer=n(\"div\",\"mapboxgl-canvas-container\",e);this._interactive&&t.classList.add(\"mapboxgl-interactive\"),this._canvas=n(\"canvas\",\"mapboxgl-canvas\",t),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\"),this._canvas.setAttribute(\"role\",\"region\"),this._updateContainerDimensions(),this._resizeCanvas(this._containerWidth,this._containerHeight);const i=this._controlContainer=n(\"div\",\"mapboxgl-control-container\",e),o=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach((e=>{o[e]=n(\"div\",`mapboxgl-ctrl-${e}`,i);})),this._container.addEventListener(\"scroll\",this._onMapScroll,!1);}_resizeCanvas(t,i){const o=e.exported.devicePixelRatio||1;this._canvas.width=o*Math.ceil(t),this._canvas.height=o*Math.ceil(i),this._canvas.style.width=`${t}px`,this._canvas.style.height=`${i}px`;}_addMarker(e){this._markers.push(e);}_removeMarker(e){const t=this._markers.indexOf(e);-1!==t&&this._markers.splice(t,1);}_setupPainter(){const i=e.extend({},t.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),o=this._canvas.getContext(\"webgl\",i)||this._canvas.getContext(\"experimental-webgl\",i);o?(e.storeAuthState(o,!0),this.painter=new Mo(o,this.transform),this.on(\"data\",(e=>{\"source\"===e.dataType&&this.painter.setTileLoadedFlag(!0);})),e.exported$1.testSupport(o)):this.fire(new e.ErrorEvent(new Error(\"Failed to initialize WebGL\")));}_contextLost(t){t.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new e.Event(\"webglcontextlost\",{originalEvent:t}));}_contextRestored(t){this._setupPainter(),this.resize(),this._update(),this.fire(new e.Event(\"webglcontextrestored\",{originalEvent:t}));}_onMapScroll(e){if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){return this.style?(this._styleDirty=this._styleDirty||e,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e);}_requestDomTask(e){!this.loaded()||this.loaded()&&!this.isMoving()?e():this._domRenderTaskQueue.add(e);}_render(t){let i;const o=this.painter.context.extTimerQuery,r=e.exported.now();if(this.listens(\"gpu-timing-frame\")&&(i=o.createQueryEXT(),o.beginQueryEXT(o.TIME_ELAPSED_EXT,i)),this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(t),this._domRenderTaskQueue.run(t),this._removed)return;let n=!1;const a=this._isInitialLoad?0:this._fadeDuration;if(this.style&&this._styleDirty){this._styleDirty=!1;const t=this.transform.zoom,i=this.transform.pitch,o=e.exported.now();this.style.zoomHistory.update(t,o);const r=new e.EvaluationParameters(t,{now:o,fadeDuration:a,pitch:i,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),s=r.crossFadingFactor();1===s&&s===this._crossFadingFactor||(n=!0,this._crossFadingFactor=s),this.style.update(r);}this.style&&this.style.fog&&this.style.fog.hasTransition()&&(this.style._markersNeedUpdate=!0,this._sourcesDirty=!0);let s=!1;if(this.style&&this._sourcesDirty?(this._sourcesDirty=!1,this.painter._updateFog(this.style),this._updateTerrain(),s=this._updateAverageElevation(r),this.style._updateSources(this.transform),this._forceMarkerUpdate()):s=this._updateAverageElevation(r),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,a,this._crossSourceCollisions),this.style&&this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showTerrainWireframe:this.showTerrainWireframe,showOverdrawInspector:this._showOverdrawInspector,showQueryGeometry:!!this._showQueryGeometry,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:a,isInitialLoad:this._isInitialLoad,showPadding:this.showPadding,gpuTiming:!!this.listens(\"gpu-timing-layer\"),speedIndexTiming:this.speedIndexTiming}),this.fire(new e.Event(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new e.Event(\"load\"))),this.style&&(this.style.hasTransitions()||n)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),this.listens(\"gpu-timing-frame\")){const t=e.exported.now()-r;o.endQueryEXT(o.TIME_ELAPSED_EXT,i),setTimeout((()=>{const r=o.getQueryObjectEXT(i,o.QUERY_RESULT_EXT)/1e6;o.deleteQueryEXT(i),this.fire(new e.Event(\"gpu-timing-frame\",{cpuTime:t,gpuTime:r}));}),50);}if(this.listens(\"gpu-timing-layer\")){const t=this.painter.collectGpuTimers();setTimeout((()=>{const i=this.painter.queryGpuTimers(t);this.fire(new e.Event(\"gpu-timing-layer\",{layerTimes:i}));}),50);}const l=this._sourcesDirty||this._styleDirty||this._placementDirty||s;if(l||this._repaint)this.triggerRepaint();else {const t=!this.isMoving()&&this.loaded();if(t&&(s=this._updateAverageElevation(r,!0)),s)this.triggerRepaint();else if(this._triggerFrame(!1),t&&(this.fire(new e.Event(\"idle\")),this._isInitialLoad=!1,this.speedIndexTiming)){const t=this._calculateSpeedIndex();this.fire(new e.Event(\"speedindexcompleted\",{speedIndex:t})),this.speedIndexTiming=!1;}}!this._loaded||this._fullyLoaded||l||(this._fullyLoaded=!0,this._authenticate());}_forceMarkerUpdate(){for(const e of this._markers)e._update();}_updateAverageElevation(e,t=!1){const i=e=>(this.transform.averageElevation=e,this._update(!1),!0);if(!this.painter.averageElevationNeedsEasing())return 0!==this.transform.averageElevation&&i(0);if((t||e-this._averageElevationLastSampledAt>500)&&!this._averageElevation.isEasing(e)){const t=this.transform.averageElevation;let o=this.transform.sampleAverageElevation(),r=!1;this.transform.elevation&&(r=this.transform.elevation.exaggeration()!==this._averageElevationExaggeration,this._averageElevationExaggeration=this.transform.elevation.exaggeration()),isNaN(o)?o=0:this._averageElevationLastSampledAt=e;const n=Math.abs(t-o);if(n>1){if(this._isInitialLoad||r)return this._averageElevation.jumpTo(o),i(o);this._averageElevation.easeTo(o,e,300);}else if(n>1e-4)return this._averageElevation.jumpTo(o),i(o)}return !!this._averageElevation.isEasing(e)&&i(this._averageElevation.getValue(e))}_authenticate(){e.getMapSessionAPI(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(t=>{if(t&&(t.message===e.AUTH_ERR_MSG||401===t.status)){const t=this.painter.context.gl;e.storeAuthState(t,!1),this._logoControl instanceof Nr&&this._logoControl._updateLogo(),t&&t.clear(t.DEPTH_BUFFER_BIT|t.COLOR_BUFFER_BIT|t.STENCIL_BUFFER_BIT),this._silenceAuthErrors||this.fire(new e.ErrorEvent(new Error(\"A valid Mapbox access token is required to use Mapbox GL JS. To create an account or a new access token, visit https://account.mapbox.com/\")));}})),e.postMapLoadEvent(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(()=>{}));}_updateTerrain(){this.painter.updateTerrain(this.style,this.isMoving()||this.isRotating()||this.isZooming());}_calculateSpeedIndex(){const e=this.painter.canvasCopy(),t=this.painter.getCanvasCopiesAndTimestamps();t.timeStamps.push(performance.now());const i=this.painter.context.gl,o=i.createFramebuffer();function r(e){i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,e,0);const t=new Uint8Array(i.drawingBufferWidth*i.drawingBufferHeight*4);return i.readPixels(0,0,i.drawingBufferWidth,i.drawingBufferHeight,i.RGBA,i.UNSIGNED_BYTE,t),t}return i.bindFramebuffer(i.FRAMEBUFFER,o),this._canvasPixelComparison(r(e),t.canvasCopies.map(r),t.timeStamps)}_canvasPixelComparison(e,t,i){let o=i[1]-i[0];const r=e.length/4;for(let n=0;n<t.length;n++){const a=t[n];let s=0;for(let t=0;t<a.length;t+=4)a[t]===e[t]&&a[t+1]===e[t+1]&&a[t+2]===e[t+2]&&a[t+3]===e[t+3]&&(s+=1);o+=(i[n+2]-i[n+1])*(1-s/r);}return o}remove(){this._hash&&this._hash.remove();for(const e of this._controls)e.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this._domRenderTaskQueue.clear(),this.style&&this.style.destroy(),this.painter.destroy(),this.handlers&&this.handlers.destroy(),this.handlers=void 0,this.setStyle(null),void 0!==e.window&&(e.window.removeEventListener(\"resize\",this._onWindowResize,!1),e.window.removeEventListener(\"orientationchange\",this._onWindowResize,!1),e.window.removeEventListener(\"webkitfullscreenchange\",this._onWindowResize,!1),e.window.removeEventListener(\"online\",this._onWindowOnline,!1));const t=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");t&&t.loseContext(),$r(this._canvasContainer),$r(this._controlContainer),$r(this._missingCSSCanary),this._container.classList.remove(\"mapboxgl-map\"),e.removeAuthState(this.painter.context.gl),this._removed=!0,this.fire(new e.Event(\"remove\"));}triggerRepaint(){this._triggerFrame(!0);}_triggerFrame(t){this._renderNextFrame=this._renderNextFrame||t,this.style&&!this._frame&&(this._frame=e.exported.frame((e=>{const t=!!this._renderNextFrame;this._frame=null,this._renderNextFrame=null,t&&this._render(e);})));}_preloadTiles(t){const i=this.style?Object.values(this.style._sourceCaches):[];return e.asyncAll(i,((e,i)=>e._preloadTiles(t,i)),(()=>{this.triggerRepaint();})),this}_onWindowOnline(){this._update();}_onWindowResize(e){this._trackResize&&this.resize({originalEvent:e})._update();}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update());}get showTerrainWireframe(){return !!this._showTerrainWireframe}set showTerrainWireframe(e){this._showTerrainWireframe!==e&&(this._showTerrainWireframe=e,this._update());}get speedIndexTiming(){return !!this._speedIndexTiming}set speedIndexTiming(e){this._speedIndexTiming!==e&&(this._speedIndexTiming=e,this._update());}get showPadding(){return !!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update());}get repaint(){return !!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(e){this._vertices=e,this._update();}_setCacheLimits(t,i){e.setCacheLimits(t,i);}get version(){return e.version}},NavigationControl:class{constructor(t){this.options=e.extend({},Hr,t),this._container=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",(e=>e.preventDefault())),this.options.showZoom&&(e.bindAll([\"_setButtonTitle\",\"_updateZoomButtons\"],this),this._zoomInButton=this._createButton(\"mapboxgl-ctrl-zoom-in\",(e=>{this._map&&this._map.zoomIn({},{originalEvent:e});})),n(\"span\",\"mapboxgl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",\"true\"),this._zoomOutButton=this._createButton(\"mapboxgl-ctrl-zoom-out\",(e=>{this._map&&this._map.zoomOut({},{originalEvent:e});})),n(\"span\",\"mapboxgl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",\"true\")),this.options.showCompass&&(e.bindAll([\"_rotateCompassArrow\"],this),this._compass=this._createButton(\"mapboxgl-ctrl-compass\",(e=>{const t=this._map;t&&(this.options.visualizePitch?t.resetNorthPitch({},{originalEvent:e}):t.resetNorth({},{originalEvent:e}));})),this._compassIcon=n(\"span\",\"mapboxgl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",\"true\"));}_updateZoomButtons(){const e=this._map;if(!e)return;const t=e.getZoom(),i=t===e.getMaxZoom(),o=t===e.getMinZoom();this._zoomInButton.disabled=i,this._zoomOutButton.disabled=o,this._zoomInButton.setAttribute(\"aria-disabled\",i.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",o.toString());}_rotateCompassArrow(){const e=this._map;if(!e)return;const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(e.transform.pitch*(Math.PI/180)),.5)}) rotateX(${e.transform.pitch}deg) rotateZ(${e.transform.angle*(180/Math.PI)}deg)`:`rotate(${e.transform.angle*(180/Math.PI)}deg)`;e._requestDomTask((()=>{this._compassIcon&&(this._compassIcon.style.transform=t);}));}onAdd(e){return this._map=e,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),e.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&e.on(\"pitch\",this._rotateCompassArrow),e.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Kr(e,this._compass,this.options.visualizePitch)),this._container}onRemove(){const e=this._map;e&&(this._container.remove(),this.options.showZoom&&e.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&e.off(\"pitch\",this._rotateCompassArrow),e.off(\"rotate\",this._rotateCompassArrow),this._handler&&this._handler.off(),this._handler=void 0),this._map=void 0);}_createButton(e,t){const i=n(\"button\",e,this._container);return i.type=\"button\",i.addEventListener(\"click\",t),i}_setButtonTitle(e,t){if(!this._map)return;const i=this._map._getUIString(`NavigationControl.${t}`);e.setAttribute(\"aria-label\",i),e.firstElementChild&&e.firstElementChild.setAttribute(\"title\",i);}},GeolocateControl:class extends e.Evented{constructor(t){super(),this.options=e.extend({},Yr,t),e.bindAll([\"_onSuccess\",\"_onError\",\"_onZoom\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\",\"_updateMarkerRotation\",\"_onDeviceOrientation\"],this),this._updateMarkerRotationThrottled=Go(this._updateMarkerRotation,20);}onAdd(t){var i;return this._map=t,this._container=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),i=this._setupUI,void 0!==Jr?i(Jr):void 0!==e.window.navigator.permissions?e.window.navigator.permissions.query({name:\"geolocation\"}).then((e=>{Jr=\"denied\"!==e.state,i(Jr);})):(Jr=!!e.window.navigator.geolocation,i(Jr)),this._container}onRemove(){void 0!==this._geolocationWatchID&&(e.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off(\"zoom\",this._onZoom),this._map=void 0,Qr=0,en=!1;}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return !!t&&(i.longitude<t.getWest()||i.longitude>t.getEast()||i.latitude<t.getSouth()||i.latitude>t.getNorth())}_setErrorState(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");}}_onSuccess(t){if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new e.Event(\"outofmaxbounds\",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new e.Event(\"geolocate\",t)),this._finish();}}_updateCamera(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude),o=t.coords.accuracy,r=this._map.getBearing(),n=e.extend({bearing:r},this.options.fitBoundsOptions);this._map.fitBounds(i.toBounds(o),n,{geolocateSource:!0});}_updateMarker(t){if(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=t.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();}_updateCircleRadius(){const e=this._map._containerHeight/2,t=this._map.unproject([0,e]),i=this._map.unproject([100,e]),o=t.distanceTo(i)/100,r=Math.ceil(2*this._accuracy/o);this._circleElement.style.width=`${r}px`,this._circleElement.style.height=`${r}px`;}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}_updateMarkerRotation(){this._userLocationDotMarker&&\"number\"==typeof this._heading?(this._userLocationDotMarker.setRotation(this._heading),this._dotElement.classList.add(\"mapboxgl-user-location-show-heading\")):(this._dotElement.classList.remove(\"mapboxgl-user-location-show-heading\"),this._userLocationDotMarker.setRotation(0));}_onError(t){if(this._map){if(this.options.trackUserLocation)if(1===t.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;const e=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.setAttribute(\"aria-label\",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute(\"title\",e),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===t.code&&en)return;this._setErrorState();}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new e.Event(\"error\",t)),this._finish();}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;}_setupUI(t){if(this._container.addEventListener(\"contextmenu\",(e=>e.preventDefault())),this._geolocateButton=n(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),n(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",\"true\"),this._geolocateButton.type=\"button\",!1===t){e.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");const t=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.setAttribute(\"aria-label\",t),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute(\"title\",t);}else {const e=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.setAttribute(\"aria-label\",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute(\"title\",e);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=n(\"div\",\"mapboxgl-user-location\"),this._dotElement.appendChild(n(\"div\",\"mapboxgl-user-location-dot\")),this._dotElement.appendChild(n(\"div\",\"mapboxgl-user-location-heading\")),this._userLocationDotMarker=new Vr({element:this._dotElement,rotationAlignment:\"map\",pitchAlignment:\"map\"}),this._circleElement=n(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Vr({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(t=>{t.geolocateSource||\"ACTIVE_LOCK\"!==this._watchState||t.originalEvent&&\"resize\"===t.originalEvent.type||(this._watchState=\"BACKGROUND\",this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this.fire(new e.Event(\"trackuserlocationend\")));}));}_onDeviceOrientation(e){this._userLocationDotMarker&&(e.webkitCompassHeading?this._heading=e.webkitCompassHeading:!0===e.absolute&&(this._heading=-1*e.alpha),this._updateMarkerRotationThrottled());}trigger(){if(!this._setup)return e.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new e.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Qr--,en=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new e.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new e.Event(\"trackuserlocationstart\"));}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\");}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let t;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),Qr++,Qr>1?(t={maximumAge:6e5,timeout:0},en=!0):(t=this.options.positionOptions,en=!1),this._geolocationWatchID=e.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,t),this.options.showUserHeading&&this._addDeviceOrientationListener();}}else e.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_addDeviceOrientationListener(){const t=()=>{e.window.addEventListener(\"ondeviceorientationabsolute\"in e.window?\"deviceorientationabsolute\":\"deviceorientation\",this._onDeviceOrientation);};void 0!==e.window.DeviceMotionEvent&&\"function\"==typeof e.window.DeviceMotionEvent.requestPermission?DeviceOrientationEvent.requestPermission().then((e=>{\"granted\"===e&&t();})).catch(console.error):t();}_clearWatch(){e.window.navigator.geolocation.clearWatch(this._geolocationWatchID),e.window.removeEventListener(\"deviceorientation\",this._onDeviceOrientation),e.window.removeEventListener(\"deviceorientationabsolute\",this._onDeviceOrientation),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null);}},AttributionControl:Ur,ScaleControl:class{constructor(t){this.options=e.extend({},tn,t),e.bindAll([\"_onMove\",\"setUnit\"],this);}getDefaultPosition(){return \"bottom-left\"}_onMove(){on(this._map,this._container,this.options);}onAdd(e){return this._map=e,this._container=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",e.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container}onRemove(){this._container.remove(),this._map.off(\"move\",this._onMove),this._map=void 0;}setUnit(e){this.options.unit=e,on(this._map,this._container,this.options);}},FullscreenControl:class{constructor(t){this._fullscreen=!1,t&&t.container&&(t.container instanceof e.window.HTMLElement?this._container=t.container:e.warnOnce(\"Full screen control 'container' must be a DOM element.\")),e.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in e.window.document?this._fullscreenchange=\"fullscreenchange\":\"onwebkitfullscreenchange\"in e.window.document&&(this._fullscreenchange=\"webkitfullscreenchange\");}onAdd(t){return this._map=t,this._container||(this._container=this._map.getContainer()),this._controlContainer=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",e.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,e.window.document.removeEventListener(this._fullscreenchange,this._changeIcon);}_checkFullscreenSupport(){return !(!e.window.document.fullscreenEnabled&&!e.window.document.webkitFullscreenEnabled)}_setupUI(){const t=this._fullscreenButton=n(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);n(\"span\",\"mapboxgl-ctrl-icon\",t).setAttribute(\"aria-hidden\",\"true\"),t.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),e.window.document.addEventListener(this._fullscreenchange,this._changeIcon);}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",e),this._fullscreenButton.firstElementChild&&this._fullscreenButton.firstElementChild.setAttribute(\"title\",e);}_getTitle(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")}_isFullscreen(){return this._fullscreen}_changeIcon(){(e.window.document.fullscreenElement||e.window.document.webkitFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle());}_onClickFullscreen(){this._isFullscreen()?e.window.document.exitFullscreen?e.window.document.exitFullscreen():e.window.document.webkitCancelFullScreen&&e.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen();}},Popup:class extends e.Evented{constructor(t){super(),this.options=e.extend(Object.create(nn),t),e.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseEvent\"],this),this._classList=new Set(t&&t.className?t.className.trim().split(/\\s+/):[]);}addTo(t){return this._map&&this.remove(),this._map=t,this.options.closeOnClick&&t.on(\"preclick\",this._onClose),this.options.closeOnMove&&t.on(\"move\",this._onClose),t.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(t.on(\"mousemove\",this._onMouseEvent),t.on(\"mouseup\",this._onMouseEvent),t._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):t.on(\"move\",this._update),this.fire(new e.Event(\"open\")),this}isOpen(){return !!this._map}remove(){this._content&&this._content.remove(),this._container&&(this._container.remove(),this._container=void 0);const t=this._map;return t&&(t.off(\"move\",this._update),t.off(\"move\",this._onClose),t.off(\"preclick\",this._onClose),t.off(\"click\",this._onClose),t.off(\"remove\",this.remove),t.off(\"mousemove\",this._onMouseEvent),t.off(\"mouseup\",this._onMouseEvent),t.off(\"drag\",this._onMouseEvent),this._map=void 0),this.fire(new e.Event(\"close\")),this}getLngLat(){return this._lngLat}setLngLat(t){this._lngLat=e.LngLat.convert(t),this._pos=null,this._trackPointer=!1,this._update();const i=this._map;return i&&(i.on(\"move\",this._update),i.off(\"mousemove\",this._onMouseEvent),i._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this}trackPointer(){this._trackPointer=!0,this._pos=null,this._update();const e=this._map;return e&&(e.off(\"move\",this._update),e.on(\"mousemove\",this._onMouseEvent),e.on(\"drag\",this._onMouseEvent),e._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this}getElement(){return this._container}setText(t){return this.setDOMContent(e.window.document.createTextNode(t))}setHTML(t){const i=e.window.document.createDocumentFragment(),o=e.window.document.createElement(\"body\");let r;for(o.innerHTML=t;r=o.firstChild,r;)i.appendChild(r);return this.setDOMContent(i)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){let t=this._content;if(t)for(;t.hasChildNodes();)t.firstChild&&t.removeChild(t.firstChild);else t=this._content=n(\"div\",\"mapboxgl-popup-content\",this._container||void 0);if(t.appendChild(e),this.options.closeButton){const e=this._closeButton=n(\"button\",\"mapboxgl-popup-close-button\",t);e.type=\"button\",e.setAttribute(\"aria-label\",\"Close popup\"),e.setAttribute(\"aria-hidden\",\"true\"),e.innerHTML=\"&#215;\",e.addEventListener(\"click\",this._onClose);}return this._update(),this._focusFirstElement(),this}addClassName(e){return this._classList.add(e),this._updateClassList(),this}removeClassName(e){return this._classList.delete(e),this._updateClassList(),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){let t;return this._classList.delete(e)?t=!1:(this._classList.add(e),t=!0),this._updateClassList(),t}_onMouseEvent(e){this._update(e.point);}_getAnchor(e){if(this.options.anchor)return this.options.anchor;const t=this._map,i=this._container,o=this._pos;if(!t||!i||!o)return \"bottom\";const r=i.offsetWidth,n=i.offsetHeight,a=o.x<r/2,s=o.x>t.transform.width-r/2;if(o.y+e<n)return a?\"top-left\":s?\"top-right\":\"top\";if(o.y>t.transform.height-n){if(a)return \"bottom-left\";if(s)return \"bottom-right\"}return a?\"left\":s?\"right\":\"bottom\"}_updateClassList(){const e=this._container;if(!e)return;const t=[...this._classList];t.push(\"mapboxgl-popup\"),this._anchor&&t.push(`mapboxgl-popup-anchor-${this._anchor}`),this._trackPointer&&t.push(\"mapboxgl-popup-track-pointer\"),e.className=t.join(\" \");}_update(e){const t=this._map,i=this._content;if(!t||!this._lngLat&&!this._trackPointer||!i)return;let o=this._container;if(o||(o=this._container=n(\"div\",\"mapboxgl-popup\",t.getContainer()),this._tip=n(\"div\",\"mapboxgl-popup-tip\",o),o.appendChild(i)),this.options.maxWidth&&o.style.maxWidth!==this.options.maxWidth&&(o.style.maxWidth=this.options.maxWidth),t.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=jr(this._lngLat,this._pos,t.transform)),!this._trackPointer||e){const i=this._pos=this._trackPointer&&e?e:t.project(this._lngLat),o=sn(this.options.offset),r=this._anchor=this._getAnchor(o.y),n=sn(this.options.offset,r),a=i.add(n).round();t._requestDomTask((()=>{this._container&&r&&(this._container.style.transform=`${Zr[r]} translate(${a.x}px,${a.y}px)`);}));}this._updateClassList();}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const e=this._container.querySelector(an);e&&e.focus();}_onClose(){this.remove();}_setOpacity(e){this._content&&(this._content.style.opacity=e),this._tip&&(this._tip.style.opacity=e);}},Marker:Vr,Style:$t,LngLat:e.LngLat,LngLatBounds:e.LngLatBounds,Point:e.pointGeometry,MercatorCoordinate:e.MercatorCoordinate,FreeCameraOptions:Ao,Evented:e.Evented,config:e.config,prewarm:function(){Ue().acquire(Oe);},clearPrewarmedResources:function(){const e=Fe;e&&(e.isPreloaded()&&1===e.numActive()?(e.release(Oe),Fe=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"));},get accessToken(){return e.config.ACCESS_TOKEN},set accessToken(t){e.config.ACCESS_TOKEN=t;},get baseApiUrl(){return e.config.API_URL},set baseApiUrl(t){e.config.API_URL=t;},get workerCount(){return Be.workerCount},set workerCount(e){Be.workerCount=e;},get maxParallelImageRequests(){return e.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(t){e.config.MAX_PARALLEL_IMAGE_REQUESTS=t;},clearStorage(t){e.clearTileCache(t);},workerUrl:\"\",workerClass:null,setNow:e.exported.setNow,restoreNow:e.exported.restoreNow};return ln}));\n\n//\n\nvar mapboxgl$1 = mapboxgl;\n\nreturn mapboxgl$1;\n\n})));\n//# sourceMappingURL=mapbox-gl.js.map\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\n// 加载第三方地图\nexport const ThirdPartyMaps = {\n /** 加载天地图普通地图 */\n tdtsl(): any {\n return {\n layers: [\n [\"tdtsl\", \"TianDiTu.Normal.Map\"],\n [\"tdtslzj\", \"TianDiTu.Normal.Annotion\"]],\n key: \"fb258b4c0bbf60ff7a0205b519ad9a96\"\n }\n },\n\n /** 天地图影像 */\n tdtyx(): any {\n return {\n layers:\n [\n [\"tdtyx\", \"TianDiTu.Satellite.Map\"],\n [\"tdtyxzj\", \"TianDiTu.Satellite.Annotion\"],\n ],\n key: \"fb258b4c0bbf60ff7a0205b519ad9a96\"\n }\n },\n /** 天地图地形 */\n tdtdx(): any {\n return {\n layers:\n [\n [\"tdtdx\", \"TianDiTu.Terrain.Map\"],\n [\"tdtdxzj\", \"TianDiTu.Terrain.Annotion\"],\n ],\n key: \"fb258b4c0bbf60ff7a0205b519ad9a96\"\n }\n },\n\n /** 高德矢量 */\n gdsl(): any {\n return { layers: [[\"gdsl\", \"GaoDe.Normal.Map\"]] }\n },\n\n /** 高德矢量,无注记版 */\n gdslwzj(): any {\n return { layers: [[\"gdslwzj\", \"GaoDe.Normal_NoTag.Map\"]] }\n },\n\n /** 高德影像*/\n gdyx(): any {\n return {\n layers: [\n [\"gdyx\", \"GaoDe.Satellite.Map\"],\n [\"gdyxzj\", \"GaoDe.Satellite.Annotion\"],\n ]\n }\n },\n\n /** 百度矢量*/\n bdsl(): any {\n return { layers: [[\"bdsl\", \"Baidu.Normal.Map\"]] }\n },\n\n /** 百度影像*/\n bdyx(): any {\n return {\n layers: [\n [\"bdyx\", \"Baidu.Satellite.Map\"],\n [\"bdyxzj\", \"Baidu.Satellite.Annotion\"],\n ]\n }\n },\n\n /** OSM地图 */\n osm(): any {\n return { layers: [[\"osm\", \"OSM.Normal.Map\"]] }\n },\n\n /** GeoQ普通地图 */\n geoq(): any {\n return { layers: [[\"geoq\", \"Geoq.Normal.Map\"]] }\n },\n\n /** GeoQ深蓝色地图 */\n geoqPurplishBlue(): any {\n return { layers: [[\"geoqPurplishBlue\", \"Geoq.Normal.PurplishBlue\"]] }\n },\n /** GeoQ浅色地图 */\n geoqGray(): any {\n return { layers: [[\"geoqGray\", \"Geoq.Normal.Gray\"]] }\n },\n\n /** GeoQ暖色调地图 */\n geoqWarm(): any {\n return { layers: [[\"geoqWarm\", \"Geoq.Normal.Warm\"]] }\n },\n\n /** GeoQ冷色调地图 */\n geoqCold(): any {\n return { layers: [[\"geoqCold\", \"Geoq.Normal.Cold\"]] }\n },\n\n}","///////////////////////////////////////////////////////////////////////////////\r\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\r\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\r\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\r\n//https://www.mxdraw.com/\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport mapboxgl from \"mapbox-gl\";\r\n/**\r\n * @param\r\n * map:mapbox里Map类的实例对象\r\n */\r\nexport function mxtest_addTtifRaster(map: mapboxgl.Map) {\r\n\r\n const url = './gis/radar.tiff'\r\n console.log(url)\r\n\r\n let w = (114.06825863001939 - 104.18084906665138) * 0.005;\r\n let h = (32.396413467808586 - 22.54283198132819) * 0.005;\r\n\r\n let cenx = 114.07867152431874;\r\n let ceny = 22.563727343812303;\r\n\r\n map.addSource('radar', {\r\n 'type': 'image',\r\n 'url': url,//加载的tiff文件路径\r\n 'coordinates': [\r\n [cenx - w * 0.5, ceny + h * 0.5],\r\n [cenx + w * 0.5, ceny + h * 0.5],\r\n [cenx + w * 0.5, ceny - h * 0.5],\r\n [cenx - w * 0.5, ceny - h * 0.5],\r\n ]//文件展示的经纬度(四个角/顺时针)\r\n });\r\n map.addLayer({\r\n id: 'radar-layer',\r\n 'type': 'raster',\r\n 'source': 'radar',\r\n 'paint': {\r\n 'raster-fade-duration': 0\r\n }\r\n });\r\n\r\n}\r\n\r\n\r\nexport function add_geoserver_wmts_EPSG900913_ttif(map: mapboxgl.Map){\r\n var vectorLayerUrl = 'http://192.168.5.19:8080/geoserver/gwc/service/wmts?layer=mytest%3Amxcadtest2&style=&tilematrixset=EPSG:900913&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/png&TileMatrix=EPSG:900913:{z}&TileCol={x}&TileRow={y}'\r\n\r\n map.addSource('wmts-source', {\r\n 'type': 'raster',\r\n 'tiles': [\r\n vectorLayerUrl\r\n ],\r\n 'tileSize': 256\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'wmts-layer',\r\n 'type': 'raster',\r\n 'source': 'wmts-source',\r\n 'paint': {\r\n 'raster-opacity': 0.95\r\n }\r\n });\r\n}","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nexport function getMapProviders(){\n return {\n TianDiTu: {\n Normal: {\n Map: \"http://t{s}.tianditu.com/DataServer?T=vec_w&X={x}&Y={y}&L={z}&tk={key}\",\n Annotion: \"http://t{s}.tianditu.com/DataServer?T=cva_w&X={x}&Y={y}&L={z}&tk={key}\",\n minzoom: 0,\n maxzoom: 18\n },\n Satellite: {\n Map: \"http://t{s}.tianditu.com/DataServer?T=img_w&X={x}&Y={y}&L={z}&tk={key}\",\n Annotion: \"http://t{s}.tianditu.com/DataServer?T=cia_w&X={x}&Y={y}&L={z}&tk={key}\",\n minzoom: 0,\n maxzoom: 18\n },\n Terrain: {\n Map: \"http://t{s}.tianditu.com/DataServer?T=ter_w&X={x}&Y={y}&L={z}&tk={key}\",\n Annotion: \"http://t{s}.tianditu.com/DataServer?T=cta_w&X={x}&Y={y}&L={z}&tk={key}\",\n minzoom: 0,\n maxzoom: 14\n },\n Subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],\n key: \"\"\n },\n GaoDe: {\n Normal: {\n Map: 'http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',\n minzoom: 0,\n maxzoom: 18\n },\n Normal_NoTag: {\n Map: 'https://wprd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&scl=1&ltype=11&x={x}&y={y}&z={z}',\n minzoom: 3,\n maxzoom: 18\n },\n Satellite: {\n Map: 'http://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',\n Annotion: 'http://webst0{s}.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}',\n minzoom: 3,\n maxzoom: 18\n },\n Subdomains: [\"1\", \"2\", \"3\", \"4\"]\n },\n Baidu: {\n Normal: {\n Map: 'http://online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&scaler=1&p=1'\n },\n Satellite: {\n Map: 'http://shangetu{s}.map.bdimg.com/it/u=x={x};y={y};z={z};v=009;type=sate&fm=46',\n Annotion: 'http://online{s}.map.bdimg.com/tile/?qt=tile&x={x}&y={y}&z={z}&styles=sl&v=020'\n },\n Subdomains: '0123456789',\n tileType: 'bd09'\n },\n Geoq: {\n Normal: {\n Map: \"http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}\",\n PurplishBlue: \"http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}\",\n Gray: \"http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}\",\n Warm: \"http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}\",\n minzoom: 3,\n maxzoom: 16\n },\n Subdomains: []\n },\n OSM: {\n Normal: {\n Map: \"http://{s}.tile.osm.org/{z}/{x}/{y}.png\",\n minzoom: 0,\n maxzoom: 18\n },\n Subdomains: ['a', 'b', 'c']\n }\n };\n}\n\nexport function getGoogleMapUrl(){\n return [\"https://0pn.cn/maps/vt?lyrs=s&x={x}&y={y}&z={z}\",\"https://0pn.cn/maps/vt?lyrs=s,m&gl=CN&x={x}&y={y}&z={z}\"];\n //return [\"https://gac-geo.googlecnapps.cn/maps/vt?lyrs=s&x={x}&y={y}&z={z}\",\"https://gac-geo.googlecnapps.cn/maps/vt?lyrs=s,m&gl=CN&x={x}&y={y}&z={z}\"];\n}","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nimport { McDbPolyline, McGePoint3d, MxCADPluginMapDefaultData, MxCADUiPrPoint, MxCpp, MxMap, MxMapAddGoogleCnLayer, mx_gcj02_To_gps84, mx_gps84_To_gcj02 } from \"mxcad\";\nimport mapboxgl from \"mapbox-gl\";\nimport { ThirdPartyMaps } from \"./third_party_maps\";\nimport axios from \"axios\";\nimport { add_geoserver_wmts_EPSG900913_ttif, mxtest_addTtifRaster } from \"./ttif_demo\";\nimport { DynamicInputType, MxFun} from \"mxdraw\";\nimport { getGoogleMapUrl, getMapProviders } from \"./map_providers\";\nlet map: mapboxgl.Map\nlet mxmap: MxMap;\n\nfunction init_mouse_coord_tip(isLoad_googlecn_map: boolean) {\n map.on(\"click\", async function (e) {\n let { lng, lat } = e.lngLat;\n if (isLoad_googlecn_map) {\n let gps84 = mx_gcj02_To_gps84(lng, lat);\n lng = gps84.lng;\n lat = gps84.lat;\n }\n\n console.log(\"经纬度坐标:\", JSON.stringify([lng, lat]));\n let pt = mapboxgl.MercatorCoordinate.fromLngLat(\n [lng, lat],\n 0\n );\n\n console.log(\"墨卡托坐标:\", JSON.stringify(mxmap.map_lnglat_to_meters(lng, lat)))\n\n let ptCAD = mxmap.mercatorCoord2CAD(pt.x, pt.y);\n console.log(\"CAD坐标:\", JSON.stringify(ptCAD));\n\n });\n}\nexport function getMap(): mapboxgl.Map {\n return map;\n}\n\nexport function getMxMap(): MxMap {\n return mxmap;\n}\n\n\nlet isLoad_googlecn_map = false;\nlet isLoad_geoserver_wmts_EPSG900913_ttif = true;\nisLoad_geoserver_wmts_EPSG900913_ttif = false;\nif (isLoad_geoserver_wmts_EPSG900913_ttif) isLoad_googlecn_map = false;\n\n// 返回地图加载的缺省数据.\nexport function getMapDefaultData(): MxCADPluginMapDefaultData {\n let map_default_data = new MxCADPluginMapDefaultData();\n // CAD图纸与地图的对齐点.\n map_default_data.cadOrigin = [116275.977014, 19273.279085];\n\n\n // 12698436.047373507,2575109.229937706,12698641.731873507,2575240.5864377064\n // 地图与CAD图纸的对齐位置 。\n map_default_data.mapOrigin = [114.06825863001939, 22.54283198132819];\n\n\n // CAD图上一个绘图单是地图上多少米.\n map_default_data.meterInCADUnits = 1.0;\n\n // 需要打开的cad图纸.\n map_default_data.openFile = './demo/road.dwg.mxweb'\n\n // 加载瓦片地图 。\n let mapType = MxFun.getQueryString(\"maptype\");\n\n if (!isLoad_geoserver_wmts_EPSG900913_ttif) {\n if (mapType == \"google\") {\n let hx = mx_gps84_To_gcj02(map_default_data.mapOrigin[0], map_default_data.mapOrigin[1]);\n map_default_data.mapOrigin = [hx.lng, hx.lat];\n isLoad_googlecn_map = true;\n map_default_data.viewColor = { red: 0, green: 0, blue: 0 };\n }\n else {\n let rastermap: any = ThirdPartyMaps.gdslwzj();\n if (mapType == \"gdslwzj\") {\n rastermap = ThirdPartyMaps.gdslwzj()\n } else if (mapType == \"gdyx\") {\n rastermap = ThirdPartyMaps.gdyx();\n }\n else if (mapType == \"tdtsl\") {\n rastermap = ThirdPartyMaps.tdtsl();\n }\n else if (mapType == \"bdsl\") {\n rastermap = ThirdPartyMaps.bdsl();\n }\n else if (mapType == \"geoq\") {\n rastermap = ThirdPartyMaps.geoq();\n }\n map_default_data.rasterTileLayerList = rastermap.layers;\n if (rastermap.key) map_default_data.rasterTileKey = rastermap.key;\n\n map_default_data.providers = getMapProviders();\n }\n }\n\n return map_default_data;\n}\n\n\n\n\nexport function init(map_val: MxMap) {\n mxmap = map_val;\n map = map_val.getMapbox();\n\n if (isLoad_googlecn_map) {\n MxMapAddGoogleCnLayer(map, [\"Image\", \"Lable\"],getGoogleMapUrl());\n }\n\n init_mouse_coord_tip(isLoad_googlecn_map);\n\n if (isLoad_geoserver_wmts_EPSG900913_ttif) {\n add_geoserver_wmts_EPSG900913_ttif(map);\n }\n else {\n mxtest_addTtifRaster(map);\n }\n\n}\n\n\n// 地图下载\nexport async function MxTest_Map_Download() {\n\n // 选择下载范围.\n let getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定下载范围第一点:\");\n let pt1 = await getPoint.go();\n if (!pt1) return;\n\n getPoint.setMessage(\"\\n指定下载范围第二点:\");\n getPoint.setUserDraw((currentPoint: McGePoint3d, worldDraw) => {\n worldDraw.setColor(0xFF0000);\n let pl = new McDbPolyline();\n pl.addVertexAt(pt1);\n pl.addVertexAt(new McGePoint3d(pt1.x, currentPoint.y))\n pl.addVertexAt(currentPoint);\n pl.addVertexAt(new McGePoint3d(currentPoint.x, pt1.y))\n pl.constantWidth = MxFun.screenCoordLong2Doc(2);\n pl.isClosed = true;\n\n worldDraw.drawMcDbEntity(pl);\n\n let points: THREE.Vector3[] = [];\n points.push(pt1.toVector3());\n points.push(new THREE.Vector3(pt1.x, currentPoint.y));\n points.push(currentPoint.toVector3());\n points.push(new THREE.Vector3(currentPoint.x, pt1.y))\n\n worldDraw.setColor(0x003244);\n worldDraw.drawSolid(points, 0.5)\n\n });\n\n getPoint.setDisableOsnap(true);\n getPoint.setDisableOrthoTrace(true);\n getPoint.setDynamicInputType(DynamicInputType.kXYCoordInput);\n let pt2 = await getPoint.go();\n if (!pt2) {\n return;\n }\n\n let lnglat1 = mxmap.cadTolnglat(pt1.toVector3());\n let lnglat2 = mxmap.cadTolnglat(pt2.toVector3());\n\n let map_pt1 = mxmap.map_lnglat_to_meters(lnglat1[0], lnglat1[1]);\n let map_pt2 = mxmap.map_lnglat_to_meters(lnglat2[0], lnglat2[1]);\n\n if(isLoad_googlecn_map)\n {\n if(!(mxmap.outOfChina(lnglat1[0], lnglat1[1]) && mxmap.outOfChina(lnglat2[0], lnglat2[1]) )){\n let lnglat_gps841 = mx_gcj02_To_gps84(lnglat1[0], lnglat1[1])\n let lnglat_gps842 = mx_gcj02_To_gps84(lnglat2[0], lnglat2[1]) \n map_pt1 = mxmap.map_lnglat_to_meters(lnglat_gps841.lng, lnglat_gps841.lat);\n map_pt2 = mxmap.map_lnglat_to_meters(lnglat_gps842.lng, lnglat_gps842.lat);\n }\n }\n \n\n let map_download_param = {\n //url: \"https://gac-geo.googlecnapps.cn/maps/vt?lyrs=s&x={x}&y={y}&z={z}\",\n url: \"https://0pn.cn/maps/vt?lyrs=s&x={x}&y={y}&z={z}\",\n polygon: [map_pt1[0], map_pt1[1], map_pt2[0], map_pt2[1]],\n zoom: 18,\n auto_close: false,\n no_repeated_download: true,\n download_dir: \"\",\n thread_count: 32,\n };\n MxFun.acutPrintf(\"\\n 使用教程:https://help.mxdraw.com/?pid=111\");\n MxFun.acutPrintf(\"\\n 复制下面的范围,到下载器下载地图,下载范围:\");\n let sbound = \"\\n\" +JSON.stringify([map_pt1[0], map_pt1[1], map_pt2[0], map_pt2[1]]);\n MxFun.acutPrintf(sbound);\n MxFun.acutPrintf(\"\\n\");\n\n axios({\n method: \"post\",\n url: \"http://localhost:1337/users/mxgis/download\",\n data: map_download_param\n }).then((ret) => {\n console.log(ret.data)\n alert(JSON.stringify(ret.data))\n }).catch((err) => { console.log(\"网络错误\") })\n\n}\n","window._iconfont_svg_string_4337873='<svg><symbol id=\"icon-zidian\" viewBox=\"0 0 1024 1024\"><path d=\"M893.080181 585.210149h-86.234525v-37.615932h79.557697a57.552376 57.552376 0 0 0 1.786757-115.104753l-20.500683-0.658279 2.445035-20.312603a153.473004 153.473004 0 0 0 1.034439-17.679488A148.300813 148.300813 0 0 0 723.056167 245.72636a151.310088 151.310088 0 0 0-39.966928 5.64239l-20.782803 5.64239-3.009274-21.347042A225.695594 225.695594 0 0 0 209.222531 266.415123v18.807966l-16.739089 1.880797a130.715365 130.715365 0 0 0 14.952333 260.490331v37.615932a168.331297 168.331297 0 0 1-35.547056-332.806961 263.311526 263.311526 0 0 1 521.074702-41.753685 181.120714 181.120714 0 0 1 29.998706-2.539075 185.916746 185.916746 0 0 1 185.822706 185.728666v3.573513a95.168309 95.168309 0 0 1-15.704652 187.515423z\" fill=\"#282D33\" ></path><path d=\"M399.371069 341.646988H329.875634a74.573586 74.573586 0 0 0-74.291466 73.257028v478.944858-18.807966 14.576174a74.573586 74.573586 0 0 1 74.573586-74.479546h431.454744V341.646988H399.371069z\" fill=\"#FFFFFF\" ></path><path d=\"M255.584168 908.519088h-18.807966V414.715936A94.039831 94.039831 0 0 1 329.875634 322.839021h69.495435v37.615933H329.875634a56.423898 56.423898 0 0 0-55.4835 54.825221v399.481201a93.381552 93.381552 0 0 1 55.76562-18.807966h412.646778V360.454954H506.012238v-37.615933h274.408226v511.106481H329.875634a55.85966 55.85966 0 0 0-55.4835 52.568265v7.523187h-0.940398a18.807966 18.807966 0 0 1-17.867568 14.482134z\" fill=\"#282D33\" ></path><path d=\"M369.654483 392.804655H710.736949v371.363292H369.654483z\" fill=\"#F8C44F\" ></path><path d=\"M761.612498 815.137536H329.875634a74.573586 74.573586 0 1 0 0 149.053132h431.736864z\" fill=\"#FFFFFF\" ></path><path d=\"M780.420464 982.998634H329.875634a93.381552 93.381552 0 1 1 0-186.669064h450.54483zM329.875634 833.945502a55.76562 55.76562 0 1 0 0 111.437199h412.928898V833.945502z\" fill=\"#282D33\" ></path><path d=\"M475.073133 1024l-54.072903-34.230498-54.072902 34.230498v-127.89417h108.145805v127.89417z\" fill=\"#34CA9D\" ></path><path d=\"M324.327284 893.942914z\" fill=\"#FFFFFF\" ></path><path d=\"M324.327284 875.134948h437.285214v37.615932h-437.285214z\" fill=\"#282D33\" ></path><path d=\"M324.327284 810.529584z\" fill=\"#FFFFFF\" ></path><path d=\"M305.519318 349.076134h37.615933v461.45345h-37.615933zM520.494371 257.857498L453.067813 190.524979l-67.332519 67.332519-26.613272-26.613272L453.067813 137.392475l94.039831 93.851751-26.613273 26.613272z\" fill=\"#282D33\" ></path><path d=\"M436.422763 189.302462h37.615932v248.829392h-37.615932zM559.803021 694.390393l-94.039831-93.851751 26.613272-26.613272 67.426559 67.332519 67.426558-67.332519 26.519233 26.613272-93.945791 93.851751z\" fill=\"#282D33\" ></path><path d=\"M538.832138 393.556974h37.615933v248.829393h-37.615933z\" fill=\"#282D33\" ></path></symbol></svg>',function(a){var t=(t=document.getElementsByTagName(\"script\"))[t.length-1],e=t.getAttribute(\"data-injectcss\"),t=t.getAttribute(\"data-disable-injectsvg\");if(!t){var n,i,l,o,h,d=function(t,e){e.parentNode.insertBefore(t,e)};if(e&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write(\"<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>\")}catch(t){console&&console.log(t)}}n=function(){var t,e=document.createElement(\"div\");e.innerHTML=a._iconfont_svg_string_4337873,(e=e.getElementsByTagName(\"svg\")[0])&&(e.setAttribute(\"aria-hidden\",\"true\"),e.style.position=\"absolute\",e.style.width=0,e.style.height=0,e.style.overflow=\"hidden\",e=e,(t=document.body).firstChild?d(e,t.firstChild):t.appendChild(e))},document.addEventListener?~[\"complete\",\"loaded\",\"interactive\"].indexOf(document.readyState)?setTimeout(n,0):(i=function(){document.removeEventListener(\"DOMContentLoaded\",i,!1),n()},document.addEventListener(\"DOMContentLoaded\",i,!1)):document.attachEvent&&(l=n,o=a.document,h=!1,s(),o.onreadystatechange=function(){\"complete\"==o.readyState&&(o.onreadystatechange=null,c())})}function c(){h||(h=!0,l())}function s(){try{o.documentElement.doScroll(\"left\")}catch(t){return void setTimeout(s,50)}c()}}(window);\n","window._iconfont_svg_string_4604696='<svg><symbol id=\"icon-guding1\" viewBox=\"0 0 1024 1024\"><path d=\"M251.15000029 471.5l214.425 150.1875 183.74999942 128.62500029a243.7875 243.7875 0 0 0 7.01250029-235.42500058l-10.31249971-20.1375 160.61249971-229.3875-153.60000029-107.55-160.61249971 229.3875-22.42500029-2.77499971a243.7875 243.7875 0 0 0-218.84999942 87.11250029z m192.9375 180.9l-204.37500058 291.825a18.74999971 18.74999971 0 1 1-30.67499971-21.4875L413.37500029 630.87499971l-261.1125-182.84999942a18.74999971 18.74999971 0 1 1 21.4875-30.7125l46.61249942 32.625a281.28750029 281.28750029 0 0 1 254.32500058-102.75000029l147.63749942-210.89999971-46.04999942-32.25000058a18.74999971 18.74999971 0 0 1 21.4875-30.74999942l307.19999971 215.1a18.74999971 18.74999971 0 1 1-21.52500029 30.74999942l-46.08749971-32.2875-147.63750029 210.86250029a281.28750029 281.28750029 0 0 1-9.59999942 274.12499971l46.575 32.625a18.74999971 18.74999971 0 1 1-21.4875 30.75000029l-261.1125-182.85000029z\" fill=\"#89cbfa\" ></path></symbol><symbol id=\"icon-guding\" viewBox=\"0 0 1024 1024\"><path d=\"M381.298 418.828h-157.703l-37.575 38.272 155.61 158.377-278.212 345.128 356.040-265.838 154.71 157.41 38.813-39.51 2.407-157.972 238.838-313.29 71.685 73.013 34.695-35.28-310.185-315.743-34.672 35.257 77.287 79.402-311.737 240.773z\" ></path></symbol><symbol id=\"icon-dengpao1\" viewBox=\"0 0 1024 1024\"><path d=\"M344.73 841.5c0 8.28 6.77 15.31 15.31 15.31h32.75v1.26c0 40.65 51.69 73.52 115.43 73.52s115.18-32.87 115.18-73.52v-1.26h28.48c8.53 0 15.31-7.03 15.31-15.31v-59.95H344.96c-0.23 33.17-0.23 59.95-0.23 59.95zM512.1 98.23c-187.2 0-338.76 140.02-338.76 312.67 0 89.83 40.9 170.89 106.65 227.85 14.1 12.12 26.16 26.24 35.98 41.69h137.08l-31.49-352.21 4.6-0.02v-0.1h149.83v0.11l2.61 0.01-31.49 352.21h149.23c6.92-8.25 14.58-15.91 23.54-22.37 79.8-57.21 130.99-146.55 130.99-247.17C850.86 238.25 699.3 98.23 512.1 98.23zM343.93 759.53h323.25v-1.34c0-17.26 3.88-33.93 10.87-49.21H330.27c6.72 16.12 11.77 32.96 13.66 50.55z\" fill=\"#F7B52C\" ></path><path d=\"M546.38 357.44h-92.6l28.87 323h34.85z\" fill=\"#F7B52C\" ></path></symbol><symbol id=\"icon-duigou\" viewBox=\"0 0 1024 1024\"><path d=\"M387.072 611.328L236.6464 460.8 128 569.3952l259.072 259.1232 515.1232-515.072L793.6 204.8z\" fill=\"#07A35A\" ></path></symbol><symbol id=\"icon-jiantou_xiangyou\" viewBox=\"0 0 1024 1024\"><path d=\"M729.6 448H128v85.333333h601.6L597.333333 665.6l59.733334 59.733333 234.666666-234.666666L661.333333 256l-59.733333 59.733333 128 132.266667z\" fill=\"#444444\" ></path></symbol><symbol id=\"icon-jiantou_xiangzuo\" viewBox=\"0 0 1024 1024\"><path d=\"M290.133333 448H896v85.333333H290.133333l132.266667 132.266667L362.666667 725.333333 128 490.666667 362.666667 256l59.733333 59.733333-132.266667 132.266667z\" fill=\"#444444\" ></path></symbol><symbol id=\"icon-shezhi\" viewBox=\"0 0 1024 1024\"><path d=\"M519.9 647.4c-44.8 7.4-90.4-6.9-122.5-38.3-32.1-31.4-46.6-76.2-39-120 9.4-56.8 56.2-102.7 114.2-112.1 44.9-7.6 90.7 6.7 122.9 38.2 32.2 31.6 46.7 76.5 38.9 120.4-9.7 56.9-56.5 102.6-114.5 111.8M848.4 559l66-40.4c10.5-6.4 15.6-18.6 12.9-30.4L895 349.3c-2.7-11.8-12.8-20.6-25.1-21.9l-77.5-8.4c-7.7-0.8-14.7-4.6-19.5-10.5l-13-16c-4.8-5.9-7-13.5-6.1-21l8.9-75.7c1.4-12-5.1-23.6-16.2-28.9l-131-61.8c-11.1-5.2-24.4-3-33.2 5.5l-55 54c-5.4 5.3-12.8 8.4-20.6 8.4H486c-7.7 0-15.1-3-20.6-8.4l-55-54c-8.7-8.6-22-10.8-33.2-5.5l-130.9 61.8c-11.1 5.3-17.6 16.8-16.2 28.9l8.9 75.8c0.9 7.5-1.3 15-6.1 21L220 308.4c-4.8 5.9-11.8 9.7-19.5 10.5l-77.5 8.5c-12.3 1.3-22.3 10.1-25.1 21.9L65.5 488.1c-2.7 11.8 2.4 24 12.9 30.4l66 40.5c6.5 4 11.2 10.4 12.9 17.8l4.6 19.9c1.7 7.4 0.4 15.1-3.7 21.5l-41.6 64.5c-6.6 10.2-5.8 23.4 1.9 32.9l90.7 111.3c7.7 9.5 20.7 13.1 32.3 9.1l73.5-25.3c7.3-2.5 15.3-2.1 22.2 1.2l18.7 8.8c7 3.3 12.3 9.1 14.8 16.3l25.6 72c4.1 11.4 15.1 19.1 27.4 19.1H569c12.4 0 23.4-7.7 27.4-19.1l25.6-72c2.5-7.1 7.9-13 14.8-16.3l18.7-8.8c6.9-3.3 14.9-3.7 22.2-1.2l73.5 25.3c11.7 4 24.6 0.4 32.3-9.1l90.7-111.3c7.7-9.5 8.4-22.7 1.9-32.9l-41.6-64.5c-4.1-6.4-5.5-14.1-3.8-21.5l4.6-19.8c1.9-7.5 6.5-13.9 13.1-17.9\" fill=\"\" ></path></symbol><symbol id=\"icon-dengpao\" viewBox=\"0 0 1024 1024\"><path d=\"M661.333333 916.394667a21.333333 21.333333 0 0 1 21.333334 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333334 21.333333h-298.666666a21.333333 21.333333 0 0 1-21.333334-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333334-21.333333h298.666666z m-149.333333-896a384 384 0 0 1 170.709333 728.064L682.666667 831.061333a42.666667 42.666667 0 0 1-42.666667 42.666667H384a42.666667 42.666667 0 0 1-42.666667-42.666667v-82.602666A384 384 0 0 1 512 20.394667z m0 85.333333a298.666667 298.666667 0 0 0-85.333333 584.96v97.706667h170.666666l0.042667-97.706667A298.666667 298.666667 0 0 0 512 105.728z\" fill=\"#000000\" opacity=\".65\" ></path></symbol></svg>',function(l){var t=(t=document.getElementsByTagName(\"script\"))[t.length-1],e=t.getAttribute(\"data-injectcss\"),t=t.getAttribute(\"data-disable-injectsvg\");if(!t){var i,o,n,c,a,d=function(t,e){e.parentNode.insertBefore(t,e)};if(e&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write(\"<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>\")}catch(t){console&&console.log(t)}}i=function(){var t,e=document.createElement(\"div\");e.innerHTML=l._iconfont_svg_string_4604696,(e=e.getElementsByTagName(\"svg\")[0])&&(e.setAttribute(\"aria-hidden\",\"true\"),e.style.position=\"absolute\",e.style.width=0,e.style.height=0,e.style.overflow=\"hidden\",e=e,(t=document.body).firstChild?d(e,t.firstChild):t.appendChild(e))},document.addEventListener?~[\"complete\",\"loaded\",\"interactive\"].indexOf(document.readyState)?setTimeout(i,0):(o=function(){document.removeEventListener(\"DOMContentLoaded\",o,!1),i()},document.addEventListener(\"DOMContentLoaded\",o,!1)):document.attachEvent&&(n=i,c=l.document,a=!1,h(),c.onreadystatechange=function(){\"complete\"==c.readyState&&(c.onreadystatechange=null,s())})}function s(){a||(a=!0,n())}function h(){try{c.documentElement.doScroll(\"left\")}catch(t){return void setTimeout(h,50)}s()}}(window);","/**\n * @author Rich Tibbett / https://github.com/richtr\n * @author mrdoob / http://mrdoob.com/\n * @author Tony Parisi / http://www.tonyparisi.com/\n * @author Takahiro / https://github.com/takahirox\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nimport {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternionKeyframeTrack,\n\tRGBAFormat,\n\tRGBFormat,\n\tRepeatWrapping,\n\tScene,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tVertexColors,\n\tsRGBEncoding\n} from \"../../../build/three.module.js\";\n\nvar GLTFLoader = ( function () {\n\n\tfunction GLTFLoader( manager ) {\n\n\t\tLoader.call( this, manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ddsLoader = null;\n\n\t}\n\n\tGLTFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\t\tconstructor: GLTFLoader,\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar resourcePath;\n\n\t\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\t\tresourcePath = this.resourcePath;\n\n\t\t\t} else if ( this.path !== '' ) {\n\n\t\t\t\tresourcePath = this.path;\n\n\t\t\t} else {\n\n\t\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t\t}\n\n\t\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tvar _onError = function ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t};\n\n\t\t\tvar loader = new FileLoader( scope.manager );\n\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\t\tif ( scope.crossOrigin === 'use-credentials' ) {\n\n\t\t\t\tloader.setWithCredentials( true );\n\n\t\t\t}\n\n\t\t\tloader.load( url, function ( data ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t}, _onError );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t_onError( e );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, _onError );\n\n\t\t},\n\n\t\tsetDRACOLoader: function ( dracoLoader ) {\n\n\t\t\tthis.dracoLoader = dracoLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetDDSLoader: function ( ddsLoader ) {\n\n\t\t\tthis.ddsLoader = ddsLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( data, path, onLoad, onError ) {\n\n\t\t\tvar content;\n\t\t\tvar extensions = {};\n\n\t\t\tif ( typeof data === 'string' ) {\n\n\t\t\t\tcontent = data;\n\n\t\t\t} else {\n\n\t\t\t\tvar magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar json = JSON.parse( content );\n\n\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( json.extensionsUsed ) {\n\n\t\t\t\tfor ( var i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\t\tvar extensionName = json.extensionsUsed[ i ];\n\t\t\t\t\tvar extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_LIGHTS_PUNCTUAL:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFLightsExtension( json );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.MSFT_TEXTURE_DDS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureDDSExtension( this.ddsLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 ) {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar parser = new GLTFParser( json, extensions, {\n\n\t\t\t\tpath: path || this.resourcePath || '',\n\t\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\t\tmanager: this.manager\n\n\t\t\t} );\n\n\t\t\tparser.parse( onLoad, onError );\n\n\t\t}\n\n\t} );\n\n\t/* GLTFREGISTRY */\n\n\tfunction GLTFRegistry() {\n\n\t\tvar objects = {};\n\n\t\treturn\t{\n\n\t\t\tget: function ( key ) {\n\n\t\t\t\treturn objects[ key ];\n\n\t\t\t},\n\n\t\t\tadd: function ( key, object ) {\n\n\t\t\t\tobjects[ key ] = object;\n\n\t\t\t},\n\n\t\t\tremove: function ( key ) {\n\n\t\t\t\tdelete objects[ key ];\n\n\t\t\t},\n\n\t\t\tremoveAll: function () {\n\n\t\t\t\tobjects = {};\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/*********************************/\n\t/********** EXTENSIONS ***********/\n\t/*********************************/\n\n\tvar EXTENSIONS = {\n\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\t\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\t\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\t\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\t\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\t\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\t\tMSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n\t};\n\n\t/**\n\t * DDS Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n\t *\n\t */\n\tfunction GLTFTextureDDSExtension( ddsLoader ) {\n\n\t\tif ( ! ddsLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n\t\tthis.ddsLoader = ddsLoader;\n\n\t}\n\n\t/**\n\t * Punctual Lights Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n\t */\n\tfunction GLTFLightsExtension( json ) {\n\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\tvar extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {};\n\t\tthis.lightDefs = extension.lights || [];\n\n\t}\n\n\tGLTFLightsExtension.prototype.loadLight = function ( lightIndex ) {\n\n\t\tvar lightDef = this.lightDefs[ lightIndex ];\n\t\tvar lightNode;\n\n\t\tvar color = new Color( 0xffffff );\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tvar range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type, \"' + lightDef.type + '\".' );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = lightDef.name || ( 'light_' + lightIndex );\n\n\t\treturn Promise.resolve( lightNode );\n\n\t};\n\n\t/**\n\t * Unlit Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n\t */\n\tfunction GLTFMaterialsUnlitExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tGLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\n\n\t\treturn MeshBasicMaterial;\n\n\t};\n\n\tGLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) {\n\n\t\tvar pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/* BINARY EXTENSION */\n\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\n\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\n\tfunction GLTFBinaryExtension( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tvar chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkView.byteLength ) {\n\n\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * DRACO Mesh Compression Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n\t */\n\tfunction GLTFDracoMeshCompressionExtension( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tGLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) {\n\n\t\tvar json = this.json;\n\t\tvar dracoLoader = this.dracoLoader;\n\t\tvar bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tvar gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tvar threeAttributeMap = {};\n\t\tvar attributeNormalizedMap = {};\n\t\tvar attributeTypeMap = {};\n\n\t\tfor ( var attributeName in gltfAttributeMap ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( attributeName in primitive.attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tvar accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tvar componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( var attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tvar normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Texture Transform Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n\t */\n\tfunction GLTFTextureTransformExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\tGLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) {\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t};\n\n\t/**\n\t * Specular-Glossiness Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n\t */\n\n\t/**\n\t * A sub class of StandardMaterial with some of the functionality\n\t * changed via the `onBeforeCompile` callback\n\t * @pailhead\n\t */\n\n\tfunction GLTFMeshStandardSGMaterial( params ) {\n\n\t\tMeshStandardMaterial.call( this );\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tvar specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\ttexelSpecular = sRGBToLinear( texelSpecular );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb;',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 );// 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.specularRoughness += geometryRoughness;',\n\t\t\t'material.specularRoughness = min( material.specularRoughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor.rgb;',\n\t\t].join( '\\n' );\n\n\t\tvar uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\t// please see #14031 or #13198 for an alternate approach\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( var uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float roughness;', 'uniform vec3 specular;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( 'uniform float metalness;', 'uniform float glossiness;' );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include <roughnessmap_pars_fragment>', specularMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include <metalnessmap_pars_fragment>', glossinessMapParsFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include <roughnessmap_fragment>', specularMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include <metalnessmap_fragment>', glossinessMapFragmentChunk );\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace( '#include <lights_physical_fragment>', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\t/*eslint-disable*/\n\t\tObject.defineProperties(\n\t\t\tthis,\n\t\t\t{\t\n\t\t\t\tspecular: {\n\t\t\t\t\tget: function () { return uniforms.specular.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specular.value = v; }\n\t\t\t\t},\n\t\t\t\tspecularMap: {\n\t\t\t\t\tget: function () { return uniforms.specularMap.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.specularMap.value = v; }\n\t\t\t\t},\n\t\t\t\tglossiness: {\n\t\t\t\t\tget: function () { return uniforms.glossiness.value; },\n\t\t\t\t\tset: function ( v ) { uniforms.glossiness.value = v; }\n\t\t\t\t},\n\t\t\t\tglossinessMap: {\n\t\t\t\t\tget: function () { return uniforms.glossinessMap.value; },\n\t\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\t\tuniforms.glossinessMap.value = v;\n\t\t\t\t\t\t//how about something like this - @pailhead\n\t\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\t\t// set USE_ROUGHNESSMAP to enable vUv\n\t\t\t\t\t\t\tthis.defines.USE_ROUGHNESSMAP = '';\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tdelete this.defines.USE_ROUGHNESSMAP;\n\t\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t/*eslint-enable*/\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tGLTFMeshStandardSGMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\n\tGLTFMeshStandardSGMaterial.prototype.constructor = GLTFMeshStandardSGMaterial;\n\n\tGLTFMeshStandardSGMaterial.prototype.copy = function ( source ) {\n\n\t\tMeshStandardMaterial.prototype.copy.call( this, source );\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t};\n\n\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\n\n\t\treturn {\n\n\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n\n\t\t\tspecularGlossinessParams: [\n\t\t\t\t'color',\n\t\t\t\t'map',\n\t\t\t\t'lightMap',\n\t\t\t\t'lightMapIntensity',\n\t\t\t\t'aoMap',\n\t\t\t\t'aoMapIntensity',\n\t\t\t\t'emissive',\n\t\t\t\t'emissiveIntensity',\n\t\t\t\t'emissiveMap',\n\t\t\t\t'bumpMap',\n\t\t\t\t'bumpScale',\n\t\t\t\t'normalMap',\n\t\t\t\t'normalMapType',\n\t\t\t\t'displacementMap',\n\t\t\t\t'displacementScale',\n\t\t\t\t'displacementBias',\n\t\t\t\t'specularMap',\n\t\t\t\t'specular',\n\t\t\t\t'glossinessMap',\n\t\t\t\t'glossiness',\n\t\t\t\t'alphaMap',\n\t\t\t\t'envMap',\n\t\t\t\t'envMapIntensity',\n\t\t\t\t'refractionRatio',\n\t\t\t],\n\n\t\t\tgetMaterialType: function () {\n\n\t\t\t\treturn GLTFMeshStandardSGMaterial;\n\n\t\t\t},\n\n\t\t\textendParams: function ( materialParams, materialDef, parser ) {\n\n\t\t\t\tvar pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) );\n\n\t\t\t\t}\n\n\t\t\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\t\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\t\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\t\t\tvar specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t},\n\n\t\t\tcreateMaterial: function ( materialParams ) {\n\n\t\t\t\tvar material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\t\t\tmaterial.fog = true;\n\n\t\t\t\tmaterial.color = materialParams.color;\n\n\t\t\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\t\t\tmaterial.lightMap = null;\n\t\t\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\t\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\t\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\t\t\tmaterial.emissive = materialParams.emissive;\n\t\t\t\tmaterial.emissiveIntensity = 1.0;\n\t\t\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\t\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\t\t\tmaterial.bumpScale = 1;\n\n\t\t\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\t\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\t\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\t\t\tmaterial.displacementMap = null;\n\t\t\t\tmaterial.displacementScale = 1;\n\t\t\t\tmaterial.displacementBias = 0;\n\n\t\t\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\t\t\tmaterial.specular = materialParams.specular;\n\n\t\t\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\t\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\t\t\tmaterial.alphaMap = null;\n\n\t\t\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\t\t\tmaterial.envMapIntensity = 1.0;\n\n\t\t\t\tmaterial.refractionRatio = 0.98;\n\n\t\t\t\treturn material;\n\n\t\t\t},\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Mesh Quantization Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n\t */\n\tfunction GLTFMeshQuantizationExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n\t/*********************************/\n\t/********** INTERPOLATION ********/\n\t/*********************************/\n\n\t// Spline Interpolation\n\t// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\tfunction GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tGLTFCubicSplineInterpolant.prototype = Object.create( Interpolant.prototype );\n\tGLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n\tGLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( var i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\tGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer;\n\t\tvar values = this.sampleValues;\n\t\tvar stride = this.valueSize;\n\n\t\tvar stride2 = stride * 2;\n\t\tvar stride3 = stride * 3;\n\n\t\tvar td = t1 - t0;\n\n\t\tvar p = ( t - t0 ) / td;\n\t\tvar pp = p * p;\n\t\tvar ppp = pp * p;\n\n\t\tvar offset1 = i1 * stride3;\n\t\tvar offset0 = offset1 - stride3;\n\n\t\tvar s2 = - 2 * ppp + 3 * pp;\n\t\tvar s3 = ppp - pp;\n\t\tvar s0 = 1 - s2;\n\t\tvar s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( var i = 0; i !== stride; i ++ ) {\n\n\t\t\tvar p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tvar m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tvar p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tvar m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\t/*********************************/\n\t/********** INTERNALS ************/\n\t/*********************************/\n\n\t/* CONSTANTS */\n\n\tvar WEBGL_CONSTANTS = {\n\t\tFLOAT: 5126,\n\t\t//FLOAT_MAT2: 35674,\n\t\tFLOAT_MAT3: 35675,\n\t\tFLOAT_MAT4: 35676,\n\t\tFLOAT_VEC2: 35664,\n\t\tFLOAT_VEC3: 35665,\n\t\tFLOAT_VEC4: 35666,\n\t\tLINEAR: 9729,\n\t\tREPEAT: 10497,\n\t\tSAMPLER_2D: 35678,\n\t\tPOINTS: 0,\n\t\tLINES: 1,\n\t\tLINE_LOOP: 2,\n\t\tLINE_STRIP: 3,\n\t\tTRIANGLES: 4,\n\t\tTRIANGLE_STRIP: 5,\n\t\tTRIANGLE_FAN: 6,\n\t\tUNSIGNED_BYTE: 5121,\n\t\tUNSIGNED_SHORT: 5123\n\t};\n\n\tvar WEBGL_COMPONENT_TYPES = {\n\t\t5120: Int8Array,\n\t\t5121: Uint8Array,\n\t\t5122: Int16Array,\n\t\t5123: Uint16Array,\n\t\t5125: Uint32Array,\n\t\t5126: Float32Array\n\t};\n\n\tvar WEBGL_FILTERS = {\n\t\t9728: NearestFilter,\n\t\t9729: LinearFilter,\n\t\t9984: NearestMipmapNearestFilter,\n\t\t9985: LinearMipmapNearestFilter,\n\t\t9986: NearestMipmapLinearFilter,\n\t\t9987: LinearMipmapLinearFilter\n\t};\n\n\tvar WEBGL_WRAPPINGS = {\n\t\t33071: ClampToEdgeWrapping,\n\t\t33648: MirroredRepeatWrapping,\n\t\t10497: RepeatWrapping\n\t};\n\n\tvar WEBGL_TYPE_SIZES = {\n\t\t'SCALAR': 1,\n\t\t'VEC2': 2,\n\t\t'VEC3': 3,\n\t\t'VEC4': 4,\n\t\t'MAT2': 4,\n\t\t'MAT3': 9,\n\t\t'MAT4': 16\n\t};\n\n\tvar ATTRIBUTES = {\n\t\tPOSITION: 'position',\n\t\tNORMAL: 'normal',\n\t\tTANGENT: 'tangent',\n\t\tTEXCOORD_0: 'uv',\n\t\tTEXCOORD_1: 'uv2',\n\t\tCOLOR_0: 'color',\n\t\tWEIGHTS_0: 'skinWeight',\n\t\tJOINTS_0: 'skinIndex',\n\t};\n\n\tvar PATH_PROPERTIES = {\n\t\tscale: 'scale',\n\t\ttranslation: 'position',\n\t\trotation: 'quaternion',\n\t\tweights: 'morphTargetInfluences'\n\t};\n\n\tvar INTERPOLATION = {\n\t\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\t\tLINEAR: InterpolateLinear,\n\t\tSTEP: InterpolateDiscrete\n\t};\n\n\tvar ALPHA_MODES = {\n\t\tOPAQUE: 'OPAQUE',\n\t\tMASK: 'MASK',\n\t\tBLEND: 'BLEND'\n\t};\n\n\tvar MIME_TYPE_FORMATS = {\n\t\t'image/png': RGBAFormat,\n\t\t'image/jpeg': RGBFormat\n\t};\n\n\t/* UTILITY FUNCTIONS */\n\n\tfunction resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n\t */\n\tfunction createDefaultMaterial( cache ) {\n\n\t\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\t\tcolor: 0xFFFFFF,\n\t\t\t\temissive: 0x000000,\n\t\t\t\tmetalness: 1,\n\t\t\t\troughness: 1,\n\t\t\t\ttransparent: false,\n\t\t\t\tdepthTest: true,\n\t\t\t\tside: FrontSide\n\t\t\t} );\n\n\t\t}\n\n\t\treturn cache[ 'DefaultMaterial' ];\n\n\t}\n\n\tfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t\t// Add unknown glTF extensions to an object's userData.\n\n\t\tfor ( var name in objectDef.extensions ) {\n\n\t\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @param {Object3D|Material|BufferGeometry} object\n\t * @param {GLTF.definition} gltfDef\n\t */\n\tfunction assignExtrasToUserData( object, gltfDef ) {\n\n\t\tif ( gltfDef.extras !== undefined ) {\n\n\t\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n\t *\n\t * @param {BufferGeometry} geometry\n\t * @param {Array<GLTF.Target>} targets\n\t * @param {GLTFParser} parser\n\t * @return {Promise<BufferGeometry>}\n\t */\n\tfunction addMorphTargets( geometry, targets, parser ) {\n\n\t\tvar hasMorphPosition = false;\n\t\tvar hasMorphNormal = false;\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\n\t\t\tif ( hasMorphPosition && hasMorphNormal ) break;\n\n\t\t}\n\n\t\tif ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry );\n\n\t\tvar pendingPositionAccessors = [];\n\t\tvar pendingNormalAccessors = [];\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( hasMorphPosition ) {\n\n\t\t\t\tvar pendingAccessor = target.POSITION !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t\t: geometry.attributes.position;\n\n\t\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t\tif ( hasMorphNormal ) {\n\n\t\t\t\tvar pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t\t: geometry.attributes.normal;\n\n\t\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( [\n\t\t\tPromise.all( pendingPositionAccessors ),\n\t\t\tPromise.all( pendingNormalAccessors )\n\t\t] ).then( function ( accessors ) {\n\n\t\t\tvar morphPositions = accessors[ 0 ];\n\t\t\tvar morphNormals = accessors[ 1 ];\n\n\t\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t\treturn geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {Mesh} mesh\n\t * @param {GLTF.Mesh} meshDef\n\t */\n\tfunction updateMorphTargets( mesh, meshDef ) {\n\n\t\tmesh.updateMorphTargets();\n\n\t\tif ( meshDef.weights !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\t\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\t\tvar targetNames = meshDef.extras.targetNames;\n\n\t\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createPrimitiveKey( primitiveDef ) {\n\n\t\tvar dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\t\tvar geometryKey;\n\n\t\tif ( dracoExtension ) {\n\n\t\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t\t} else {\n\n\t\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t\t}\n\n\t\treturn geometryKey;\n\n\t}\n\n\tfunction createAttributesKey( attributes ) {\n\n\t\tvar attributesKey = '';\n\n\t\tvar keys = Object.keys( attributes ).sort();\n\n\t\tfor ( var i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t\t}\n\n\t\treturn attributesKey;\n\n\t}\n\n\t/* GLTF PARSER */\n\n\tfunction GLTFParser( json, extensions, options ) {\n\n\t\tthis.json = json || {};\n\t\tthis.extensions = extensions || {};\n\t\tthis.options = options || {};\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis.markDefs();\n\n\t\tPromise.all( [\n\n\t\t\tthis.getDependencies( 'scene' ),\n\t\t\tthis.getDependencies( 'animation' ),\n\t\t\tthis.getDependencies( 'camera' ),\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tonLoad( result );\n\n\t\t} ).catch( onError );\n\n\t};\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\tGLTFParser.prototype.markDefs = function () {\n\n\t\tvar nodeDefs = this.json.nodes || [];\n\t\tvar skinDefs = this.json.skins || [];\n\t\tvar meshDefs = this.json.meshes || [];\n\n\t\tvar meshReferences = {};\n\t\tvar meshUses = {};\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tvar joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( var i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Meshes can (and should) be reused by multiple nodes in a glTF asset. To\n\t\t// avoid having more than one Mesh with the same name, count\n\t\t// references and rename instances below.\n\t\t//\n\t\t// Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tif ( meshReferences[ nodeDef.mesh ] === undefined ) {\n\n\t\t\t\t\tmeshReferences[ nodeDef.mesh ] = meshUses[ nodeDef.mesh ] = 0;\n\n\t\t\t\t}\n\n\t\t\t\tmeshReferences[ nodeDef.mesh ] ++;\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.json.meshReferences = meshReferences;\n\t\tthis.json.meshUses = meshUses;\n\n\t};\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}\n\t */\n\tGLTFParser.prototype.getDependency = function ( type, index ) {\n\n\t\tvar cacheKey = type + ':' + index;\n\t\tvar dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this.loadMesh( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this.loadBufferView( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this.loadMaterial( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this.loadTexture( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this.loadAnimation( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'light':\n\t\t\t\t\tdependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t};\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise<Array<Object>>}\n\t */\n\tGLTFParser.prototype.getDependencies = function ( type ) {\n\n\t\tvar dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tvar parser = this;\n\t\t\tvar defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\n\n\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\n\t\tvar loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tvar options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\n\n\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\n\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise<BufferAttribute|InterleavedBufferAttribute>}\n\t */\n\tGLTFParser.prototype.loadAccessor = function ( accessorIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tvar pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tvar bufferView = bufferViews[ 0 ];\n\n\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tvar itemBytes = elementBytes * itemSize;\n\t\t\tvar byteOffset = accessorDef.byteOffset || 0;\n\t\t\tvar byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tvar normalized = accessorDef.normalized === true;\n\t\t\tvar array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tvar ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tvar ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tvar ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tvar itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tvar TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tvar byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tvar byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tvar sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tvar sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise<THREE.Texture>}\n\t */\n\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\t\tvar textureLoader = this.textureLoader;\n\n\t\tvar URL = window.URL || window.webkitURL;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar textureExtensions = textureDef.extensions || {};\n\n\t\tvar source;\n\n\t\tif ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {\n\n\t\t\tsource = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];\n\n\t\t} else {\n\n\t\t\tsource = json.images[ textureDef.source ];\n\n\t\t}\n\n\t\tvar sourceURI = source.uri;\n\t\tvar isObjectURL = false;\n\n\t\tif ( source.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\t// Load Texture resource.\n\n\t\t\tvar loader = options.manager.getHandler( sourceURI );\n\n\t\t\tif ( ! loader ) {\n\n\t\t\t\tloader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ]\n\t\t\t\t\t? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader\n\t\t\t\t\t: textureLoader;\n\n\t\t\t}\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tloader.load( resolveURL( sourceURI, options.path ), resolve, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name !== undefined ) texture.name = textureDef.name;\n\n\t\t\t// Ignore unknown mime types, like DDS files.\n\t\t\tif ( source.mimeType in MIME_TYPE_FORMATS ) {\n\n\t\t\t\ttexture.format = MIME_TYPE_FORMATS[ source.mimeType ];\n\n\t\t\t}\n\n\t\t\tvar samplers = json.samplers || {};\n\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) {\n\n\t\tvar parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture.isCompressedTexture ) {\n\n\t\t\t\tswitch ( mapName ) {\n\n\t\t\t\t\tcase 'aoMap':\n\t\t\t\t\tcase 'emissiveMap':\n\t\t\t\t\tcase 'metalnessMap':\n\t\t\t\t\tcase 'normalMap':\n\t\t\t\t\tcase 'roughnessMap':\n\t\t\t\t\t\ttexture.format = RGBFormat;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tvar transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accomodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tGLTFParser.prototype.assignFinalMaterial = function ( mesh ) {\n\n\t\tvar geometry = mesh.geometry;\n\t\tvar material = mesh.material;\n\t\tvar extensions = this.extensions;\n\n\t\tvar useVertexTangents = geometry.attributes.tangent !== undefined;\n\t\tvar useVertexColors = geometry.attributes.color !== undefined;\n\t\tvar useFlatShading = geometry.attributes.normal === undefined;\n\t\tvar useSkinning = mesh.isSkinnedMesh === true;\n\t\tvar useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0;\n\t\tvar useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tvar cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tvar pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tvar cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tvar lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) {\n\n\t\t\tvar cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useSkinning ) cacheKey += 'skinning:';\n\t\t\tif ( useVertexTangents ) cacheKey += 'vertex-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\t\t\tif ( useMorphTargets ) cacheKey += 'morph-targets:';\n\t\t\tif ( useMorphNormals ) cacheKey += 'morph-normals:';\n\n\t\t\tvar cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useSkinning ) cachedMaterial.skinning = true;\n\t\t\t\tif ( useVertexTangents ) cachedMaterial.vertexTangents = true;\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = VertexColors;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\t\t\t\tif ( useMorphTargets ) cachedMaterial.morphTargets = true;\n\t\t\t\tif ( useMorphNormals ) cachedMaterial.morphNormals = true;\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', new BufferAttribute( geometry.attributes.uv.array, 2 ) );\n\n\t\t}\n\n\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\tif ( material.normalScale && ! useVertexTangents ) {\n\n\t\t\tmaterial.normalScale.y = - material.normalScale.y;\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise<Material>}\n\t */\n\tGLTFParser.prototype.loadMaterial = function ( materialIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar materialDef = json.materials[ materialIndex ];\n\n\t\tvar materialType;\n\t\tvar materialParams = {};\n\t\tvar materialExtensions = materialDef.extensions || {};\n\n\t\tvar pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tvar kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tmaterialType = MeshStandardMaterial;\n\n\t\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tvar alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tmaterialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tvar material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name !== undefined ) material.name = materialDef.name;\n\n\t\t\t// baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\t\t\tif ( material.map ) material.map.encoding = sRGBEncoding;\n\t\t\tif ( material.emissiveMap ) material.emissiveMap.encoding = sRGBEncoding;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t */\n\tfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar box = new Box3();\n\n\t\tif ( attributes.POSITION !== undefined ) {\n\n\t\t\tvar accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\t\tvar min = accessor.min;\n\t\t\tvar max = accessor.max;\n\n\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\tbox.set(\n\t\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar targets = primitiveDef.targets;\n\n\t\tif ( targets !== undefined ) {\n\n\t\t\tvar vector = new Vector3();\n\n\t\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\t\tvar accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\t\tvar min = accessor.min;\n\t\t\t\t\tvar max = accessor.max;\n\n\t\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\n\t\t\t\t\t\tbox.expandByVector( vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.boundingBox = box;\n\n\t\tvar sphere = new Sphere();\n\n\t\tbox.getCenter( sphere.center );\n\t\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\t\tgeometry.boundingSphere = sphere;\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t * @return {Promise<BufferGeometry>}\n\t */\n\tfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar pending = [];\n\n\t\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t\t.then( function ( accessor ) {\n\n\t\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tfor ( var gltfAttributeName in attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t\t}\n\n\t\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\t\tvar accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\t\tgeometry.setIndex( accessor );\n\n\t\t\t} );\n\n\t\t\tpending.push( accessor );\n\n\t\t}\n\n\t\tassignExtrasToUserData( geometry, primitiveDef );\n\n\t\tcomputeBounds( geometry, primitiveDef, parser );\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\treturn primitiveDef.targets !== undefined\n\t\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t\t: geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {Number} drawMode\n\t * @return {BufferGeometry}\n\t */\n\tfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\t\tvar index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tvar indices = [];\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar numberOfTriangles = index.count - 2;\n\t\tvar newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( var i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( var i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tvar newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\n\t\treturn newGeometry;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array<GLTF.Primitive>} primitives\n\t * @return {Promise<Array<BufferGeometry>>}\n\t */\n\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\n\n\t\tvar parser = this;\n\t\tvar extensions = this.extensions;\n\t\tvar cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar primitive = primitives[ i ];\n\t\t\tvar cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tvar cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tvar geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise<Group|Mesh|SkinnedMesh>}\n\t */\n\tGLTFParser.prototype.loadMesh = function ( meshIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar meshDef = json.meshes[ meshIndex ];\n\t\tvar primitives = meshDef.primitives;\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tvar materials = results.slice( 0, results.length - 1 );\n\t\t\tvar geometries = results[ results.length - 1 ];\n\n\t\t\tvar meshes = [];\n\n\t\t\tfor ( var i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tvar geometry = geometries[ i ];\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tvar mesh;\n\n\t\t\t\tvar material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See .markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = meshDef.name || ( 'mesh_' + meshIndex );\n\n\t\t\t\tif ( geometries.length > 1 ) mesh.name += '_' + i;\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tvar group = new Group();\n\n\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise<THREE.Camera>}\n\t */\n\tGLTFParser.prototype.loadCamera = function ( cameraIndex ) {\n\n\t\tvar camera;\n\t\tvar cameraDef = this.json.cameras[ cameraIndex ];\n\t\tvar params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( params.xmag / - 2, params.xmag / 2, params.ymag / 2, params.ymag / - 2, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name !== undefined ) camera.name = cameraDef.name;\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise<Object>}\n\t */\n\tGLTFParser.prototype.loadSkin = function ( skinIndex ) {\n\n\t\tvar skinDef = this.json.skins[ skinIndex ];\n\n\t\tvar skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise<AnimationClip>}\n\t */\n\tGLTFParser.prototype.loadAnimation = function ( animationIndex ) {\n\n\t\tvar json = this.json;\n\n\t\tvar animationDef = json.animations[ animationIndex ];\n\n\t\tvar pendingNodes = [];\n\t\tvar pendingInputAccessors = [];\n\t\tvar pendingOutputAccessors = [];\n\t\tvar pendingSamplers = [];\n\t\tvar pendingTargets = [];\n\n\t\tfor ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tvar channel = animationDef.channels[ i ];\n\t\t\tvar sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tvar target = channel.target;\n\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\tvar input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tvar output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar nodes = dependencies[ 0 ];\n\t\t\tvar inputAccessors = dependencies[ 1 ];\n\t\t\tvar outputAccessors = dependencies[ 2 ];\n\t\t\tvar samplers = dependencies[ 3 ];\n\t\t\tvar targets = dependencies[ 4 ];\n\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tvar node = nodes[ i ];\n\t\t\t\tvar inputAccessor = inputAccessors[ i ];\n\t\t\t\tvar outputAccessor = outputAccessors[ i ];\n\t\t\t\tvar sampler = samplers[ i ];\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\tvar TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tvar targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\t// Node may be a Group (glTF mesh with several primitives) or a Mesh.\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.isMesh === true && object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tvar outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tvar scale;\n\n\t\t\t\t\tif ( outputArray.constructor === Int8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 127;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 255;\n\n\t\t\t\t\t} else if ( outputArray.constructor == Int16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 32767;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 65535;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported output accessor component type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( var j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\treturn new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar name = animationDef.name !== undefined ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise<Object3D>}\n\t */\n\tGLTFParser.prototype.loadNode = function ( nodeIndex ) {\n\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar parser = this;\n\n\t\tvar meshReferences = json.meshReferences;\n\t\tvar meshUses = json.meshUses;\n\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\n\n\t\treturn ( function () {\n\n\t\t\tvar pending = [];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\t\t\tvar node;\n\n\t\t\t\t\tif ( meshReferences[ nodeDef.mesh ] > 1 ) {\n\n\t\t\t\t\t\tvar instanceNum = meshUses[ nodeDef.mesh ] ++;\n\n\t\t\t\t\t\tnode = mesh.clone();\n\t\t\t\t\t\tnode.name += '_instance_' + instanceNum;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnode = mesh;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\t\t\tfor ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t&& nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'light', nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tvar node;\n\n\t\t\t// .isBone isn't in glTF spec. See .markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( var i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name !== undefined ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = PropertyBinding.sanitizeNodeName( nodeDef.name );\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tvar matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise<Scene>}\n\t */\n\tGLTFParser.prototype.loadScene = function () {\n\n\t\t// scene node hierachy builder\n\n\t\tfunction buildNodeHierachy( nodeId, parentObject, json, parser ) {\n\n\t\t\tvar nodeDef = json.nodes[ nodeId ];\n\n\t\t\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\t\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t\t\t// build skeleton here as well\n\n\t\t\t\tvar skinEntry;\n\n\t\t\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\t\t\tskinEntry = skin;\n\n\t\t\t\t\tvar pendingJoints = [];\n\n\t\t\t\t\tfor ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all( pendingJoints );\n\n\t\t\t\t} ).then( function ( jointNodes ) {\n\n\t\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\t\t\tvar bones = [];\n\t\t\t\t\t\tvar boneInverses = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar jointNode = jointNodes[ j ];\n\n\t\t\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\t\t\tvar mat = new Matrix4();\n\n\t\t\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} );\n\n\t\t\t} ).then( function ( node ) {\n\n\t\t\t\t// build node hierachy\n\n\t\t\t\tparentObject.add( node );\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( nodeDef.children ) {\n\n\t\t\t\t\tvar children = nodeDef.children;\n\n\t\t\t\t\tfor ( var i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar child = children[ i ];\n\t\t\t\t\t\tpending.push( buildNodeHierachy( child, node, json, parser ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn function loadScene( sceneIndex ) {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\t\t\tvar sceneDef = this.json.scenes[ sceneIndex ];\n\t\t\tvar parser = this;\n\n\t\t\tvar scene = new Scene();\n\t\t\tif ( sceneDef.name !== undefined ) scene.name = sceneDef.name;\n\n\t\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\t\tvar nodeIds = sceneDef.nodes || [];\n\n\t\t\tvar pending = [];\n\n\t\t\tfor ( var i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\t\tpending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t\treturn scene;\n\n\t\t\t} );\n\n\t\t};\n\n\t}();\n\n\treturn GLTFLoader;\n\n} )();\n\nexport { GLTFLoader };\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\nimport { MxDrawObject, MxFun } from \"mxdraw\";\nimport { GLTFLoader } from \"three/examples/jsm/loaders/GLTFLoader\"\nexport function mxtest_add_3d_model(mxdraw:MxDrawObject) {\n const loader = new GLTFLoader();\n loader.load(\n './gis/34M_17.gltf',\n (gltf) => {\n gltf.scene.position.set(116577.28779765591, 19632.646909285337,0);\n gltf.scene.rotateX(Math.PI / 2);\n gltf.scene.scale.set(2,2,2);\n mxdraw.addObject(gltf.scene);\n }\n );\n}\n","import drawLine from \"./param/drawLine?raw\"\r\nimport drawCircle from \"./param/drawCircle?raw\"\r\nimport drawPoint from \"./param/drawPoint?raw\"\r\nimport drawImg from \"./param/drawImg?raw\"\r\nimport drawArc from \"./param/drawArc?raw\"\r\nimport drawPolyline from \"./param/drawPolyline?raw\"\r\nimport drawEllipse from \"./param/drawEllipse?raw\"\r\nimport drawText from \"./param/drawText?raw\"\r\nimport drawMtext from \"./param/drawMtext?raw\"\r\nimport drawDimension from \"./param/drawDimension?raw\"\r\nimport drawPath from \"./param/drawPath?raw\"\r\nimport drawHatch from \"./param/drawHatch?raw\"\r\nimport drawBlock from \"./param/drawBlock?raw\"\r\nimport drawCustom from \"./param/drawCustom?raw\"\r\nimport drawTypeLine from \"./param/drawTypeLine?raw\"\r\nimport drawTypeText from \"./param/drawTypeText?raw\"\r\nimport Mx_drawArc from \"./interactive/Mx_drawArc?raw\"\r\nimport Mx_drawLine from \"./interactive/Mx_drawLine?raw\"\r\nimport Mx_drawText from \"./interactive/Mx_drawText?raw\"\r\nimport Mx_drawCircle from \"./interactive/Mx_drawCircle?raw\"\r\nimport Mx_drawImg from \"./interactive/Mx_drawImg?raw\"\r\nimport Mx_drawPolyline from \"./interactive/Mx_drawPolyline?raw\"\r\nimport Mx_drawMxDbEllipse from \"./interactive/Mx_drawMxDbEllipse?raw\"\r\nimport Mx_drawHatchFormPoint from \"./interactive/Mx_drawHatchFormPoint?raw\"\r\nimport Mx_InsertBlock from \"./interactive/Mx_InsertBlock?raw\"\r\nimport Mx_drawCustomEntity from \"./interactive/Mx_drawCustomEntity?raw\"\r\nimport TestGetAllEntity from \"./dataBase/TestGetAllEntity?raw\"\r\nimport TestAddLayer from \"./dataBase/TestAddLayer?raw\"\r\nimport TestGetAllBlock from \"./dataBase/TestGetAllBlock?raw\"\r\nimport TestGetAllLayer from \"./dataBase/TestGetAllLayer?raw\"\r\nimport TestGetAllLinetype from \"./dataBase/TestGetAllLinetype?raw\"\r\nimport TestGetAllTextStyle from \"./dataBase/TestGetAllTextStyle?raw\"\r\nimport TestReadxData from \"./dataBase/TestReadxData?raw\"\r\nimport TestWritexData from \"./dataBase/TestWritexData?raw\"\r\nimport TestGetNamedObjectsDictionary from \"./dataBase/TestGetNamedObjectsDictionary?raw\"\r\n\r\nexport default [\r\n {\r\n type: \"参数绘图\",\r\n name: \"画直线\",\r\n code: drawLine,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画圆\",\r\n code: drawCircle,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画点\",\r\n code: drawPoint,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画圆弧\",\r\n code: drawArc,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画图片\",\r\n code: drawImg,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画多段线\",\r\n code: drawPolyline,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画椭圆\",\r\n code: drawEllipse,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画文字\",\r\n code: drawText,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画多行文字\",\r\n code: drawMtext,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画尺寸标注\",\r\n code: drawDimension,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画路径\",\r\n code: drawPath,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画填充\",\r\n code: drawHatch,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画图块\",\r\n code: drawBlock,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画文本自定义实体\",\r\n code: drawCustom,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画多种线型的直线\",\r\n code: drawTypeLine,\r\n },\r\n {\r\n type: \"参数绘图\",\r\n name: \"画多种文字样式的文字\",\r\n code: drawTypeText,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"取点画圆弧\",\r\n code: Mx_drawArc,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"取点画直线\",\r\n code: Mx_drawLine,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"取点画文字\",\r\n code: Mx_drawText,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"取点画圆\",\r\n code: Mx_drawCircle,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"取点画图片\",\r\n code: Mx_drawImg,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"取点画多段线\",\r\n code: Mx_drawPolyline,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"取点画椭圆\",\r\n code: Mx_drawMxDbEllipse,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"选点填充\",\r\n code: Mx_drawHatchFormPoint,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"插入图块\",\r\n code: Mx_InsertBlock,\r\n },\r\n {\r\n type: \"交互绘图\",\r\n name: \"绘制矩形\",\r\n code: Mx_drawCustomEntity,\r\n },\r\n {\r\n type: \"图纸数据库\",\r\n name: \"得到图纸所有对象\",\r\n code: TestGetAllEntity,\r\n },\r\n {\r\n type: \"图纸数据库\",\r\n name: \"添加图层\",\r\n code: TestAddLayer,\r\n },\r\n {\r\n type: \"图纸数据库\",\r\n name: \"得到图纸所有图块\",\r\n code: TestGetAllBlock,\r\n },\r\n {\r\n type: \"图纸数据库\",\r\n name: \"得到图纸所有图层\",\r\n code: TestGetAllLayer,\r\n },\r\n {\r\n type: \"图纸数据库\",\r\n name: \"得到图纸所有线型样式\",\r\n code: TestGetAllLinetype,\r\n },\r\n {\r\n type: \"图纸数据库\",\r\n name: \"得到图纸所有文字样式\",\r\n code: TestGetAllTextStyle,\r\n },\r\n {\r\n type: \"图纸数据库\",\r\n name: \"读扩展数据\",\r\n code: TestReadxData,\r\n },\r\n {\r\n type: \"图纸数据库\",\r\n name: \"写入扩展数据\",\r\n code: TestWritexData,\r\n },\r\n {\r\n type: \"图纸数据库\",\r\n name: \"得到命名字典\",\r\n code: TestGetNamedObjectsDictionary,\r\n },\r\n]","export default \"import { MxCpp, McGePoint3d, McDbLine, McCmColor} from \\\"mxcad\\\";\\n\\n//画直线\\nfunction drawLine() {\\n const mxcad = MxCpp.getCurrentMxCAD();\\n // 创建新画布\\n mxcad.newFile();\\n\\n // 绘制直线\\n let line_1 = new McDbLine()\\n let pt1 = new McGePoint3d(1000, 200, 0)\\n let pt2 = new McGePoint3d(-1000, -200, 0)\\n line_1.startPoint = pt1\\n line_1.endPoint = pt2\\n line_1.trueColor = new McCmColor(0, 255, 0)\\n mxcad.drawEntity(line_1)\\n\\n let line_2 = new McDbLine(1000, 500, 0, -1000, -500, 0)\\n line_2.trueColor = new McCmColor(255, 0, 0)\\n line_2.linetypeScale = 0.4\\n mxcad.drawEntity(line_2)\\n\\n mxcad.drawLine(1000, 800, -1000, -800)\\n\\n mxcad.zoomAll()\\n mxcad.zoomScale(0.8)\\n};\\n\\n// 调用画直线方法\\ndrawLine();\\n\"","export default \"import {MxCpp, McDbCircle , McCmColor, McGePoint3d} from \\\"mxcad\\\"\\n\\n//画圆\\nfunction drawCircle() {\\n const mxcad = MxCpp.getCurrentMxCAD();\\n // 创建新画布\\n mxcad.newFile();\\n\\n //绘制圆\\n const circle_1 = new McDbCircle(-100, 300, 0, 20)\\n circle_1.trueColor = new McCmColor(255, 0, 0)\\n mxcad.drawEntity(circle_1)\\n\\n const circle_2 = new McDbCircle()\\n circle_2.center = new McGePoint3d(-100, 300, 0)\\n circle_2.radius = 10\\n circle_2.trueColor = new McCmColor(0, 255, 0)\\n mxcad.drawEntity(circle_2)\\n\\n mxcad.drawCircle(-100, 300, 30)\\n\\n mxcad.zoomAll()\\n mxcad.zoomScale(0.8)\\n};\\n\\n// 调用画圆方法\\ndrawCircle();\\n\"","export default \"import { MxCpp, McDbPoint, McCmColor } from \\\"mxcad\\\"\\n\\n//画点\\nfunction drawPoint() {\\n const mxcad = MxCpp.getCurrentMxCAD();\\n // 创建新画布\\n mxcad.newFile();\\n\\n // 循环画点\\n const point = new McDbPoint()\\n const color = new McCmColor(0, 255, 0)\\n point.trueColor = color\\n for (let i = 0; i < 100; i++) {\\n point.setPosition(i, 200 + i)\\n mxcad.drawEntity(point)\\n }\\n for (let i = 0; i < 100; i++) {\\n mxcad.drawPoint(i, 150 + i)\\n }\\n\\n mxcad.zoomAll()\\n mxcad.zoomScale(0.8)\\n};\\n\\n// 调用画点的函数\\ndrawPoint();\"","export default \"import { MxCpp, McDbArc, McGePoint3d, McCmColor} from \\\"mxcad\\\";\\n\\n//画圆弧\\nfunction drawArc() {\\n const mxcad = MxCpp.getCurrentMxCAD();\\n // 创建新画布\\n mxcad.newFile();\\n\\n const arc = new McDbArc()\\n arc.center = new McGePoint3d(-100, -100),\\n arc.radius = 20\\n arc.startAngle = Math.PI / 2\\n arc.endAngle = Math.PI * 3 / 2\\n arc.trueColor = new McCmColor(255, 233, 0)\\n mxcad.drawEntity(arc)\\n\\n const arc_1 = new McDbArc()\\n const pt1 = new McGePoint3d(-60, -80)\\n const pt2 = new McGePoint3d(-80, -100)\\n const pt3 = new McGePoint3d(-60, -120)\\n arc_1.trueColor = new McCmColor(0, 255, 0)\\n arc_1.computeArc(pt1.x, pt1.y, pt2.x, pt2.y, pt3.x, pt3.y)\\n mxcad.drawEntity(arc_1)\\n\\n mxcad.drawArc(-120, -100, 20, 100, 250);\\n\\n mxcad.drawColor = new McCmColor(255, 0, 0)\\n mxcad.drawArc2(-80, -80, -100, -100, -80, -120)\\n\\n mxcad.drawColor = new McCmColor(0, 0, 255)\\n mxcad.drawArc3(-40, -80, -40, -120, 1)\\n\\n mxcad.zoomAll()\\n mxcad.zoomScale(0.8)\\n};\\n\\n// 调用绘圆方法\\ndrawArc()\"","export default \"import { MxCpp, McGePoint3d } from \\\"mxcad\\\";\\n\\n//画图片\\nfunction drawImg() {\\n const mxcad = MxCpp.getCurrentMxCAD();\\n // 创建新画布\\n mxcad.newFile();\\n\\n //图片插入点\\n const pt = new McGePoint3d(0, 0, 0)\\n //图片地址\\n let imagUrl = \\\"https://cdn.pixabay.com/photo/2022/11/15/12/23/winter-7593872_960_720.jpg\\\";\\n mxcad.loadImage(imagUrl, (image) => {\\n if (!image) {\\n console.log(\\\"loadImage failed\\\");\\n return;\\n }\\n let width = mxcad.mxdraw.viewCoordLong2Cad(100);\\n let height = (image.height / image.width) * width;\\n mxcad.drawImage((pt as any).x, (pt as any).y, width, height, 0, imagUrl);\\n mxcad.updateDisplay();\\n });\\n};\\n\\n// 调用绘图片方法\\ndrawImg();\"","export default \"import { MxCpp, McDbPolyline, McGePoint3d } from \\\"mxcad\\\"\\n\\n//画多段线\\nfunction drawPolyline() {\\n const mxcad = MxCpp.getCurrentMxCAD();\\n // 创建新画布\\n mxcad.newFile();\\n \\n // 画多段线\\n const polyline = new McDbPolyline()\\n polyline.isClosed = true // 设置闭合\\n polyline.constantWidth = 5 // 设置线宽\\n // 添加多段线顶点\\n polyline.addVertexAt(new McGePoint3d(800, 300, 0))\\n polyline.addVertexAt(new McGePoint3d(900, 300, 0))\\n polyline.addVertexAt(new McGePoint3d(900, 400, 0))\\n mxcad.drawEntity(polyline)\\n\\n mxcad.zoomAll()\\n mxcad.zoomScale(0.8)\\n}\\n\\n// 调用画多段线的方法\\ndrawPolyline()\"","export default \"import {McDbEllipse, McGeVector3d, MxCpp, McGePoint3d, McCmColor } from \\\"mxcad\\\";\\n \\n//画椭圆弧\\nfunction drawEllipse() {\\n const mxcad = MxCpp.getCurrentMxCAD();\\n // 创建新画布\\n mxcad.newFile();\\n\\n //绘制椭圆\\n const ellipse = new McDbEllipse();\\n ellipse.center = new McGePoint3d(-200, -200);\\n ellipse.majorAxis = new McGeVector3d(0, 300, 0);\\n ellipse.radiusRatio = 0.5;\\n ellipse.trueColor = new McCmColor(255, 233, 0);\\n mxcad.drawEntity(ellipse);\\n\\n const ellipse_arc = new McDbEllipse();\\n ellipse_arc.center = new McGePoint3d(-380, -200);\\n ellipse_arc.majorAxis = new McGeVector3d(0, 150, 0);\\n ellipse_arc.minorAxis = new McGeVector3d(280, 0, 0);\\n ellipse_arc.startAngle = Math.PI / 2;\\n ellipse_arc.endAngle = Math.PI * 3 / 2;\\n ellipse_arc.trueColor = new McCmColor(0, 255, 255);\\n mxcad.drawEntity(ellipse_arc);\\n\\n mxcad.drawEllipse(0, -200, 200, 0, 1.5);\\n\\n mxcad.drawColor = new McCmColor(0, 255, 0);\\n mxcad.drawEllipseArc(200, -200, 200, 0, 1.5, 100, 650);\\n\\n mxcad.zoomAll();\\n mxcad.zoomScale(0.8);\\n};\\n\\n// 调用画椭圆的方法\\ndrawEllipse();\"","export default \"import { MxCpp, McGePoint3d, McDbText, McCmColor } from \\\"mxcad\\\";\\n\\nfunction drawText() {\\n const mxcad = MxCpp.getCurrentMxCAD();\\n // 创建新画布\\n mxcad.newFile();\\n\\n // 绘制文字\\n let text = new McDbText()\\n text.textString = 'Hello World'\\n text.position = new McGePoint3d(1000, 200, 0)\\n text.height = 50\\n text.trueColor = new McCmColor(0, 255, 0)\\n mxcad.drawEntity(text)\\n\\n mxcad.zoomAll()\\n mxcad.zoomScale(0.8)\\n};\\n\\n// 调用画文字的方法\\ndrawText();\"","export default \"import { MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\nfunction drawMtext() {\\r\\n let mxcad = MxCpp.getCurrentMxCAD();\\r\\n //清空当前显示内容\\r\\n mxcad.newFile();\\r\\n\\r\\n //把颜色改回黑白色\\r\\n mxcad.drawColorIndex = 0;\\r\\n\\r\\n mxcad.addLayer(\\\"MtextLayer\\\");\\r\\n\\r\\n //设置当前图层为\\\"MtextLayer\\\"\\r\\n\\r\\n mxcad.drawLayer = \\\"MtextLayer\\\"; \\r\\n\\r\\n mxcad.drawTextStyle = \\\"\\\";\\r\\n\\r\\n mxcad.drawMText(0, -100, \\\"控件:\\\\\\\\P多行文字测试\\\", 50, 400, 0, 1);\\r\\n\\r\\n mxcad.zoomAll();\\r\\n mxcad.updateDisplay();\\r\\n};\\r\\n\\r\\n// 调用画多行文字的方法\\r\\ndrawMtext();\"","export default \"\\nimport { McDbAlignedDimension,McDb, McDbRotatedDimension, MxCpp, McGePoint3d, McCmColor } from \\\"mxcad\\\";\\n//画标注\\nfunction drawDimension() {\\n const mxcad = MxCpp.getCurrentMxCAD();\\n // 创建新画布\\n mxcad.newFile();\\n\\n // 画标注\\n const mDimension = new McDbAlignedDimension()\\n mDimension.xLine1Point = new McGePoint3d(-1800, 800)\\n mDimension.xLine2Point = new McGePoint3d(1800, 800)\\n mDimension.dimLinePoint = new McGePoint3d(800, 500)\\n mDimension.textAttachment = McDb.AttachmentPoint.kTopLeft\\n mDimension.trueColor = new McCmColor(200, 255, 0)\\n mDimension.oblique = 0\\n mxcad.drawEntity(mDimension)\\n\\n const rDimension = new McDbRotatedDimension()\\n rDimension.xLine1Point = new McGePoint3d(-1800, -800)\\n rDimension.xLine2Point = new McGePoint3d(1800, -800)\\n rDimension.dimLinePoint = new McGePoint3d(-800, -500)\\n rDimension.textAttachment = McDb.AttachmentPoint.kTopLeft\\n rDimension.textRotation = 0.6\\n rDimension.trueColor = new McCmColor(200, 255, 0)\\n rDimension.oblique = 0\\n rDimension.rotation = 0\\n rDimension.dimensionText = \\\"标注文本\\\"\\n mxcad.drawEntity(rDimension)\\n\\n mxcad.zoomCenter(0, 0)\\n};\\n\\n// 调用画标注方法\\ndrawDimension();\"","export default \"import { MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\n// 画路径\\r\\nfunction drawPath() {\\r\\n const mxcad = MxCpp.getCurrentMxCAD();\\r\\n // 创建新画布\\r\\n mxcad.newFile();\\r\\n //用路径 绘制矩形框\\r\\n //定义一个路径的开始点\\r\\n mxcad.pathMoveTo(0, 300);\\r\\n //路径的一下个点\\r\\n mxcad.pathLineTo(100, 300);\\r\\n //路径的一下个点\\r\\n mxcad.pathLineTo(100, 400);\\r\\n //路径的一下个点\\r\\n mxcad.pathLineTo(0, 400);\\r\\n //把路径设置成闭合\\r\\n mxcad.pathMakeClosed();\\r\\n //生成一个矩形框的多义线\\r\\n mxcad.drawPathToPolyline();\\r\\n\\r\\n //定义一个路径的开始点\\r\\n mxcad.pathMoveTo(170, 320)\\r\\n mxcad.pathLineTo(200, 320)\\r\\n mxcad.pathLineTo(200, 340)\\r\\n mxcad.pathLineTo(170, 340)\\r\\n // 把上面定义的路径定义填充排除区域.\\r\\n mxcad.pathMakeExclude(true)\\r\\n mxcad.pathMoveTo(150, 300)\\r\\n mxcad.pathLineTo(250, 300)\\r\\n mxcad.pathLineTo(250, 400)\\r\\n mxcad.pathLineTo(150, 400)\\r\\n mxcad.pathMakeClosed();\\r\\n // 将路径生成一个填充 这里的参数是图案缩放比例\\r\\n mxcad.drawPathToHatch(1);\\r\\n\\r\\n mxcad.zoomAll();\\r\\n mxcad.zoomScale(0.8)\\r\\n};\\r\\n\\r\\n// 调用画路径的函数\\r\\ndrawPath();\"","export default \"import { MxCpp, McCmColor } from \\\"mxcad\\\";\\r\\n\\r\\n// 画填充\\r\\nfunction drawHatch() {\\r\\n const mxcad = MxCpp.getCurrentMxCAD();\\r\\n // 创建新画布\\r\\n mxcad.newFile();\\r\\n // 绘制一个实心填充\\r\\n //定义一个路径的开始点\\r\\n mxcad.pathMoveTo(150, 3300);\\r\\n //路径的一下个点\\r\\n mxcad.pathLineTo(250, 3300);\\r\\n //路径的一下个点\\r\\n mxcad.pathLineTo(250, 3400);\\r\\n //路径的一下个点\\r\\n mxcad.pathLineTo(150, 3300);\\r\\n //把路径拟合成一个样线\\r\\n mxcad.drawColor = new McCmColor(255, 0, 0);\\r\\n mxcad.drawPathToHatch(1);\\r\\n\\r\\n // 绘制一个图形填充\\r\\n mxcad.addPatternDefinition(\\\"MyHatchPattern1\\\", \\\"((45, 0,0, 0,0.125))\\\");\\r\\n mxcad.drawPatternDefinition = \\\"MyHatchPattern1\\\";\\r\\n //定义一个路径的开始点\\r\\n mxcad.pathMoveTo(250, 3300);\\r\\n //路径的一下个点\\r\\n mxcad.pathLineTo(350, 3300);\\r\\n //路径的一下个点\\r\\n mxcad.pathLineTo(350, 3400);\\r\\n //路径的一下个点\\r\\n mxcad.pathLineTo(250, 3300);\\r\\n mxcad.drawColor = new McCmColor(255, 255, 0);\\r\\n //把路径变成一个填充,80,是填充图案的缩放比例.\\r\\n mxcad.drawPathToHatch(100);\\r\\n mxcad.zoomAll()\\r\\n mxcad.zoomScale(0.8)\\r\\n};\\r\\n\\r\\n// 调用画填充的方法\\r\\ndrawHatch();\"","export default \"import { MxCpp, McDbBlockTableRecord, McDbLine, McDbCircle, McCmColor, McDbBlockReference, McGePoint3d } from \\\"mxcad\\\";\\r\\n\\r\\n// 画图块\\r\\nfunction drawBlock() {\\r\\n const mxcad = MxCpp.getCurrentMxCAD();\\r\\n // 创建新画布\\r\\n mxcad.newFile();\\r\\n\\r\\n // 先从数据库中得到图块表\\r\\n let blkTable = mxcad.getDatabase().getBlockTable();\\r\\n // 将一个新的图块记录添加到图块表中\\r\\n let blkRecId = blkTable.add(new McDbBlockTableRecord());\\r\\n\\r\\n // 根据ObjectId再次得到刚刚添加的图块记录\\r\\n let blkTableRecord = blkRecId.getMcDbBlockTableRecord()\\r\\n\\r\\n // 添加两条线段再图块记录中 这里每条线段的具体属性比如开始点和结束点自行赋值\\r\\n const line = new McDbLine(50, 50, 0, -50, -50, 0)\\r\\n line.trueColor = new McCmColor(0, 255, 0)\\r\\n const line1 = new McDbLine(-50, 50, 0, 50, -50, 0)\\r\\n const circle = new McDbCircle(0, 0, 0, 50)\\r\\n circle.trueColor = new McCmColor(255, 255, 0)\\r\\n blkTableRecord.appendAcDbEntity(line);\\r\\n blkTableRecord.appendAcDbEntity(line1);\\r\\n blkTableRecord.appendAcDbEntity(circle);\\r\\n\\r\\n // 设置图块的基点 一般是包围盒内的点, 可以任意指定\\r\\n blkTableRecord.origin = new McGePoint3d(0, 0, 0);\\r\\n\\r\\n // 实例化块参照 这里需要设置我们刚刚添加图块记录得到的ObjectId\\r\\n let blkRef = new McDbBlockReference();\\r\\n blkRef.blockTableRecordId = blkRecId;\\r\\n // 最后设置位置 渲染图块\\r\\n blkRef.position = new McGePoint3d(0, 0, 0);\\r\\n\\r\\n mxcad.drawEntity(blkRef);\\r\\n\\r\\n mxcad.zoomAll()\\r\\n mxcad.zoomScale(0.8)\\r\\n};\\r\\n\\r\\n// 调用画图块方法\\r\\ndrawBlock();\"","export default \"import {\\r\\n MxCpp, McDbLine, McGePoint3d, McDbCustomEntity, IMcDbDwgFiler,MxCADWorldDraw,McGePoint3dArray,\\r\\n McGeVector3d,McDbText,McDb,MxCADResbuf,MxCADSelectionSet,McObjectId,McDbCircle } from \\\"mxcad\\\"\\r\\n\\r\\n// 线文本自定义实体\\r\\n // 新创建 McDbLineText 类,继承McDbCustomEntity\\r\\n class McDbTestLineText extends McDbCustomEntity {\\r\\n //设置McDbLineText类中的两个直线端点 pt1、pt2\\r\\n //以及显示线段长度的文字_text和文字大小_textsize\\r\\n private pt1: McGePoint3d = new McGePoint3d();\\r\\n private pt2: McGePoint3d = new McGePoint3d();\\r\\n private _text: string = \\\"\\\";\\r\\n private _textsize: number = 10;\\r\\n //构造函数\\r\\n constructor(imp?: any) {\\r\\n super(imp);\\r\\n }\\r\\n //创建函数\\r\\n public create(imp: any) {\\r\\n return new McDbTestLineText(imp)\\r\\n }\\r\\n //获取类型\\r\\n public getTypeName(): string {\\r\\n return \\\"McDbTestLineText\\\";\\r\\n }\\r\\n //设置或获取文本值\\r\\n public set text(val: string) {\\r\\n this._text = val;\\r\\n }\\r\\n public get text(): string {\\r\\n return this._text;\\r\\n }\\r\\n //设置或获取文本大小\\r\\n public set textsize(val: number) {\\r\\n this._textsize = val;\\r\\n }\\r\\n public get textsize(): number {\\r\\n return this._textsize;\\r\\n }\\r\\n //读取自定义实体数据pt1、pt2、_text、_textsize\\r\\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\\r\\n this.pt1 = filter.readPoint(\\\"pt1\\\").val;\\r\\n this.pt2 = filter.readPoint(\\\"pt2\\\").val;\\r\\n this._text = filter.readString(\\\"text\\\").val;\\r\\n this._textsize = filter.readDouble(\\\"textsize\\\").val;\\r\\n return true;\\r\\n }\\r\\n //写入自定义实体数据pt1、pt2、_text、_textsize\\r\\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\\r\\n filter.writePoint(\\\"pt1\\\", this.pt1);\\r\\n filter.writePoint(\\\"pt2\\\", this.pt2);\\r\\n filter.writeString(\\\"text\\\", this._text);\\r\\n filter.writeDouble(\\\"textsize\\\", this._textsize);\\r\\n return true;\\r\\n }\\r\\n //自定义同步函数,当其他对象与该对象相连时同步数据\\r\\n private fineLink(pt: McGePoint3d): any {\\r\\n let ret: any = {};\\r\\n let myId = this.getObjectID();\\r\\n let dSearch = this._textsize * 0.5;;\\r\\n let filter = new MxCADResbuf();\\r\\n filter.AddString(\\\"McDbCustomEntity\\\", 5020);\\r\\n let ss = new MxCADSelectionSet();\\r\\n ss.crossingSelect(pt.x - dSearch, pt.y - dSearch, pt.x + dSearch, pt.y + dSearch, filter);\\r\\n ss.forEach((id) => {\\r\\n if (id == myId)\\r\\n return;\\r\\n let ent = id.getMcDbEntity();\\r\\n if (!ent) return;\\r\\n if (ent instanceof McDbLineText) {\\r\\n let line = (ent as McDbLineText);\\r\\n let linkPoint = line.getPoint1();\\r\\n let link_pos = 0;\\r\\n // 得到直线与图块连接的端点坐标.\\r\\n let dist = line.getPoint1().distanceTo(pt);\\r\\n if (dist > line.getPoint2().distanceTo(pt)) {\\r\\n dist = line.getPoint2().distanceTo(pt);\\r\\n linkPoint = line.getPoint2();\\r\\n link_pos = 1;\\r\\n }\\r\\n if (dist < dSearch) {\\r\\n ret[id.id] = { link_point: linkPoint,link_pos:link_pos };\\r\\n }\\r\\n }\\r\\n });\\r\\n return ret;\\r\\n }\\r\\n //处理夹点编辑效果\\r\\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\\r\\n this.assertWrite();\\r\\n let pt:McGePoint3d = this.pt1.clone();\\r\\n let new_pt:McGePoint3d = pt;\\r\\n if (iIndex == 0) {\\r\\n this.pt1.x += dXOffset;\\r\\n this.pt1.y += dYOffset;\\r\\n this.pt1.z += dZOffset;\\r\\n new_pt = this.pt1;\\r\\n }\\r\\n else if (iIndex == 1) {\\r\\n pt = this.pt2.clone();\\r\\n this.pt2.x += dXOffset;\\r\\n this.pt2.y += dYOffset;\\r\\n this.pt2.z += dZOffset;\\r\\n new_pt = this.pt2;\\r\\n }\\r\\n if (this.getObjectID().isValid()) {\\r\\n // 同步,与连接的其它对象。\\r\\n let linkobj = this.fineLink(pt)\\r\\n Object.keys(linkobj).forEach((id_val:any)=>{\\r\\n let idFind = new McObjectId(id_val);\\r\\n let lineFind = (idFind.getMcDbEntity() as McDbLineText);\\r\\n if(linkobj[id_val].link_pos == 0){\\r\\n lineFind.setPoint1(new_pt);\\r\\n }\\r\\n else{\\r\\n lineFind.setPoint2(new_pt);\\r\\n }\\r\\n });\\r\\n }\\r\\n };\\r\\n //设置对象编辑点位\\r\\n public getGripPoints(): McGePoint3dArray {\\r\\n let ret = new McGePoint3dArray()\\r\\n ret.append(this.pt1);\\r\\n ret.append(this.pt2);\\r\\n return ret;\\r\\n };\\r\\n //动态绘制\\r\\n public worldDraw(draw: MxCADWorldDraw): void {\\r\\n let circle_r = this._textsize * 0.4;\\r\\n let vec2 = this.pt2.sub(this.pt1);\\r\\n vec2.normalize().mult(circle_r);\\r\\n let tmpline = new McDbLine(this.pt1.clone().addvec(vec2),\\r\\n this.pt2.clone().subvec(vec2));\\r\\n draw.drawEntity(tmpline);\\r\\n let vec = this.pt2.sub(this.pt1).mult(0.5);\\r\\n let midpt = this.pt1.clone().addvec(vec);\\r\\n if (vec.dotProduct(McGeVector3d.kXAxis) < 0) {\\r\\n vec.negate();\\r\\n }\\r\\n let ange = vec.angleTo2(McGeVector3d.kXAxis, McGeVector3d.kNegateZAxis);\\r\\n let str = this._text;\\r\\n if (str.length == 0) {\\r\\n str = this.pt1.distanceTo(this.pt2).toFixed(2);\\r\\n }\\r\\n vec.perpVector();\\r\\n if (vec.dotProduct(McGeVector3d.kYAxis) < 0) {\\r\\n vec.negate();\\r\\n }\\r\\n vec.normalize().mult(this._textsize * 0.2);\\r\\n let text = new McDbText();\\r\\n text.textString = str;\\r\\n text.position = midpt.clone().addvec(vec);\\r\\n text.alignmentPoint = midpt.clone().addvec(vec);\\r\\n text.rotation = ange;\\r\\n text.verticalMode = McDb.TextVertMode.kTextBottom;\\r\\n text.horizontalMode = McDb.TextHorzMode.kTextCenter;\\r\\n text.height = this._textsize;\\r\\n draw.drawEntity(text)\\r\\n let circle1 = new McDbCircle();\\r\\n circle1.center = this.pt1;\\r\\n circle1.radius = circle_r;\\r\\n draw.drawEntity(circle1);\\r\\n\\r\\n let circle2= new McDbCircle();\\r\\n circle2.center = this.pt2;\\r\\n circle2.radius = circle_r;\\r\\n draw.drawEntity(circle2);\\r\\n }\\r\\n // 设置pt1\\r\\n public setPoint1(pt1: McGePoint3d) {\\r\\n this.assertWrite();\\r\\n this.pt1 = pt1.clone();\\r\\n }\\r\\n // 设置pt2\\r\\n public setPoint2(pt2: McGePoint3d) {\\r\\n this.assertWrite();\\r\\n this.pt2 = pt2.clone();\\r\\n }\\r\\n // 获取pt1\\r\\n public getPoint1() {\\r\\n return this.pt1;\\r\\n }\\r\\n //获取pt2\\r\\n public getPoint2() {\\r\\n return this.pt2;\\r\\n }\\r\\n}\\r\\n\\r\\n// 绘线文本自定义实体\\r\\nasync function MxTest_LineText() {\\r\\n let mxcad = MxCpp.getCurrentMxCAD();\\r\\n //清空当前显示内容\\r\\n mxcad.newFile();\\r\\n\\r\\n let pt1 = new McGePoint3d(100, 100, 0);\\r\\n let pt2 = new McGePoint3d(200, 150, 0);\\r\\n let pt3 = new McGePoint3d(400, 50, 0);\\r\\n let pt4 = new McGePoint3d(600, 60, 0);\\r\\n let pt5 = new McGePoint3d(200, 300, 0);\\r\\n\\r\\n let textsize = 5;\\r\\n\\r\\n let myline1 = new McDbTestLineText();\\r\\n myline1.setPoint1(pt1);\\r\\n myline1.setPoint2(pt2);\\r\\n myline1.textsize = textsize;\\r\\n myline1.text = \\\"xxxx\\\";\\r\\n mxcad.drawEntity(myline1);\\r\\n\\r\\n\\r\\n let myline2 = new McDbTestLineText();\\r\\n myline2.setPoint1(pt2);\\r\\n myline2.setPoint2(pt3);\\r\\n myline2.textsize = textsize;\\r\\n mxcad.drawEntity(myline2);\\r\\n\\r\\n let myline3 = new McDbTestLineText();\\r\\n myline3.setPoint1(pt3);\\r\\n myline3.setPoint2(pt4);\\r\\n myline3.textsize = textsize;\\r\\n mxcad.drawEntity(myline3);\\r\\n\\r\\n\\r\\n let myline4 = new McDbTestLineText();\\r\\n myline4.setPoint1(pt2);\\r\\n myline4.setPoint2(pt5);\\r\\n myline4.textsize = textsize;\\r\\n mxcad.drawEntity(myline4);\\r\\n\\r\\n\\r\\n //把所有的实体都放到当前显示视区\\r\\n mxcad.zoomW(new McGePoint3d(-300, -300, 0), new McGePoint3d(650, 500, 0));\\r\\n //更新视区显示\\r\\n mxcad.updateDisplay();\\r\\n}\\r\\n\\r\\n// 自定义实体注册\\r\\nnew McDbTestLineText().rxInit();\\r\\n// 调用绘线文本自定义实体方法\\r\\nMxTest_LineText();\\r\\n\\r\\n\"","export default \"import { McCmColor, MxCpp} from \\\"mxcad\\\"\\r\\n\\r\\n// 绘制多种线型直线\\r\\nfunction Mx_Test_DrawLine() {\\r\\n let mxcad = MxCpp.getCurrentMxCAD();\\r\\n //清空当前显示内容\\r\\n mxcad.newFile();\\r\\n //把颜色改回黑白色\\r\\n mxcad.drawColorIndex = 0;\\r\\n //把线型改成实线\\r\\n mxcad.drawLinetype = \\\"\\\";\\r\\n //设置线宽 4\\r\\n mxcad.drawLineWidth = 0;\\r\\n \\r\\n \\r\\n //创建一个图层,名为\\\"LineLayer\\\"\\r\\n mxcad.addLayer(\\\"LineLayer\\\");\\r\\n //设置当前图层为\\\"LineLayer\\\"\\r\\n mxcad.drawLayer = \\\"LineLayer\\\";\\r\\n // 直接绘制一个实线\\r\\n // 参数一直线的开始点x坐标,参数二直线的开始点y坐标,参数三直线的结束点x坐标,参数四直线的结束点y坐标\\r\\n mxcad.drawLine(0, 0, 100, 0);\\r\\n // 绘制一个实斜线\\r\\n mxcad.drawLine(200, 0, 300, 100);\\r\\n \\r\\n \\r\\n //----------------------------------------------------------------------------------------------------------\\r\\n //绘制一个虚线\\r\\n //定义虚线数据据,\\\"MyLineType\\\"是线型名,\\\"6,-8\\\"是虚线的一个单位定义,6是实线长,-8是空格长。\\r\\n mxcad.addLinetype(\\\"MyLineType\\\", \\\"6,-10\\\");\\r\\n //设计当前线型为\\\"MyLineType\\\"\\r\\n mxcad.drawLinetype = \\\"MyLineType\\\";\\r\\n // 绘制一个虚线\\r\\n mxcad.drawLine(0, 30, 100, 30);\\r\\n // 绘制一个斜虚线\\r\\n mxcad.drawLine(200, 30, 300, 130);\\r\\n \\r\\n //---------------------------------------------------------------------------------------------------------\\r\\n // 修改绘线的颜色为 16711680(蓝色), 16711680转成16进制是0xFF 00 00,其中,FF是蓝色,00是绿色,第个二00是红色。\\r\\n mxcad.drawColor = new McCmColor(0, 0, 255);\\r\\n // 绘制一个蓝色的虚线\\r\\n \\r\\n mxcad.drawLine(0, 60, 100, 60);\\r\\n // 绘制一个蓝色的斜虚线\\r\\n mxcad.drawLine(200, 60, 300, 160);\\r\\n //---------------------------------------------------------------------------------------------------------\\r\\n //把颜色改回黑白色\\r\\n mxcad.drawColorIndex = 0;\\r\\n //把线型改成实线\\r\\n mxcad.drawLinetype = \\\"\\\";\\r\\n //设置线宽 4\\r\\n mxcad.drawLineWidth = 4;\\r\\n //绘制一个带宽度的直线。\\r\\n mxcad.drawLine(0, 90, 100, 90);\\r\\n // 绘制一个带宽度的斜线\\r\\n mxcad.drawLine(200, 90, 300, 190);\\r\\n \\r\\n //---------------------------------------------------------------------------------------------------------\\r\\n //绘制一个点划线虚线\\r\\n mxcad.addLinetype(\\\"MyLineType2\\\", \\\"10,-2,3,-2\\\");\\r\\n //把线型改点划线\\r\\n mxcad.drawLinetype = \\\"MyLineType2\\\";\\r\\n // 修改绘线的颜色为 255(红色), 255转成16进制是0x00 00 FF,其中,00是蓝色,第个二00是绿色,FF是红色。\\r\\n mxcad.drawColor = new McCmColor(255, 0, 0);\\r\\n //绘制一个带宽度的红色点划线。\\r\\n mxcad.drawLine(0, 120, 100, 120);\\r\\n // 绘制一个带宽度红色点划斜线\\r\\n mxcad.drawLine(200, 120, 300, 220);\\r\\n //---------------------------------------------------------------------------------------------------------\\r\\n //增加一个带有形的线型\\r\\n mxcad.addTextStyle(\\\"MyLineTypeTextStyle\\\", \\\"txt.shx\\\", \\\"hztxt.shx\\\", 1);\\r\\n mxcad.addLinetypeEx(\\\"MyLineType3\\\", \\\"(12.7,(\\\\\\\"T=MxDraw\\\\\\\",\\\\\\\"S=2.54\\\\\\\",\\\\\\\"L=-5.08\\\\\\\",\\\\\\\"R=0.0\\\\\\\",\\\\\\\"X=-2.54\\\\\\\",\\\\\\\"Y=-1.27\\\\\\\"),-10.08)\\\", \\\"MyLineTypeTextStyle\\\");\\r\\n mxcad.drawLinetype = \\\"MyLineType3\\\";\\r\\n mxcad.drawLineWidth = 0;\\r\\n //绘制一个带宽度的红色点划线。\\r\\n mxcad.drawLine(350, 120, 600, 120);\\r\\n //---------------------------------------------------------------------------------------------------------\\r\\n //增加一个带有形的线型\\r\\n //把颜色改回黑白色\\r\\n mxcad.drawColorIndex = 0;\\r\\n mxcad.drawLineWidth = 4;\\r\\n //绘制一个带宽度的红色点划线。\\r\\n mxcad.drawLine(350, 220, 600, 220);\\r\\n \\r\\n //把所有的实体都放到当前显示视区\\r\\n mxcad.zoomAll();\\r\\n //更新视区显示\\r\\n mxcad.updateDisplay();\\r\\n }\\r\\n\\r\\n // 调用绘制多种线型直线的方法\\r\\n Mx_Test_DrawLine()\"","export default \"import { MxCpp, McCmColor } from \\\"mxcad\\\";\\r\\n\\r\\nfunction Mx_Test_TrueText() {\\r\\n let mxcad = MxCpp.getCurrentMxCAD();\\r\\n //清空当前显示内容\\r\\n mxcad.newFile();\\r\\n MxCpp.App.loadFonts([], [], [\\\"syadobe\\\", \\\"simsun\\\"], () => {\\r\\n\\r\\n // 添加一个黑体文字样式\\r\\n mxcad.AddTureTypeTextStyle(\\\"ht_style\\\", \\\"syadobe\\\");\\r\\n\\r\\n // 添加一个宋体文字样式\\r\\n mxcad.AddTureTypeTextStyle(\\\"st_style\\\", \\\"simsun\\\");\\r\\n\\r\\n // 设置当前样式为黑体\\r\\n mxcad.drawTextStyle = \\\"ht_style\\\";\\r\\n\\r\\n mxcad.drawColor = new McCmColor(200, 255, 50);\\r\\n mxcad.drawText(0, 3500, \\\"绘图控件TrueType文字测试1\\\", 100, 0, 0, 1);\\r\\n\\r\\n // 设置当前样式为黑体\\r\\n mxcad.drawTextStyle = \\\"st_style\\\";\\r\\n mxcad.drawColor = new McCmColor(200, 100, 0);\\r\\n mxcad.drawText(0, 3200, \\\"绘图控件TrueType文字测试2\\\", 100, 0, 0, 1);\\r\\n\\r\\n mxcad.zoomAll();\\r\\n mxcad.regen();\\r\\n mxcad.updateDisplay();\\r\\n });\\r\\n};\\r\\n\\r\\n// 调用画多种文字样式的文字的方法\\r\\nMx_Test_TrueText()\"","export default \"import { MxCADUiPrPoint, McDbPolyline, McDbArc, MxCpp } from \\\"mxcad\\\";\\n\\n//画圆弧\\nasync function Mx_drawArc() {\\n // 根据起点,中点,端点三个点确定一段圆弧 \\n // 获取起点\\n let getFristPoint = new MxCADUiPrPoint();\\n getFristPoint.setMessage('指定起点');\\n let fristPoint = await getFristPoint.go();\\n if (!fristPoint) return\\n\\n // 获取第二个点\\n let getSecondPoint = new MxCADUiPrPoint();\\n getSecondPoint.setMessage('指定圆弧的第二个点');\\n //动态绘制取点对象\\n getSecondPoint.setUserDraw((pt, pw) => {\\n let pl = new McDbPolyline();\\n pl.addVertexAt(fristPoint)\\n pl.addVertexAt(pt);\\n pw.drawMcDbEntity(pl)\\n })\\n let secondPoint = await getSecondPoint.go();\\n if (!secondPoint) return;\\n\\n // 获取端点\\n let getThirdPoint = new MxCADUiPrPoint();\\n getThirdPoint.setMessage('指定圆弧的端点');\\n //动态绘制圆弧\\n getThirdPoint.setUserDraw((pt, pw) => {\\n let arc = new McDbArc();\\n arc.computeArc(fristPoint.x, fristPoint.y, secondPoint.x, secondPoint.y, pt.x, pt.y);//三点画圆弧\\n pw.drawMcDbEntity(arc)\\n });\\n let thirdPoint = await getThirdPoint.go();\\n if (!thirdPoint) return\\n\\n // 画圆弧\\n let arc = new McDbArc();\\n arc.computeArc(fristPoint.x, fristPoint.y, secondPoint.x, secondPoint.y, thirdPoint.x, thirdPoint.y);//三点画圆弧\\n\\n const mxcad = MxCpp.getCurrentMxCAD();\\n mxcad.drawEntity(arc);\\n};\\n\\n// 调用画圆弧的方法\\nMx_drawArc();\\n\\n\"","export default \"import {MxCADUiPrPoint, McDbLine, MxCpp} from \\\"mxcad\\\";\\r\\n\\r\\n//画线\\r\\nasync function Mx_drawLine() {\\r\\n // 获取线段起点\\r\\n let getFristPoint = new MxCADUiPrPoint();\\r\\n getFristPoint.setMessage(\\\"请点击确定起始点\\\");\\r\\n let fristPoint: any = await getFristPoint.go();\\r\\n if (!fristPoint) return\\r\\n\\r\\n // 获取线段终点\\r\\n let getSecondPoint = new MxCADUiPrPoint();\\r\\n getSecondPoint.setMessage(\\\"请点击确定终点\\\");\\r\\n getSecondPoint.setUserDraw((pt, pw) => {\\r\\n let line = new McDbLine(fristPoint.x, fristPoint.y, fristPoint.z, pt.x, pt.y, pt.z);\\r\\n pw.drawMcDbEntity(line)\\r\\n })\\r\\n let secondPoint: any = await getSecondPoint.go();\\r\\n if (!secondPoint) return\\r\\n\\r\\n // 绘制线段\\r\\n let line = new McDbLine(fristPoint.x, fristPoint.y, fristPoint.z, secondPoint.x, secondPoint.y, secondPoint.z);\\r\\n const mxcad = MxCpp.getCurrentMxCAD();\\r\\n mxcad.drawEntity(line)\\r\\n};\\r\\n\\r\\n// 调用画线的方法\\r\\n\\r\\nMx_drawLine();\"","export default \"import { McDbText, MxCADUiPrDist, MxCADUiPrPoint, MxCADUiPrString, MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\nasync function Mx_drawText() {\\r\\n // 创建文字对象\\r\\n const text = new McDbText();\\r\\n\\r\\n // 设置文字内容\\r\\n const getStr = new MxCADUiPrString()\\r\\n getStr.setMessage(\\\"请输入文字内容\\\")\\r\\n const str = await getStr.go()\\r\\n if (!str) return\\r\\n text.textString = str;\\r\\n\\r\\n // 设置文字高度\\r\\n const getDist = new MxCADUiPrDist()\\r\\n getDist.setMessage(\\\"请输入文字高度\\\")\\r\\n const height = await getDist.go()\\r\\n if (!height) return\\r\\n text.height = getDist.value();\\r\\n\\r\\n // 设置文字高度\\r\\n const getPoint = new MxCADUiPrPoint()\\r\\n getPoint.setMessage(\\\"请点击确定文字位置\\\")\\r\\n getPoint.setUserDraw((pt, pw) => {\\r\\n text.position = pt;\\r\\n text.alignmentPoint = pt;\\r\\n pw.drawMcDbEntity(text)\\r\\n })\\r\\n const position = await getPoint.go()\\r\\n if (!position) return\\r\\n text.position = position;\\r\\n text.alignmentPoint = position\\r\\n\\r\\n const mxcad = MxCpp.getCurrentMxCAD();\\r\\n mxcad.drawEntity(text);\\r\\n};\\r\\n\\r\\n// 调用绘制文字的方法\\r\\nMx_drawText();\"","export default \"import {McDbCircle, MxCADUiPrDist, MxCADUiPrPoint, MxCpp} from \\\"mxcad\\\";\\r\\n\\r\\n// 画圆\\r\\nasync function Mx_drawCircle(){\\r\\n // 创建圆\\r\\n const circle = new McDbCircle();\\r\\n\\r\\n // 获取圆心\\r\\n const getCenter = new MxCADUiPrPoint();\\r\\n getCenter.setMessage('请确定圆心位置\\\\n');\\r\\n const center = await getCenter.go();\\r\\n if (!center) return;\\r\\n circle.center = center;\\r\\n\\r\\n // 获取圆半径\\r\\n const getRadius = new MxCADUiPrDist();\\r\\n getRadius.setBasePt(center);\\r\\n getRadius.setMessage('请输入圆半径');\\r\\n // 动态绘制圆\\r\\n getRadius.setUserDraw((pt, pw) => {\\r\\n const r = pt.distanceTo(center);\\r\\n circle.radius = r;\\r\\n pw.drawMcDbEntity(circle)\\r\\n })\\r\\n const radiusVal = await getRadius.go();\\r\\n if (!radiusVal) return;\\r\\n circle.radius = getRadius.value();\\r\\n\\r\\n // 绘制圆\\r\\n const mxobj = MxCpp.getCurrentMxCAD();\\r\\n mxobj.drawEntity(circle);\\r\\n};\\r\\n\\r\\n// 调用画圆的方法\\r\\nMx_drawCircle();\"","export default \"import {MxCADUiPrPoint, MxCpp} from \\\"mxcad\\\";\\r\\n\\r\\n//画图片\\r\\nasync function Mx_drawImg() {\\r\\n // 设置图片插入点\\r\\n const getPoint = new MxCADUiPrPoint();\\r\\n getPoint.setMessage(\\\"\\\\n指定插入点:\\\");\\r\\n let pt = await getPoint.go();\\r\\n if (!pt) return;\\r\\n \\r\\n const mxcad = MxCpp.getCurrentMxCAD();\\r\\n // 设置图片地址\\r\\n let imagUrl = \\\"https://cdn.pixabay.com/photo/2022/11/15/12/23/winter-7593872_960_720.jpg\\\";\\r\\n mxcad.loadImage(imagUrl,(image)=>{\\r\\n if(!image ){ \\r\\n console.log(\\\"loadImage failed\\\");\\r\\n return;\\r\\n }\\r\\n // 设置图片宽高\\r\\n let width = mxcad.mxdraw.viewCoordLong2Cad(100);\\r\\n let height = (image.height / image.width) * width;\\r\\n mxcad.drawImage((pt as any).x,(pt as any).y,width,height,0,imagUrl);\\r\\n mxcad.updateDisplay();\\r\\n });\\r\\n};\\r\\n\\r\\n// 调用画图片的方法\\r\\nMx_drawImg();\"","export default \"import { MxCpp, MxCADUiPrPoint, McDbPolyline, MxCADUiPrDist, McGeVector3d, McGePoint3d, McDbArc, MxCADUtility, McDbLine, McDb} from \\\"mxcad\\\";\\r\\n\\r\\n// 画多段线\\r\\nasync function Mx_drawPolyline() {\\r\\n // 获取画布实例\\r\\n const mxcad = MxCpp.App.getCurrentMxCAD();\\r\\n const getPoint = new MxCADUiPrPoint();\\r\\n getPoint.setMessage(\\\"\\\\n指定起点:\\\");\\r\\n let firstPoint = await getPoint.go();\\r\\n if (!firstPoint) return;\\r\\n let pointArr: any[] = [];\\r\\n let drawObjIds: any[] = [];\\r\\n let isArc: boolean = false;\\r\\n let dStartWidth: number = 0;\\r\\n let dEndWidth: number = 0;\\r\\n pointArr.push({ pt: firstPoint, dBulge: 0, dStartWidth, dEndWidth })\\r\\n let isAutoClose: boolean = false;\\r\\n let isReverse: boolean = false;//圆弧方向是否取反\\r\\n let arcDirection: any = null //指定圆弧切向\\r\\n while (true) {\\r\\n if (!isArc) {\\r\\n //绘直线\\r\\n const getNextPoint = new MxCADUiPrPoint;\\r\\n getNextPoint.setMessage(\\\"\\\\n指定下一个点\\\");\\r\\n // 提示消息\\r\\n if (pointArr.length < 2) {\\r\\n getNextPoint.setKeyWords('[圆弧(A)/宽度(W)]')\\r\\n } else {\\r\\n getNextPoint.setKeyWords('[放弃(U)/圆弧(A)/宽度(W)/闭合(C)]')\\r\\n }\\r\\n let lastPoint = pointArr[pointArr.length - 1];//鼠标点击的最后一个点\\r\\n // 等待鼠标点击期间会执行setUserDraw动态绘制函数中的回调函数\\r\\n getNextPoint.setUserDraw((pt, pw) => {\\r\\n // pt 就是鼠标所在图纸位置的坐标\\r\\n // pw 是提供了一些动态绘制方法的对象\\r\\n let pl = new McDbPolyline();\\r\\n pl.addVertexAt(lastPoint.pt, lastPoint.dBulge, lastPoint.dStartWidth, lastPoint.dEndWidth)\\r\\n pl.addVertexAt(pt, 0, dStartWidth, dEndWidth);\\r\\n pw.drawMcDbEntity(pl);\\r\\n })\\r\\n let nextPoint = await getNextPoint.go();\\r\\n if (nextPoint !== null) {\\r\\n // 获取到了鼠标点击点\\r\\n pointArr.push({ pt: nextPoint, dBulge: 0, dStartWidth, dEndWidth });\\r\\n let pl = new McDbPolyline();\\r\\n pl.addVertexAt(lastPoint.pt, lastPoint.dBulge, lastPoint.dStartWidth, lastPoint.dEndWidth);\\r\\n pl.addVertexAt(nextPoint, 0, dStartWidth, dEndWidth);\\r\\n drawObjIds.push(mxcad.drawEntity(pl))\\r\\n } else if (getNextPoint.getStatus() === Mx.MrxDbgUiPrBaseReturn.kKeyWord) {\\r\\n // 用户输入关键字\\r\\n let keyWord = getNextPoint.keyWordPicked()\\r\\n if (keyWord === 'A') {\\r\\n // 绘制圆弧\\r\\n isArc = true;\\r\\n } else if (keyWord === 'W') {\\r\\n // 设置宽度\\r\\n /**\\r\\n * 输入空格宽度不变\\r\\n */\\r\\n let getWidth = new MxCADUiPrDist();\\r\\n getWidth.setMessage('指定起点宽度:');\\r\\n // 获取线宽\\r\\n let dWVal = await getWidth.go();\\r\\n if (dWVal !== null && getWidth.getStatus() !== Mx.MrxDbgUiPrBaseReturn.kNone) {\\r\\n dStartWidth = getWidth.value();\\r\\n pointArr[pointArr.length - 1].dStartWidth = dStartWidth;\\r\\n }\\r\\n getWidth.setMessage('指定端点宽度');\\r\\n dWVal = await getWidth.go();\\r\\n if (dWVal !== null && getWidth.getStatus() !== Mx.MrxDbgUiPrBaseReturn.kNone) {\\r\\n dEndWidth = getWidth.value();\\r\\n pointArr[pointArr.length - 1].dEndWidth = dEndWidth;\\r\\n }\\r\\n } else if (keyWord === 'U') {\\r\\n // 回退操作\\r\\n if (pointArr.length > 1 && drawObjIds.length > 1) {\\r\\n pointArr.pop();\\r\\n drawObjIds[drawObjIds.length - 1].erase();\\r\\n drawObjIds.pop();\\r\\n }\\r\\n } else if (keyWord === 'C') {\\r\\n isAutoClose = true;\\r\\n break;\\r\\n }\\r\\n } else {\\r\\n break;\\r\\n }\\r\\n } else {\\r\\n // 绘制圆弧\\r\\n let getNextPoint = new MxCADUiPrPoint();\\r\\n getNextPoint.setMessage('指定圆弧的端点(按住 ctrl 键取相反方向)\\\\n');\\r\\n getNextPoint.setKeyWords('[第二个点(S)/角度(A)/圆心(CE)/放弃(U)/直线(L)/宽度(W)/闭合(CL)]');\\r\\n // 计算圆弧的切向量.\\r\\n let vecArcTangent = new McGeVector3d();\\r\\n // 开端的圆弧切向量取水平方向./获取圆弧切向\\r\\n if (pointArr.length < 2) {\\r\\n // 开端的圆弧切向量取水平方向.\\r\\n vecArcTangent.copy(McGeVector3d.kYAxis);\\r\\n } else {\\r\\n let length = pointArr.length;\\r\\n let p1 = pointArr[length - 2].pt;\\r\\n let dBulge = pointArr[length - 2].dBulge;\\r\\n let p2 = pointArr[length - 1].pt;\\r\\n if (dBulge === 0) {\\r\\n // 前一段是个直线.\\r\\n vecArcTangent = new McGePoint3d(p2.x, p2.y, 0.0).sub(new McGePoint3d(p1.x, p1.y, 0.0));\\r\\n }\\r\\n else {\\r\\n // 前一段为曲线,求圆弧的切向量\\r\\n let tmpPl = new McDbPolyline;\\r\\n tmpPl.addVertexAt(p1, dBulge);\\r\\n tmpPl.addVertexAt(p2);\\r\\n let tmpVec = tmpPl.getFirstDeriv(new McGePoint3d(p2.x, p2.y, 0.0));//曲线上任意一点的切向量\\r\\n if (tmpVec.ret) {\\r\\n vecArcTangent = tmpVec.val;\\r\\n }\\r\\n else {\\r\\n vecArcTangent.copy(McGeVector3d.kXAxis);\\r\\n }\\r\\n }\\r\\n }\\r\\n let lastPoint = pointArr[pointArr.length - 1];\\r\\n //监听ctrl键是否被按下\\r\\n document.addEventListener('keydown', function (event) {\\r\\n if (event.ctrlKey && event.keyCode === 17) {\\r\\n isReverse = true;\\r\\n }\\r\\n });\\r\\n // ctrl键松开\\r\\n document.addEventListener('keyup', function () {\\r\\n isReverse = false;\\r\\n });\\r\\n getNextPoint.setUserDraw((pt, pw) => {\\r\\n let pl = new McDbPolyline();\\r\\n let d = CMxDrawPolylineDragArcDraw_CalcArcBulge(lastPoint.pt, pt, arcDirection ? arcDirection : vecArcTangent);\\r\\n if (isReverse) d = -d;\\r\\n pl.addVertexAt(lastPoint.pt, d, lastPoint.dStartWidth, lastPoint.dEndWidth);\\r\\n pl.addVertexAt(pt, 0, dStartWidth, dEndWidth);\\r\\n pw.drawMcDbEntity(pl);\\r\\n })\\r\\n let nextPoint = await getNextPoint.go();\\r\\n if (nextPoint != null) {\\r\\n let dBulge = CMxDrawPolylineDragArcDraw_CalcArcBulge(lastPoint.pt, nextPoint, arcDirection ? arcDirection : vecArcTangent);\\r\\n if (isReverse) dBulge = -dBulge;\\r\\n lastPoint.dBulge = dBulge;\\r\\n pointArr.push({ pt: nextPoint, dBulge: 0, dStartWidth, dEndWidth });\\r\\n let pl = new McDbPolyline();\\r\\n pl.addVertexAt(lastPoint.pt, dBulge, lastPoint.dStartWidth, lastPoint.dEndWidth);\\r\\n pl.addVertexAt(nextPoint, 0, dStartWidth, dEndWidth);\\r\\n drawObjIds.push(mxcad.drawEntity(pl));\\r\\n } else if (getNextPoint.getStatus() === Mx.MrxDbgUiPrBaseReturn.kKeyWord) {\\r\\n // 获取用户输入关键字\\r\\n let keyWord = getNextPoint.keyWordPicked();\\r\\n if (keyWord === 'L') {\\r\\n // 变直线\\r\\n isArc = false;\\r\\n } else if (keyWord === 'U') {\\r\\n // 回退\\r\\n if (pointArr.length > 1 && drawObjIds.length > 1) {\\r\\n pointArr.pop();\\r\\n drawObjIds[drawObjIds.length - 1].erase();\\r\\n drawObjIds.pop();\\r\\n }\\r\\n } else if (keyWord === 'S') {\\r\\n // 用户指定圆弧的第二个点\\r\\n let getPoint2 = new MxCADUiPrPoint();//用户输入的指定点\\r\\n getPoint2.setMessage(\\\"指定圆弧的第二个点\\\");\\r\\n let pt2: any = await getPoint2.go();\\r\\n if (pt2 === null) return\\r\\n let getPoint3 = new MxCADUiPrPoint();\\r\\n getPoint3.setMessage(\\\"指定圆弧的端点\\\");\\r\\n let lastPoint = pointArr[pointArr.length - 1]\\r\\n getPoint3.setUserDraw((pt, pw) => {\\r\\n let arc = new McDbArc();\\r\\n arc.computeArc(lastPoint.pt.x, lastPoint.pt.y, pt2.x, pt2.y, pt.x, pt.y);//三点绘制圆弧\\r\\n pw.drawMcDbEntity(arc);\\r\\n });\\r\\n let pt3 = await getPoint3.go();\\r\\n if (!pt3) break;\\r\\n let retB = MxCADUtility.calcBulge(lastPoint.pt, pt2, pt3);//开始点,中点,结束点 三点计算当前弧线的凸度\\r\\n if (!retB.ret) break;\\r\\n pointArr[pointArr.length - 1] = retB.val;\\r\\n pointArr.push({ pt: pt3, dBulge: 0, dStartWidth, dEndWidth });//最后一个点\\r\\n let pl = new McDbPolyline();\\r\\n pl.addVertexAt(lastPoint.pt, retB.val, dStartWidth, dEndWidth);\\r\\n pl.addVertexAt(pt3);\\r\\n drawObjIds.push(mxcad.drawEntity(pl));\\r\\n } else if (keyWord === 'W') {\\r\\n // 设置宽度\\r\\n let getWidth = new MxCADUiPrDist();\\r\\n getWidth.setMessage('指定起点宽度:');\\r\\n // 获取线宽\\r\\n let dWVal = await getWidth.go();\\r\\n if (dWVal !== null && getWidth.getStatus() !== Mx.MrxDbgUiPrBaseReturn.kNone) {\\r\\n dStartWidth = getWidth.value();\\r\\n pointArr[pointArr.length - 1].dStartWidth = dStartWidth;\\r\\n }\\r\\n getWidth.setMessage('指定端点宽度');\\r\\n dWVal = await getWidth.go();\\r\\n if (dWVal !== null && getWidth.getStatus() !== Mx.MrxDbgUiPrBaseReturn.kNone) {\\r\\n dEndWidth = getWidth.value();\\r\\n pointArr[pointArr.length - 1].dEndWidth = dEndWidth;\\r\\n }\\r\\n } else if (keyWord === 'D') {\\r\\n // 指定圆弧切向\\r\\n let getDirection = new MxCADUiPrPoint();\\r\\n getDirection.setMessage('指定圆弧起点的切向:');\\r\\n let dirVal = await getDirection.go();\\r\\n if (dirVal === null) break;\\r\\n arcDirection = new McGeVector3d(dirVal.x, dirVal.y, dirVal.z)\\r\\n } else if (keyWord === 'CE') {\\r\\n // 确定圆心\\r\\n let getCenter = new MxCADUiPrPoint();\\r\\n getCenter.setMessage('指定圆弧的圆心:');\\r\\n let arcCenter: any = await getCenter.go();\\r\\n if (!arcCenter) return;\\r\\n // 起始角度:起点与圆心的连线与X轴正方向的夹角\\r\\n // 结束角度:结束点与圆心的连线与X轴正方向的夹角\\r\\n let getNextPoint = new MxCADUiPrPoint();\\r\\n let lastPoint = pointArr[pointArr.length - 1];\\r\\n let r: number = 0;//圆弧凸度\\r\\n let arc = new McDbArc();//圆弧\\r\\n // 开端的圆弧切向量取水平方向./获取圆弧切向\\r\\n getNextPoint.setUserDraw(async (pt, pw) => {\\r\\n // 起始角度\\r\\n arc.startAngle = lastPoint.pt.sub(arcCenter).angleTo1(new McGeVector3d(arcCenter.x, 0, 0))//始终不变\\r\\n arc.endAngle = pt.sub(arcCenter).angleTo1(new McGeVector3d(arcCenter.x, 0, 0))\\r\\n arc.center = arcCenter;\\r\\n arc.radius = arcCenter.distanceTo(lastPoint.pt);\\r\\n if (pt.y < arcCenter.y) arc.endAngle = -arc.endAngle;\\r\\n // // 获取圆弧上的第三个点\\r\\n let lineX = new McDbPolyline();\\r\\n lineX.addVertexAt(new McGePoint3d(arcCenter.x, 0, 0));\\r\\n lineX.addVertexAt(new McGePoint3d(0, 0, 0));\\r\\n let pointsX = arc.IntersectWith(lineX, 3);//X轴交点\\r\\n // 获取凸度\\r\\n let rLine = new McDbPolyline();\\r\\n rLine.addVertexAt(arcCenter);\\r\\n rLine.addVertexAt(pt);\\r\\n let currentPoint = arc.IntersectWith(rLine, 2);//当前线段与圆弧的交点\\r\\n let cp: any = null;\\r\\n if (currentPoint.length() === 1) {\\r\\n cp = currentPoint.at(0);\\r\\n } else {\\r\\n if (pt.distanceTo(currentPoint.at(0)) <= pt.distanceTo(currentPoint.at(1))) {\\r\\n cp = currentPoint.at(0);\\r\\n } else {\\r\\n cp = currentPoint.at(1);\\r\\n }\\r\\n }\\r\\n let retB = MxCADUtility.calcBulge(lastPoint.pt, pointsX.at(0), cp);\\r\\n if (retB.ret) {\\r\\n r = retB.val;\\r\\n let pl = new McDbPolyline()\\r\\n pl.addVertexAt(lastPoint.pt, r);\\r\\n pl.addVertexAt(cp);\\r\\n pw.drawMcDbEntity(pl)\\r\\n }\\r\\n })\\r\\n let nextPoint = await getNextPoint.go();\\r\\n if (!nextPoint) break;\\r\\n // 获取凸度\\r\\n let rLine = new McDbPolyline();\\r\\n rLine.addVertexAt(arcCenter);\\r\\n rLine.addVertexAt(nextPoint);\\r\\n let currentPoint = arc.IntersectWith(rLine, 2);\\r\\n let cp: any = null;\\r\\n if (currentPoint.length() === 1) {\\r\\n cp = currentPoint.at(0);\\r\\n } else {\\r\\n if (nextPoint.distanceTo(currentPoint.at(0)) <= nextPoint.distanceTo(currentPoint.at(1))) {\\r\\n cp = currentPoint.at(0);\\r\\n } else {\\r\\n cp = currentPoint.at(1);\\r\\n }\\r\\n }\\r\\n let pl = new McDbPolyline()\\r\\n pl.addVertexAt(lastPoint.pt, r, dStartWidth, dEndWidth);\\r\\n pl.addVertexAt(cp);\\r\\n pointArr[pointArr.length - 1].dBulge = r;\\r\\n pointArr.push({ pt: cp, dBulge: 0, dStartWidth, dEndWidth })\\r\\n drawObjIds.push(mxcad.drawEntity(pl));\\r\\n\\r\\n } else if (keyWord === 'CL') {\\r\\n // 闭合\\r\\n isAutoClose = true;\\r\\n break;\\r\\n }\\r\\n } else {\\r\\n break;\\r\\n }\\r\\n\\r\\n }\\r\\n }\\r\\n // 删除监听事件\\r\\n document.removeEventListener('keydown', () => isReverse = false)\\r\\n document.removeEventListener('keyup', () => isReverse = false)\\r\\n // 最终绘制\\r\\n /**\\r\\n * 先删除所有临时对象再重新绘制多边形\\r\\n */\\r\\n for (let i = 0; i < drawObjIds.length; i++) {\\r\\n drawObjIds[i].erase();\\r\\n }\\r\\n if (pointArr.length > 1) {\\r\\n let pl = new McDbPolyline();\\r\\n pointArr.forEach(item => {\\r\\n pl.addVertexAt(item.pt, item.dBulge, item.dStartWidth, item.dEndWidth)\\r\\n })\\r\\n pl.isClosed = isAutoClose;\\r\\n mxcad.drawEntity(pl);\\r\\n }\\r\\n}\\r\\n\\r\\n// 计算圆弧凸度\\r\\nfunction CMxDrawPolylineDragArcDraw_CalcArcBulge(firstPoint, nextPoint, vecArcTangent): number {\\r\\n if (firstPoint.isEqualTo(nextPoint))\\r\\n return 0.0;\\r\\n let midPt = firstPoint.c().addvec(nextPoint.c().sub(firstPoint).mult(0.5));\\r\\n\\r\\n let vecMid = nextPoint.c().sub(firstPoint);\\r\\n vecMid.rotateBy(Math.PI / 2.0, McGeVector3d.kZAxis);\\r\\n\\r\\n let tmpMidLine = new McDbLine(midPt, midPt.c().addvec(vecMid));\\r\\n\\r\\n let vecVertical = vecArcTangent.c();\\r\\n vecVertical.rotateBy(Math.PI / 2.0, McGeVector3d.kZAxis);\\r\\n\\r\\n let tmpVerticalLine = new McDbLine(firstPoint, firstPoint.c().addvec(vecVertical));\\r\\n\\r\\n let aryPoint = tmpMidLine.IntersectWith(tmpVerticalLine, McDb.Intersect.kExtendBoth);\\r\\n if (aryPoint.isEmpty())\\r\\n return 0.0;\\r\\n\\r\\n let arcCenPoint = aryPoint.at(0);\\r\\n\\r\\n let dR = arcCenPoint.distanceTo(firstPoint);\\r\\n\\r\\n vecMid.normalize();\\r\\n vecMid.mult(dR);\\r\\n\\r\\n let arcMidPt1 = arcCenPoint.c().addvec(vecMid);\\r\\n let arcMidPt2 = arcCenPoint.c().subvec(vecMid);\\r\\n let vecArcDir1 = arcMidPt1.c().sub(firstPoint);\\r\\n let vecArcDir2 = arcMidPt2.c().sub(firstPoint);\\r\\n let arcMidPt = arcMidPt1;\\r\\n if (vecArcDir1.angleTo1(vecArcTangent) > vecArcDir2.angleTo1(vecArcTangent)) {\\r\\n arcMidPt = arcMidPt2;\\r\\n }\\r\\n return MxCADUtility.calcBulge(firstPoint, arcMidPt, nextPoint).val;\\r\\n}\\r\\n\\r\\n// 调用画多段线的方法\\r\\nMx_drawPolyline();\"","export default \"import { McDbEllipse,MxCADUiPrPoint, McDbLine, McGePoint3d, MxCADUiPrDist, MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\n// 绘制椭圆\\r\\nasync function drawMxDbEllipse() {\\r\\n \\r\\n // 创建椭圆对象\\r\\n const ellipse = new McDbEllipse();\\r\\n \\r\\n // 指定椭圆的轴端点\\r\\n const getPt1 = new MxCADUiPrPoint();\\r\\n getPt1.setMessage(\\\"\\\\n指定椭圆的轴端点:\\\");\\r\\n const pt1 = await getPt1.go();\\r\\n if (!pt1) return;\\r\\n\\r\\n // 指定椭圆轴的另一个端点\\r\\n const getPt2 = new MxCADUiPrPoint();\\r\\n getPt2.setMessage(\\\"\\\\n指定椭圆轴的另一个端点:\\\");\\r\\n getPt2.setUserDraw((pt, pw) => {\\r\\n const line = new McDbLine(pt, pt1);\\r\\n pw.drawMcDbEntity(line);\\r\\n })\\r\\n const pt2 = await getPt2.go();\\r\\n if (!pt2) return;\\r\\n\\r\\n // 获取椭圆中心点\\r\\n const center = new McGePoint3d((pt1.x + pt2.x) / 2, (pt1.y + pt2.y) / 2);\\r\\n ellipse.center = center;\\r\\n ellipse.majorAxis = pt1.sub(pt2);\\r\\n const xRadius = pt1.distanceTo(pt2) / 2\\r\\n\\r\\n // 指定另一条半轴长度\\r\\n const getDist = new MxCADUiPrDist();\\r\\n getDist.setMessage(\\\"指定另一条半轴长度\\\")\\r\\n getDist.setBasePt(center)\\r\\n getDist.setUserDraw((pt, pw) => {\\r\\n const yRadius = center.distanceTo(pt) / 2\\r\\n // 设置椭圆的副轴长度与主轴长度的比值\\r\\n ellipse.radiusRatio = yRadius / xRadius\\r\\n pw.drawMcDbEntity(ellipse)\\r\\n })\\r\\n let length = await getDist.go()\\r\\n if (!length) return\\r\\n if (getDist.getDetailedResult() === Mx.DetailedResult.kCoordIn) {\\r\\n const yRadius = length / 2\\r\\n ellipse.radiusRatio = yRadius / xRadius\\r\\n }\\r\\n MxCpp.getCurrentMxCAD().drawEntity(ellipse)\\r\\n};\\r\\n\\r\\n// 调用绘制椭圆的方法\\r\\ndrawMxDbEllipse();\"","export default \"import { MxCADUiPrPoint, MxCADUtility, MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\n// 选点填充\\r\\nasync function MxTest_DrawHatchFormPoint() {\\r\\n // 指定填充区域内部一点\\r\\n const getPoint = new MxCADUiPrPoint();\\r\\n getPoint.setMessage(\\\"\\\\n指定填充区域内部一点:\\\");\\r\\n getPoint.disableAllTrace(true);\\r\\n getPoint.setDisableOsnap(true);\\r\\n let pt = await getPoint.go();\\r\\n if (!pt) return;\\r\\n \\r\\n // 绘制填充\\r\\n let hatch = MxCADUtility.builderHatchFromPoint(pt);\\r\\n if (!hatch) {\\r\\n Mx.MxFun.acutPrintf(\\\"没有找到闭合区域\\\\n\\\")\\r\\n return;\\r\\n }\\r\\n\\r\\n let mxcad = MxCpp.getCurrentMxCAD();\\r\\n mxcad.drawEntity(hatch);\\r\\n};\\r\\n\\r\\n// 调用选点填充的方法\\r\\nMxTest_DrawHatchFormPoint();\"","export default \"import { McDbBlockReference, MxCADUiPrPoint, MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\nfunction getHostUrl(): string {\\r\\n let host = window.location.hostname;\\r\\n if (host.substring(0, 4) != \\\"http\\\") {\\r\\n host = document.location.protocol + \\\"//\\\" + host;\\r\\n }\\r\\n return host;\\r\\n}\\r\\n\\r\\n// 插入图块\\r\\nasync function MxTest_InsertBlock() {\\r\\n let baseUrl = \\\"http://localhost:3000/mxcad/\\\"\\r\\n if (baseUrl.substring(0, 16) == \\\"http://localhost\\\") {\\r\\n baseUrl = getHostUrl() + baseUrl.substring(16);\\r\\n }\\r\\n // 设置图块路径\\r\\n let blkFilePath = baseUrl + \\\"tree.mxweb\\\";\\r\\n\\r\\n // 插入图块文件\\r\\n let mxcad = MxCpp.App.getCurrentMxCAD();\\r\\n let blkrecId = await mxcad.insertBlock(blkFilePath, \\\"tree\\\");\\r\\n if (!blkrecId.isValid()) {\\r\\n // 插入图块\\r\\n return;\\r\\n }\\r\\n\\r\\n // 设置图块大小\\r\\n let blkRef = new McDbBlockReference();\\r\\n blkRef.blockTableRecordId = blkrecId;\\r\\n let box = blkRef.getBoundingBox();\\r\\n if (box.ret) {\\r\\n let dLen = box.maxPt.distanceTo(box.minPt);\\r\\n if (dLen > 0.00001) {\\r\\n blkRef.setScale(mxcad.getMxDrawObject().screenCoordLong2Doc(100) / dLen);\\r\\n }\\r\\n }\\r\\n\\r\\n // 指定插入基点\\r\\n let getPoint = new MxCADUiPrPoint();\\r\\n getPoint.setMessage(\\\"\\\\指定插入基点\\\");\\r\\n\\r\\n // 动态绘制图块\\r\\n getPoint.setUserDraw((v, worldDraw) => {\\r\\n blkRef.position = v;\\r\\n worldDraw.drawMcDbEntity(blkRef);\\r\\n });\\r\\n\\r\\n let pt = await getPoint.go();\\r\\n if (!pt) return;\\r\\n blkRef.position = pt;\\r\\n // 绘制图块\\r\\n let newBlkRefId = mxcad.drawEntity(blkRef);\\r\\n if (!newBlkRefId.isValid) {\\r\\n console.log(\\\"insert error\\\");\\r\\n return;\\r\\n }\\r\\n};\\r\\n\\r\\n// 调用插入图块方法\\r\\nMxTest_InsertBlock();\"","export default \"import { IMcDbDwgFiler, McDbCustomEntity, McDbPolyline, McGePoint3d, McGePoint3dArray, MxCADUiPrPoint, MxCADWorldDraw, MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\n// 新创建 McDbTestLineCustomEntity 类继承 McDbCustomEntity\\r\\nclass McDbTestRectangle extends McDbCustomEntity {\\r\\n // 定义McDbTestLineCustomEntity内部的点对象 \\r\\n // 矩形角点pt1、pt2\\r\\n private pt1: McGePoint3d = new McGePoint3d();\\r\\n private pt2: McGePoint3d = new McGePoint3d();\\r\\n // 构造函数\\r\\n constructor(imp?: any) {\\r\\n super(imp);\\r\\n }\\r\\n // 创建函数\\r\\n public create(imp: any) {\\r\\n return new McDbTestRectangle(imp)\\r\\n }\\r\\n // 获取类名\\r\\n public getTypeName(): string {\\r\\n return \\\"McDbTestRectangle\\\";\\r\\n }\\r\\n // 读取自定义实体数据pt1、pt2\\r\\n public dwgInFields(filter: IMcDbDwgFiler): boolean {\\r\\n this.pt1 = filter.readPoint(\\\"pt1\\\").val;\\r\\n this.pt2 = filter.readPoint(\\\"pt2\\\").val;\\r\\n return true;\\r\\n }\\r\\n // 写入自定义实体数据pt1、pt2\\r\\n public dwgOutFields(filter: IMcDbDwgFiler): boolean {\\r\\n filter.writePoint(\\\"pt1\\\", this.pt1);\\r\\n filter.writePoint(\\\"pt2\\\", this.pt2);\\r\\n return true;\\r\\n }\\r\\n\\r\\n // 移动自定义对象的夹点\\r\\n public moveGripPointsAt(iIndex: number, dXOffset: number, dYOffset: number, dZOffset: number) {\\r\\n this.assertWrite();\\r\\n if (iIndex == 0) {\\r\\n this.pt1.x += dXOffset;\\r\\n this.pt1.y += dYOffset;\\r\\n this.pt1.z += dZOffset;\\r\\n }\\r\\n else if (iIndex == 1) {\\r\\n this.pt2.x += dXOffset;\\r\\n this.pt2.y += dYOffset;\\r\\n this.pt2.z += dZOffset;\\r\\n }\\r\\n };\\r\\n // 获取自定义对象的夹点\\r\\n public getGripPoints(): McGePoint3dArray {\\r\\n let ret = new McGePoint3dArray()\\r\\n ret.append(this.pt1);\\r\\n ret.append(this.pt2);\\r\\n return ret;\\r\\n };\\r\\n // 绘制实体\\r\\n public worldDraw(draw: MxCADWorldDraw): void {\\r\\n const pl = new McDbPolyline();\\r\\n pl.isClosed = true;\\r\\n pl.addVertexAt(this.pt1);\\r\\n pl.addVertexAt(new McGePoint3d(this.pt2.x, this.pt1.y));\\r\\n pl.addVertexAt(this.pt2);\\r\\n pl.addVertexAt(new McGePoint3d(this.pt1.x, this.pt2.y));\\r\\n draw.drawEntity(pl);\\r\\n }\\r\\n // 设置pt1\\r\\n public setPoint1(pt1: McGePoint3d) {\\r\\n this.assertWrite();\\r\\n this.pt1 = pt1.clone();\\r\\n }\\r\\n // 设置pt2\\r\\n public setPoint2(pt2: McGePoint3d) {\\r\\n this.assertWrite();\\r\\n this.pt2 = pt2.clone();\\r\\n }\\r\\n // 获取pt1\\r\\n public getPoint1() {\\r\\n return this.pt1;\\r\\n }\\r\\n // 获取pt2\\r\\n public getPoint2() {\\r\\n return this.pt2;\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\nasync function MxTest_DrawCustomEntity() {\\r\\n let mxcad = MxCpp.getCurrentMxCAD();\\r\\n const getPoint = new MxCADUiPrPoint();\\r\\n getPoint.setMessage(\\\"\\\\n指定第一个角点:\\\");\\r\\n let pt1 = await getPoint.go();\\r\\n if (!pt1) return;\\r\\n const myRect = new McDbTestRectangle();\\r\\n myRect.setPoint1(pt1);\\r\\n\\r\\n getPoint.setMessage(\\\"\\\\n指定第二个角点:\\\");\\r\\n getPoint.setUserDraw((pt, pw) => {\\r\\n myRect.setPoint2(pt);\\r\\n pw.drawMcDbEntity(myRect);\\r\\n })\\r\\n let pt2 = await getPoint.go();\\r\\n if (!pt2) return;\\r\\n\\r\\n myRect.setPoint2(pt2);\\r\\n mxcad.drawEntity(myRect);\\r\\n}\\r\\n\\r\\n// 注册自定义实体\\r\\nnew McDbTestRectangle().rxInit();\\r\\n// 调用方法绘制自定义实体\\r\\nMxTest_DrawCustomEntity();\\r\\n\"","export default \"import { McDbAlignedDimension, McDbArc, McDbBlockReference, McDbCircle, McDbDimension, McDbHatch, McDbLine, McDbMText, McDbPolyline, McDbRasterImage, McDbRotatedDimension, McDbText, MxCADSelectionSet } from \\\"mxcad\\\";\\r\\n\\r\\n\\r\\n// 点对象转字符串\\r\\nfunction McGePoint3dToString(pt): string {\\r\\n return \\\"x=\\\" + pt.x + \\\",y=\\\" + pt.y + \\\",z=\\\" + pt.z;\\r\\n}\\r\\n\\r\\n// 实体对象转json对象\\r\\nfunction McDbEntityToJsonObject(ent): object {\\r\\n let obj: any = {}\\r\\n obj.ObjectName = ent.objectName;// 对象名\\r\\n obj.id = ent.getObjectID().id;// 对象id\\r\\n obj.handle = ent.getHandle(); // 对象句柄\\r\\n obj.layer = ent.layer; // 对象所在图层\\r\\n obj.color = ent.trueColor.getColorString(); // 对象颜色说明字符串\\r\\n obj.colorVal = ent.trueColor.getColorValue(ent.layerId); // 对象颜色字符串\\r\\n obj.linetype = ent.linetype; // 对象线型\\r\\n obj.textStyle = ent.textStyle; // 对象文字样式\\r\\n obj.dxf0 = ent.dxf0;// 得到对象的DXF组码的类型名\\r\\n\\r\\n if (ent instanceof McDbText) {\\r\\n // 文字对象\\r\\n let txt = ent as McDbText;\\r\\n obj.position = McGePoint3dToString(txt.position);\\r\\n obj.textString = txt.textString;\\r\\n }\\r\\n else if (ent instanceof McDbMText) {\\r\\n // 多行文字对象\\r\\n let mtxt = ent as McDbMText;\\r\\n obj.contents = mtxt.contents;\\r\\n obj.location = McGePoint3dToString(mtxt.location);\\r\\n }\\r\\n else if (ent instanceof McDbLine) {\\r\\n // 直线对象\\r\\n let line = ent as McDbLine;\\r\\n obj.startPoint = McGePoint3dToString(line.startPoint);\\r\\n obj.endPoint = McGePoint3dToString(line.endPoint);\\r\\n }\\r\\n else if (ent instanceof McDbCircle) {\\r\\n // 圆对象\\r\\n let circle = ent as McDbCircle;\\r\\n obj.center = McGePoint3dToString(circle.center);\\r\\n obj.radius = circle.radius;\\r\\n }\\r\\n else if (ent instanceof McDbArc) {\\r\\n // 圆弧对象\\r\\n let arc = ent as McDbArc;\\r\\n obj.center = McGePoint3dToString(arc.center);\\r\\n obj.startAngle = arc.startAngle;\\r\\n obj.endAngle = arc.endAngle;\\r\\n }\\r\\n else if (ent instanceof McDbPolyline) {\\r\\n // 多段线对象\\r\\n let polyline = ent as McDbPolyline;\\r\\n let num = polyline.numVerts();\\r\\n obj.num = num;\\r\\n for (let i = 0; i < num; i++) {\\r\\n let pt = polyline.getPointAt(i);\\r\\n let bulge = polyline.getBulgeAt(i);\\r\\n obj[\\\"pt\\\" + i] = McGePoint3dToString(pt.val);\\r\\n obj[\\\"bulge\\\" + i] = bulge;\\r\\n }\\r\\n }\\r\\n else if (ent instanceof McDbBlockReference) {\\r\\n // 块引用对象\\r\\n let blkRef = ent as McDbBlockReference;\\r\\n obj.position = McGePoint3dToString(blkRef.position);\\r\\n obj.blockTransform = blkRef.blockTransform;\\r\\n obj.blockName = blkRef.blockName;\\r\\n }\\r\\n else if (ent instanceof McDbAlignedDimension) {\\r\\n // 对齐标注对象\\r\\n let alignedDim = ent as McDbAlignedDimension;\\r\\n obj.xLine1Point = McGePoint3dToString(alignedDim.xLine1Point);\\r\\n obj.xLine2Point = McGePoint3dToString(alignedDim.xLine2Point);\\r\\n let txts = alignedDim.GetAllText();\\r\\n txts.forEach((val, index) => {\\r\\n obj[\\\"txt:\\\" + index] = val;\\r\\n });\\r\\n }\\r\\n else if (ent instanceof McDbRotatedDimension) {\\r\\n // 旋转标注对象\\r\\n let rotatedDim = ent as McDbRotatedDimension;\\r\\n obj.xLine1Point = McGePoint3dToString(rotatedDim.xLine1Point);\\r\\n obj.xLine2Point = McGePoint3dToString(rotatedDim.xLine2Point);\\r\\n let txts = rotatedDim.GetAllText();\\r\\n txts.forEach((val, index) => {\\r\\n obj[\\\"txt:\\\" + index] = val;\\r\\n });\\r\\n }\\r\\n else if (ent instanceof McDbDimension) {\\r\\n // 标注对象\\r\\n let dim = ent as McDbDimension;\\r\\n let txts = dim.GetAllText();\\r\\n txts.forEach((val, index) => {\\r\\n obj[\\\"txt:\\\" + index] = val;\\r\\n });\\r\\n }\\r\\n else if (ent instanceof McDbHatch) {\\r\\n // 填充对象\\r\\n let hatch = ent as McDbHatch;\\r\\n obj.patternType = hatch.patternType();\\r\\n obj.patternName = hatch.patternName();\\r\\n obj.patternAngle = hatch.patternAngle;\\r\\n obj.patternScale = hatch.patternScale;\\r\\n obj.patternSpace = hatch.patternSpace;\\r\\n obj.patternDouble = hatch.patternDouble;\\r\\n obj.hatchStyle = hatch.hatchStyle();\\r\\n obj.isSolid = hatch.isSolid();\\r\\n obj.numLoops = hatch.numLoops;\\r\\n for (let i = 0; i < obj.numLoops; i++) {\\r\\n let loop: any = hatch.getLoopAt(i);\\r\\n loop.vertices.forEach((val: any, inidex: number) => {\\r\\n loop[\\\"pt:\\\" + inidex] = {};\\r\\n loop[\\\"pt:\\\" + inidex].x = val.x;\\r\\n loop[\\\"pt:\\\" + inidex].y = val.y;\\r\\n loop[\\\"pt:\\\" + inidex].z = val.z;\\r\\n })\\r\\n obj[\\\"loop:\\\" + i] = loop;\\r\\n };\\r\\n obj.numPatternDefinitions = hatch.numPatternDefinitions;\\r\\n for (let i = 0; i < obj.numPatternDefinitions; i++) {\\r\\n obj[\\\"patternDefinitions:\\\" + i] = hatch.getPatternDefinitionAt(i);\\r\\n };\\r\\n }\\r\\n else if (ent instanceof McDbRasterImage) {\\r\\n // 位图对象\\r\\n let image = ent as McDbRasterImage;\\r\\n let orientation = image.getOrientation();\\r\\n obj.orientation = {};\\r\\n obj.orientation.origin = orientation.origin.toVector3();\\r\\n obj.orientation.uCorner = orientation.uCorner.toVector3();\\r\\n obj.orientation.vOnPlane = orientation.vOnPlane.toVector3();\\r\\n\\r\\n let clipBoundary = image.clipBoundary();\\r\\n obj.clipBoundary = {};\\r\\n clipBoundary.forEach((pt, index) => {\\r\\n obj.clipBoundary[\\\"pt\\\" + index] = pt.toVector3();\\r\\n });\\r\\n\\r\\n obj.clipBoundaryType = image.clipBoundaryType();\\r\\n\\r\\n let imageDef = image.imageDefId().getMcDbRasterImageDef();\\r\\n if (imageDef) {\\r\\n obj.filePath = imageDef.sourceFileName;\\r\\n }\\r\\n }\\r\\n\\r\\n return obj;\\r\\n}\\r\\n// 得到图纸所有对象\\r\\nasync function TestGetAllEntity() {\\r\\n\\r\\n let ss = new MxCADSelectionSet();\\r\\n ss.allSelect();\\r\\n ss.forEach((id) => {\\r\\n let ent: any = id.getMcDbEntity();\\r\\n if (!ent) return;\\r\\n ent = McDbEntityToJsonObject(ent);\\r\\n console.log(JSON.stringify(ent));\\r\\n })\\r\\n};\\r\\n\\r\\n// 调用得到图纸所有对象的方法\\r\\nTestGetAllEntity()\"","export default \"import { McDbLayerTableRecord, MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\n// 添加图层\\r\\nfunction MxTest_AddLayer() {\\r\\n // 获取当前mxcad对象\\r\\n let mxcad = MxCpp.App.getCurrentMxCAD();\\r\\n\\r\\n // 获取数据库图层表\\r\\n let layerTable = mxcad.getDatabase().getLayerTable();\\r\\n // 判断图层表中是否存在xxx11图层\\r\\n if (!layerTable.has(\\\"xxx11\\\")) {\\r\\n // 不存在则创建xxx11图层\\r\\n let newLayer = new McDbLayerTableRecord();\\r\\n newLayer.name = \\\"xxx11\\\";\\r\\n layerTable.add(newLayer);\\r\\n }\\r\\n\\r\\n if (layerTable.has(\\\"xxx11\\\")) {\\r\\n // 存在则打印日志\\r\\n console.log(\\\"add layer ok\\\");\\r\\n }\\r\\n};\\r\\n\\r\\n// 调用添加图层的方法\\r\\nMxTest_AddLayer(); \"","export default \"import { MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\nfunction MxTest_GetAllBlock() {\\r\\n // 获取当前mxcad对象\\r\\n let mxcad = MxCpp.App.getCurrentMxCAD();\\r\\n // 获取数据库块表\\r\\n let blockTable = mxcad.getDatabase().getBlockTable();\\r\\n // 获取所有块表记录的id数组\\r\\n let aryId = blockTable.getAllRecordId();\\r\\n // 遍历所有块表记录\\r\\n aryId.forEach((id) => {\\r\\n let blkRec = id.getMcDbBlockTableRecord();\\r\\n if (blkRec === null) return;\\r\\n console.log(blkRec);\\r\\n console.log(\\\"blkRec.name:\\\" + blkRec.name);\\r\\n console.log(\\\"blkRec.origin:\\\" + blkRec.origin);\\r\\n });\\r\\n};\\r\\n\\r\\n// 调用获取所有图块的方法\\r\\nMxTest_GetAllBlock();\\r\\n\"","export default \"import { MxCpp } from \\\"mxcad\\\";\\r\\nimport { MxFun } from \\\"mxdraw\\\";\\r\\n\\r\\n// 获取所有图层\\r\\nfunction MxTest_GetAllLayer() {\\r\\n // 获取当前mxcad对象\\r\\n let mxcad = MxCpp.App.getCurrentMxCAD();\\r\\n // 获取图层表\\r\\n let layerTable = mxcad.getDatabase().getLayerTable();\\r\\n // 获取所有记录id\\r\\n let aryId = layerTable.getAllRecordId();\\r\\n let ret = [];\\r\\n // 遍历图层id\\r\\n aryId.forEach((id) => {\\r\\n let layerRec = id.getMcDbLayerTableRecord();\\r\\n if (layerRec === null) return;\\r\\n \\r\\n console.log(layerRec);\\r\\n console.log(\\\"layerRec.color:\\\" + layerRec.color.getColorString());\\r\\n console.log(\\\"layerRec.name:\\\" + layerRec.name);\\r\\n let layer: any = {};\\r\\n layer.name = layerRec.name;\\r\\n \\r\\n layer.color = layerRec.color.getColorString();\\r\\n ret.push(layer);\\r\\n });\\r\\n \\r\\n MxFun.postMessageToParentFrame(ret);\\r\\n return ret;\\r\\n };\\r\\n\\r\\n // 调用获取所有图层的方法\\r\\n MxTest_GetAllLayer();\"","export default \"import { MxCpp } from \\\"mxcad\\\"\\r\\n\\r\\n// 获取所有线型样式\\r\\nfunction MxTest_GetAllLinetype() {\\r\\n // 获取当前mxcad对象\\r\\n let mxobj = MxCpp.getCurrentMxCAD();\\r\\n // 获取数据库线型样式表\\r\\n let linetypeTable = mxobj.getDatabase().getLinetypeTable();\\r\\n // 获取所有线型记录的ID数组\\r\\n let aryId = linetypeTable.getAllRecordId();\\r\\n // 遍历线型记录\\r\\n aryId.forEach((id) => {\\r\\n let linetypeRec = id.getMcDbLinetypeTableRecord();\\r\\n if (linetypeRec === null) return;\\r\\n console.log(linetypeRec);\\r\\n });\\r\\n};\\r\\n\\r\\n// 调用获取所有线型样式\\r\\nMxTest_GetAllLinetype()\"","export default \"import { MxCpp } from \\\"mxcad\\\";\\r\\n\\r\\n// 获取所有文字样式\\r\\nfunction MxTest_GetAllTextStyle() {\\r\\n // 获取当前mxcad对象\\r\\n let mxobj = MxCpp.getCurrentMxCAD();\\r\\n // 获取文字样式表\\r\\n let textSyleTable = mxobj.getDatabase().getTextStyleTable();\\r\\n // 获取文字样式表记录id数组\\r\\n let aryId = textSyleTable.getAllRecordId();\\r\\n // 遍历文字样式表记录\\r\\n aryId.forEach((id) => {\\r\\n let textSyleRec = id.getMcDbTextStyleTableRecord();\\r\\n if (textSyleRec === null) return;\\r\\n let out: any = {};\\r\\n out.name = textSyleRec.name;\\r\\n out.font = textSyleRec.font();\\r\\n out.fileName = textSyleRec.fileName;\\r\\n out.bigFontFileName = textSyleRec.bigFontFileName;\\r\\n out.textSize = textSyleRec.textSize;\\r\\n out.xScale = textSyleRec.xScale;\\r\\n console.log(out);\\r\\n });\\r\\n};\\r\\n\\r\\n// 调用获取所有文字样式的方法\\r\\nMxTest_GetAllTextStyle();\\r\\n\"","export default \"import { MxCADUiPrEntity } from \\\"mxcad\\\";\\r\\n\\r\\n// 读取扩展数据。\\r\\nasync function MxTest_ReadxData() {\\r\\n // 选择对象\\r\\n let selEntity = new MxCADUiPrEntity();\\r\\n selEntity.setMessage(\\\"选择对象\\\");\\r\\n let id = await selEntity.go();\\r\\n if (!id.isValid()) return;\\r\\n \\r\\n // 获取对象\\r\\n let ent = id.getMcDbEntity();\\r\\n if (ent === null) return; \\r\\n\\r\\n // 得到对象的扩展数据\\r\\n let data = ent.getxData();\\r\\n //data.PrintData();\\r\\n data.forEach((val, type, dxf) => {\\r\\n console.log(JSON.stringify({ val: val, type: type, dxf: dxf }));\\r\\n })\\r\\n\\r\\n //let data = ent.getxDataString(\\\"DataName\\\");\\r\\n //MxFun.acutPrintf(data.val + \\\"\\\\n\\\");\\r\\n};\\r\\n\\r\\n// 调用读取扩展数据的方法\\r\\nMxTest_ReadxData()\"","export default \"import { MxCADUiPrEntity } from \\\"mxcad\\\";\\r\\n\\r\\n// 写扩展数据\\r\\nasync function MxTest_WritexData() {\\r\\n // 选择对象\\r\\n let selEntity = new MxCADUiPrEntity();\\r\\n selEntity.setMessage(\\\"选择对象\\\");\\r\\n let id = await selEntity.go();\\r\\n if (!id.isValid()) return;\\r\\n \\r\\n // 获取对象\\r\\n let ent = id.getMcDbEntity();\\r\\n if (ent === null) return;\\r\\n // 写扩展数据\\r\\n ent.setxDataString(\\\"DataName\\\", \\\"xxxxx\\\");\\r\\n //ent.setxData(new MxCADResbuf([{type:MxCADResbufDataType.kExDataName,val:\\\"DataName\\\"},{type:MxCADResbufDataType.kString,val:\\\"yyyyy\\\"}]));\\r\\n};\\r\\n\\r\\n// 调用写扩展数据的方法\\r\\n MxTest_WritexData();\\r\\n\\r\\n\"","export default \"import { MxCpp, McDbDictionary, McDbXrecord } from \\\"mxcad\\\";\\r\\n\\r\\n// 字典数据遍历\\r\\nfunction MxTest_DictionaryData(dict) {\\r\\n let aryName = dict.getAllObjectName();\\r\\n aryName.forEach((name) => {\\r\\n console.log(name);\\r\\n let id = dict.getAt(name);\\r\\n let obj = id.getMcDbObject();\\r\\n if (obj instanceof McDbDictionary) {\\r\\n let dict = obj as McDbDictionary;\\r\\n console.log(dict);\\r\\n MxTest_DictionaryData(dict);\\r\\n }\\r\\n else if (obj instanceof McDbXrecord) {\\r\\n let xrec = obj as McDbXrecord;\\r\\n let data = xrec.getData()\\r\\n data.PrintData();\\r\\n }\\r\\n })\\r\\n}\\r\\n\\r\\n// 得到命名字典\\r\\nasync function MxTest_GetNamedObjectsDictionary() {\\r\\n let mxcad = MxCpp.getCurrentMxCAD();\\r\\n let dict = mxcad.getDatabase().getNamedObjectsDictionary();\\r\\n let aryName = dict.getAllObjectName();\\r\\n aryName.forEach((name) => {\\r\\n console.log(name);\\r\\n let id = dict.getAt(name);\\r\\n let obj = id.getMcDbObject();\\r\\n if (obj instanceof McDbDictionary) {\\r\\n let dict = obj as McDbDictionary;\\r\\n console.log(dict);\\r\\n MxTest_DictionaryData(dict);\\r\\n }\\r\\n })\\r\\n}\\r\\n\\r\\n// 调用得到命名字典方法\\r\\nMxTest_GetNamedObjectsDictionary()\"","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { McDbEntity, McDbLine, McDbPoint, McDbPolyline, MxCADUiPrPoint, MxCADUtility, MxCpp, McGePoint3d, McDbArc, McDbCircle, McDbEllipse, McGeVector3d, McDbHatch, McDbText, McDbMText, McDb, McDbRasterImageDef, McDbRasterImage, McDbBlockReference, McDbDimension } from \"mxcad\";\nimport { DetailedResult, DynamicInputType, MxDbRegularPolygonShape, MxFun } from \"mxdraw\";\nfunction calculateCenter(start: McGePoint3d, end: McGePoint3d, bulge: number) {\n const dist = start.distanceTo(end)\n const dx = dist / 2\n const dy = dx * bulge\n const r = (dx * dx + dy * dy) / (2 * dy)\n const midX = (start.x + end.x) / 2\n const midY = (start.y + end.y) / 2\n\n return new McGePoint3d(midX, midY).addvec(end.clone().sub(start).perpVector().normalize().mult(r - dy))\n}\nfunction calculateLineAngle(center: McGePoint3d, start: McGePoint3d, end: McGePoint3d) {\n const deg = (Math.PI * 2) / 360\n // 计算直线的角度\n let startAngle = ((Math.atan2(start.y - center.y, start.x - center.x) * 180) / Math.PI) * deg\n let endAngle = ((Math.atan2(end.y - center.y, end.x - center.x) * 180) / Math.PI) * deg\n\n return {\n startAngle,\n endAngle\n }\n}\nMxFun.addCommand(\"list\", async () => {\n // 选择对象获取信息\n const objIds = await MxCADUtility.userSelect(\"选择对象\")\n const getPoint = new MxCADUiPrPoint()\n MxFun.acutPrintf(\"找到\" + objIds.length + \"个\\n\")\n const objId = objIds.pop()\n if (!objId) return\n const ent = objId.getMcDbEntity()\n if (!objId.isValid() || !ent) {\n MxFun.acutPrintf(\"对象无效\\n\")\n } else {\n if (await printInfo(ent) === false) return\n }\n while (objIds.length) {\n getPoint.setMessage(\"按 ENTER 键继续\")\n getPoint.setDisableDynInput(true)\n await getPoint.go()\n // 程序中止、按下Esc键、新的命令运行时退出\n if (getPoint.getDetailedResult() === DetailedResult.kCodeAbort) return\n if (getPoint.getDetailedResult() === DetailedResult.kEcsIn) return\n if (getPoint.getDetailedResult() === DetailedResult.kNewCommadIn) return\n const objId = objIds.pop()\n if (!objId) break;\n const ent = objId.getMcDbEntity()\n if (!objId.isValid() || !ent) {\n MxFun.acutPrintf(\"对象无效\\n\")\n continue\n }\n if (await printInfo(ent) === false) return\n }\n})\n// 记录对象的名称\nconst entNames = {\n \"McDbPoint\": \"点\",\n \"McDbLine\": \"直线\",\n \"McDbPolyline\": \"多段线\",\n \"McDbArc\": \"圆弧\",\n \"McDbCircle\": \"圆\",\n \"McDbEllipse\": \"椭圆\",\n \"McDbHatch\": \"填充\",\n \"McDbText\": \"单行文本\",\n \"McDbMText\": \"多行文本\",\n \"McDbRasterImage\": \"光栅图片\",\n \"McDbBlockReference\": \"块参照\",\n}\n// 附着名称字典\nconst map = {\n Top: \"上\",\n Middle: \"中\",\n Bottom: \"下\",\n Base: \"基\",\n Left: \"左\",\n Center: \"中\",\n Right: \"右\",\n Align: \"对齐\",\n Fit: \"适应\",\n Mid: \"中\"\n};\n\n// 获取文字的附着名称\nconst getAttachmentName = (str: string) => {\n return str.replace(/k(\\w+)/g, function (_, p1) {\n let key = p1.replace(/([A-Z])/g, \"-$1\") as string\n const arr = key.split(\"-\")\n const name = arr.reduce((name, key) => {\n if (map[key]) {\n return name + map[key];\n } else {\n return \"\";\n }\n })\n return name\n });\n}\n// 打印信息\nasync function printInfo(ent: McDbEntity) {\n // 得到所有对象的基本信息\n const layer = ent.layer\n const layoutBlockName = MxCpp.getCurrentDatabase().currentSpace.name\n const isMainModel = layoutBlockName === \"*Model_Space\"\n const modeName = isMainModel ? \"模型空间\" : \"图纸空间\"\n const handle = ent.getHandle()\n console.log(ent.objectName)\n\n let entName = entNames[ent.objectName] || ent.objectName\n if(ent instanceof McDbDimension) {\n entName = \"标注\"\n }\n MxFun.acutPrintf(`\\n ${entName} 图层: \"${layer}\"`)\n MxFun.acutPrintf(`\\n 空间: \"${modeName}\"`)\n\n MxFun.acutPrintf(`\\n 句柄 = ${handle}`)\n // 点对象的信息\n if (ent instanceof McDbPoint) {\n MxFun.acutPrintf(`\\n 于 点, X= ${ent.position.x.toFixed(4)} Y= ${ent.position.y.toFixed(4)} Z= ${ent.position.z.toFixed(4)}`)\n }\n // 直线对象的信息\n if (ent instanceof McDbLine) {\n MxFun.acutPrintf(`\\n 自 点, X= ${ent.startPoint.x.toFixed(4)} Y= ${ent.startPoint.y.toFixed(4)} Z= ${ent.startPoint.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 到 点, X= ${ent.startPoint.x.toFixed(4)} Y= ${ent.startPoint.y.toFixed(4)} Z= ${ent.startPoint.z.toFixed(4)}`)\n let deltaX = ent.endPoint.x - ent.startPoint.x;\n let deltaY = ent.endPoint.y - ent.startPoint.y;\n let deltaZ = ent.endPoint.z - ent.startPoint.z;\n\n // 使用atan2计算角度,结果是弧度,转换为度\n let angleInDegrees = THREE.MathUtils.radToDeg(Math.atan2(deltaY, deltaX));\n\n MxFun.acutPrintf(`\\n 长度 = ${ent.getLength().val.toFixed(4)},在 XY 平面中的角度 = ${Math.floor(angleInDegrees)}`)\n MxFun.acutPrintf(`\\n 增量 X = ${deltaX.toFixed(4)},增量 Y = ${deltaY.toFixed(4)},增量 Z = ${deltaZ.toFixed(4)}`)\n }\n\n // 多段线对象的信息\n if (ent instanceof McDbPolyline) {\n MxFun.acutPrintf(`\\n ${ent.isClosed ? \"闭合\" : \"打开\"}`)\n MxFun.acutPrintf(`\\n 固定宽度 ${ent.constantWidth.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 面积 ${ent.getArea().val.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 周长 ${ent.getLength().val.toFixed(4)}`)\n\n // 输出多段线的每个点的信息\n const num = ent.numVerts()\n // 通过取点对象控制输出量 只有在按下空格或者回车才会继续打印剩余信息\n const getPoint = new MxCADUiPrPoint()\n\n // 记录点包含的其他信息如线宽、凸度值等\n const widthInfos: {\n val1: number;\n val2: number;\n ret: boolean;\n }[] = []\n const bulges: number[] = []\n // 记录是否打印线宽\n let isPrintWidth = false\n\n for (let index = 0; index < num; index++) {\n const width = ent.getWidthsAt(index)\n const bulge = ent.getBulgeAt(index)\n if (width.val1 !== 0 || width.val2 !== 0) {\n isPrintWidth = true\n }\n widthInfos.push(width)\n bulges.push(bulge)\n }\n // 控制输出打印量\n let accumulated = 0\n const maxIndex = 3\n\n for (let index = 0; index < num; index++) {\n if (accumulated > maxIndex) {\n while (true) {\n getPoint.setMessage(\"按 ENTER 键继续\")\n getPoint.disableAllTrace()\n getPoint.clearLastInputPoint()\n // 设置不需要动态的输入框\n getPoint.setDynamicInputType(DynamicInputType.kNoInput)\n const pt = await getPoint.go()\n if (getPoint.getDetailedResult() === DetailedResult.kCodeAbort) return\n if (getPoint.getDetailedResult() === DetailedResult.kEcsIn) return\n if (getPoint.getDetailedResult() === DetailedResult.kNewCommadIn) return false\n // 只有回车和空格或者鼠标左键点击才能继续往下走打印的流程, 否则始终循环等待用户输入\n if (getPoint.getDetailedResult() === DetailedResult.kNullEnterIn || getPoint.getDetailedResult() === DetailedResult.kNullSpaceIn || pt) {\n accumulated = 0\n break;\n }\n }\n }\n const point = ent.getPointAt(index).val\n const bulge = bulges[index]\n\n MxFun.acutPrintf(`\\n 于端点 X= ${point.x.toFixed(1)} Y= ${point.y.toFixed(1)} Z= ${point.z.toFixed(1)}`)\n if (isPrintWidth) {\n MxFun.acutPrintf(`\\n 起点宽度 ${widthInfos[index].val1.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 端点宽度 ${widthInfos[index].val2.toFixed(4)}`)\n }\n // 凸度不为0时 且\n if (Math.abs(bulge) > 0) {\n MxFun.acutPrintf(`\\n 凸度 ${bulge.toFixed(1)}`)\n const nextPoint = ent.getPointAt(index + 1).val\n const center = calculateCenter(point, nextPoint, bulge)\n MxFun.acutPrintf(`\\n 圆心 X= ${center.x.toFixed(1)} Y= ${center.y.toFixed(1)} Z= ${center.z.toFixed(1)}`)\n MxFun.acutPrintf(`\\n 半径 ${center.distanceTo(point).toFixed(1)}`)\n const { startAngle, endAngle } = calculateLineAngle(center, point, nextPoint)\n MxFun.acutPrintf(`\\n 起点角度 ${THREE.MathUtils.radToDeg(startAngle).toFixed(0)}`)\n MxFun.acutPrintf(`\\n 端点角度 ${THREE.MathUtils.radToDeg(endAngle).toFixed(0)}`)\n // 最后一次循环加上最后一个端点信息\n if (index === num - 1) {\n MxFun.acutPrintf(`\\n 于端点 X= ${nextPoint.x.toFixed(1)} Y= ${nextPoint.y.toFixed(1)} Z= ${nextPoint.z.toFixed(1)}`)\n }\n }\n accumulated++\n }\n }\n // 圆弧的信息\n if (ent instanceof McDbArc) {\n MxFun.acutPrintf(`\\n 圆心 点, X= ${ent.center.x.toFixed(4)} Y= ${ent.center.y.toFixed(4)} Z= ${ent.center.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 半径 ${ent.radius.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 起点 角度 ${THREE.MathUtils.radToDeg(ent.startAngle).toFixed(0)}`)\n MxFun.acutPrintf(`\\n 端点 角度 ${THREE.MathUtils.radToDeg(ent.endAngle).toFixed(0)}`)\n MxFun.acutPrintf(`\\n 长度 ${ent.getLength().val.toFixed(4)}`)\n }\n // 圆的信息\n if (ent instanceof McDbCircle) {\n MxFun.acutPrintf(`\\n 圆心 点, X= ${ent.center.x.toFixed(4)} Y= ${ent.center.y.toFixed(4)} Z= ${ent.center.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 半径 ${ent.radius.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 周长 ${ent.getLength().val.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 面积 ${(Math.PI * ent.radius * ent.radius).toFixed(4)}`)\n }\n\n // 椭圆的信息\n if (ent instanceof McDbEllipse) {\n // 得到椭圆的半轴长度\n const radius1 = ent.majorAxis.length()\n const radius2 = ent.minorAxis.length()\n // 是否是椭圆 为false表示是椭圆弧\n const isEllipse = ent.startAngle === 0 && ent.endAngle === 2 * Math.PI\n if (isEllipse) {\n const calculateEllipseCircumference = (radius1: number, radius2: number) => {\n const h = Math.pow((radius1 - radius2), 2) / Math.pow((radius1 + radius2), radius2);\n const circumference = Math.PI * (radius1 + radius2) * (1 + (3 * h) / (10 + Math.sqrt(4 - 3 * h)));\n return circumference;\n }\n MxFun.acutPrintf(`\\n 面积: ${(Math.PI * radius1 * radius2).toFixed(4)}`)\n MxFun.acutPrintf(`\\n 圆周: ${calculateEllipseCircumference(radius1, radius2).toFixed(4)}`)\n }\n else {\n // 计算椭圆弧的长度\n const arcLengthOfEllipse = (a: number, b: number, theta1: number, theta2: number, numSteps: number) => {\n // a: 长半轴\n // b: 短半轴\n // 定义被积函数\n const integrand = function (theta: number) {\n return Math.sqrt(a * a * Math.sin(theta) * Math.sin(theta) + b * b * Math.cos(theta) * Math.cos(theta));\n };\n\n // 使用复合辛普森法则进行数值积分\n let integral = 0;\n const stepSize = (theta2 - theta1) / numSteps;\n for (let i = 0; i <= numSteps; i++) {\n const theta = theta1 + i * stepSize;\n if (i === 0 || i === numSteps) {\n integral += integrand(theta);\n } else if (i % 2 === 0) {\n integral += 2 * integrand(theta);\n } else {\n integral += 4 * integrand(theta);\n }\n }\n\n integral *= stepSize / 3;\n return Math.abs(integral);\n }\n\n MxFun.acutPrintf(`\\n 长度: ${arcLengthOfEllipse(radius1, radius2, ent.startAngle, ent.endAngle, 30).toFixed(4)}`)\n }\n MxFun.acutPrintf(`\\n 中心点: X = ${ent.center.x.toFixed(4)} , Y = ${ent.center.y.toFixed(4)} , Z = ${ent.center.z.toFixed(4)}`)\n // 判断哪个是半轴长度较长的轴\n const isMaxAxis = radius1 > radius2\n const maxAxis = isMaxAxis ? ent.majorAxis : ent.minorAxis\n const minAxis = isMaxAxis ? ent.minorAxis : ent.majorAxis\n MxFun.acutPrintf(`\\n 长轴: X = ${maxAxis.x.toFixed(4)} , Y = ${maxAxis.y.toFixed(4)} , Z = ${maxAxis.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 短轴: X = ${minAxis.x.toFixed(4)} , Y = ${minAxis.y.toFixed(4)} , Z = ${minAxis.z.toFixed(4)}`)\n // 椭圆弧的其他信息\n if (!isEllipse) {\n // 计算椭圆弧的起点和端点\n const calculateEllipseEndpoints = (center: McGePoint3d, v1: McGeVector3d, v2: McGeVector3d, theta1: number, theta2: number) => {\n // 椭圆中心坐标\n const cx = center.x;\n const cy = center.y;\n\n // 主轴向量\n const vx1 = v1.x;\n const vy1 = v1.y;\n\n // 副轴向量\n const vx2 = v2.x;\n const vy2 = v2.y;\n\n // 计算椭圆的起始点和结束点\n const alpha = Math.atan2(vy1, vx1)\n\n const a = Math.sqrt(vx1 * vx1 + vy1 * vy1); // 长轴半径\n const b = Math.sqrt(vx2 * vx2 + vy2 * vy2); // 短轴半径\n // 根据角度计算起始点和结束点\n const startEndpointX = cx + a * Math.cos(theta1) * Math.cos(alpha) - b * Math.sin(theta1) * Math.sin(alpha);\n const startEndpointY = cy + a * Math.cos(theta1) * Math.sin(alpha) + b * Math.sin(theta1) * Math.cos(alpha);\n const endEndpointX = cx + a * Math.cos(theta2) * Math.cos(alpha) - b * Math.sin(theta2) * Math.sin(alpha);\n const endEndpointY = cy + a * Math.cos(theta2) * Math.sin(alpha) + b * Math.sin(theta2) * Math.cos(alpha);\n\n return {\n startPoint: new McGePoint3d(startEndpointX, startEndpointY),\n endPoint: new McGePoint3d(endEndpointX, endEndpointY)\n };\n }\n\n const { startPoint, endPoint } = calculateEllipseEndpoints(ent.center, ent.majorAxis, ent.minorAxis, ent.startAngle, ent.endAngle)\n MxFun.acutPrintf(`\\n 起点: X = ${startPoint.x.toFixed(4)} , Y = ${startPoint.y.toFixed(4)} , Z = ${startPoint.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 端点: X = ${endPoint.x.toFixed(4)} , Y = ${endPoint.y.toFixed(4)} , Z = ${endPoint.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 起点角度: ${THREE.MathUtils.radToDeg(ent.startAngle).toFixed(0)}`)\n MxFun.acutPrintf(`\\n 端点角度: ${THREE.MathUtils.radToDeg(ent.endAngle).toFixed(0)}`)\n }\n MxFun.acutPrintf(`\\n 半径比例: ${ent.radiusRatio.toFixed(4)}`)\n }\n\n // 填充对象信息\n if(ent instanceof McDbHatch) {\n const patternName = ent.patternName()\n MxFun.acutPrintf(`\\n 填充图案 ${patternName}`)\n MxFun.acutPrintf(`\\n 图案填充比例 ${ent.patternScale.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 图案填充角度 ${THREE.MathUtils.radToDeg(ent.patternAngle).toFixed(0)}`)\n const pl = new McDbPolyline()\n const pls: McDbPolyline[] = []\n pl.isClosed = true\n for (let index = 0; index < ent.numLoops; index++) {\n const { vertices, bulges } = ent.getLoopAt(index)\n vertices.forEach((pt, index)=> {\n const bulge = bulges[index]\n pl.addVertexAt(pt, Number(bulge.toFixed(14)))\n })\n pls.push(pl)\n MxCpp.getCurrentMxCAD().drawEntity(pl)\n }\n const totalArea = pls.reduce((totalArea, pl)=> totalArea + pl.getArea().val, 0)\n MxFun.acutPrintf(`\\n 面积 ${totalArea.toFixed(4)}`)\n }\n\n // 单行文字信息\n if(ent instanceof McDbText) {\n MxFun.acutPrintf(`\\n 样式 = \"${ent.textStyle}\"`)\n MxFun.acutPrintf(`\\n 起点 点, X= ${ent.position.x.toFixed(4)} Y= ${ent.position.y.toFixed(4)} Z= ${ent.position.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 高度 ${ent.height.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 文字 ${ent.textString}`)\n MxFun.acutPrintf(`\\n 旋转 角度 ${ent.rotation.toFixed(0)}`)\n MxFun.acutPrintf(`\\n 宽度 比例因子 ${ent.widthFactor.toFixed(4)}`)\n }\n // 多行文字信息\n if(ent instanceof McDbMText) {\n MxFun.acutPrintf(`\\n 样式 = \"${ent.textStyle}\"`)\n MxFun.acutPrintf(`\\n位置: X= ${ent.location.x.toFixed(4)} Y= ${ent.location.y.toFixed(4)} Z= ${ent.location.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n宽度: ${ent.width.toFixed(4)}`)\n MxFun.acutPrintf(`\\n法向: X= ${ent.normal.x.toFixed(4)} Y= ${ent.normal.y.toFixed(4)} Z= ${ent.normal.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n旋转: ${ent.rotation.toFixed(0)}`)\n MxFun.acutPrintf(`\\n文字高度: ${ent.textHeight.toFixed(4)}`)\n\n MxFun.acutPrintf(`\\n附着: ${getAttachmentName(McDb.AttachmentPoint[ent.attachment])}`)\n MxFun.acutPrintf(`\\n内容: ${ent.contents}`)\n }\n // 光栅图片信息\n if(ent instanceof McDbRasterImage) {\n const imgDef = ent.imageDefId().getMcDbRasterImageDef()\n const getFileNameFromPath = (path: string)=> {\n return path.split('/').pop().split('\\\\').pop();\n }\n MxFun.acutPrintf(`\\n图像: ${getFileNameFromPath(imgDef.sourceFileName)}`)\n\n const getClipBoundaryType = (ent: McDbRasterImage)=> {\n const type = ent.clipBoundaryType()\n if(type === McDb.ClipBoundaryType.kInvalid) return \"无效\"\n if(type === McDb.ClipBoundaryType.kPoly) return \"多边形\"\n if(type === McDb.ClipBoundaryType.kRect) return \"矩形\"\n }\n MxFun.acutPrintf(`\\n剪裁边界类型: ${getClipBoundaryType(ent)}`)\n const clipBoundary = ent.clipBoundary()\n MxFun.acutPrintf(`\\n边界点数目: ${clipBoundary.length()}`)\n ent.clipBoundary().forEach((pt)=> {\n MxFun.acutPrintf(`\\n 位于点,X= ${pt.x.toFixed(4)}, Y= ${pt.y.toFixed(4)}, Z= ${pt.z.toFixed(4)}`)\n })\n }\n\n // 图块信息\n if(ent instanceof McDbBlockReference) {\n MxFun.acutPrintf(`\\n块名: \"${ent.blockName}\"`)\n MxFun.acutPrintf(`\\n插入点: X= ${ent.position.x.toFixed(4)}, Y= ${ent.position.y.toFixed(4)}, Z= ${ent.position.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\nX 比例因子: ${ent.scaleFactors.x.toFixed(4)}`)\n MxFun.acutPrintf(`\\nY 比例因子: ${ent.scaleFactors.y.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 旋转角度: ${ent.rotation.toFixed(0)}`)\n MxFun.acutPrintf(`\\nZ 比例因子: ${ent.scaleFactors.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\nZ 比例因子: ${ent.scaleFactors.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n 缩放比例: ${ent.getScale().toFixed(4)}`)\n }\n\n // 标注信息\n if(ent instanceof McDbDimension) {\n MxFun.acutPrintf(`\\n文字位置: X= ${ent.textPosition.x.toFixed(4)} Y= ${ent.textPosition.y.toFixed(4)} Z= ${ent.textPosition.z.toFixed(4)}`)\n MxFun.acutPrintf(`\\n是否使用的默认文字位置: ${ent.isUsingDefaultTextPosition()}`)\n MxFun.acutPrintf(`\\n高度: ${ent.elevation.toFixed(4)}`)\n MxFun.acutPrintf(`\\n文本内容: ${ent.dimensionText}`)\n MxFun.acutPrintf(`\\n文本旋转角度: ${THREE.MathUtils.radToDeg(ent.textRotation).toFixed(0)}`)\n const dimStyle = ent.dimensionStyle.getMcDbDimStyleTableRecord()\n MxFun.acutPrintf(`\\n标注样式: ${dimStyle.name}`)\n MxFun.acutPrintf(`\\n文字附着: ${getAttachmentName(McDb.AttachmentPoint[ent.textAttachment])}`)\n MxFun.acutPrintf(`\\n水平旋转角度: ${THREE.MathUtils.radToDeg(ent.horizontalRotation).toFixed(0)}`)\n MxFun.acutPrintf(`\\n水平旋转角度: ${THREE.MathUtils.radToDeg(ent.horizontalRotation).toFixed(0)}`)\n }\n MxFun.acutPrintf(\"\\n命令\")\n}\n\n","import { McObjectId, MxCADUiPrString, MxCADUtility, MxCpp, McDbGroup, MxCADUiPrKeyWord, MxCADUiPrEntity } from \"mxcad\";\nimport { DetailedResult, MrxDbgUiPrPoint, MxFun } from \"mxdraw\";\n\nMxFun.addCommand(\"group\", async ()=> {\n let getPt: MrxDbgUiPrPoint\n let name = \"\"\n let description = \"\"\n let ids: McObjectId[]\n const database = MxCpp.getCurrentDatabase()\n const groupDict = database.GetGroupDictionary()\n while(true) {\n const _ids = await MxCADUtility.userSelect(\"选择对象\", null, (ss, getPoint)=> {\n getPoint.setKeyWords(\"[名称(N)/说明(D)]\")\n getPt = getPoint\n })\n if(getPt.getDetailedResult() === DetailedResult.kEcsIn || getPt.getDetailedResult() === DetailedResult.kCodeAbort || getPt.getDetailedResult() === DetailedResult.kNewCommadIn) return\n if(_ids) ids = _ids\n if(getPt.isKeyWordPicked(\"N\")) {\n while(true) {\n const getName = new MxCADUiPrString()\n getName.setMessage(\"输入编组名\")\n getName.setKeyWords(\"[查询(A)]\")\n const str = await getName.go()\n if(getName.getDetailedResult() === DetailedResult.kCodeAbort || getName.getDetailedResult() === DetailedResult.kEcsIn || getName.getDetailedResult() === DetailedResult.kNewCommadIn) return\n if(getName.isKeyWordPicked(\"A\")) {\n getName.setMessage(\"请输入要列出的编码组名<*>\")\n getName.setKeyWords(\"\")\n const name = await getName.go()\n console.log(name)\n if(getName.getDetailedResult() === DetailedResult.kCodeAbort || getName.getDetailedResult() === DetailedResult.kEcsIn || getName.getDetailedResult() === DetailedResult.kNewCommadIn) return\n if(name && name!== \"*\") {\n const groupId = groupDict.getAt(name)\n const group = groupId.getMcDbObject() as McDbGroup\n MxFun.acutPrintf(`\\n定义的编组:`)\n if(group) {\n MxFun.acutPrintf(`\\n ${group.name}`)\n }\n }\n else if(name === \"*\" || getName.getDetailedResult() === DetailedResult.kNullEnterIn || getName.getDetailedResult() === DetailedResult.kNullSpaceIn) {\n const groupIds = groupDict.getAllObject()\n MxFun.acutPrintf(`\\n定义的编组:`)\n groupIds.forEach((groupId)=> {\n const group = groupId.getMcDbObject() as McDbGroup\n group && MxFun.acutPrintf(`\\n ${group.name}`)\n })\n }\n\n continue;\n }\n if(!str) return\n const groupId = groupDict.getAt(name)\n const group = groupId.getMcDbObject() as McDbGroup\n if(group && groupId.isValid()) {\n MxFun.acutPrintf(`编组 ${name} 已经存在`)\n continue;\n }\n name = str\n break;\n }\n continue;\n }\n if(getPt.isKeyWordPicked(\"D\")) {\n const getName = new MxCADUiPrString()\n getName.setMessage(\"输入编组说明\")\n const str = await getName.go()\n if(!str) return\n description = str\n continue;\n }\n if(getPt.getDetailedResult() === DetailedResult.kNullEnterIn || getPt.getDetailedResult() === DetailedResult.kNullSpaceIn) {\n const isPresence = ids.some((id)=> {\n return database.getEntitiesInTheGroup(id).length !== 0\n })\n if(isPresence) {\n const getKey = new MxCADUiPrKeyWord()\n getKey.setMessage(\"包含相同对象的组已经存在。仍要创建新的组?<N>\")\n getKey.setKeyWords(\"[是(Y)/否(N)]\")\n const key = await getKey.go()\n if(key?.toLocaleUpperCase() === \"N\") {\n return\n }\n if(!key) return\n }\n if(database.CreateGroup(ids, name)) {\n const groupId = groupDict.getAt(name)\n const group = groupId.getMcDbObject() as McDbGroup\n group.description = description\n }\n }\n break\n }\n})\n\nMxFun.addCommand(\"ungroup\", async ()=> {\n\n let name!: string\n const database = MxCpp.getCurrentDatabase()\n const groupDict = database.GetGroupDictionary()\n while(true) {\n const getEnt = new MxCADUiPrEntity()\n getEnt.setMessage(\"选择对象\")\n getEnt.setKeyWords(\"[名称(N)]\")\n const id = await getEnt.go()\n if(getEnt.getDetailedResult() === DetailedResult.kEcsIn || getEnt.getDetailedResult() === DetailedResult.kCodeAbort || getEnt.getDetailedResult() === DetailedResult.kNewCommadIn) return\n\n if(getEnt.isKeyWordPicked(\"N\")) {\n while(true) {\n const getName = new MxCADUiPrString()\n getName.setMessage(\"输入编组名\")\n getName.setKeyWords(\"[查询(A)]\")\n const str = await getName.go()\n if(getName.getDetailedResult() === DetailedResult.kCodeAbort || getName.getDetailedResult() === DetailedResult.kEcsIn || getName.getDetailedResult() === DetailedResult.kNewCommadIn) return\n if(getName.isKeyWordPicked(\"A\")) {\n getName.setMessage(\"请输入要列出的编码组名<*>\")\n getName.setKeyWords(\"\")\n const name = await getName.go()\n if(getName.getDetailedResult() === DetailedResult.kCodeAbort || getName.getDetailedResult() === DetailedResult.kEcsIn || getName.getDetailedResult() === DetailedResult.kNewCommadIn) return\n if(name && name!== \"*\") {\n const groupId = groupDict.getAt(name)\n const group = groupId.getMcDbObject() as McDbGroup\n MxFun.acutPrintf(`\\n定义的编组:`)\n if(group) {\n MxFun.acutPrintf(`\\n ${group.name}`)\n }\n }\n else if(name === \"*\" || getName.getDetailedResult() === DetailedResult.kNullEnterIn || getName.getDetailedResult() === DetailedResult.kNullSpaceIn) {\n const groupIds = groupDict.getAllObject()\n MxFun.acutPrintf(`\\n定义的编组:`)\n groupIds.forEach((groupId)=> {\n const group = groupId.getMcDbObject() as McDbGroup\n group && MxFun.acutPrintf(`\\n ${group.name}`)\n })\n }\n\n continue;\n }\n if(!str) return\n const groupId = groupDict.getAt(name)\n const group = groupId.getMcDbObject() as McDbGroup\n if(group && groupId.isValid()) {\n MxFun.acutPrintf(`编组 ${name} 已经存在`)\n continue;\n }\n name = str\n break;\n }\n continue;\n }\n if(id) {\n const ent = id.getMcDbEntity()\n if(ent) {\n const handle = ent.getHandle()\n const groupNames = groupDict.getAllObjectName()\n const length = groupNames.length()\n for (let index = 0; index < length; index++) {\n const groupName = groupNames.at(index);\n const groupId = groupDict.getAt(groupName)\n const group = groupId.getMcDbObject() as McDbGroup\n if(!group) continue;\n const entityIds = group.getAllEntityId()\n entityIds.some((entityId)=> {\n const entity = entityId.getMcDbEntity()\n if(entity?.getHandle() === handle) {\n name = groupName\n return true\n }\n return false\n })\n }\n }\n }\n\n if(name) {\n const groupId = groupDict.getAt(name)\n const group = groupId.getMcDbObject() as McDbGroup\n if(group) {\n group.clear()\n groupDict.remove(name)\n MxFun.acutPrintf(`\\n组 ${name} 已分解`)\n }else {\n MxFun.acutPrintf(`\\n对象不是组成员`)\n continue;\n }\n }\n else {\n MxFun.acutPrintf(`\\n对象不是组成员`)\n continue;\n }\n break\n }\n})\n","export default \"///////////////////////////////////////////////////////////////////////////////\\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\\n//https://www.mxdraw.com/\\n///////////////////////////////////////////////////////////////////////////////\\n\\nimport { McDbEntity, McDbLine, McDbPoint, McDbPolyline, MxCADUiPrPoint, MxCADUtility, MxCpp, McGePoint3d, McDbArc, McDbCircle, McDbEllipse, McGeVector3d, McDbHatch, McDbText, McDbMText, McDb, McDbRasterImageDef, McDbRasterImage, McDbBlockReference, McDbDimension } from \\\"mxcad\\\";\\nimport { DetailedResult, DynamicInputType, MxDbRegularPolygonShape, MxFun } from \\\"mxdraw\\\";\\nfunction calculateCenter(start: McGePoint3d, end: McGePoint3d, bulge: number) {\\n const dist = start.distanceTo(end)\\n const dx = dist / 2\\n const dy = dx * bulge\\n const r = (dx * dx + dy * dy) / (2 * dy)\\n const midX = (start.x + end.x) / 2\\n const midY = (start.y + end.y) / 2\\n\\n return new McGePoint3d(midX, midY).addvec(end.clone().sub(start).perpVector().normalize().mult(r - dy))\\n}\\nfunction calculateLineAngle(center: McGePoint3d, start: McGePoint3d, end: McGePoint3d) {\\n const deg = (Math.PI * 2) / 360\\n // 计算直线的角度\\n let startAngle = ((Math.atan2(start.y - center.y, start.x - center.x) * 180) / Math.PI) * deg\\n let endAngle = ((Math.atan2(end.y - center.y, end.x - center.x) * 180) / Math.PI) * deg\\n\\n return {\\n startAngle,\\n endAngle\\n }\\n}\\nMxFun.addCommand(\\\"list\\\", async () => {\\n // 选择对象获取信息\\n const objIds = await MxCADUtility.userSelect(\\\"选择对象\\\")\\n const getPoint = new MxCADUiPrPoint()\\n MxFun.acutPrintf(\\\"找到\\\" + objIds.length + \\\"个\\\\n\\\")\\n const objId = objIds.pop()\\n if (!objId) return\\n const ent = objId.getMcDbEntity()\\n if (!objId.isValid() || !ent) {\\n MxFun.acutPrintf(\\\"对象无效\\\\n\\\")\\n } else {\\n if (await printInfo(ent) === false) return\\n }\\n while (objIds.length) {\\n getPoint.setMessage(\\\"按 ENTER 键继续\\\")\\n getPoint.setDisableDynInput(true)\\n await getPoint.go()\\n // 程序中止、按下Esc键、新的命令运行时退出\\n if (getPoint.getDetailedResult() === DetailedResult.kCodeAbort) return\\n if (getPoint.getDetailedResult() === DetailedResult.kEcsIn) return\\n if (getPoint.getDetailedResult() === DetailedResult.kNewCommadIn) return\\n const objId = objIds.pop()\\n if (!objId) break;\\n const ent = objId.getMcDbEntity()\\n if (!objId.isValid() || !ent) {\\n MxFun.acutPrintf(\\\"对象无效\\\\n\\\")\\n continue\\n }\\n if (await printInfo(ent) === false) return\\n }\\n})\\n// 记录对象的名称\\nconst entNames = {\\n \\\"McDbPoint\\\": \\\"点\\\",\\n \\\"McDbLine\\\": \\\"直线\\\",\\n \\\"McDbPolyline\\\": \\\"多段线\\\",\\n \\\"McDbArc\\\": \\\"圆弧\\\",\\n \\\"McDbCircle\\\": \\\"圆\\\",\\n \\\"McDbEllipse\\\": \\\"椭圆\\\",\\n \\\"McDbHatch\\\": \\\"填充\\\",\\n \\\"McDbText\\\": \\\"单行文本\\\",\\n \\\"McDbMText\\\": \\\"多行文本\\\",\\n \\\"McDbRasterImage\\\": \\\"光栅图片\\\",\\n \\\"McDbBlockReference\\\": \\\"块参照\\\",\\n}\\n// 附着名称字典\\nconst map = {\\n Top: \\\"上\\\",\\n Middle: \\\"中\\\",\\n Bottom: \\\"下\\\",\\n Base: \\\"基\\\",\\n Left: \\\"左\\\",\\n Center: \\\"中\\\",\\n Right: \\\"右\\\",\\n Align: \\\"对齐\\\",\\n Fit: \\\"适应\\\",\\n Mid: \\\"中\\\"\\n};\\n\\n// 获取文字的附着名称\\nconst getAttachmentName = (str: string) => {\\n return str.replace(/k(\\\\w+)/g, function (_, p1) {\\n let key = p1.replace(/([A-Z])/g, \\\"-$1\\\") as string\\n const arr = key.split(\\\"-\\\")\\n const name = arr.reduce((name, key) => {\\n if (map[key]) {\\n return name + map[key];\\n } else {\\n return \\\"\\\";\\n }\\n })\\n return name\\n });\\n}\\n// 打印信息\\nasync function printInfo(ent: McDbEntity) {\\n // 得到所有对象的基本信息\\n const layer = ent.layer\\n const layoutBlockName = MxCpp.getCurrentDatabase().currentSpace.name\\n const isMainModel = layoutBlockName === \\\"*Model_Space\\\"\\n const modeName = isMainModel ? \\\"模型空间\\\" : \\\"图纸空间\\\"\\n const handle = ent.getHandle()\\n console.log(ent.objectName)\\n\\n let entName = entNames[ent.objectName] || ent.objectName\\n if(ent instanceof McDbDimension) {\\n entName = \\\"标注\\\"\\n }\\n MxFun.acutPrintf(`\\\\n ${entName} 图层: \\\"${layer}\\\"`)\\n MxFun.acutPrintf(`\\\\n 空间: \\\"${modeName}\\\"`)\\n\\n MxFun.acutPrintf(`\\\\n 句柄 = ${handle}`)\\n // 点对象的信息\\n if (ent instanceof McDbPoint) {\\n MxFun.acutPrintf(`\\\\n 于 点, X= ${ent.position.x.toFixed(4)} Y= ${ent.position.y.toFixed(4)} Z= ${ent.position.z.toFixed(4)}`)\\n }\\n // 直线对象的信息\\n if (ent instanceof McDbLine) {\\n MxFun.acutPrintf(`\\\\n 自 点, X= ${ent.startPoint.x.toFixed(4)} Y= ${ent.startPoint.y.toFixed(4)} Z= ${ent.startPoint.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 到 点, X= ${ent.startPoint.x.toFixed(4)} Y= ${ent.startPoint.y.toFixed(4)} Z= ${ent.startPoint.z.toFixed(4)}`)\\n let deltaX = ent.endPoint.x - ent.startPoint.x;\\n let deltaY = ent.endPoint.y - ent.startPoint.y;\\n let deltaZ = ent.endPoint.z - ent.startPoint.z;\\n\\n // 使用atan2计算角度,结果是弧度,转换为度\\n let angleInDegrees = THREE.MathUtils.radToDeg(Math.atan2(deltaY, deltaX));\\n\\n MxFun.acutPrintf(`\\\\n 长度 = ${ent.getLength().val.toFixed(4)},在 XY 平面中的角度 = ${Math.floor(angleInDegrees)}`)\\n MxFun.acutPrintf(`\\\\n 增量 X = ${deltaX.toFixed(4)},增量 Y = ${deltaY.toFixed(4)},增量 Z = ${deltaZ.toFixed(4)}`)\\n }\\n\\n // 多段线对象的信息\\n if (ent instanceof McDbPolyline) {\\n MxFun.acutPrintf(`\\\\n ${ent.isClosed ? \\\"闭合\\\" : \\\"打开\\\"}`)\\n MxFun.acutPrintf(`\\\\n 固定宽度 ${ent.constantWidth.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 面积 ${ent.getArea().val.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 周长 ${ent.getLength().val.toFixed(4)}`)\\n\\n // 输出多段线的每个点的信息\\n const num = ent.numVerts()\\n // 通过取点对象控制输出量 只有在按下空格或者回车才会继续打印剩余信息\\n const getPoint = new MxCADUiPrPoint()\\n\\n // 记录点包含的其他信息如线宽、凸度值等\\n const widthInfos: {\\n val1: number;\\n val2: number;\\n ret: boolean;\\n }[] = []\\n const bulges: number[] = []\\n // 记录是否打印线宽\\n let isPrintWidth = false\\n\\n for (let index = 0; index < num; index++) {\\n const width = ent.getWidthsAt(index)\\n const bulge = ent.getBulgeAt(index)\\n if (width.val1 !== 0 || width.val2 !== 0) {\\n isPrintWidth = true\\n }\\n widthInfos.push(width)\\n bulges.push(bulge)\\n }\\n // 控制输出打印量\\n let accumulated = 0\\n const maxIndex = 3\\n\\n for (let index = 0; index < num; index++) {\\n if (accumulated > maxIndex) {\\n while (true) {\\n getPoint.setMessage(\\\"按 ENTER 键继续\\\")\\n getPoint.disableAllTrace()\\n getPoint.clearLastInputPoint()\\n // 设置不需要动态的输入框\\n getPoint.setDynamicInputType(DynamicInputType.kNoInput)\\n const pt = await getPoint.go()\\n if (getPoint.getDetailedResult() === DetailedResult.kCodeAbort) return\\n if (getPoint.getDetailedResult() === DetailedResult.kEcsIn) return\\n if (getPoint.getDetailedResult() === DetailedResult.kNewCommadIn) return false\\n // 只有回车和空格或者鼠标左键点击才能继续往下走打印的流程, 否则始终循环等待用户输入\\n if (getPoint.getDetailedResult() === DetailedResult.kNullEnterIn || getPoint.getDetailedResult() === DetailedResult.kNullSpaceIn || pt) {\\n accumulated = 0\\n break;\\n }\\n }\\n }\\n const point = ent.getPointAt(index).val\\n const bulge = bulges[index]\\n\\n MxFun.acutPrintf(`\\\\n 于端点 X= ${point.x.toFixed(1)} Y= ${point.y.toFixed(1)} Z= ${point.z.toFixed(1)}`)\\n if (isPrintWidth) {\\n MxFun.acutPrintf(`\\\\n 起点宽度 ${widthInfos[index].val1.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 端点宽度 ${widthInfos[index].val2.toFixed(4)}`)\\n }\\n // 凸度不为0时 且\\n if (Math.abs(bulge) > 0) {\\n MxFun.acutPrintf(`\\\\n 凸度 ${bulge.toFixed(1)}`)\\n const nextPoint = ent.getPointAt(index + 1).val\\n const center = calculateCenter(point, nextPoint, bulge)\\n MxFun.acutPrintf(`\\\\n 圆心 X= ${center.x.toFixed(1)} Y= ${center.y.toFixed(1)} Z= ${center.z.toFixed(1)}`)\\n MxFun.acutPrintf(`\\\\n 半径 ${center.distanceTo(point).toFixed(1)}`)\\n const { startAngle, endAngle } = calculateLineAngle(center, point, nextPoint)\\n MxFun.acutPrintf(`\\\\n 起点角度 ${THREE.MathUtils.radToDeg(startAngle).toFixed(0)}`)\\n MxFun.acutPrintf(`\\\\n 端点角度 ${THREE.MathUtils.radToDeg(endAngle).toFixed(0)}`)\\n // 最后一次循环加上最后一个端点信息\\n if (index === num - 1) {\\n MxFun.acutPrintf(`\\\\n 于端点 X= ${nextPoint.x.toFixed(1)} Y= ${nextPoint.y.toFixed(1)} Z= ${nextPoint.z.toFixed(1)}`)\\n }\\n }\\n accumulated++\\n }\\n }\\n // 圆弧的信息\\n if (ent instanceof McDbArc) {\\n MxFun.acutPrintf(`\\\\n 圆心 点, X= ${ent.center.x.toFixed(4)} Y= ${ent.center.y.toFixed(4)} Z= ${ent.center.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 半径 ${ent.radius.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 起点 角度 ${THREE.MathUtils.radToDeg(ent.startAngle).toFixed(0)}`)\\n MxFun.acutPrintf(`\\\\n 端点 角度 ${THREE.MathUtils.radToDeg(ent.endAngle).toFixed(0)}`)\\n MxFun.acutPrintf(`\\\\n 长度 ${ent.getLength().val.toFixed(4)}`)\\n }\\n // 圆的信息\\n if (ent instanceof McDbCircle) {\\n MxFun.acutPrintf(`\\\\n 圆心 点, X= ${ent.center.x.toFixed(4)} Y= ${ent.center.y.toFixed(4)} Z= ${ent.center.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 半径 ${ent.radius.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 周长 ${ent.getLength().val.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 面积 ${(Math.PI * ent.radius * ent.radius).toFixed(4)}`)\\n }\\n\\n // 椭圆的信息\\n if (ent instanceof McDbEllipse) {\\n // 得到椭圆的半轴长度\\n const radius1 = ent.majorAxis.length()\\n const radius2 = ent.minorAxis.length()\\n // 是否是椭圆 为false表示是椭圆弧\\n const isEllipse = ent.startAngle === 0 && ent.endAngle === 2 * Math.PI\\n if (isEllipse) {\\n const calculateEllipseCircumference = (radius1: number, radius2: number) => {\\n const h = Math.pow((radius1 - radius2), 2) / Math.pow((radius1 + radius2), radius2);\\n const circumference = Math.PI * (radius1 + radius2) * (1 + (3 * h) / (10 + Math.sqrt(4 - 3 * h)));\\n return circumference;\\n }\\n MxFun.acutPrintf(`\\\\n 面积: ${(Math.PI * radius1 * radius2).toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 圆周: ${calculateEllipseCircumference(radius1, radius2).toFixed(4)}`)\\n }\\n else {\\n // 计算椭圆弧的长度\\n const arcLengthOfEllipse = (a: number, b: number, theta1: number, theta2: number, numSteps: number) => {\\n // a: 长半轴\\n // b: 短半轴\\n // 定义被积函数\\n const integrand = function (theta: number) {\\n return Math.sqrt(a * a * Math.sin(theta) * Math.sin(theta) + b * b * Math.cos(theta) * Math.cos(theta));\\n };\\n\\n // 使用复合辛普森法则进行数值积分\\n let integral = 0;\\n const stepSize = (theta2 - theta1) / numSteps;\\n for (let i = 0; i <= numSteps; i++) {\\n const theta = theta1 + i * stepSize;\\n if (i === 0 || i === numSteps) {\\n integral += integrand(theta);\\n } else if (i % 2 === 0) {\\n integral += 2 * integrand(theta);\\n } else {\\n integral += 4 * integrand(theta);\\n }\\n }\\n\\n integral *= stepSize / 3;\\n return Math.abs(integral);\\n }\\n\\n MxFun.acutPrintf(`\\\\n 长度: ${arcLengthOfEllipse(radius1, radius2, ent.startAngle, ent.endAngle, 30).toFixed(4)}`)\\n }\\n MxFun.acutPrintf(`\\\\n 中心点: X = ${ent.center.x.toFixed(4)} , Y = ${ent.center.y.toFixed(4)} , Z = ${ent.center.z.toFixed(4)}`)\\n // 判断哪个是半轴长度较长的轴\\n const isMaxAxis = radius1 > radius2\\n const maxAxis = isMaxAxis ? ent.majorAxis : ent.minorAxis\\n const minAxis = isMaxAxis ? ent.minorAxis : ent.majorAxis\\n MxFun.acutPrintf(`\\\\n 长轴: X = ${maxAxis.x.toFixed(4)} , Y = ${maxAxis.y.toFixed(4)} , Z = ${maxAxis.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 短轴: X = ${minAxis.x.toFixed(4)} , Y = ${minAxis.y.toFixed(4)} , Z = ${minAxis.z.toFixed(4)}`)\\n // 椭圆弧的其他信息\\n if (!isEllipse) {\\n // 计算椭圆弧的起点和端点\\n const calculateEllipseEndpoints = (center: McGePoint3d, v1: McGeVector3d, v2: McGeVector3d, theta1: number, theta2: number) => {\\n // 椭圆中心坐标\\n const cx = center.x;\\n const cy = center.y;\\n\\n // 主轴向量\\n const vx1 = v1.x;\\n const vy1 = v1.y;\\n\\n // 副轴向量\\n const vx2 = v2.x;\\n const vy2 = v2.y;\\n\\n // 计算椭圆的起始点和结束点\\n const alpha = Math.atan2(vy1, vx1)\\n\\n const a = Math.sqrt(vx1 * vx1 + vy1 * vy1); // 长轴半径\\n const b = Math.sqrt(vx2 * vx2 + vy2 * vy2); // 短轴半径\\n // 根据角度计算起始点和结束点\\n const startEndpointX = cx + a * Math.cos(theta1) * Math.cos(alpha) - b * Math.sin(theta1) * Math.sin(alpha);\\n const startEndpointY = cy + a * Math.cos(theta1) * Math.sin(alpha) + b * Math.sin(theta1) * Math.cos(alpha);\\n const endEndpointX = cx + a * Math.cos(theta2) * Math.cos(alpha) - b * Math.sin(theta2) * Math.sin(alpha);\\n const endEndpointY = cy + a * Math.cos(theta2) * Math.sin(alpha) + b * Math.sin(theta2) * Math.cos(alpha);\\n\\n return {\\n startPoint: new McGePoint3d(startEndpointX, startEndpointY),\\n endPoint: new McGePoint3d(endEndpointX, endEndpointY)\\n };\\n }\\n\\n const { startPoint, endPoint } = calculateEllipseEndpoints(ent.center, ent.majorAxis, ent.minorAxis, ent.startAngle, ent.endAngle)\\n MxFun.acutPrintf(`\\\\n 起点: X = ${startPoint.x.toFixed(4)} , Y = ${startPoint.y.toFixed(4)} , Z = ${startPoint.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 端点: X = ${endPoint.x.toFixed(4)} , Y = ${endPoint.y.toFixed(4)} , Z = ${endPoint.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 起点角度: ${THREE.MathUtils.radToDeg(ent.startAngle).toFixed(0)}`)\\n MxFun.acutPrintf(`\\\\n 端点角度: ${THREE.MathUtils.radToDeg(ent.endAngle).toFixed(0)}`)\\n }\\n MxFun.acutPrintf(`\\\\n 半径比例: ${ent.radiusRatio.toFixed(4)}`)\\n }\\n\\n // 填充对象信息\\n if(ent instanceof McDbHatch) {\\n const patternName = ent.patternName()\\n MxFun.acutPrintf(`\\\\n 填充图案 ${patternName}`)\\n MxFun.acutPrintf(`\\\\n 图案填充比例 ${ent.patternScale.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 图案填充角度 ${THREE.MathUtils.radToDeg(ent.patternAngle).toFixed(0)}`)\\n const pl = new McDbPolyline()\\n const pls: McDbPolyline[] = []\\n pl.isClosed = true\\n for (let index = 0; index < ent.numLoops; index++) {\\n const { vertices, bulges } = ent.getLoopAt(index)\\n vertices.forEach((pt, index)=> {\\n const bulge = bulges[index]\\n pl.addVertexAt(pt, Number(bulge.toFixed(14)))\\n })\\n pls.push(pl)\\n MxCpp.getCurrentMxCAD().drawEntity(pl)\\n }\\n const totalArea = pls.reduce((totalArea, pl)=> totalArea + pl.getArea().val, 0)\\n MxFun.acutPrintf(`\\\\n 面积 ${totalArea.toFixed(4)}`)\\n }\\n\\n // 单行文字信息\\n if(ent instanceof McDbText) {\\n MxFun.acutPrintf(`\\\\n 样式 = \\\"${ent.textStyle}\\\"`)\\n MxFun.acutPrintf(`\\\\n 起点 点, X= ${ent.position.x.toFixed(4)} Y= ${ent.position.y.toFixed(4)} Z= ${ent.position.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 高度 ${ent.height.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 文字 ${ent.textString}`)\\n MxFun.acutPrintf(`\\\\n 旋转 角度 ${ent.rotation.toFixed(0)}`)\\n MxFun.acutPrintf(`\\\\n 宽度 比例因子 ${ent.widthFactor.toFixed(4)}`)\\n }\\n // 多行文字信息\\n if(ent instanceof McDbMText) {\\n MxFun.acutPrintf(`\\\\n 样式 = \\\"${ent.textStyle}\\\"`)\\n MxFun.acutPrintf(`\\\\n位置: X= ${ent.location.x.toFixed(4)} Y= ${ent.location.y.toFixed(4)} Z= ${ent.location.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n宽度: ${ent.width.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n法向: X= ${ent.normal.x.toFixed(4)} Y= ${ent.normal.y.toFixed(4)} Z= ${ent.normal.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n旋转: ${ent.rotation.toFixed(0)}`)\\n MxFun.acutPrintf(`\\\\n文字高度: ${ent.textHeight.toFixed(4)}`)\\n\\n MxFun.acutPrintf(`\\\\n附着: ${getAttachmentName(McDb.AttachmentPoint[ent.attachment])}`)\\n MxFun.acutPrintf(`\\\\n内容: ${ent.contents}`)\\n }\\n // 光栅图片信息\\n if(ent instanceof McDbRasterImage) {\\n const imgDef = ent.imageDefId().getMcDbRasterImageDef()\\n const getFileNameFromPath = (path: string)=> {\\n return path.split('/').pop().split('\\\\\\\\').pop();\\n }\\n MxFun.acutPrintf(`\\\\n图像: ${getFileNameFromPath(imgDef.sourceFileName)}`)\\n\\n const getClipBoundaryType = (ent: McDbRasterImage)=> {\\n const type = ent.clipBoundaryType()\\n if(type === McDb.ClipBoundaryType.kInvalid) return \\\"无效\\\"\\n if(type === McDb.ClipBoundaryType.kPoly) return \\\"多边形\\\"\\n if(type === McDb.ClipBoundaryType.kRect) return \\\"矩形\\\"\\n }\\n MxFun.acutPrintf(`\\\\n剪裁边界类型: ${getClipBoundaryType(ent)}`)\\n const clipBoundary = ent.clipBoundary()\\n MxFun.acutPrintf(`\\\\n边界点数目: ${clipBoundary.length()}`)\\n ent.clipBoundary().forEach((pt)=> {\\n MxFun.acutPrintf(`\\\\n 位于点,X= ${pt.x.toFixed(4)}, Y= ${pt.y.toFixed(4)}, Z= ${pt.z.toFixed(4)}`)\\n })\\n }\\n\\n // 图块信息\\n if(ent instanceof McDbBlockReference) {\\n MxFun.acutPrintf(`\\\\n块名: \\\"${ent.blockName}\\\"`)\\n MxFun.acutPrintf(`\\\\n插入点: X= ${ent.position.x.toFixed(4)}, Y= ${ent.position.y.toFixed(4)}, Z= ${ent.position.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\nX 比例因子: ${ent.scaleFactors.x.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\nY 比例因子: ${ent.scaleFactors.y.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 旋转角度: ${ent.rotation.toFixed(0)}`)\\n MxFun.acutPrintf(`\\\\nZ 比例因子: ${ent.scaleFactors.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\nZ 比例因子: ${ent.scaleFactors.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n 缩放比例: ${ent.getScale().toFixed(4)}`)\\n }\\n\\n // 标注信息\\n if(ent instanceof McDbDimension) {\\n MxFun.acutPrintf(`\\\\n文字位置: X= ${ent.textPosition.x.toFixed(4)} Y= ${ent.textPosition.y.toFixed(4)} Z= ${ent.textPosition.z.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n是否使用的默认文字位置: ${ent.isUsingDefaultTextPosition()}`)\\n MxFun.acutPrintf(`\\\\n高度: ${ent.elevation.toFixed(4)}`)\\n MxFun.acutPrintf(`\\\\n文本内容: ${ent.dimensionText}`)\\n MxFun.acutPrintf(`\\\\n文本旋转角度: ${THREE.MathUtils.radToDeg(ent.textRotation).toFixed(0)}`)\\n const dimStyle = ent.dimensionStyle.getMcDbDimStyleTableRecord()\\n MxFun.acutPrintf(`\\\\n标注样式: ${dimStyle.name}`)\\n MxFun.acutPrintf(`\\\\n文字附着: ${getAttachmentName(McDb.AttachmentPoint[ent.textAttachment])}`)\\n MxFun.acutPrintf(`\\\\n水平旋转角度: ${THREE.MathUtils.radToDeg(ent.horizontalRotation).toFixed(0)}`)\\n MxFun.acutPrintf(`\\\\n水平旋转角度: ${THREE.MathUtils.radToDeg(ent.horizontalRotation).toFixed(0)}`)\\n }\\n MxFun.acutPrintf(\\\"\\\\n命令\\\")\\n}\\n\\n\"","import { MxCADPluginSampleCode } from \"mxcad\"\nimport \"./list\"\nimport \"./group\"\nimport listCmdCodeString from \"./list?raw\"\nconst filterCode = (code: string)=> {\n // 定义一个正则表达式来匹配指定格式的版权注释 通过开头和结尾固定的24个斜杠来判断版权注释\n const regex = /\\/\\/{24}[\\s\\S]*\\/\\/{24}/g;\n const result = code.replace(regex, '');\n return result\n}\n\nexport const initCode = (codes: MxCADPluginSampleCode[])=> {\n codes.push({\n \"type\": \"命令实现\",\n \"name\": \"list 命令\",\n \"code\": filterCode(listCmdCodeString)\n })\n}\n","///////////////////////////////////////////////////////////////////////////////\n//版权所有(C)2002-2022,成都梦想凯德科技有限公司。\n//本软件代码及其文档和相关资料归成都梦想凯德科技有限公司,应用包含本软件的程序必须包括以下版权声明\n//此应用程序应与成都梦想凯德科技有限公司达成协议,使用本软件、其文档或相关材料\n//https://www.mxdraw.com/\n///////////////////////////////////////////////////////////////////////////////\n\nimport { MxFun, MxDbRectBoxLeadComment, MrxDbgUtils, MxDrawObject } from \"mxdraw\"\nimport { DxfCode, McCmColor, McDb, McDbCurve, McDbEntity, McDbLine, McDbPolyline, McDbRasterImage, McDbRasterImageDef, McDbWipeout, McGeBound, McGePoint3dArray, MxCADPluginBase, MxCADPluginMapDefaultData, MxCADResbuf, MxCADSelectionSet, MxCADUiPrAngle, MxCADUiPrEntity, MxCADUiPrPoint, MxCADUtility, MxPropertiesWindowCustomValueType, MxTools } from \"mxcad\"\nimport { createApp } from \"vue\";\nimport Test from \"./Test.vue\"\n// import Compare from \"./compareDwg.vue\"\nimport { useModalVisible } from \"./Modal/hooks\";\nimport { McDbAttribute, McDbBlockReference, McDbText, McGePoint3d, McObject, McObjectId, MxCADUI, MxCpp } from \"mxcad\";\nimport { init as iframeinit } from \"./iframe\"\nimport { init as commentinit } from \"./comment\"\nimport { init as paramdrawinit } from \"./paramdraw\"\nimport { init as measureinit } from \"./measure\"\nimport { init as interactiveinit } from \"./interactive\"\nimport { init as databaseinit } from \"./database\"\nimport { init as cadfileinit } from \"./cadfile\"\nimport { init as findtextinit } from \"./findtext\"\nimport { init as drawcustomtinit } from \"./customEntity\"\nimport { init as makeblock } from \"./makeblock\"\nimport { init as hatchinit } from \"./hatch\"\nimport { init as aiinit } from \"./mxai/MxAiModule\"\nimport { init as init_userdemo } from \"./userdemo\"\nimport { init as init_gis_entity } from \"./gis/gis_entity\"\nimport { init as toolsinit } from \"./extools/fitTools\"\nimport { init as textToolsinit } from \"./extools/textTools\"\nimport { init as blockToolsinit } from \"./extools/blockTools\"\nimport { init as countToolsinit } from \"./extools/countTools\"\nimport { init as drawToolsinit } from \"./extools/drawTools\"\nimport { init as annotationsTools } from \"./extools/annotationsTools\"\nimport { MxTest_Map_Download, getMapDefaultData, init as gisinit } from \"./gis/init\"\nimport \"./icon/index.js\"\nimport \"./icon/dwgCampare.js\"\nimport { mxtest_add_3d_model } from \"./gis/add_3d_model\";\nimport code from \"./templateCode\"\nimport { initCode } from \"./command\"\ninitCode(code)\n//@ts-ignore\nif (import.meta.env.MODE === \"debug\") {\n const ws = new WebSocket('ws://localhost:24678');\n ws.addEventListener('message', (event) => {\n const info = JSON.parse(event.data)\n if (info.type === \"full-reload\") location.reload();\n });\n}\nclass MxCADPlugin extends MxCADPluginBase {\n constructor() {\n super()\n this.map_default_data = getMapDefaultData();\n this.sampleCode = code;\n //this.openFile = \"test3.mxweb\";\n //this.openFile = \"testcad.dwg.mxweb\";\n //this.openFile = \"http://localhost:1337/mxcad/file/a9cbed3d3a351b79f24484e87bd78338.DWG.mxweb\"\n }\n}\n\nlet mxcadui: MxCADUI;\nconst { showModal, hideModal, showTools } = useModalVisible()\n\nasync function My_PluginTest() {\n showModal({\n title: \"My Test Draw\",\n text: \"测试Modal\",\n oncancel: () => {\n // 取消\n hideModal()\n },\n onsubmit: () => {\n // 确定\n hideModal()\n },\n ongetallentity: () => {\n // 确定\n hideModal()\n MxFun.sendStringToExecute(\"TestGetAllEntity\")\n },\n ondrawline: () => {\n // 确定\n hideModal()\n MxFun.sendStringToExecute(\"Mx_Circle\")\n },\n docommand: (cmd) => {\n hideModal()\n MxFun.sendStringToExecute(cmd)\n }\n })\n}\nasync function My_Extool() {\n showTools({\n title: \"My Extension Tools\",\n text: \"扩展工具\",\n oncancel: () => {\n // 取消\n hideModal()\n },\n docommand: (cmd) => {\n hideModal()\n MxFun.sendStringToExecute(cmd)\n }\n })\n}\nconst div = document.createElement(\"div\")\ndocument.body.appendChild(div)\nconst app = createApp(Test)\napp.mount(div)\niframeinit();\n\n// 在加时,初始化同步用。\nMxFun.onInitSync(()=>{\n return new Promise((resolve) => {\n resolve(true)\n }) \n})\n\n// cad应用加载开始\nMxFun.on(\"mxcadApplicationStart\", (mxcaduiimp: MxCADUI) => {\n mxcadui = mxcaduiimp;\n mxcadui.init(new MxCADPlugin());\n});\n\n// 初始化gis\nMxFun.on(\"mxcadApplicationInitMap\", () => {\n gisinit(mxcadui.mxmap);\n});\n\n// 开始创建mxdraw,mxcad.on(\"init_before_mxdraw\")\nMxFun.on(\"mxcadApplicationStartCreatingMxCADObject\", (param) => {\n // mxdraw 绘图初始对象。\n let mxdraw: MxDrawObject = param.mxdraw;\n mxdraw.setViewMovementMethod(true);\n mxdraw.on(\"openFileComplete\", () => {\n console.log(\"MxTip:openFileComplete \")\n });\n\n // 鼠标点事件响应.\n mxdraw.addControlsEvent(\"mousedown\", (event) => {\n let x = event.offsetX;\n let y = event.offsetY;\n let pt = mxdraw.viewCoord2Cad(x, y, 0);\n console.log(\"mousedown:\", pt);\n //MxFun.postMessageToParentFrame(pt);\n return 0;\n })\n});\n\n\n// MxCAD创建成功,mxcad.on(\"init_mxcad\")\nMxFun.on(\"mxcadApplicationCreatedMxCADObject\", (param) => {\n let config = mxcadui.getServerConfig();\n MxCpp.App.addNetworkLoadingFont(config.font || [\"txt.shx\", \"simplex.shx\",\"gdt.shx\", \"aaa.shx\", \"ltypeshp.shx\", \"complex.shx\"]);\n MxCpp.App.addNetworkLoadingBigFont(config.bigFont || [\"hztxt.shx\", \"gbcbig.shx\"])\n if(config.trueTypeFont){\n MxCpp.App.addNetworkLoadingTrueTypeFont(config.trueTypeFont[0],config.trueTypeFont[1],config.trueTypeFont[2]);\n }\n else{\n //MxCpp.App.addNetworkLoadingTrueTypeFont([\"simsun\", \"syadobe\"], [\"思原宋体\", \"思原黑体\"], [\"stadobe.otf\", \"syadobe.otf\"]);\n MxCpp.App.addNetworkLoadingTrueTypeFont([\"syadobe\"], [\"思原黑体\"], [\"syadobe.otf\"]);\n }\n\n let mxcad: McObject = param.mxcad;\n\n //mxcad.setViewBackgroundColor(255, 255, 255);\n // 设置圆弧的显示精度,0~999\n mxcad.setAttribute({DisplayPrecision:35});\n\n //mxcad.setViewBackgroundColor(255, 255, 255);\n // 对象选择事件\n mxcad.on(\"selectChange\", (ids: McObjectId[]) => {\n if (ids.length == 0) return;\n let id = ids[0];\n let mxent = id.getMxDbEntity();\n if (mxent !== null) {\n console.log(mxent.getTypeName());\n if (mxent instanceof MxDbRectBoxLeadComment) {\n let comment: MxDbRectBoxLeadComment = mxent;\n console.log(comment.text);\n //comment.text = \"xxxx\";\n //comment.setNeedUpdateDisplay();\n }\n //...\n return;\n }\n let ent = id.getMcDbEntity();\n if (ent !== null) {\n console.log(ent.objectName);\n if (ent instanceof McDbText) {\n let text: McDbText = ent;\n console.log(text.textString);\n }\n else if (ent instanceof McDbBlockReference) {\n let blkRef: McDbBlockReference = ent;\n let aryId = blkRef.getAllAttribute();\n aryId.forEach((id) => {\n let attribt: McDbAttribute = id.getMcDbEntity() as any;\n console.log(attribt.textString);\n console.log(attribt.tag);\n })\n }\n //...\n }\n });\n\n\n\n // 属性界面上,得到对象属性事件。\n MxCpp.PropertiesWindow.onEvent_getProperties((id: McObjectId) => {\n let ent = id.getMcDbEntity();\n if (!ent) return [];\n let dn = ent.getxDataDouble(\"DN\");\n let len = ent.getxDataDouble(\"LEN\");\n let ret = [];\n\n if (dn.ret) {\n ret.push({\n sVarName: \"DN\",\n iVarType: MxPropertiesWindowCustomValueType.kDouble,\n val: dn.val,\n isOnlyRead: false\n });\n }\n\n if (len.ret) {\n ret.push({\n sVarName: \"LEN\",\n iVarType: MxPropertiesWindowCustomValueType.kDouble,\n val: len.val,\n isOnlyRead: false\n });\n }\n return ret;\n })\n\n // 属性界面上,对象属性被修改事件。\n MxCpp.PropertiesWindow.onEvent_setProperties((id: McObjectId, prop: any) => {\n let ent = id.getMcDbEntity();\n if (!ent) return;\n if (prop.sVarName == \"DN\") {\n ent.setxDataDouble(\"DN\", prop.val);\n }\n else if (prop.sVarName == \"LEN\") {\n ent.setxDataDouble(\"LEN\", prop.val);\n }\n });\n\n});\n\n\nexport function getMxCADUi(): MxCADUI {\n return mxcadui;\n}\n\nexport function McGePoint3dToString(pt: McGePoint3d): string {\n return \"x=\" + pt.x + \",y=\" + pt.y + \",z=\" + pt.z;\n}\n\n\n// test command\nfunction Mx_Open_DemoCode() {\n window.open(\"https://demo.mxdraw3d.com:3562/MxCADCode.7z\")\n}\n\nfunction Mx_Open_DevInstall() {\n window.open(\"https://demo.mxdraw3d.com:3562/MxDrawCloudServer1.0TryVersion.7z\")\n}\n\nfunction getMapUrl(type) {\n var url = window.location.href;\n if (url.indexOf(\"?\") != -1) {\n url = url.replace(/(\\?|#)[^'\"]*/, '');\n }\n return `${url}?map=true&maptype=${type}`\n}\n\nfunction Mx_Open_Map_gdslwzj() {\n\n window.open(getMapUrl(\"gdslwzj\"))\n}\n\n\nfunction Mx_Open_Map_googlecn() {\n\n window.open(getMapUrl(\"google\"))\n}\n\n\nfunction Mx_Open_Map_gdyx() {\n window.open(getMapUrl(\"gdyx\"))\n}\n\nfunction Mx_Open_Map_tdtsl() {\n window.open(getMapUrl(\"tdtsl\"))\n}\n\nfunction Mx_Open_Map_bdsl() {\n window.open(getMapUrl(\"bdsl\"))\n}\n\nfunction Mx_Open_Map_geoq() {\n window.open(getMapUrl(\"geoq\"))\n}\n\n\nfunction Mx_ViewBackgroundColor() {\n MxCpp.getCurrentMxCAD().setViewBackgroundColor(255, 255, 255);\n MxFun.callEvent(\"updateBackgroundColor\", new McCmColor(255, 255, 255))\n}\n\n\nasync function Mx_TestExProp() {\n let selEntity1 = new MxCADUiPrEntity();\n\n selEntity1.setMessage(\"选择要需要开启自定义属性的对象\");\n let idText = await selEntity1.go();\n if (!idText.isValid()) return;\n\n let ent = idText.getMcDbEntity();\n MxCpp.PropertiesWindow.setEntitySupportCustom(idText);\n\n // 设置对象扩展属性值。\n ent.setxDataDouble(\"DN\", 100);\n ent.setxDataDouble(\"LEN\", 2000);\n}\n\nfunction Mx_Test_OpenFile() {\n let mxcad = MxCpp.getCurrentMxCAD();\n mxcad.openWebFile(\"http://localhost:1337/mxcad/file/a9cbed3d3a351b79f24484e87bd78338.DWG.mxweb\");\n\n //\n}\n\nasync function Mx_Test_GetFile() {\n //let pat = await MxTools.getFileFromUrl(\"fonts/mx.pat\");\n //console.log(pat.text());\n\n //MxFun.isRunningCommand()\n //MxFun.sendStringToExecute(\"Mx_Pan\");\n //MxFun.stopRunCommand();\n}\n\nasync function Mx_SelectEntitHideLayer() {\n let selEntity1 = new MxCADUiPrEntity();\n\n selEntity1.setMessage(\"选择要隐藏的对象\");\n let id = await selEntity1.go();\n if (!id.isValid()) return;\n\n let ent = id.getMcDbEntity();\n let mxcad = MxCpp.getCurrentMxCAD();\n let layerTable = mxcad.getDatabase().getLayerTable();\n let layerId = layerTable.get(ent.layer);\n let layerRec = layerId.getMcDbLayerTableRecord();\n if (layerRec === null) return;\n layerRec.isOff = true;\n mxcad.updateLayerDisplayStatus();\n mxcad.updateDisplay()\n}\n\n\nfunction getHostUrl(): string {\n return window.location.origin;\n}\n\nfunction getCurrentPagePath() {\n return window.location.origin + window.location.pathname\n}\n\n\nlet idImage: any;\nasync function Mx_Test_DrawImage() {\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定插入点:\");\n let pt = await getPoint.go();\n if (!pt) return;\n\n let mxcad = MxCpp.getCurrentMxCAD();\n //let imagUrl = \"https://cdn.pixabay.com/photo/2022/11/15/12/23/winter-7593872_960_720.jpg\";\n\n let imagUrl = getCurrentPagePath() + \"mxcad.jpg\"\n mxcad.loadImage(imagUrl, (image) => {\n if (!image) {\n console.log(\"loadImage failed\");\n return;\n }\n let width = mxcad.mxdraw.viewCoordLong2Cad(100);\n let height = (image.height / image.width) * width;\n idImage = mxcad.drawImage((pt as any).x, (pt as any).y, width, height, 0, imagUrl, true);\n mxcad.updateDisplay();\n });\n\n}\n\nfunction Mx_Test_ModifyImage() {\n if (!idImage) return;\n let mxcad = MxCpp.getCurrentMxCAD();\n let imagUrl = \"https://cdn.pixabay.com/photo/2022/11/15/12/23/winter-7593872_960_720.jpg\";\n mxcad.loadImage(imagUrl, (imagedata) => {\n if (!imagedata) {\n console.log(\"loadImage failed\");\n return;\n }\n let imagedefid = mxcad.addImageDefine(imagUrl, \"winter-7593872_960_720.jpg\", true);\n let image = idImage.getMcDbEntity() as McDbRasterImage;\n if (image) {\n image.setImageDefId(imagedefid);\n }\n mxcad.updateDisplay();\n });\n}\n\n\nexport async function MxTest_TestAddCurrentSelect() {\n let mxcad = MxCpp.getCurrentMxCAD();\n let getPoint = new MxCADUiPrPoint();\n let pt1 = await getPoint.go();\n if (pt1 == null) return;\n\n getPoint.setBasePt(pt1);\n let pt2 = await getPoint.go();\n if (pt2 == null) return;\n\n let id = mxcad.drawLine(pt1.x, pt1.y, pt2.x, pt2.y);\n mxcad.addCurrentSelect(id);\n}\n\nlet lAng = 0;\nexport async function MxTest_TestSetViewAngle() {\n lAng += Math.PI * 0.5;\n let mxcad = MxCpp.getCurrentMxCAD()\n mxcad.zoomAngle(lAng);\n}\n\nexport function MxText_ZoomCenter() {\n let mxcad = MxCpp.getCurrentMxCAD();\n mxcad.zoomCenter(900, 900);\n}\n\nfunction Mx_Test_Draw3DPolyline() {\n let mxcad = MxCpp.getCurrentMxCAD();\n //清空当前显示内容\n mxcad.newFile();\n\n let pl = new McDbPolyline();\n pl.setType(McDb.PolylineType.k3dPolyline);\n pl.addVertexAt(new McGePoint3d(100, 100, 100));\n pl.addVertexAt(new McGePoint3d(200, 100, 500));\n pl.addVertexAt(new McGePoint3d(300, 400, 200));\n\n mxcad.drawEntity(pl);\n\n //把所有的实体都放到当前显示视区\n mxcad.zoomAll();\n //更新视区显示\n mxcad.updateDisplay();\n}\n\nasync function MxTemp_Test() {\n /*\n const filter = new MxCADResbuf();\n // 添加对象类型,选择集只选择文字类型的对象\n filter.AddMcDbEntityTypes(\"INSERT\")\n\n let ss = new MxCADSelectionSet();\n //选择所有文本对象\n ss.allSelect(filter);\n\n let count = ss.count();\n console.log(count);\n */\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定一点:\");\n let startPoint = (await getPoint.go());\n if (!startPoint) return;\n\n const getAngle = new MxCADUiPrAngle()\n getAngle.setMessage(\"指定夹角\")\n getAngle.setKeyWords(\"\")\n getAngle.setBasePt(startPoint)\n\n const angle = await getAngle.go()\n\n console.log(angle);\n\n}\n\nasync function Mx_Test_OffsetIn_DrawLine() {\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定一点:\");\n getPoint.setOffsetInputPostion(true);\n let pt1 = (await getPoint.go());\n if (!pt1) return;\n\n getPoint.setBasePt(pt1);\n getPoint.setUseBasePt(true);\n\n getPoint.setMessage(\"\\n指定二点:\");\n let pt2 = (await getPoint.go());\n if (!pt2) return;\n\n MxCpp.getCurrentMxCAD().drawLine(pt1.x, pt1.y, pt2.x, pt2.y);\n}\n\nasync function Mx_Test_CreateGroup() {\n\n let ss = new MxCADSelectionSet();\n if (!await ss.userSelect(\"选择要做成组的对象:\")) return;\n if (ss.count() == 0) return;\n let mxcad = MxCpp.getCurrentMxCAD();\n mxcad.getDatabase().CreateGroup(ss.getIds());\n}\n\n\nasync function Mx_Test_IntersectWith() {\n\n let mxcad = MxCpp.getCurrentMxCAD();\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定第一点:\");\n let pt1 = await getPoint.go();\n if (!pt1) return;\n getPoint.setMessage(\"\\n指定第二点:\");\n getPoint.setBasePt(pt1);\n let pt2 = await getPoint.go();\n if (!pt2) return;\n\n // 通过两点构造一个搜索矩形范围.\n let vec = pt2.sub(pt1);\n vec.rotateBy(Math.PI * 0.5).normalize().mult(MxFun.screenCoordLong2Doc(10));\n let p1 = pt1.clone().addvec(vec);\n let p2 = pt1.clone().subvec(vec);\n let p3 = pt2.clone().addvec(vec);\n let p4 = pt2.clone().subvec(vec);\n\n let bound = new McGeBound([p1, p2, p3, p4]);\n let minPt = bound.minPoint;\n let maxPt = bound.maxPoint;\n let ss = new MxCADSelectionSet();\n\n // 根据搜索框,选择框内的对象。\n ss.crossingSelect(minPt.x, minPt.y, maxPt.x, maxPt.y,\n new MxCADResbuf([DxfCode.kEntityType, \"LINE,ARC,CIRCLE,LWPOLYLINE\"]));\n\n let dR = MxFun.screenCoordLong2Doc(5);\n let line = new McDbLine(pt1, pt2);\n ss.forEach(id => {\n let ent = id.getMcDbEntity() as McDbCurve;\n // 与直线求交点 。\n let points = ent.IntersectWith(line, McDb.Intersect.kOnBothOperands);\n if (points.length() != 0) {\n let inpt = points.at(0);\n mxcad.drawCircle(inpt.x, inpt.y, dR);\n }\n })\n\n}\n\n\n\n\n// MxCAD创建成功,相当于mxcad init_mxcad事件.\nMxFun.on(\"mxcadApplicationCreatedMxCADObject\", (param) => {\n\n let mxcad: McObject = param.mxcad;\n\n //mxcad.getMxDrawObject().setIniset({inputRectWidth: 10,gripPointColor: 0xff00FF00});\n\n //mxcad.setViewBackgroundColor(255, 255, 255);\n // 对象选择事件\n mxcad.on(\"selectChange\", (ids: McObjectId[]) => {\n if (ids.length == 0) return;\n let id = ids[0];\n let mxent = id.getMxDbEntity();\n if (mxent !== null) {\n console.log(mxent.getTypeName());\n if (mxent instanceof MxDbRectBoxLeadComment) {\n let comment: MxDbRectBoxLeadComment = mxent;\n console.log(comment.text);\n //comment.text = \"xxxx\";\n //comment.setNeedUpdateDisplay();\n }\n //...\n return;\n }\n let ent = id.getMcDbEntity();\n if (ent !== null) {\n console.log(ent.objectName);\n if (ent instanceof McDbText) {\n let text: McDbText = ent;\n console.log(text.textString);\n }\n else if (ent instanceof McDbBlockReference) {\n let blkRef: McDbBlockReference = ent;\n let aryId = blkRef.getAllAttribute();\n aryId.forEach((id) => {\n let attribt: McDbAttribute = id.getMcDbEntity() as any;\n console.log(attribt.textString);\n console.log(attribt.tag);\n })\n }\n //...\n }\n });\n // 属性界面上,得到对象属性事件。\n MxCpp.PropertiesWindow.onEvent_getProperties((id: McObjectId) => {\n let ent = id.getMcDbEntity();\n if (!ent) return [];\n let dn = ent.getxDataDouble(\"DN\");\n let len = ent.getxDataDouble(\"LEN\");\n let ret = [];\n\n if (dn.ret) {\n ret.push({\n sVarName: \"DN\",\n iVarType: MxPropertiesWindowCustomValueType.kDouble,\n val: dn.val,\n isOnlyRead: false\n });\n }\n\n if (len.ret) {\n ret.push({\n sVarName: \"LEN\",\n iVarType: MxPropertiesWindowCustomValueType.kDouble,\n val: len.val,\n isOnlyRead: false\n });\n }\n return ret;\n })\n\n // 属性界面上,对象属性被修改事件。\n MxCpp.PropertiesWindow.onEvent_setProperties((id: McObjectId, prop: any) => {\n let ent = id.getMcDbEntity();\n if (!ent) return;\n if (prop.sVarName == \"DN\") {\n ent.setxDataDouble(\"DN\", prop.val);\n }\n else if (prop.sVarName == \"LEN\") {\n ent.setxDataDouble(\"LEN\", prop.val);\n }\n });\n init();\n});\n\nasync function Mx_ScreenToJpg() {\n const ret = await MxCADUtility.getCorner(\"选择截图范围\", undefined, undefined, false, true);\n if (!ret) return;\n let mxcad = MxCpp.getCurrentMxCAD();\n\n let w = Math.abs(ret.pt1.x - ret.pt2.x);\n let h = Math.abs(ret.pt1.y - ret.pt2.y);\n\n if (w < 1 || h < 1) return;\n\n let jpg_width = 200;\n let jpg_height = jpg_width * h / w;\n\n mxcad.mxdraw.createCanvasImageData(\n (imageData: String) => {\n let newWindow: any = window.open();\n if (newWindow != null) {\n newWindow.document.write('<img src=\"' + imageData + '\"/>');\n }\n },\n {\n width: jpg_width, // 图片宽\n height: jpg_height, // 图片高\n range_pt1: ret.pt1.toVector3(), // 截图范围角点1\n range_pt2: ret.pt2.toVector3(), // 截图范围角点2\n }\n );\n}\n\nasync function Mx_Test_DrawMarkCircle() {\n while (true) {\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定一点:\");\n getPoint.setOffsetInputPostion(true);\n getPoint.clearLastInputPoint();\n let pt1 = (await getPoint.go());\n if (!pt1) return;\n\n let mxdraw = MxFun.getCurrentDraw();\n\n mxdraw.getTempMarkDraw().drawCircleMark(pt1.toVector3(), mxdraw.viewCoordLong2Cad(50), 0xFF0000);\n mxdraw.updateDisplay();\n }\n}\n\nasync function Mx_Test_Wipeout(){\n const getPoint = new MxCADUiPrPoint();\n getPoint.setMessage(\"\\n指定第一点:\");\n let pt1 = await getPoint.go();\n if (!pt1) return;\n\n\n let pt_corner = await MxCADUtility.getCorner(\"\\n指定第二点:\",pt1);\n\n if (!pt_corner) return;\n\n let pt2 = pt_corner.pt2;\n\n let points = new McGePoint3dArray();\n points.append(pt1);\n points.append(new McGePoint3d(pt1.x,pt2.y,0));\n points.append(new McGePoint3d(pt2.x,pt2.y,0));\n\n points.append(new McGePoint3d(pt2.x,pt1.y,0));\n\n let wipeout = new McDbWipeout\n\n wipeout.setVertices(points);\n\n let mxcad = MxCpp.getCurrentMxCAD();\n wipeout = mxcad.drawEntity(wipeout).getMcDbObject() as McDbWipeout;\n\n let minmaxOrder = MxCpp.getCurrentDatabase().currentSpace.getMinMaxDrawOrder();\n let lOrder = minmaxOrder.maxDrawOrder + 1;\n wipeout.drawOrder = lOrder;\n \n\n}\n\n\nfunction init() {\n MxFun.addCommand(\"My_PluginTest\", My_PluginTest);\n MxFun.addCommand(\"My_Extool\", My_Extool);\n MxFun.addCommand(\"Mx_Open_DemoCode\", Mx_Open_DemoCode);\n MxFun.addCommand(\"Mx_Open_DevInstall\", Mx_Open_DevInstall);\n MxFun.addCommand(\"Mx_Open_Map_gdslwzj\", Mx_Open_Map_gdslwzj);\n MxFun.addCommand(\"Mx_Open_Map_gdyx\", Mx_Open_Map_gdyx);\n MxFun.addCommand(\"Mx_Open_Map_tdtsl\", Mx_Open_Map_tdtsl);\n MxFun.addCommand(\"Mx_Open_Map_bdsl\", Mx_Open_Map_bdsl);\n MxFun.addCommand(\"Mx_Open_Map_geoq\", Mx_Open_Map_geoq);\n MxFun.addCommand(\"Mx_Open_Map_googlecn\", Mx_Open_Map_googlecn);\n\n\n MxFun.addCommand(\"Mx_ViewBackgroundColor\", Mx_ViewBackgroundColor);\n MxFun.addCommand(\"Mx_TestExProp\", Mx_TestExProp);\n MxFun.addCommand(\"Mx_Test_OpenFile\", Mx_Test_OpenFile);\n MxFun.addCommand(\"Mx_Test_GetFile\", Mx_Test_GetFile);\n MxFun.addCommand(\"Mx_TestExProp\", Mx_TestExProp);\n MxFun.addCommand(\"Mx_SelectEntitHideLayer\", Mx_SelectEntitHideLayer);\n MxFun.addCommand(\"MxTest_TestAddCurrentSelect\", MxTest_TestAddCurrentSelect);\n MxFun.addCommand(\"MxTest_TestSetViewAngle\", MxTest_TestSetViewAngle);\n MxFun.addCommand(\"MxText_ZoomCenter\", MxText_ZoomCenter);\n MxFun.addCommand(\"MxTest_Map_Download\", MxTest_Map_Download);\n MxFun.addCommand(\"Mx_Test_DrawImage\", Mx_Test_DrawImage);\n MxFun.addCommand(\"Mx_Test_ModifyImage\", Mx_Test_ModifyImage);\n\n MxFun.addCommand(\"Mx_Test_Draw3DPolyline\", Mx_Test_Draw3DPolyline);\n MxFun.addCommand(\"MxTemp_Test\", MxTemp_Test);\n MxFun.addCommand(\"Mx_Test_IntersectWith\", Mx_Test_IntersectWith);\n MxFun.addCommand(\"Mx_Test_OffsetIn_DrawLine\", Mx_Test_OffsetIn_DrawLine);\n MxFun.addCommand(\"Mx_Test_CreateGroup\", Mx_Test_CreateGroup);\n MxFun.addCommand(\"Mx_ScreenToJpg\", Mx_ScreenToJpg);\n MxFun.addCommand(\"Mx_Test_DrawMarkCircle\", Mx_Test_DrawMarkCircle);\n MxFun.addCommand(\"Mx_Test_Wipeout\", Mx_Test_Wipeout);\n\n\n\n\n commentinit();\n paramdrawinit();\n measureinit();\n interactiveinit();\n databaseinit();\n cadfileinit();\n findtextinit();\n makeblock();\n hatchinit();\n aiinit();\n init_userdemo();\n drawcustomtinit();\n init_gis_entity();\n toolsinit();\n textToolsinit();\n blockToolsinit();\n countToolsinit();\n drawToolsinit();\n annotationsTools();\n if (mxcadui.mxmap) {\n //使用three.js 加载一个3d模型在地图上.\n mxtest_add_3d_model(MxFun.getCurrentDraw());\n }\n}\n"],"names":["isModalVisible","ref","isToolsVisible","showModal","options","modalOptions","showTools","hideModal","modalOpts","cmd","isDialogVisible","excelText","text","copyTextToClipboard","__async","err","useModalVisible","types","reactive","btn_id","store","setCommandFocus","model","dragModal","event","dragBox","disX","disY","moveDrag","MxIFrame","MxFun","param","init","BR_Comment","getPoint","MrxDbgUiPrPoint","status","pt1","leadComment","MxDbLeadComment","MxCpp","worldDrawComment","McEdGetPointWorldDrawObject","currentPoint","pWorldDraw","BR_Print","imageData","newWindow","BR_CheckDraw","color","point","mxDraw","mxCheckDraw","MxDbRectBoxLeadComment","MrxDbgUiPrBaseReturn","getScreenPixel","pixel","isFontSize","_pixel","BR_Arrow","worldDraw","lines","MxDbArrow","v","BR_CloudLine","radius","pt","mxCloudLine","MxDbCloudLine","sSaveData","BR_SaveAllMxEntity","BR_LoadAllMxEntity","mxobj","BR_Area","area","MxDbArea","tmp","pt2","Mx_Test_DrawLine","mxcad","McCmColor","Mx_Test_DrawArc","Mx_Test_DrawCircle","Mx_Test_DrawPolyline","Mx_Test_DrawHatch","Mx_Test_DrawText","Mx_Test_TrueText","ent","Mx_Test_Ellipse","Mx_Test_EllipseArc","Mx_Test_MText","Mx_ParamDrawLine","data","Mx_Test_Text","McDb","Mx_Test_DimAligned","Mx_Test_DrawDimRotated","textId","Mx_Test_DrawDimRotatedTol","dim","Mx_Test_DrawDimAngular","value","x","target","output","index","source","nextKey","REVISION","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","NoColors","FaceColors","VertexColors","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","Uncharted2ToneMapping","CineonToneMapping","ACESFilmicToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","SphericalReflectionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","RGBEFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","LogLuvEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","KeepStencilOp","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","EventDispatcher","type","listener","listeners","listenerArray","array","i","l","_lut","MathUtils","d0","d1","d2","d3","uuid","min","max","n","m","a1","a2","b1","b2","y","t","low","high","range","degrees","radians","q","a","b","c","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","Vector2","scalar","w","s","e","minVal","maxVal","length","angle","dx","dy","alpha","v1","v2","offset","attribute","center","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","g","h","matrix","throwOnDegenerate","t11","t12","t13","det","msg","detInv","matrix4","r","tx","ty","sx","sy","rotation","cx","cy","theta","_canvas","ImageUtils","image","canvas","context","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","meta","isRootObject","url","uv","Vector4","z","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","WebGLRenderTarget","width","height","WebGLMultisampleRenderTarget","Quaternion","qa","qb","qm","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","f","quaternion","euler","update","c1","c3","s1","s3","axis","halfAngle","trace","vFrom","vTo","EPS","step","p","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","callback","_vector","Vector3","_quaternion","qx","qy","qz","qw","ix","iy","iz","iw","camera","ax","ay","az","bx","by","bz","denominator","planeNormal","normal","dz","phi","sinPhiRadius","sz","_v1","_m1","Matrix4","_zero","_one","_x","_y","_z","n14","n24","n34","n41","n42","n43","n44","xAxis","yAxis","zAxis","scaleX","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","position","scale","x2","y2","z2","wx","wy","wz","invSX","invSY","invSZ","left","right","top","bottom","near","far","_matrix","_quaternion$1","Euler","clamp","newOrder","optionalResult","Layers","channel","layers","_object3DId","_v1$1","_q1","_m1$1","_target","_position","_scale","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","onRotationChange","onQuaternionChange","distance","vector","parent","object","id","name","child","children","force","updateParents","updateChildren","serialize","library","element","parameters","shapes","shape","uuids","geometries","extractFromCache","materials","textures","images","cache","values","key","recursive","Scene","_points","_vector$1","_box","Box3","_v0","_v1$2","_v2","_f0","_f1","_f2","_center","_extents","_triangleNormal","_testAxis","minX","minY","minZ","maxX","maxY","maxZ","points","il","size","halfSize","box","geometry","sphere","plane","triangle","axes","satForAxes","clampedPoint","v0","extents","j","p0","p1","p2","_box$1","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","_vector$2","_segCenter","_segDir","_diff","_edge1","_edge2","_normal","Ray","origin","direction","ray","directionDistance","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","backfaceCulling","DdN","sign","DdQxE2","DdE1xQ","QdN","_vector1","_vector2","_normalMatrix","Plane","constant","inverseNormalLength","line","startSign","endSign","optionalNormalMatrix","normalMatrix","referencePoint","_v0$1","_v1$3","_v2$1","_v3","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","u","p3","uv1","uv2","uv3","i0","i1","i2","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","Color","hue2rgb","SRGBToLinear","LinearToSRGB","hex","style","handleAlpha","string","components","gammaFactor","safeInverse","hue","saturation","lightness","delta","color1","color2","Face3","materialIndex","materialId","Material","newValue","currentValue","isRoot","srcPlanes","dstPlanes","MeshBasicMaterial","_vector$3","BufferAttribute","itemSize","normalized","index1","index2","colors","vectors","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","DirectGeometry","group","groups","faces","face","vertices","faceVertexUvs","hasFaceVertexUv","hasFaceVertexUv2","morphTargets","morphTargetsLength","morphTargetsPosition","morphNormals","morphNormalsLength","morphTargetsNormal","skinIndices","skinWeights","hasSkinIndices","hasSkinWeights","vertexNormals","vertexColors","vertexUvs","morphTarget","morphNormal","arrayMax","_bufferGeometryId","_m1$2","_obj","_offset","_box$2","_boxMorphTargets","_vector$4","BufferGeometry","start","count","tangent","positions","lineDistances","direct","normals","uvs","uvs2","morphAttributesPosition","morphAttribute","morphTargetsRelative","jl","attributes","vA","vB","vC","pA","pB","pC","cb","ab","indices","attribute1","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","array2","geometry2","newAttribute","morphAttributes","morphArray","attributeData","hasMorphAttributes","attributeArray","boundingSphere","boundingBox","_inverseMatrix","_ray","_sphere","_vA","_vB","_vC","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA","_uvB","_uvC","_intersectionPoint","_intersectionPointWorld","Mesh","material","ml","keys","raycaster","intersects","matrixWorld","intersection","morphPosition","drawRange","groupMaterial","end","checkBufferGeometryIntersection","fvA","fvB","fvC","isMultiMaterial","fl","faceMaterial","checkIntersection","uvs_f","intersect","morphInfluences","influence","_geometryId","_m1$3","_obj$1","_offset$1","Geometry","vertex","scope","addFace","areaWeighted","vl","tmpGeo","dstNormalsFace","dstNormalsVertex","faceNormal","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","faceVertexUvs2","uvsCopy","k","kl","mesh","verticesMap","unique","changes","precisionPoints","precision","faceIndicesToRemove","idx","diff","materialIndexSort","uvs1","newUvs1","newUvs2","normalsHash","colorsHash","uvsHash","hasMaterial","hasFaceUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","srcVertexNormal","destVertexNormal","BoxGeometry","depth","widthSegments","heightSegments","depthSegments","BoxBufferGeometry","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","src","property","mergeUniforms","uniforms","merged","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","uniform","extensions","Camera","PerspectiveCamera","fov","aspect","focalLength","vExtentSlope","fullWidth","fullHeight","view","skew","CubeCamera","cubeResolution","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","WebGLCubeRenderTarget","renderer","scene","currentRenderTarget","renderTarget","generateMipmaps","stencil","dummy","texture","shader","DataTexture","_sphere$1","_vector$5","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","sprite","negRadius","UniformsLib","WebGLAnimation","isAnimating","animationLoop","onAnimationFrame","time","frame","WebGLAttributes","gl","capabilities","isWebGL2","buffers","createBuffer","bufferType","usage","buffer","updateBuffer","updateRange","get","remove","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_normalmap_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshtoon_frag","meshtoon_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","ShaderChunk","ShaderLib","WebGLBackground","state","objects","premultipliedAlpha","clearColor","clearAlpha","planeMesh","boxMesh","currentBackground","currentBackgroundVersion","currentTonemapping","render","renderList","forceClear","background","xr","session","setClear","WebGLBufferRenderer","info","mode","setMode","renderInstances","primcount","extension","methodName","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","getMaxPrecision","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","enableLocalClipping","projectPlanes","resetGlobalState","clipIntersection","clipShadows","fromCache","nGlobal","lGlobal","dstArray","skipTransform","nPlanes","flatSize","viewMatrix","i4","WebGLExtensions","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","geometryAttributes","updateWireframeAttribute","geometryIndex","geometryPosition","version","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","bytesPerElement","setIndex","WebGLInfo","memory","instanceCount","reset","absNumericalSort","WebGLMorphtargets","influencesList","program","objectInfluences","influences","morphInfluencesSum","morphBaseInfluence","WebGLObjects","updateList","dispose","CubeTexture","DataTexture2DArray","DataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","elements","setValueM3","setValueM4","setValueT1","unit","setValueT2DArray1","setValueT3D1","setValueT6","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","getSingularSetter","setValueV1fArray","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","getPureArraySetter","SingleUniform","activeInfo","addr","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","match","matchEnd","idIsIndex","subscript","map","next","WebGLUniforms","WebGLShader","programIdCount","addLineNumbers","getEncodingComponents","getShaderErrors","log","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMapping","toneMappingName","generateExtensions","chunks","filterEmptyLine","generateDefines","defines","fetchAttributeLocations","replaceLightNums","replaceClippingPlaneNums","includePattern","resolveIncludes","includeReplacer","include","loopPattern","unrollLoops","loopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","generateEnvMapTypeDefine","envMapTypeDefine","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","WebGLProgram","cacheKey","vertexShader","fragmentShader","gammaFactorDefine","customExtensions","customDefines","prefixVertex","prefixFragment","numMultiviewViews","isGLSL3ShaderMaterial","versionRegex","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","programLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","cachedUniforms","cachedAttributes","WebGLPrograms","programs","shaderIDs","parameterNames","getShaderObject","shaderID","shaderobject","allocateBones","skeleton","bones","nVertexUniforms","nVertexMatrices","maxBones","getTextureEncodingFromMap","lights","shadows","nClipPlanes","nClipIntersection","fog","environment","envMap","pl","preexistingProgram","WebGLProperties","properties","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transparent","defaultProgram","getNextRenderItem","groupOrder","renderItem","push","unshift","sort","customOpaqueSort","customTransparentSort","WebGLRenderLists","lists","onSceneDispose","cameras","list","UniformsCache","light","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","vector3","matrix42","setup","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","intensity","shadowMap","shadow","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","WebGLRenderStates","renderStates","renderState","MeshDepthMaterial","MeshDistanceMaterial","vsm_frag","vsm_vert","WebGLShadowMap","_renderer","_objects","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterials","_distanceMaterials","_materialCache","shadowSide","shadowMaterialVertical","shadowMaterialHorizonal","fullScreenTri","fullScreenMesh","activeCubeFace","activeMipmapLevel","_state","shadowFrameExtents","pars","viewportCount","vp","viewport","renderObject","VSMPass","getDepthMaterialVariant","useMorphing","useSkinning","useInstancing","getDistanceMaterialVariant","getDepthMaterial","shadowCameraNear","shadowCameraFar","result","getMaterialVariant","customMaterial","keyA","keyB","materialsForVariant","cachedMaterial","shadowCamera","visible","depthMaterial","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthTest","enable","disable","depthMask","depthFunc","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","colorBuffer","depthBuffer","stencilBuffer","maxVertexAttributes","newAttributes","enabledAttributes","attributeDivisors","enabledCapabilities","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","emptyTextures","setFlipSided","setCullFace","setBlending","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","disableUnusedAttributes","useProgram","equationToGL","factorToGL","blending","blendEquation","blendSrc","blendDst","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","setMaterial","frontFaceCW","flipSided","stencilWrite","setPolygonOffset","cullFace","setLineWidth","polygonOffset","factor","setScissorTest","scissorTest","activeTexture","webglSlot","bindTexture","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","error","texImage2D","texImage3D","scissor","WebGLTextures","_gl","utils","_videoTextures","useOffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","floor","isPowerOfTwo","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","textureProperties","getInternalFormat","internalFormatName","glFormat","glType","internalFormat","filterFallback","onTextureDispose","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","renderTargetProperties","textureUnits","resetTextureUnits","allocateTextureUnit","textureUnit","setTexture2D","slot","updateVideoTexture","uploadTexture","setTexture2DArray","setTexture3D","setTextureCube","initTexture","isCompressed","isDataTexture","cubeImage","glInternalFormat","setTextureParameters","mipmaps","mipmap","mipmapImage","setTextureCubeDynamic","wrappingToGL","filterToGL","textureType","setupFrameBufferTexture","framebuffer","attachment","textureTarget","setupRenderBufferStorage","renderbuffer","isMultisample","samples","getRenderTargetSamples","setupDepthTexture","isCube","webglDepthTexture","setupDepthRenderbuffer","setupRenderTarget","isMultiview","numViews","ext","colorTexture","depthStencilTexture","viewFramebuffers","updateRenderTargetMipmap","updateMultisampleRenderTarget","mask","warnedTexture2D","warnedTextureCube","safeSetTexture2D","safeSetTextureCube","WebGLUtils","convert","WebGLMultiviewRenderTarget","WebGLMultiview","DEFAULT_NUMVIEWS","mat3","mat4","cameraArray","renderSize","available","maxNumViews","isAvailable","getCameraArray","updateCameraProjectionMatricesUniform","updateCameraViewMatricesUniform","updateObjectMatricesUniforms","isMultiviewCompatible","resizeRenderTarget","attachCamera","detachCamera","flush","srcRenderTarget","srcFramebuffers","viewWidth","viewHeight","ArrayCamera","Group","WebXRManager","referenceSpace","referenceSpaceType","pose","controllers","inputSourcesMap","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","controller","onSessionEvent","onSessionEnd","inputSource","animation","onRequestReferenceSpace","layerInit","baseLayer","updateInputSources","inputSources","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","onAnimationFrameCallback","views","inputPose","gripPose","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","_powerPreference","_failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","_this","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentGeometryProgram","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_projScreenMatrix","_vector3","getTargetPixelRatio","contextAttributes","onContextLost","onContextRestore","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","initGLContext","multiview","updateStyle","pixelRatio","boolean","method","bits","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReference","programInfo","renderObjectImmediate","programAttributes","tempScene","setProgram","updateBuffers","rangeFactor","setupVertexAttributes","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","lineWidth","materialDefaultAttributeValues","programAttribute","geometryAttribute","stride","compiled","initMaterial","projectObject","opaqueObjects","transparentObjects","overrideMaterial","renderObjects","sortObjects","camera2","materialProperties","lightsStateVersion","programCacheKey","programChange","materialNeedsLights","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","boneMatrices","boneTexture","markUniformsLightsNeedsUpdate","refreshUniformsFog","refreshUniformsCommon","refreshUniformsLambert","refreshUniformsToon","refreshUniformsPhong","refreshUniformsPhysical","refreshUniformsStandard","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","refreshUniformsNormal","refreshUniformsLine","refreshUniformsDash","refreshUniformsPoints","refreshUniformsSprites","uvScaleMap","uv2ScaleMap","__webglFramebuffer","activeCubeFaceIndex","restore","textureFormat","level","levelScale","srcTexture","dstTexture","FogExp2","density","Fog","InterleavedBuffer","_vector$6","InterleavedBufferAttribute","interleavedBuffer","SpriteMaterial","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA$1","_vB$1","_vC$1","_uvA$1","_uvB$1","_uvC$1","Sprite","float32Array","transformVertex","vertexPosition","mvPosition","_v1$4","_v2$2","LOD","levels","SkinnedMesh","bindMatrix","skinWeight","_offsetMatrix","_identityMatrix","Skeleton","boneInverses","inverse","bone","Bone","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","raycastTimes","instanceId","LineBasicMaterial","_start","_end","_inverseMatrix$1","_ray$1","_sphere$2","Line","positionAttribute","localPrecision","localPrecisionSq","vStart","vEnd","interSegment","interRay","distSq","nbVertices","_start$1","_end$1","LineSegments","LineLoop","PointsMaterial","_inverseMatrix$2","_ray$2","_sphere$3","_position$1","Points","threshold","localThreshold","localThresholdSq","testPoint","rayPointDistanceSq","intersectPoint","VideoTexture","video","CompressedTexture","CanvasTexture","DepthTexture","WireframeGeometry","o","ol","edge","edges","edge1","edge2","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","pu","pv","sliceCount","PolyhedronGeometry","detail","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivide","applyRadius","generateUVs","getVertexByIndex","subdivideFace","cols","aj","bj","rows","pushVertex","azimuth","inclination","correctUVs","correctSeam","centroid","uvA","uvB","uvC","azi","correctUV","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","frames","P","generateBufferData","generateSegment","generateIndices","N","B","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","Earcut","holeIndices","hasHoles","outerLen","outerNode","linkedList","triangles","invSize","eliminateHoles","earcutLinked","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","again","ear","pass","indexCurve","stop","prev","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","zOrder","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","mx","my","tanMin","tan","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","px","py","intersectsPolygon","middleInside","q1","q2","inside","Node","an","bp","sum","ShapeUtils","contour","pts","holes","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","ExtrudeBufferGeometry","toJSON","verticesArray","uvArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","WorldUVGenerator","extrudePts","extrudeByPath","splineTube","binormal","position2","ahole","hl","shapePoints","reverse","scalePt2","vec","bs","vert","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","ptNextShift_x","ptNextShift_y","sf","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","buildLidFaces","buildSideFaces","layer","f3","layeroffset","sidewalls","sl","slen1","slen2","f4","addVertex","nextIndex","addUV","vector2","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","TextBufferGeometry","font","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","uOffset","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","segment","radiusStep","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","base","inverseSegments","n1","n2","ShapeGeometry","ShapeBufferGeometry","toJSON$1","shapeHole","indexOffset","shapeVertices","shapeHoles","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","halfHeight","generateTorso","generateCap","slope","indexRow","sinTheta","cosTheta","centerIndexStart","centerIndexEnd","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","ShadowMaterial","RawShaderMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshPhongMaterial","MeshToonMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshMatcapMaterial","LineDashedMaterial","Materials","AnimationUtils","from","to","forceClone","times","compareTime","nValues","srcOffset","jsonKeys","valuePropertyName","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","minStartTime","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","t1global","mid","CubicInterpolant","iPrev","iNext","tPrev","tNext","halfDt","o1","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","trackType","json","factoryMethod","message","timeOffset","timeScale","startTime","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","writeIndex","lastIndex","keep","timeNext","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","getTrackTypeForValueTypeName","typeName","parseKeyframeTrack","jsonTracks","frameTime","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","morphTargetNames","morphTargetName","animationKey","boneName","Cache","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","transform","regex","loader","DefaultLoadingManager","Loader","manager","crossOrigin","resourcePath","loading","FileLoader","cached","dataUriRegex","dataUriRegexResult","mimeType","isBase64","response","responseType","parser","request","callbacks","header","AnimationLoader","animations","CompressedTextureLoader","loadTexture","texDatas","loaded","DataTextureLoader","texData","ImageLoader","onImageLoad","onImageError","CubeTextureLoader","urls","TextureLoader","isJPEG","Curve","optionalTarget","divisions","lengths","current","arcLengths","targetArcLength","comparison","lengthBefore","lengthAfter","segmentLength","segmentFraction","t2","tangents","binormals","mat","tz","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","ArcCurve","aRadius","CubicPoly","c0","x3","tension","dt0","dt1","dt2","t3","pz","CatmullRomCurve3","curveType","intPoint","weight","pow","CatmullRom","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezier","CubicBezierCurve","v3","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","Curves","CurvePath","curve","startPoint","endPoint","curveLengths","lens","sums","curves","resolution","Path","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","firstPoint","lastPoint","Shape","holesPts","Light","HemisphereLight","skyColor","groundColor","LightShadow","shadowMatrix","projScreenMatrix","lookTarget","lightPositionWorld","viewportIndex","SpotLightShadow","SpotLight","penumbra","decay","power","PointLightShadow","PointLight","OrthographicCamera","scaleW","scaleH","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","MaterialLoader","getTexture","normalScale","LoaderUtils","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","typedArray","TYPED_ARRAYS","bufferAttributeConstr","bufferAttribute","ObjectLoader","metadata","bufferGeometryLoader","geometryShapes","geometryLoader","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","instanceMatrix","ImageBitmapLoader","res","blob","imageBitmap","ShapePath","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","isClockWise","subPaths","solid","holesFirst","betterShapeHoles","newShapes","newShapeHoles","mainIdx","tmpPoints","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","tmpHoles","Font","paths","createPaths","chars","line_height","offsetX","offsetY","char","ret","createPath","glyph","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","action","FontLoader","AudioContext","AudioLoader","bufferCopy","audioBuffer","SphericalHarmonics3","coefficients","coeff","sh","shBasis","LightProbe","HemisphereLightProbe","sky","ground","AmbientLightProbe","_eyeRight","_eyeLeft","StereoCamera","needsUpdate","projectionMatrix","eyeSepHalf","eyeSepOnProjection","ymax","xmin","xmax","Clock","autoStart","newTime","_position$2","_quaternion$3","_scale$1","_orientation","AudioListener","Audio","audioNode","mediaElement","mediaStream","delay","filter","_position$3","_quaternion$4","_scale$2","_orientation$1","PositionalAudio","coneInnerAngle","coneOuterAngle","coneOuterGain","panner","AudioAnalyser","audio","fftSize","PropertyMixer","binding","mixFunction","accuIndex","currentWeight","mix","originalValueOffset","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","firstValidIndex","bindings","rootNode","root","matches","results","lastDot","objectName","nodeName","searchNodeSubtree","childNode","subTreeNode","dest","targetArray","sourceArray","targetObject","propertyIndex","objectIndex","nodeProperty","versioning","bindingType","AnimationObjectGroup","nObjects","nCachedObjects","indicesByUUID","parsedPaths","nBindings","knownObject","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","lastBindingsPath","AnimationAction","mixer","localRoot","nTracks","interpolants","interpolantSettings","interpolant","repetitions","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","weightInterpolant","startTimeScale","endTimeScale","now","timeScaleInterpolant","deltaTime","timeDirection","timeRunning","clipTime","propertyMixers","interpolantValue","loop","loopCount","pingPong","handle_stop","loopDelta","pending","atStart","atEnd","settings","weightNow","weightThen","AnimationMixer","prototypeAction","rootUuid","bindingsByRoot","bindingsByName","clipUuid","actionsForClip","actions","actionsByClip","knownActions","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","actionByRoot","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","lastActiveInterpolant","optionalRoot","clipObject","existingAction","newAction","nActions","timeInSeconds","actionsToRemove","Uniform","InstancedInterleavedBuffer","Raycaster","ascSort","intersectObject","coords","Spherical","other","Cylindrical","_vector$7","Box2","_startP","_startEnd","Line3","clampToLine","startEnd2","startEnd_startP","ImmediateRenderObject","_vector$8","SpotLightHelper","coneLength","coneWidth","_vector$9","_boneMatrix","_matrixWorldInv","getBoneList","boneList","SkeletonHelper","PointLightHelper","sphereSize","_vector$a","_color1","_color2","HemisphereLightHelper","GridHelper","PolarGridHelper","radials","circles","_v1$5","_v2$3","_v3$1","DirectionalLightHelper","_vector$b","_camera","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_box$3","BoxHelper","Box3Helper","PlaneHelper","positions2","_axis","_lineGeometry","_coneGeometry","ArrowHelper","headLength","headWidth","AxesHelper","LOD_MIN","LOD_MAX","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","MAX_SAMPLES","ENCODINGS","_flatCamera","_blurMaterial","_getBlurShader","_equirectShader","_cubemapShader","_lodPlanes","_sizeLods","_sigmas","_createPlanes","_pingPongRenderTarget","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_compileMaterial","sigma","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","cubemap","_textureToCubeUV","_getCubemapShader","_getEquirectShader","lod","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","faceIndex","coordinates","fill","params","_createRenderTarget","outputTarget","cubeCamera","upSign","forwardSign","outputEncoding","toneMappingExposure","maxComponent","fExp","col","_setViewport","tmpScene","autoClear","poleAxis","lodIn","lodOut","_halfBlur","targetIn","targetOut","sigmaRadians","STANDARD_DEVIATIONS","blurScene","blurUniforms","pixels","radiansPerPixel","sigmaPixels","weights","outputSize","shaderMaterial","_getCommonVertexShader","_getEncodings","construct","Spline","filmGauge","audioLoader","MyAlignedDimension","MxDbAlignedDimension","v2ndPtTo1stPt","THREE.Vector3","fLen","Mx_Linear","MxType","BR_AngleMeasure","angleDim","MxDb2LineAngularDimension","BR_CoordMeasure","mxCoord","MxDbCoord","curPoint","MxTest_SelectEntity","getEnt","MxCADUiPrEntity","McDbBlockReference","retExplode","iExplodeConut","tmpobj","McDbPolyline","polyline","num","bulge","McGePoint3dToString","MxDrawTableData","sName","dW","ary","MxDrawTable","McGePoint3d","dScale","m_data","m_instPt","curPt","vecTmp","McGeVector3d","dLineWidth","dAllW","kXAxis","kYAxis","instPt","ColorIndexType","sTxt","dTextHeight","dL","qrcode","typeNumber","errorCorrectionLevel","PAD0","PAD1","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","makeImpl","test","maskPattern","moduleCount","modules","row","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","getBestMaskPattern","minLostPoint","lostPoint","QRUtil","pos","mod","inc","bitIndex","byteIndex","maskFunc","dark","createBytes","rsBlocks","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","rsPoly","rawPoly","qrPolynomial","modPoly","modIndex","totalCodeCount","dataList","QRRSBlock","qrBitBuffer","totalDataCount","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","cellSize","margin","qrHtml","alt","title","opts","mc","mr","qrSvg","rect","escapeXml","createDataURL","img","escaped","_createHalfASCII","r1","r2","blocks","blocksLastLineNoMargin","ascii","white","black","bytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b3","unknownChar","QRMode","QRMaskPattern","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","errorCorrectLength","QRMath","sameCount","darkCount","ratio","EXP_TABLE","LOG_TABLE","shift","_num","RS_BLOCK_TABLE","qrRSBlock","totalCount","getRsBlockTable","rsBlock","_buffer","_length","bufIndex","bit","_mode","_data","strToNum","chatToNum","getCode","_bytes","stringToBytes","code","byteArrayOutputStream","off","base64EncodeOutputStream","_buflen","_base64","writeEncoded","encode","padlen","str","_str","_pos","decode","gifImage","out","lzwMinCodeSize","raster","getLZWRaster","bitOutputStream","_out","_bitLength","_bitBuffer","clearCode","endCode","bitLength","table","lzwTable","byteOut","bitOut","dataIndex","_map","_size","getPixel","gif","base64","toUTF8Array","utf8","charcode","factory","module","McDbEntityToJsonObject","obj","McDbText","txt","McDbMText","mtxt","McDbLine","McDbCircle","circle","McDbArc","blkRef","McDbAlignedDimension","alignedDim","val","McDbRotatedDimension","rotatedDim","McDbDimension","McDbHatch","hatch","inidex","McDbRasterImage","orientation","clipBoundary","imageDef","TestGetAllEntity","ss","MxCADSelectionSet","TestGentEntityOnLayer","MxCADResbuf","MxTest_GetSysVars","database","ptSnapUnit","ortho","polarAxis","osnap","dyntrace","dyn","sysvar","MxTest_ReadxData","selEntity","dxf","MxTest_WritexData","MxTest_DrawLine","MxCADUiPrPoint","prvPoint","getHostUrl","host","MxTest_InsertBlock","baseUrl","blkFilePath","blkrecId","dLen","newBlkRefId","attribDef","tag","attrib","McDbAttribute","MxTest_GetAllLayer","aryId","layerRec","MxTest_AddLayer","layerTable","newLayer","McDbLayerTableRecord","MxTest_GetAllLinetype","linetypeRec","MxTest_GetAllTextStyle","textSyleRec","MxTest_AddTextStyleTable","textSyleTable","sMyTextStyle","newTextStyleRecord","McDbTextStyleTableRecord","MxTest_GetAllBlock","blkRec","Mx_Test_DrawTable","draw","sT","lScale","Mx_Test_QRCode","qr","QRCode","qrDataURL","THREE.TextureLoader","THREE.MeshBasicMaterial","MxDbImage","MxTest_InsertStamp","MxTest_LineTypeTest","linetypeRecord","lintype","MxTest_DictionaryData","dict","McDbDictionary","McDbXrecord","MxTest_GetObjectExDictionaryData","MxTest_GetNamedObjectsDictionary","MxTest_WriteXRecord","idDict","newDict","myDict","xrec","Mx_Test_ChangeColor","getEntity","idVisible","Mx_Test_ChangeVisible","Mx_Test_ChangeEntityLayer","newLayerName","Mx_ChaneEntityDrawOrder","lOrder","Mx_MxCompareImp","fileUrl","isok","backgroundEntity","cmp","MxCompare","Mx_MxCompare","modify","MxTest_ModifyAllEntityColor","MxModifyColor","Mx_Export_DWG","saveDwgUrl","mxfilepath","getMxCADUi","iResult","sserverResult","filePath","MxTools","Mx_Export_MxWeb","saveUrl","Mx_Open_MxWeb","MxTest_NewFile","Mx_Export_Pdf","DynamicInputType","printPdfUrl","Mx_Cut_Dwg","cutDwgUrl","MKY_Open_Mxweb","_0","MKY_Download_Mxweb","cpp","MxTest_FindText","sFindText1","sFindText2","findPos","entBox","iCount","iFind","attribt","McDbProxyEntity","proxyEntity","aryText","Mx_Test_GetText","getText","ent_id","dataArr","DxfCode","minPt","maxPt","jpg_width","jpg_height","myCreateCanvasImageData","__spreadValues","resolve","reject","McDbTestLineCustomEntity","McDbCustomEntity","imp","iIndex","dXOffset","dYOffset","dZOffset","McGePoint3dArray","MxTest_DrawCustomEntity","myline","MxTest_SelectEntitysToBlock","blkRecId","McDbBlockTableRecord","blkTableRecord","pt1x","pt1y","pt2x","pt2y","cent","insertPtx","insertPty","MxTest_SelectEntitysToSpatialFilterBlock","blkTable","dR","samplePoints","aryPoint","_type","MxTest_DrawHatchFormPoint","MxCADUtility","namedColors","parseColor","hexValue","lowerCaseColor","addLayer","layerName","baseParams","mergeBaseMcDbEntityProps","entity","setMcDbEntityProps","parseParamPoints","pointsStr","pointsArr","parsePoint","MxAiDrawLine","objId","MxAiModule","MxAiDrawCircle","findIntersection","isExtending","y3","x4","y4","intersectionX","intersectionY","insidePolygon","xi","yi","xj","yj","angleTo","angle_temp","createArc","startAngle","endAngle","MxAiDrawCircleArc","is3PDraw","point1","point2","point3","getDist","MxCADUiPrDist","pw","_ML_String","DetailedResult","computePolygonVerticesFromMidpoint","centerPoint","edgeMidPoint","sides","midX","midY","centerX","centerY","numberOfSides","__pow","computeRegularPolygonVertices","vertexPoint","angleIncrement","cosValue","sinValue","startPt","endPt","deltaX","deltaY","newX","newY","computePolygonVerticesFromEdge","polygonVertices","MxAiDrawPolygon","isDrawToCenter","sideNum","isTangentToTheCircle","getInt","MxCADUiPrInt","vet","_radius","midPoint","polygon","createStarEndPointPolygon","pPolyline","rotatePoint","cosAngle","sinAngle","translatedX","translatedY","getRectPoints","pt3","pt4","rotatedPt2","rotatedPt4","getQuadrant","calculateRoundedRectangleVertices","chamferDistance1","chamferDistance2","_","isPt3InQuadrant2","isPt3InQuadrant3","isPt3InQuadrant4","chamferDistanceX","chamferDistanceY","chamferedPt1","chamferedPt2","chamferedPt3","chamferedPt4","chamferedPt5","chamferedPt6","chamferedPt7","chamferedPt8","CMxDrawPolylineDragArcDraw_CalcArcBulge","nextPoint","vecArcTangent","midPt","vecMid","tmpMidLine","vecVertical","tmpVerticalLine","arcCenPoint","arcMidPt1","arcMidPt2","vecArcDir1","vecArcDir2","arcMidPt","MxAiDrawRect","chamfer1Length","chamfer2Length","filletRadius","rectLength","rectWidth","rotationAngle","createRect","_pt1","_pt3","create","addArc","vec1","vec2","vec3","vec4","createEllipse","endPoint1","endPoint2","halfAxisLength","ellipse","McDbEllipse","majorAxis","minorAxis","radiusRatio","MxAiDrawEllipse","MxAiDrawEllipseArc","val1","_WallLine","dirVector","negateDirVector","diffLine","is","pt5","pt6","pt7","pt8","start1","end1","startCorner","endCorner","diffUpdate","intersectionPoints","ii","io","oo","oi","wall1","wall2","diffWall1","diffWall2","isIntersection","outsideLine","insideLine","startClosedLine","endClosedLine","WallLine","Wall","nextLine","Bock","oldScale","MxAiDrawText","isMText","createMText","mText","createText","getStr","MxCADUiPrString","MxAiWithdrawAndRestore","MxAiModuleType","fun","regdata","operation_code","Mx_Ai","getString","Mx_AiRegistServer","line_init","circle_init","circle_arc_init","polygon_init","ellipse_init","interiorDesign_init","text_init","withdrawOrRestore_init","rect_init","FindBlock","blks","dSearch","aryFind","FindLine","blkdata","blkref","nexPoint","dist","nexBlk","MxTest_UserGetData","McDbLineText","myId","linkPoint","link_pos","new_pt","linkobj","id_val","lineFind","McObjectId","circle_r","tmpline","midpt","ange","circle1","circle2","MxTest_LineText","textsize","myline1","myline2","myline3","myline4","init_getdata","linetext_custom","McDbGisEntity","McDbGisPoint","McDbPoint","McDbGisMultiPoint","McDbGisLineString","McDbGisMultiLineString","ptss_n","McDbGisPolygon","MxGis_DrawPoint","MxGis_DrawMultiPoint","aryTmpEntityId","MxGis_DrawLineString","MxGis_DrawMultiLineString","MxGis_DrawPolygon","MxGis_Get_geojson","genjson","feature","ptss","McDbRectBoxLeadComment","circleCenterArr","ptArr","distanceArr","pl_text","textWidth","Mx_Approval","rectBoxLeadComment","getContent","content","getPt1","getPt2","getPt3","McDbTestAnnotatedRectangle","_id","Mx_AnnotatedRectangle","myRect","MxDbTestDivide","line1","line2","Mx_Alignment","getKey","MxCADUiPrKeyWord","keyVal","alignArr","rDim","xDist","yDist","xNum","yNum","Mx_Multicopy","objIds","getBasePt","basePt","getNextPt","ent_clone","nextPt","getNum","arr","lastPt","item","McGeMatrix3d","event_clone","Mx_ArcToCircle","centerPt","cricle","Mx_CopyRotation","objs","getAngle","MxCADUiPrAngle","Mx_CricleTotoll","tollType","arr1","pl1","R","arr2","pl2","Mx_ChangeColor","getColor","colorNum","Mx_ArcToAngle","vec_start","vec_end","line_1","line_2","intPt","Mx_TemHiding","obj_id","selectArr","Mx_BoxDel","drawColor","MxDbRect","d_id","PointsArr","Mx_AngleCopy","angleCopyObj","angleCopyObj_id","angleCopyEvent","Mx_VertexRep","aryIds","copyIds","e_clone","Mx_IntersectBreak","eventObj","eventObj_id","dTol","breakEvent","breakArr","breakPoint","closePoint","breakcurve","Mx_DoubleOff","getEvent","event_id","getOffDist","offDist","vecP","nextPt1","nextPt2","objArr1","objArr2","Mx_Telescoping","widths","Mx_EitCircle","getRadius","circle_clone","Mx_LayerTypeScale","getScale","Mx_ArcOrder","arcEventObj","arcEvent_id","arcEvent","orderObj_id","orderEvent","eventInd","orderEvent_clone","evePt","Mx_PlRoundCorners","pl_new","vertPts","pointsVal","retB","Mx_PlReverse","entId","vertNum","Mx_TestGetAllLineByLayer","Mx_Bisection","getPrefModel","dividept","getCount","getOffPoint","offPoint","getEndPt","Mx_RectangularScaling","McDbTestEnlarge","blkRefId","Mx_Enlarge","getAmplifyDist","aDist","getInsertPt","insertPt","enlarge","Mx_Interrupt","getCurve","curveId","getBreakPoint","Mx_AlignByLine","getLineObj","lineObj_id","lineObj","getTextObj","filter2","textObj_id","textObj","angle1","angle2","Mx_TextHeight","getHeight","Mx_TextWidth","getWidth","Mx_BrushCon","getCopyObj","copyObj_id","copyObj","Mx_ReplaceCon","getFirstObj","firstObj_id","firstObj","getSecondObj","secondObj_id","secondObj","str1","str2","event1","event2","Mx_AlignLeft","getKeyWord","keyWord","text_clone","aPt","Mx_AlignUp","Mx_TextReversal","bound","Mx_TextTrim","Mx_TextTraming","Mx_Underline","getExDist","ex_val","exDist","closePt","vex","toPt","Mx_TitleLine","vex1","vex2","toPt1","toPt2","matrix1","matrix2","Mx_Case","Mx_NumSum","num_arr","acc","curr","Mx_SSWords","objArr","Mx_Prefix","getPrefType","getPrefixStr","Mx_ConnectText","Mx_VerticalText","Mx_AlignByArc","getArc","arc_id","textArr","Mx_EditTextStyle","recIds","rec","Mx_ExtractText","objName","_clone","Mx_ChangeBN","getBlockObj","blockObj_id","getBlockName","blockName","Mx_BlkPt","getBlockEvent","block_id","ptOrigin","Mx_ModyfBlockRecordEntityColor","Mx_BlkColor","Mx_BushBlk","clone","Mx_ConBlk","getType","Mx_BlkCenterLine","blkBox","line1_clone","Mx_BlkRotate","baseEnt","Mx_BlkScale","baseEvn","Mx_BlkAngle","Mx_BlkSelect","blkName","Mx_BlkAllSelect","Mx_SSBlk","blk_id","Mx_SMBlk","blkName_arr","sticBlkArr","Mx_BlkLayer","layerId","Mx_StaLength","strLen","getSumPoint","Mx_StaArea","Mx_StandardSlope","getLine","line_id","l_clone","pt0","text1","l1","McDbTestCoordinateLabeling","Mx_CoordAnnotation","getPoint1","coord","getPoint2","Mx_Elevation","textHt","minBox","getPosition","pl_clone","Mx_Roughness","McDbTestAreaComment","_dbulges","dbulge","Mx_Area","getPt","draw_pl","positionPt","Mx_ReactArea","reactArea","getPos","Mx_DistFromPointToLine","verPt","McDbTestArcComment","_pt","_ptClone","lText","offsetEnt","_pt2","Mx_ArcLength","mArc","McDbTestMeasuringCircle","Mx_MeasuringCircle","mCircle","McDbTestConMeasurement","_dimColor","_color","_showSegLength","lengthArr","perpVec","textNum","plId","_vec","orginSet","setSystemVariables","ContinuousSampling","flag","arcId","preItem","l2","arcTest","Mx_ContinueMeasurement","plDim","Mx_CountList","Mx_AreaArc","Mx_MeasuringAngle","getLine1","entId1","getLine2","entId2","dimStyleId","McDb2LineAngularDimension","Mx_DrawStart","starVert","starNum","getCenter","getRadius1","rVal","radius1","getRadius2","length1","length2","pointArr","Mx_ConcavoVex","getFirstPoint","getSecondPoint","secondPoint","line_clone","offPt1","offPt2","Mx_ZigzagLine","Mx_CenterRect","getPoints","getCenterPt","Mx_BreakLine","getFristPoint","getNextPoint","vex_clone","line2_clone","Mx_CCLine","Mx_Piping","diameter","getDiameter","outLen","getOutLen","fristPt","secondPt","Mx_CutPipeline","pointArr1","pointArr2","objectId","arc1","arc2","arc3","Mx_WelLine","McDbCurve","fristPoint","getThirdPoint","thirdPoint","arcArr","intPts","mergeArr","Mx_PerpLine","Mx_StairLine","Mx_SolidCircle","Mx_CottonInsulation","center1","center2","Mx_CenterLine","obj1","line1_id","obj2","line2_id","dist_1","dist_2","dist_3","dist_4","centerLine","Mx_DoHole","getObj","rect_id","disArr","obj_clone","Mx_Compass","line_clone1","line_clone2","dBulge","Mx_MassegeBox","getEndPoint","Mx_DatumSymbol","baseLine","Mx_ConcentricCircles","Mx_Gear","gearNum","entArr","global","this","shared","worker","mapboxgl","define","chunk","workerBundleString","sharedChunk","A","S","I","M","E","C","D","V","F","L","U","$","O","G","Z","X","H","Y","W","J","K","Q","tt","et","rt","nt","it","st","at","ot","Tt","lt","ut","ct","ht","zt","ft","dt","yt","mt","gt","xt","vt","bt","_t","wt","At","kt","St","It","Mt","Bt","Et","Ct","Dt","Pt","Vt","Ft","Lt","Rt","Ut","$t","jt","Ot","qt","Nt","Gt","Zt","Xt","Kt","Yt","Ht","Wt","Jt","Qt","ee","re","ne","ie","se","oe","le","ue","he","pe","fe","ye","ge","xe","ve","_e","we","Ae","ke","Se","Ie","Me","Te","ze","Je","Be","Ee","Ce","De","Pe","Ve","Fe","Le","Re","Ue","$e","je","Oe","qe","Ne","Ge","Ze","Xe","Ke","Ye","He","We","Qe","tr","er","rr","nr","ir","sr","ar","or","lr","ur","cr","hr","pr","fr","dr","yr","gr","vr","br","_r","wr","Ar","kr","Sr","Ir","Mr","Tr","zr","Br","Er","Cr","Dr","Pr","Vr","Fr","Lr","Rr","Ur","$r","jr","Or","Nr","Gr","Zr","Xr","Kr","Yr","Hr","Wr","Jr","Qr","tn","en","sn","nn","on","rn","ln","un","cn","hn","pn","fn","yn","dn","mn","gn","Hn","xn","vn","bn","_n","wn","An","kn","Sn","Cn","Tn","Mn","In","En","zn","Bn","Dn","Fn","Pn","Vn","Ln","Rn","Un","$n","jn","On","qn","Nn","Gn","Zn","Xn","Kn","Yn","Wn","Jn","ei","Qn","ti","ri","ni","si","ai","li","ui","ci","hi","pi","fi","di","mi","gi","vi","bi","_i","wi","Ai","ki","Si","Ii","Mi","Ti","zi","Bi","Ei","Ci","Di","Pi","Vi","Fi","Li","Ri","Ui","Oi","$i","ji","qi","Ni","Gi","Zi","Xi","Ki","Yi","Hi","Wi","Ji","Qi","ts","es","rs","ns","as","os","us","ls","fs","hs","ps","ds","ys","ms","gs","xs","vs","_s","ws","As","ks","Ss","Is","Ms","Ts","zs","Bs","Es","Cs","Ds","Ps","Vs","Fs","Ls","Rs","Us","$s","js","Os","qs","Ns","Gs","Zs","Xs","Ks","Ys","Hs","Ws","Js","Qs","ta","ea","ra","na","ia","sa","aa","oa","la","ua","ca","ha","pa","fa","da","ya","ma","ga","xa","ba","_a","wa","Aa","ka","Sa","Ia","Ma","Ta","za","Ba","Ea","Ca","Da","Pa","Va","Fa","La","$a","Ra","Ua","ja","Oa","Na","Ga","Za","Xa","Ka","Ya","Ha","Ja","Wa","Qa","eo","ro","no","so","ao","lo","uo","co","po","fo","yo","mo","go","xo","vo","bo","zo","ko","_o","Io","wo","To","Ao","So","Mo","Bo","Eo","Co","Do","Po","Vo","Fo","Lo","Ro","Uo","$o","jo","Oo","qo","No","Go","Zo","Xo","Ko","Yo","Ho","Wo","Jo","Qo","tl","el","rl","nl","al","ll","ul","cl","dl","yl","xl","bl","_l","wl","Al","Sl","Il","Ml","Tl","zl","Bl","El","Cl","Dl","Pl","Vl","Fl","Rl","Ll","Ul","Hl","Zl","$l","Xl","uu","au","tu","ou","Ql","Yl","ql","Ol","Nl","Gl","Wl","eu","iu","Jl","Kl","nu","ru","lu","hu","fu","du","yu","mu","gu","xu","vu","bu","_u","wu","Au","ku","Su","Iu","Mu","Tu","zu","Bu","Eu","Cu","Du","Pu","Vu","Fu","Lu","Ru","Uu","$u","ju","Ou","qu","Nu","Gu","Zu","Xu","Ku","Yu","Hu","Wu","Ju","Qu","tc","ec","rc","nc","ic","sc","oc","lc","uc","cc","hc","pc","fc","dc","yc","gc","xc","_c","wc","Ac","kc","Sc","Ic","Mc","Tc","zc","Bc","Ec","Cc","Dc","Pc","Vc","Fc","Lc","Rc","Uc","$c","jc","Oc","qc","Nc","Gc","Zc","Xc","Kc","Yc","Hc","Jc","Wc","oh","ah","Qc","th","eh","rh","nh","ih","lh","uh","ch","hh","ph","fh","dh","yh","mh","gh","xh","vh","bh","_h","wh","Ah","kh","Sh","Mh","Th","Ih","zh","Bh","Eh","Ch","Dh","Ph","Vh","Fh","Lh","Rh","Uh","qh","$h","Gh","Nh","jh","Oh","tp","Zh","Xh","Kh","Yh","Hh","Wh","Jh","Qh","ep","rp","np","ip","sp","ap","op","lp","cp","hp","fp","dp","yp","mp","gp","xp","_p","wp","Ap","kp","Sp","Ip","Mp","Tp","Bp","Cp","zp","Lp","Ep","Dp","Pp","Vp","Fp","Rp","Up","$p","jp","Op","Gp","qp","Np","Zp","Xp","Kp","Yp","Hp","Wp","Jp","Qp","tf","ef","rf","nf","of","lf","uf","hf","pf","ff","yf","mf","gf","xf","vf","_f","wf","Af","kf","Sf","If","Mf","Tf","zf","Bf","Cf","Ef","Df","Pf","Vf","Ff","Lf","Rf","Uf","$f","jf","Of","qf","Nf","Gf","Zf","Xf","Kf","Yf","Hf","Wf","Jf","Qf","td","ed","rd","mapboxgl$1","ThirdPartyMaps","mxtest_addTtifRaster","cenx","ceny","add_geoserver_wmts_EPSG900913_ttif","vectorLayerUrl","getMapProviders","getGoogleMapUrl","mxmap","init_mouse_coord_tip","isLoad_googlecn_map","lng","lat","gps84","mx_gcj02_To_gps84","ptCAD","isLoad_geoserver_wmts_EPSG900913_ttif","getMapDefaultData","map_default_data","MxCADPluginMapDefaultData","mapType","mx_gps84_To_gcj02","rastermap","map_val","MxMapAddGoogleCnLayer","MxTest_Map_Download","lnglat1","lnglat2","map_pt1","map_pt2","lnglat_gps841","lnglat_gps842","map_download_param","sbound","axios","GLTFLoader","_onError","gltf","dracoLoader","ddsLoader","magic","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","GLTFBinaryExtension","extensionName","extensionsRequired","GLTFLightsExtension","GLTFMaterialsUnlitExtension","GLTFMaterialsPbrSpecularGlossinessExtension","GLTFDracoMeshCompressionExtension","GLTFTextureDDSExtension","GLTFTextureTransformExtension","GLTFMeshQuantizationExtension","GLTFParser","GLTFRegistry","lightIndex","lightDef","lightNode","materialParams","materialDef","metallicRoughness","BINARY_EXTENSION_HEADER_LENGTH","BINARY_EXTENSION_CHUNK_TYPES","headerView","chunkView","chunkIndex","chunkLength","chunkType","contentArray","byteOffset","primitive","bufferViewIndex","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","attributeName","threeAttributeName","ATTRIBUTES","accessorDef","componentType","WEBGL_COMPONENT_TYPES","bufferView","GLTFMeshStandardSGMaterial","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","uniformName","pbrSpecularGlossiness","specGlossMapDef","GLTFCubicSplineInterpolant","stride2","stride3","m0","m1","WEBGL_CONSTANTS","WEBGL_FILTERS","WEBGL_WRAPPINGS","WEBGL_TYPE_SIZES","PATH_PROPERTIES","INTERPOLATION","ALPHA_MODES","MIME_TYPE_FORMATS","resolveURL","createDefaultMaterial","addUnknownExtensionsToUserData","knownExtensions","objectDef","assignExtrasToUserData","gltfDef","addMorphTargets","targets","hasMorphPosition","hasMorphNormal","pendingPositionAccessors","pendingNormalAccessors","pendingAccessor","accessors","morphPositions","updateMorphTargets","meshDef","targetNames","createPrimitiveKey","primitiveDef","dracoExtension","geometryKey","createAttributesKey","attributesKey","dependencies","nodeDefs","skinDefs","meshDefs","meshReferences","meshUses","skinIndex","skinLength","joints","nodeIndex","nodeLength","nodeDef","dependency","defs","def","bufferIndex","bufferDef","bufferViewDef","byteLength","accessorIndex","pendingBufferViews","bufferViews","TypedArray","elementBytes","itemBytes","byteStride","ibSlice","ibCacheKey","ib","itemSizeIndices","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","textureIndex","textureLoader","URL","textureDef","textureExtensions","sourceURI","isObjectURL","samplers","sampler","mapName","mapDef","useVertexTangents","useVertexColors","useFlatShading","useMorphTargets","useMorphNormals","pointsMaterial","lineMaterial","materialType","materialExtensions","sgExtension","kmuExtension","alphaMode","computeBounds","accessor","addPrimitiveAttributes","assignAttributeAccessor","gltfAttributeName","toTrianglesDrawMode","drawMode","numberOfTriangles","newIndices","newGeometry","primitives","createDracoPrimitive","geometryPromise","meshIndex","meshes","cameraIndex","cameraDef","skinDef","skinEntry","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","input","nodes","inputAccessors","outputAccessors","node","inputAccessor","outputAccessor","targetName","outputArray","scaled","instanceNum","buildNodeHierachy","nodeId","parentObject","skin","pendingJoints","jointNodes","jointNode","sceneIndex","sceneDef","nodeIds","mxtest_add_3d_model","mxdraw","calculateCenter","calculateLineAngle","deg","printInfo","entNames","getAttachmentName","modeName","handle","entName","deltaZ","angleInDegrees","widthInfos","bulges","isPrintWidth","accumulated","maxIndex","isEllipse","calculateEllipseCircumference","arcLengthOfEllipse","theta1","theta2","numSteps","integrand","integral","stepSize","isMaxAxis","maxAxis","minAxis","calculateEllipseEndpoints","vx1","vy1","vx2","vy2","startEndpointX","startEndpointY","endEndpointX","endEndpointY","patternName","pls","totalArea","imgDef","getFileNameFromPath","getClipBoundaryType","dimStyle","description","ids","groupDict","_ids","getName","groupIds","groupId","groupNames","groupName","entityId","listCmdCodeString","filterCode","codes","MxCADPlugin","MxCADPluginBase","mxcadui","My_PluginTest","My_Extool","div","createApp","Test","iframeinit","mxcaduiimp","gisinit","config","mxent","MxPropertiesWindowCustomValueType","prop","Mx_Open_DemoCode","Mx_Open_DevInstall","getMapUrl","Mx_Open_Map_gdslwzj","Mx_Open_Map_googlecn","Mx_Open_Map_gdyx","Mx_Open_Map_tdtsl","Mx_Open_Map_bdsl","Mx_Open_Map_geoq","Mx_ViewBackgroundColor","Mx_TestExProp","selEntity1","idText","Mx_Test_OpenFile","Mx_Test_GetFile","Mx_SelectEntitHideLayer","getCurrentPagePath","idImage","Mx_Test_DrawImage","imagUrl","Mx_Test_ModifyImage","imagedata","imagedefid","MxTest_TestAddCurrentSelect","lAng","MxTest_TestSetViewAngle","MxText_ZoomCenter","Mx_Test_Draw3DPolyline","MxTemp_Test","Mx_Test_OffsetIn_DrawLine","Mx_Test_CreateGroup","Mx_Test_IntersectWith","McGeBound","inpt","Mx_ScreenToJpg","Mx_Test_DrawMarkCircle","Mx_Test_Wipeout","pt_corner","wipeout","McDbWipeout","commentinit","paramdrawinit","measureinit","interactiveinit","databaseinit","cadfileinit","findtextinit","makeblock","hatchinit","aiinit","init_userdemo","drawcustomtinit","init_gis_entity","toolsinit","textToolsinit","blockToolsinit","countToolsinit","drawToolsinit","annotationsTools"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAE5BC,GAAoB;AAAA;AAAA;AAAA,QAEpBC,GAAyB;AAAA;AAAA;AAAA,QAEzBC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAExBC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEpBC,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEjBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEjBC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEnBC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEnBC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAElBC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAElBC,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEhBC,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEhBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEjBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEjBC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEpBC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEpBC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eNkEX,EACA,CACI,KAAM,OACN,KAAM,MACN,KOtEO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ePuEX,EACA,CACI,KAAM,OACN,KAAM,MACN,KQ3EO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YR4EX,EACA,CACI,KAAM,OACN,KAAM,QACN,KShFO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aTiFX,EACA,CACI,KAAM,OACN,KAAM,QACN,KUrFO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBVsFX,EACA,CACI,KAAM,OACN,KAAM,MACN,KW1FO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YX2FX,EACA,CACI,KAAM,OACN,KAAM,MACN,KY/FO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aZgGX,EACA,CACI,KAAM,OACN,KAAM,MACN,KapGO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,abqGX,EACA,CACI,KAAM,OACN,KAAM,WACN,KczGO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,Cd0GX,EACA,CACI,KAAM,OACN,KAAM,WACN,Ke9GO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBf+GX,EACA,CACI,KAAM,OACN,KAAM,aACN,KgBnHO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBhBoHX,EACA,CACI,KAAM,OACN,KAAM,QACN,KiBxHO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CjByHX,EACA,CACI,KAAM,OACN,KAAM,QACN,KkB7HO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,elB8HX,EACA,CACI,KAAM,OACN,KAAM,QACN,KmBlIO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,enBmIX,EACA,CACI,KAAM,OACN,KAAM,OACN,KoBvIO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBpBwIX,EACA,CACI,KAAM,OACN,KAAM,QACN,KqB5IO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,crB6IX,EACA,CACI,KAAM,OACN,KAAM,SACN,KsBjJO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBtBkJX,EACA,CACI,KAAM,OACN,KAAM,QACN,KuBtJO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBvBuJX,EACA,CACI,KAAM,OACN,KAAM,OACN,KwB3JO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BxB4JX,EACA,CACI,KAAM,OACN,KAAM,OACN,KyBhKO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBzBiKX,EACA,CACI,KAAM,OACN,KAAM,OACN,K0BrKO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C1BsKX,EACA,CACI,KAAM,QACN,KAAM,WACN,K2B1KO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mB3B2KX,EACA,CACI,KAAM,QACN,KAAM,OACN,K4B/KO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oB5BgLX,EACA,CACI,KAAM,QACN,KAAM,WACN,K6BpLO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C7BqLX,EACA,CACI,KAAM,QACN,KAAM,WACN,K8BzLO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wB9B0LX,EACA,CACI,KAAM,QACN,KAAM,aACN,K+B9LO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wB/B+LX,EACA,CACI,KAAM,QACN,KAAM,aACN,KgCnMO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ChCoMX,EACA,CACI,KAAM,QACN,KAAM,QACN,KiCxMO;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","x_google_ignoreList":[6,10,41,48]}